From bca61bcfde103f2e8bf7b20c436951f3b81a019b Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 3 Dec 2005 18:13:06 +0200 Subject: [PATCH 01/48] Set thread_stack after return from end_thread() Fixes core dump when reusing thread when running debug binary sql-bench/bench-init.pl.sh: Use ENGINE= instead of TYPE= sql-bench/server-cfg.sh: Use ENGINE= instead of TYPE= sql/mysqld.cc: Set thread_stack (to avoid core dump in store_globlas) sql/sql_parse.cc: Set thread_stack after return from end_thread() --- sql-bench/bench-init.pl.sh | 2 +- sql-bench/server-cfg.sh | 10 +++++----- sql/mysqld.cc | 1 + sql/sql_parse.cc | 1 + 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/sql-bench/bench-init.pl.sh b/sql-bench/bench-init.pl.sh index d61551ffb3b..31282d06abf 100644 --- a/sql-bench/bench-init.pl.sh +++ b/sql-bench/bench-init.pl.sh @@ -447,7 +447,7 @@ All benchmarks takes the following options: --create-options=# Extra argument to all create statements. If you for example want to create all MySQL tables as BDB tables use: - --create-options=TYPE=BDB + --create-options=ENGINE=BDB --database (Default $opt_database) In which database the test tables are created. diff --git a/sql-bench/server-cfg.sh b/sql-bench/server-cfg.sh index b0c40102a6b..75528b24b77 100644 --- a/sql-bench/server-cfg.sh +++ b/sql-bench/server-cfg.sh @@ -174,29 +174,29 @@ sub new # Some fixes that depends on the environment if (defined($main::opt_create_options) && - $main::opt_create_options =~ /type=heap/i) + $main::opt_create_options =~ /engine=heap/i) { $limits{'working_blobs'} = 0; # HEAP tables can't handle BLOB's } if (defined($main::opt_create_options) && - $main::opt_create_options =~ /type=innodb/i) + $main::opt_create_options =~ /engine=innodb/i) { $self->{'transactions'} = 1; # Transactions enabled } if (defined($main::opt_create_options) && - $main::opt_create_options =~ /type=ndb/i) + $main::opt_create_options =~ /engine=ndb/i) { $self->{'transactions'} = 1; # Transactions enabled $limits{'max_columns'} = 90; # Max number of columns in table $limits{'max_tables'} = 32; # No comments } if (defined($main::opt_create_options) && - $main::opt_create_options =~ /type=bdb/i) + $main::opt_create_options =~ /engine=bdb/i) { $self->{'transactions'} = 1; # Transactions enabled } if (defined($main::opt_create_options) && - $main::opt_create_options =~ /type=gemini/i) + $main::opt_create_options =~ /engine=gemini/i) { $limits{'working_blobs'} = 0; # Blobs not implemented yet $limits{'max_tables'} = 500; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index b5b95e48889..857658207ba 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1589,6 +1589,7 @@ void end_thread(THD *thd, bool put_in_cache) wake_thread--; thd=thread_cache.get(); thd->real_id=pthread_self(); + thd->thread_stack= (char*) &thd; // For store_globals (void) thd->store_globals(); thd->thr_create_time= time(NULL); threads.append(thd); diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 00124225719..1a9b4ef4db7 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1182,6 +1182,7 @@ end_thread: or this thread has been schedule to handle the next query */ thd= current_thd; + thd->thread_stack= (char*) &thd; } while (!(test_flags & TEST_NO_THREADS)); /* The following is only executed if we are not using --one-thread */ return(0); /* purecov: deadcode */ From 4d09673065bba0434909ad09b7f9ecd82752c8db Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 9 Dec 2005 15:00:33 -0800 Subject: [PATCH 02/48] Fix crash in BDB from improper cleanup of transactions, and avoid problem in NDB that the fix would cause due to improper registration of a transaction that isn't meant to be seen by the handler layer. (Bug #14212) Thanks to Sergei Golubchik for helping with this. mysql-test/r/bdb.result: Add new result mysql-test/t/bdb.test: Add new regression test sql/ha_ndbcluster.cc: Don't register transaction if transactions are "disabled". sql/handler.cc: Commit statement before trying to end transaction. --- mysql-test/r/bdb.result | 5 +++++ mysql-test/t/bdb.test | 11 +++++++++++ sql/ha_ndbcluster.cc | 14 ++++++++------ sql/handler.cc | 3 ++- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/mysql-test/r/bdb.result b/mysql-test/r/bdb.result index 2bba44d36e9..dd251eed0f0 100644 --- a/mysql-test/r/bdb.result +++ b/mysql-test/r/bdb.result @@ -1895,3 +1895,8 @@ t1 CREATE TABLE `t1` ( ) ENGINE=BerkeleyDB DEFAULT CHARSET=latin1 drop table t1; set storage_engine=MyISAM; +set autocommit=0; +create table t1 (a int) engine=bdb; +commit; +alter table t1 add primary key(a); +drop table t1; diff --git a/mysql-test/t/bdb.test b/mysql-test/t/bdb.test index 3167682f816..bf72a4555b8 100644 --- a/mysql-test/t/bdb.test +++ b/mysql-test/t/bdb.test @@ -973,3 +973,14 @@ drop table t1; # End varchar test eval set storage_engine=$default; + +# +# Bug #14212: Server crash after COMMIT + ALTER TABLE +# +set autocommit=0; +create table t1 (a int) engine=bdb; +commit; +alter table t1 add primary key(a); +drop table t1; + +# End of 5.0 tests diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index a0efcd2c4f9..b3d5d86dc52 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -3221,6 +3221,10 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) if (lock_type != F_UNLCK) { DBUG_PRINT("info", ("lock_type != F_UNLCK")); + if (!thd->transaction.on) + m_transaction_on= FALSE; + else + m_transaction_on= thd->variables.ndb_use_transactions; if (!thd_ndb->lock_count++) { PRINT_OPTION_FLAGS(thd); @@ -3235,7 +3239,8 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) ERR_RETURN(ndb->getNdbError()); no_uncommitted_rows_reset(thd); thd_ndb->stmt= trans; - trans_register_ha(thd, FALSE, &ndbcluster_hton); + if (m_transaction_on) + trans_register_ha(thd, FALSE, &ndbcluster_hton); } else { @@ -3250,7 +3255,8 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) ERR_RETURN(ndb->getNdbError()); no_uncommitted_rows_reset(thd); thd_ndb->all= trans; - trans_register_ha(thd, TRUE, &ndbcluster_hton); + if (m_transaction_on) + trans_register_ha(thd, TRUE, &ndbcluster_hton); /* If this is the start of a LOCK TABLE, a table look @@ -3284,10 +3290,6 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type) m_ha_not_exact_count= !thd->variables.ndb_use_exact_count; m_autoincrement_prefetch= (ha_rows) thd->variables.ndb_autoincrement_prefetch_sz; - if (!thd->transaction.on) - m_transaction_on= FALSE; - else - m_transaction_on= thd->variables.ndb_use_transactions; m_active_trans= thd_ndb->all ? thd_ndb->all : thd_ndb->stmt; DBUG_ASSERT(m_active_trans); diff --git a/sql/handler.cc b/sql/handler.cc index 81e94af5dc7..416455c9bb9 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1910,7 +1910,8 @@ int ha_enable_transaction(THD *thd, bool on) is an optimization hint that storage engine is free to ignore. So, let's commit an open transaction (if any) now. */ - error= end_trans(thd, COMMIT); + if (!(error= ha_commit_stmt(thd))) + error= end_trans(thd, COMMIT); } DBUG_RETURN(error); } From 4e82e0af516d47aeb34b37f8b64865509189bcf5 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Dec 2005 15:01:02 -0800 Subject: [PATCH 03/48] Fix crash when trying to open table using a disabled storage engine. (Bug #15185) sql/handler.cc: Don't create handler object for engines that are disabled. --- sql/handler.cc | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/sql/handler.cc b/sql/handler.cc index 47010de3002..5a0e0d27b40 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -300,39 +300,56 @@ handler *get_new_handler(TABLE *table, MEM_ROOT *alloc, enum db_type db_type) case DB_TYPE_HASH: return new (alloc) ha_hash(table); #endif + case DB_TYPE_MRG_MYISAM: case DB_TYPE_MRG_ISAM: return new (alloc) ha_myisammrg(table); #ifdef HAVE_BERKELEY_DB case DB_TYPE_BERKELEY_DB: - return new (alloc) ha_berkeley(table); + if (have_berkeley_db == SHOW_OPTION_YES) + return new (alloc) ha_berkeley(table); + return NULL; #endif #ifdef HAVE_INNOBASE_DB case DB_TYPE_INNODB: - return new (alloc) ha_innobase(table); + if (have_innodb == SHOW_OPTION_YES) + return new (alloc) ha_innobase(table); + return NULL; #endif #ifdef HAVE_EXAMPLE_DB case DB_TYPE_EXAMPLE_DB: - return new (alloc) ha_example(table); + if (have_example_db == SHOW_OPTION_YES) + return new (alloc) ha_example(table); + return NULL; #endif #if defined(HAVE_ARCHIVE_DB) && !defined(__NETWARE__) case DB_TYPE_ARCHIVE_DB: - return new (alloc) ha_archive(table); + if (have_archive_db == SHOW_OPTION_YES) + return new (alloc) ha_archive(table); + return NULL; #endif #ifdef HAVE_BLACKHOLE_DB case DB_TYPE_BLACKHOLE_DB: - return new (alloc) ha_blackhole(table); + if (have_blackhole_db == SHOW_OPTION_YES) + return new (alloc) ha_blackhole(table); + return NULL; #endif #ifdef HAVE_FEDERATED_DB case DB_TYPE_FEDERATED_DB: - return new (alloc) ha_federated(table); + if (have_federated_db == SHOW_OPTION_YES) + return new (alloc) ha_federated(table); + return NULL; #endif #ifdef HAVE_CSV_DB case DB_TYPE_CSV_DB: - return new (alloc) ha_tina(table); + if (have_csv_db == SHOW_OPTION_YES) + return new (alloc) ha_tina(table); + return NULL; #endif #ifdef HAVE_NDBCLUSTER_DB case DB_TYPE_NDBCLUSTER: - return new (alloc) ha_ndbcluster(table); + if (have_ndbcluster == SHOW_OPTION_YES) + return new (alloc) ha_ndbcluster(table); + return NULL; #endif case DB_TYPE_HEAP: return new (alloc) ha_heap(table); @@ -346,8 +363,6 @@ handler *get_new_handler(TABLE *table, MEM_ROOT *alloc, enum db_type db_type) /* Fall back to MyISAM */ case DB_TYPE_MYISAM: return new (alloc) ha_myisam(table); - case DB_TYPE_MRG_MYISAM: - return new (alloc) ha_myisammrg(table); } } From a9e979a96bc2ed17c6a95439d0eaceb5dd0dd1ad Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Dec 2005 14:45:02 +0100 Subject: [PATCH 04/48] Updated tests from Lars Review BitKeeper/deleted/.del-rpl_row_view.test~91ced6f754fb06a7: Delete: mysql-test/t/rpl_row_view.test BitKeeper/deleted/.del-rpl_row_view.result~7ec7f00e6d6beca9: Delete: mysql-test/r/rpl_row_view.result mysql-test/t/rpl_view.test: Updated to work for both SBR and RBR per lars review comments mysql-test/r/rpl_view.result: Updated results file mysql-test/t/rpl_timezone-master.opt: Rename: mysql-test/t/rpl_stm_timezone-master.opt -> mysql-test/t/rpl_timezone-master.opt mysql-test/t/rpl_timezone-slave.opt: Rename: mysql-test/t/rpl_stm_timezone-slave.opt -> mysql-test/t/rpl_timezone-slave.opt BitKeeper/deleted/.del-rpl_row_timezone-master.opt~59152d4b828ae88d: Delete: mysql-test/t/rpl_row_timezone-master.opt BitKeeper/deleted/.del-rpl_row_timezone-slave.opt~6e899f3565026efd: Delete: mysql-test/t/rpl_row_timezone-slave.opt BitKeeper/deleted/.del-rpl_row_timezone.test~eb6bbf4edaa18f2d: Delete: mysql-test/t/rpl_row_timezone.test BitKeeper/deleted/.del-rpl_row_timezone.result~ea5c5977bb4da1cf: Delete: mysql-test/r/rpl_row_timezone.result mysql-test/r/rpl_timezone.result: Updated results file mysql-test/t/rpl_timezone.test: Remove comment mysql-test/t/rpl_rewrt_db-slave.opt: Rename: mysql-test/t/rpl_stm_rewrt_db-slave.opt -> mysql-test/t/rpl_rewrt_db-slave.opt mysql-test/t/rpl_rewrt_db.test: Rename: mysql-test/t/rpl_stm_rewrt_db.test -> mysql-test/t/rpl_rewrt_db.test mysql-test/r/rpl_rewrt_db.result: Rename: mysql-test/r/rpl_stm_rewrt_db.result -> mysql-test/r/rpl_rewrt_db.result BitKeeper/deleted/.del-rpl_row_rewrt_db-slave.opt~d63094f08f0f222c: Delete: mysql-test/t/rpl_row_rewrt_db-slave.opt BitKeeper/deleted/.del-rpl_row_rewrt_db.test~2aa70363e3b25660: Delete: mysql-test/t/rpl_row_rewrt_db.test BitKeeper/deleted/.del-rpl_row_rewrt_db.result~a1f2f21a8d2ed591: Delete: mysql-test/r/rpl_row_rewrt_db.result mysql-test/t/rpl_loaddata_m-master.opt: Rename: mysql-test/t/rpl_stm_loaddata_m-master.opt -> mysql-test/t/rpl_loaddata_m-master.opt mysql-test/t/rpl_loaddata_m.test: Updated test to work with both SBR and RBR. RBR show bug. Bug# 15942. Test will be added to disable.def until bug corrected mysql-test/r/rpl_loaddata_m.result: new results file for test case BitKeeper/deleted/.del-rpl_stm_err_ignoredtable.test~bfe9b63deec27fb2: Delete: mysql-test/t/rpl_stm_err_ignoredtable.test mysql-test/t/rpl_err_ignoredtable-slave.opt: Rename: mysql-test/t/rpl_stm_err_ignoredtable-slave.opt -> mysql-test/t/rpl_err_ignoredtable-slave.opt mysql-test/t/rpl_err_ignoredtable.test: Updated test to work with both SBR and RBR mysql-test/r/rpl_err_ignoredtable.result: Updated results file mysql-test/t/rpl_user_variables.test: Works with both SBR and RBR mysql-test/r/rpl_user_variables.result: Rename: mysql-test/r/rpl_stm_user_variables.result -> mysql-test/r/rpl_user_variables.result BitKeeper/deleted/.del-rpl_row_user_variables.result~f7e7536de1d8b8b0: Delete: mysql-test/r/rpl_row_user_variables.result BitKeeper/deleted/.del-rpl_stm_user_variables.test~84f68bdef965db77: Delete: mysql-test/t/rpl_stm_user_variables.test BitKeeper/deleted/.del-rpl_row_user_variables.test~cca11b4f4d044a26: Delete: mysql-test/t/rpl_row_user_variables.test mysql-test/t/rpl_row_log.test: Updated comment to correct statement mysql-test/t/disabled.def: Updated with Bug# 15963 mysql-test/t/rpl_ddl.test: Updated to work with SBR and RBR mysql-test/r/rpl_ddl.result: Updated results BitKeeper/deleted/.del-rpl_row_ddl.test~d1339fea669fc00a: Delete: mysql-test/t/rpl_row_ddl.test BitKeeper/deleted/.del-rpl_row_ddl.result~ce73af252273e6bc: Delete: mysql-test/r/rpl_row_ddl.result --- .../extra/rpl_tests/rpl_loaddata_m.test | 28 - .../r/{rpl_row_ddl.result => rpl_ddl.result} | 0 mysql-test/r/rpl_err_ignoredtable.result | 42 + mysql-test/r/rpl_loaddata_m.result | 38 + ...ow_rewrt_db.result => rpl_rewrt_db.result} | 0 mysql-test/r/rpl_stm_ddl.result | 1693 ----------------- mysql-test/r/rpl_stm_err_ignoredtable.result | 39 - mysql-test/r/rpl_stm_loaddata_m.result | 20 - mysql-test/r/rpl_stm_rewrt_db.result | 93 - mysql-test/r/rpl_stm_timezone.result | 127 -- mysql-test/r/rpl_stm_user_variables.result | 82 - mysql-test/r/rpl_stm_view.result | 56 - ...ow_timezone.result => rpl_timezone.result} | 26 +- ...ables.result => rpl_user_variables.result} | 0 .../{rpl_row_view.result => rpl_view.result} | 1 + mysql-test/t/disabled.def | 2 + .../t/{rpl_row_ddl.test => rpl_ddl.test} | 1 - ...ave.opt => rpl_err_ignoredtable-slave.opt} | 0 .../rpl_tests => t}/rpl_err_ignoredtable.test | 20 +- ...m-master.opt => rpl_loaddata_m-master.opt} | 0 mysql-test/t/rpl_loaddata_m.test | 49 + ...rt_db-slave.opt => rpl_rewrt_db-slave.opt} | 0 ...pl_stm_rewrt_db.test => rpl_rewrt_db.test} | 0 mysql-test/t/rpl_row_log.test | 2 +- mysql-test/t/rpl_row_rewrt_db.test | 83 - mysql-test/t/rpl_row_timezone-slave.opt | 2 - mysql-test/t/rpl_row_user_variables.test | 4 - mysql-test/t/rpl_row_view.test | 47 - mysql-test/t/rpl_stm_ddl.test | 35 - mysql-test/t/rpl_stm_err_ignoredtable.test | 8 - mysql-test/t/rpl_stm_rewrt_db-slave.opt | 1 - mysql-test/t/rpl_stm_timezone-master.opt | 1 - mysql-test/t/rpl_stm_timezone.test | 129 -- mysql-test/t/rpl_stm_user_variables.test | 5 - ...one-master.opt => rpl_timezone-master.opt} | 0 ...ezone-slave.opt => rpl_timezone-slave.opt} | 0 ...pl_row_timezone.test => rpl_timezone.test} | 13 +- .../rpl_tests => t}/rpl_user_variables.test | 1 - .../t/{rpl_stm_view.test => rpl_view.test} | 10 +- 39 files changed, 162 insertions(+), 2496 deletions(-) delete mode 100644 mysql-test/extra/rpl_tests/rpl_loaddata_m.test rename mysql-test/r/{rpl_row_ddl.result => rpl_ddl.result} (100%) create mode 100644 mysql-test/r/rpl_err_ignoredtable.result create mode 100644 mysql-test/r/rpl_loaddata_m.result rename mysql-test/r/{rpl_row_rewrt_db.result => rpl_rewrt_db.result} (100%) delete mode 100644 mysql-test/r/rpl_stm_ddl.result delete mode 100644 mysql-test/r/rpl_stm_err_ignoredtable.result delete mode 100644 mysql-test/r/rpl_stm_loaddata_m.result delete mode 100644 mysql-test/r/rpl_stm_rewrt_db.result delete mode 100644 mysql-test/r/rpl_stm_timezone.result delete mode 100644 mysql-test/r/rpl_stm_user_variables.result delete mode 100644 mysql-test/r/rpl_stm_view.result rename mysql-test/r/{rpl_row_timezone.result => rpl_timezone.result} (76%) rename mysql-test/r/{rpl_row_user_variables.result => rpl_user_variables.result} (100%) rename mysql-test/r/{rpl_row_view.result => rpl_view.result} (98%) rename mysql-test/t/{rpl_row_ddl.test => rpl_ddl.test} (97%) rename mysql-test/t/{rpl_stm_err_ignoredtable-slave.opt => rpl_err_ignoredtable-slave.opt} (100%) rename mysql-test/{extra/rpl_tests => t}/rpl_err_ignoredtable.test (77%) rename mysql-test/t/{rpl_stm_loaddata_m-master.opt => rpl_loaddata_m-master.opt} (100%) create mode 100644 mysql-test/t/rpl_loaddata_m.test rename mysql-test/t/{rpl_row_rewrt_db-slave.opt => rpl_rewrt_db-slave.opt} (100%) rename mysql-test/t/{rpl_stm_rewrt_db.test => rpl_rewrt_db.test} (100%) delete mode 100644 mysql-test/t/rpl_row_rewrt_db.test delete mode 100644 mysql-test/t/rpl_row_timezone-slave.opt delete mode 100644 mysql-test/t/rpl_row_user_variables.test delete mode 100644 mysql-test/t/rpl_row_view.test delete mode 100644 mysql-test/t/rpl_stm_ddl.test delete mode 100644 mysql-test/t/rpl_stm_err_ignoredtable.test delete mode 100644 mysql-test/t/rpl_stm_rewrt_db-slave.opt delete mode 100644 mysql-test/t/rpl_stm_timezone-master.opt delete mode 100644 mysql-test/t/rpl_stm_timezone.test delete mode 100644 mysql-test/t/rpl_stm_user_variables.test rename mysql-test/t/{rpl_row_timezone-master.opt => rpl_timezone-master.opt} (100%) rename mysql-test/t/{rpl_stm_timezone-slave.opt => rpl_timezone-slave.opt} (100%) rename mysql-test/t/{rpl_row_timezone.test => rpl_timezone.test} (93%) rename mysql-test/{extra/rpl_tests => t}/rpl_user_variables.test (96%) rename mysql-test/t/{rpl_stm_view.test => rpl_view.test} (82%) diff --git a/mysql-test/extra/rpl_tests/rpl_loaddata_m.test b/mysql-test/extra/rpl_tests/rpl_loaddata_m.test deleted file mode 100644 index ef90283f80e..00000000000 --- a/mysql-test/extra/rpl_tests/rpl_loaddata_m.test +++ /dev/null @@ -1,28 +0,0 @@ -# See if the master logs LOAD DATA INFILE correctly when binlog_*_db rules -# exist. -# This is for BUG#1100 (LOAD DATA INFILE was half-logged). - - --- source include/master-slave.inc - ---disable_warnings -drop database if exists mysqltest; ---enable_warnings - -connection slave; -stop slave; # don't need slave for this test - -# Test logging on master - -connection master; -# 'test' is the current database -create database mysqltest; -use mysqltest; -create table t1(a int, b int, unique(b)); -load data infile '../../std_data/rpl_loaddata.dat' into table t1; -# Starting from 5.0.3 LOAD DATA is replicated much in the same way as ordinary -# query so "show binlog ..." should show two events (before 5.0.3 no events -# were returned). ---replace_column 2 # 5 # -show binlog events from 102; -drop database mysqltest; diff --git a/mysql-test/r/rpl_row_ddl.result b/mysql-test/r/rpl_ddl.result similarity index 100% rename from mysql-test/r/rpl_row_ddl.result rename to mysql-test/r/rpl_ddl.result diff --git a/mysql-test/r/rpl_err_ignoredtable.result b/mysql-test/r/rpl_err_ignoredtable.result new file mode 100644 index 00000000000..84072be7d44 --- /dev/null +++ b/mysql-test/r/rpl_err_ignoredtable.result @@ -0,0 +1,42 @@ +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 primary key); +create table t4 (a int primary key); +insert into t1 values (1),(1); +ERROR 23000: Duplicate entry '1' for key 1 +insert into t4 values (1),(2); +show tables like 't1'; +Tables_in_test (t1) +show tables like 't4'; +Tables_in_test (t4) +t4 +SELECT * FROM test.t4; +a +1 +2 +drop table t1; +select get_lock('crash_lock%20C', 10); +get_lock('crash_lock%20C', 10) +1 +create table t2 (a int primary key); +insert into t2 values(1); +create table t3 (id int); +insert into t3 values(connection_id()); + update t2 set a = a + 1 + get_lock('crash_lock%20C', 10); +select (@id := id) - id from t3; +(@id := id) - id +0 +kill @id; +drop table t2,t3; +insert into t4 values (3),(4); +SELECT * FROM test.t4; +a +1 +2 +3 +4 +DROP TABLE test.t4; diff --git a/mysql-test/r/rpl_loaddata_m.result b/mysql-test/r/rpl_loaddata_m.result new file mode 100644 index 00000000000..1d263a41e1b --- /dev/null +++ b/mysql-test/r/rpl_loaddata_m.result @@ -0,0 +1,38 @@ +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; +USE test; +CREATE TABLE t1(a INT, b INT, UNIQUE(b)); +LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE test.t1; +SELECT COUNT(*) FROM test.t1; +COUNT(*) +2 +CREATE DATABASE mysqltest; +USE mysqltest; +CREATE TABLE t1(a INT, b INT, UNIQUE(b)); +LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE mysqltest.t1; +SELECT COUNT(*) FROM mysqltest.t1; +COUNT(*) +2 +SHOW DATABASES; +Database +information_schema +mysql +mysqltest +test +USE test; +SHOW TABLES; +Tables_in_test +USE mysqltest; +SHOW TABLES; +Tables_in_mysqltest +t1 +SELECT COUNT(*) FROM mysqltest.t1; +COUNT(*) +2 +DROP DATABASE mysqltest; +DROP TABLE test.t1; diff --git a/mysql-test/r/rpl_row_rewrt_db.result b/mysql-test/r/rpl_rewrt_db.result similarity index 100% rename from mysql-test/r/rpl_row_rewrt_db.result rename to mysql-test/r/rpl_rewrt_db.result diff --git a/mysql-test/r/rpl_stm_ddl.result b/mysql-test/r/rpl_stm_ddl.result deleted file mode 100644 index 91163f1fe29..00000000000 --- a/mysql-test/r/rpl_stm_ddl.result +++ /dev/null @@ -1,1693 +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; -SET AUTOCOMMIT = 1; -DROP DATABASE IF EXISTS mysqltest1; -DROP DATABASE IF EXISTS mysqltest2; -DROP DATABASE IF EXISTS mysqltest3; -CREATE DATABASE mysqltest1; -CREATE DATABASE mysqltest2; -CREATE TABLE mysqltest1.t1 (f1 BIGINT) ENGINE="InnoDB"; -INSERT INTO mysqltest1.t1 SET f1= 0; -CREATE TABLE mysqltest1.t2 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t3 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t4 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t5 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t6 (f1 BIGINT) ENGINE="InnoDB"; -CREATE INDEX my_idx6 ON mysqltest1.t6(f1); -CREATE TABLE mysqltest1.t7 (f1 BIGINT) ENGINE="InnoDB"; -INSERT INTO mysqltest1.t7 SET f1= 0; -CREATE TABLE mysqltest1.t8 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t9 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t10 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t11 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t12 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t13 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t14 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t15 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t16 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t17 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t18 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TABLE mysqltest1.t19 (f1 BIGINT) ENGINE="InnoDB"; -CREATE TEMPORARY TABLE mysqltest1.t23 (f1 BIGINT); -SET AUTOCOMMIT = 0; -use mysqltest1; - --------- switch to slave -------- -SET AUTOCOMMIT = 0; -use mysqltest1; - --------- switch to master ------- - -######## COMMIT ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 0 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -1 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -0 - --------- switch to master ------- -COMMIT; -SELECT MAX(f1) FROM t1; -MAX(f1) -1 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -1 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -1 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -1 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- - -######## ROLLBACK ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 1 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -2 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -1 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -1 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -1 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -1 - -TEST-INFO: MASTER: The INSERT is not committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -1 - -TEST-INFO: SLAVE: The INSERT is not committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- - -######## SET AUTOCOMMIT=1 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 1 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -2 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -1 - --------- switch to master ------- -SET AUTOCOMMIT=1; -SELECT MAX(f1) FROM t1; -MAX(f1) -2 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -2 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -2 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -2 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SET AUTOCOMMIT=0; - -######## START TRANSACTION ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 2 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -3 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -2 - --------- switch to master ------- -START TRANSACTION; -SELECT MAX(f1) FROM t1; -MAX(f1) -3 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -3 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -3 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -3 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- - -######## BEGIN ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 3 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -4 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -3 - --------- switch to master ------- -BEGIN; -SELECT MAX(f1) FROM t1; -MAX(f1) -4 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -4 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -4 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -4 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- - -######## DROP TABLE mysqltest1.t2 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 4 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -5 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -4 - --------- switch to master ------- -DROP TABLE mysqltest1.t2; -SELECT MAX(f1) FROM t1; -MAX(f1) -5 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -5 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -5 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -5 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW TABLES LIKE 't2'; -Tables_in_mysqltest1 (t2) - --------- switch to slave -------- -SHOW TABLES LIKE 't2'; -Tables_in_mysqltest1 (t2) - --------- switch to master ------- - -######## DROP TEMPORARY TABLE mysqltest1.t23 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 5 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -6 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -5 - --------- switch to master ------- -DROP TEMPORARY TABLE mysqltest1.t23; -SELECT MAX(f1) FROM t1; -MAX(f1) -6 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -5 - --------- switch to master ------- -ROLLBACK; -Warnings: -Warning 1196 Some non-transactional changed tables couldn't be rolled back -SELECT MAX(f1) FROM t1; -MAX(f1) -5 - -TEST-INFO: MASTER: The INSERT is not committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -6 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW TABLES LIKE 't23'; -Tables_in_mysqltest1 (t23) - --------- switch to slave -------- -SHOW TABLES LIKE 't23'; -Tables_in_mysqltest1 (t23) - --------- switch to master ------- - -######## RENAME TABLE mysqltest1.t3 to mysqltest1.t20 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 5 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -6 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -6 - --------- switch to master ------- -RENAME TABLE mysqltest1.t3 to mysqltest1.t20; -SELECT MAX(f1) FROM t1; -MAX(f1) -6 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -6 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -6 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -6 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW TABLES LIKE 't20'; -Tables_in_mysqltest1 (t20) -t20 - --------- switch to slave -------- -SHOW TABLES LIKE 't20'; -Tables_in_mysqltest1 (t20) -t20 - --------- switch to master ------- - -######## ALTER TABLE mysqltest1.t4 ADD column f2 BIGINT ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 6 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -7 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -6 - --------- switch to master ------- -ALTER TABLE mysqltest1.t4 ADD column f2 BIGINT; -SELECT MAX(f1) FROM t1; -MAX(f1) -7 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -7 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -7 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -7 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -describe mysqltest1.t4; -Field Type Null Key Default Extra -f1 bigint(20) YES NULL -f2 bigint(20) YES NULL - --------- switch to slave -------- -describe mysqltest1.t4; -Field Type Null Key Default Extra -f1 bigint(20) YES NULL -f2 bigint(20) YES NULL - --------- switch to master ------- - -######## CREATE TABLE mysqltest1.t21 (f1 BIGINT) ENGINE= "InnoDB" ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 7 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -8 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -7 - --------- switch to master ------- -CREATE TABLE mysqltest1.t21 (f1 BIGINT) ENGINE= "InnoDB"; -SELECT MAX(f1) FROM t1; -MAX(f1) -8 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -8 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -8 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -8 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- - -######## CREATE TEMPORARY TABLE mysqltest1.t22 (f1 BIGINT) ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 8 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -9 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -8 - --------- switch to master ------- -CREATE TEMPORARY TABLE mysqltest1.t22 (f1 BIGINT); -SELECT MAX(f1) FROM t1; -MAX(f1) -9 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -8 - --------- switch to master ------- -ROLLBACK; -Warnings: -Warning 1196 Some non-transactional changed tables couldn't be rolled back -SELECT MAX(f1) FROM t1; -MAX(f1) -8 - -TEST-INFO: MASTER: The INSERT is not committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -9 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- - -######## TRUNCATE TABLE mysqltest1.t7 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 8 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -9 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -9 - --------- switch to master ------- -TRUNCATE TABLE mysqltest1.t7; -SELECT MAX(f1) FROM t1; -MAX(f1) -9 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -9 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -9 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -9 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SELECT * FROM mysqltest1.t7; -f1 - --------- switch to slave -------- -SELECT * FROM mysqltest1.t7; -f1 - --------- switch to master ------- - -######## LOCK TABLES mysqltest1.t1 WRITE, mysqltest1.t8 READ ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 9 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -9 - --------- switch to master ------- -LOCK TABLES mysqltest1.t1 WRITE, mysqltest1.t8 READ; -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -UNLOCK TABLES; - -######## UNLOCK TABLES ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 10 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -11 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - --------- switch to master ------- -UNLOCK TABLES; -SELECT MAX(f1) FROM t1; -MAX(f1) -11 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - -TEST-INFO: MASTER: The INSERT is not committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - -TEST-INFO: SLAVE: The INSERT is not committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -LOCK TABLES mysqltest1.t1 READ; - -######## UNLOCK TABLES ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 10 + 1; -ERROR HY000: Table 't1' was locked with a READ lock and can't be updated -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - --------- switch to master ------- -UNLOCK TABLES; -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - -TEST-INFO: MASTER: The INSERT is not committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - -TEST-INFO: SLAVE: The INSERT is not committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -LOCK TABLES mysqltest1.t1 WRITE, mysqltest1.t8 READ; - -######## UNLOCK TABLES ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 10 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -11 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -10 - --------- switch to master ------- -UNLOCK TABLES; -SELECT MAX(f1) FROM t1; -MAX(f1) -11 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -11 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -11 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -11 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- - -######## DROP INDEX my_idx6 ON mysqltest1.t6 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 11 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -12 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -11 - --------- switch to master ------- -DROP INDEX my_idx6 ON mysqltest1.t6; -SELECT MAX(f1) FROM t1; -MAX(f1) -12 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -12 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -12 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -12 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW INDEX FROM mysqltest1.t6; -Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment - --------- switch to slave -------- -SHOW INDEX FROM mysqltest1.t6; -Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment - --------- switch to master ------- - -######## CREATE INDEX my_idx5 ON mysqltest1.t5(f1) ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 12 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -13 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -12 - --------- switch to master ------- -CREATE INDEX my_idx5 ON mysqltest1.t5(f1); -SELECT MAX(f1) FROM t1; -MAX(f1) -13 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -13 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -13 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -13 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW INDEX FROM mysqltest1.t5; -Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment -t5 1 my_idx5 1 f1 A 0 NULL NULL YES BTREE - --------- switch to slave -------- -SHOW INDEX FROM mysqltest1.t5; -Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment -t5 1 my_idx5 1 f1 A NULL NULL NULL YES BTREE - --------- switch to master ------- - -######## DROP DATABASE mysqltest2 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 13 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -14 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -13 - --------- switch to master ------- -DROP DATABASE mysqltest2; -SELECT MAX(f1) FROM t1; -MAX(f1) -14 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -14 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -14 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -14 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW DATABASES LIKE "mysqltest2"; -Database (mysqltest2) - --------- switch to slave -------- -SHOW DATABASES LIKE "mysqltest2"; -Database (mysqltest2) - --------- switch to master ------- - -######## CREATE DATABASE mysqltest3 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 14 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -15 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -14 - --------- switch to master ------- -CREATE DATABASE mysqltest3; -SELECT MAX(f1) FROM t1; -MAX(f1) -15 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -15 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -15 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -15 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW DATABASES LIKE "mysqltest3"; -Database (mysqltest3) -mysqltest3 - --------- switch to slave -------- -SHOW DATABASES LIKE "mysqltest3"; -Database (mysqltest3) -mysqltest3 - --------- switch to master ------- - -######## CREATE PROCEDURE p1() READS SQL DATA SELECT "this is p1" ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 15 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -16 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -15 - --------- switch to master ------- -CREATE PROCEDURE p1() READS SQL DATA SELECT "this is p1"; -SELECT MAX(f1) FROM t1; -MAX(f1) -16 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -16 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -16 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -16 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW PROCEDURE STATUS LIKE 'p1'; -Db mysqltest1 -Name p1 -Type PROCEDURE -Definer root@localhost -Modified # -Created # -Security_type DEFINER -Comment - -------- switch to slave ------- -SHOW PROCEDURE STATUS LIKE 'p1'; -Db mysqltest1 -Name p1 -Type PROCEDURE -Definer @ -Modified # -Created # -Security_type DEFINER -Comment - -######## ALTER PROCEDURE p1 COMMENT "I have been altered" ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 16 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -17 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -16 - --------- switch to master ------- -ALTER PROCEDURE p1 COMMENT "I have been altered"; -SELECT MAX(f1) FROM t1; -MAX(f1) -17 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -17 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -17 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -17 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW PROCEDURE STATUS LIKE 'p1'; -Db mysqltest1 -Name p1 -Type PROCEDURE -Definer root@localhost -Modified # -Created # -Security_type DEFINER -Comment I have been altered - -------- switch to slave ------- -SHOW PROCEDURE STATUS LIKE 'p1'; -Db mysqltest1 -Name p1 -Type PROCEDURE -Definer @ -Modified # -Created # -Security_type DEFINER -Comment I have been altered - -######## DROP PROCEDURE p1 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 17 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -18 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -17 - --------- switch to master ------- -DROP PROCEDURE p1; -SELECT MAX(f1) FROM t1; -MAX(f1) -18 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -18 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -18 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -18 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW PROCEDURE STATUS LIKE 'p1'; - -------- switch to slave ------- -SHOW PROCEDURE STATUS LIKE 'p1'; - -######## CREATE OR REPLACE VIEW v1 as select * from t1 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 18 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -19 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -18 - --------- switch to master ------- -CREATE OR REPLACE VIEW v1 as select * from t1; -SELECT MAX(f1) FROM t1; -MAX(f1) -19 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -19 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -19 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -19 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW CREATE VIEW v1; -View Create View -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`f1` AS `f1` from `t1` - --------- switch to slave ------- -SHOW CREATE VIEW v1; -View Create View -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`f1` AS `f1` from `t1` - -######## ALTER VIEW v1 AS select f1 from t1 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 19 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -20 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -19 - --------- switch to master ------- -ALTER VIEW v1 AS select f1 from t1; -SELECT MAX(f1) FROM t1; -MAX(f1) -20 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -20 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -20 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -20 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW CREATE VIEW v1; -View Create View -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`f1` AS `f1` from `t1` - --------- switch to slave ------- -SHOW CREATE VIEW v1; -View Create View -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`f1` AS `f1` from `t1` - -######## DROP VIEW IF EXISTS v1 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 20 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -21 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -20 - --------- switch to master ------- -DROP VIEW IF EXISTS v1; -SELECT MAX(f1) FROM t1; -MAX(f1) -21 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -21 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -21 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -21 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW CREATE VIEW v1; -ERROR 42S02: Table 'mysqltest1.v1' doesn't exist - --------- switch to slave ------- -SHOW CREATE VIEW v1; -ERROR 42S02: Table 'mysqltest1.v1' doesn't exist - -######## CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW SET @a:=1 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 21 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -22 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -21 - --------- switch to master ------- -CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW SET @a:=1; -SELECT MAX(f1) FROM t1; -MAX(f1) -22 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -22 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -22 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -22 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW TRIGGERS; -Trigger Event Table Statement Timing Created sql_mode Definer -trg1 INSERT t1 SET @a:=1 BEFORE NULL root@localhost - --------- switch to slave ------- -SHOW TRIGGERS; -Trigger Event Table Statement Timing Created sql_mode Definer -trg1 INSERT t1 SET @a:=1 BEFORE NULL root@localhost - -######## DROP TRIGGER trg1 ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 22 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -23 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -22 - --------- switch to master ------- -DROP TRIGGER trg1; -SELECT MAX(f1) FROM t1; -MAX(f1) -23 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -23 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -23 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -23 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SHOW TRIGGERS; -Trigger Event Table Statement Timing Created sql_mode Definer - --------- switch to slave ------- -SHOW TRIGGERS; -Trigger Event Table Statement Timing Created sql_mode Definer - -######## CREATE USER user1@localhost ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 23 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -24 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -23 - --------- switch to master ------- -CREATE USER user1@localhost; -SELECT MAX(f1) FROM t1; -MAX(f1) -24 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -24 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -24 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -24 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SELECT user FROM mysql.user WHERE user = 'user1'; -user -user1 - --------- switch to slave ------- -SELECT user FROM mysql.user WHERE user = 'user1'; -user -user1 - -######## RENAME USER user1@localhost TO rename1@localhost ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 24 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -25 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -24 - --------- switch to master ------- -RENAME USER user1@localhost TO rename1@localhost; -SELECT MAX(f1) FROM t1; -MAX(f1) -25 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -25 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -25 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -25 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SELECT user FROM mysql.user WHERE user = 'rename1'; -user -rename1 - --------- switch to slave ------- -SELECT user FROM mysql.user WHERE user = 'rename1'; -user -rename1 - -######## DROP USER rename1@localhost ######## - --------- switch to master ------- -INSERT INTO t1 SET f1= 25 + 1; -SELECT MAX(f1) FROM t1; -MAX(f1) -26 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -25 - --------- switch to master ------- -DROP USER rename1@localhost; -SELECT MAX(f1) FROM t1; -MAX(f1) -26 - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -26 - --------- switch to master ------- -ROLLBACK; -SELECT MAX(f1) FROM t1; -MAX(f1) -26 - -TEST-INFO: MASTER: The INSERT is committed (Succeeded) - --------- switch to slave -------- -SELECT MAX(f1) FROM t1; -MAX(f1) -26 - -TEST-INFO: SLAVE: The INSERT is committed (Succeeded) - --------- switch to master ------- -flush logs; - --------- switch to slave -------- -flush logs; - --------- switch to master ------- -SELECT user FROM mysql.user WHERE user = 'rename1'; -user - --------- switch to slave ------- -SELECT user FROM mysql.user WHERE user = 'rename1'; -user -DROP DATABASE IF EXISTS mysqltest1; -DROP DATABASE IF EXISTS mysqltest2; -DROP DATABASE IF EXISTS mysqltest3; diff --git a/mysql-test/r/rpl_stm_err_ignoredtable.result b/mysql-test/r/rpl_stm_err_ignoredtable.result deleted file mode 100644 index 42abb2c3c44..00000000000 --- a/mysql-test/r/rpl_stm_err_ignoredtable.result +++ /dev/null @@ -1,39 +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 (a int primary key); -insert into t1 values (1),(1); -ERROR 23000: Duplicate entry '1' for key 1 -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 -# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 292 # # master-bin.000001 Yes Yes test.t3,test.t1,test.t2 0 0 292 # None 0 No # -show tables like 't1'; -Tables_in_test (t1) -drop table t1; -select get_lock('crash_lock%20C', 10); -get_lock('crash_lock%20C', 10) -1 -create table t2 (a int primary key); -insert into t2 values(1); -create table t3 (id int); -insert into t3 values(connection_id()); - update t2 set a = a + 1 + get_lock('crash_lock%20C', 10); -select (@id := id) - id from t3; -(@id := id) - id -0 -kill @id; -drop table t2,t3; -show binlog events from 102; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1 (a int primary key) -master-bin.000001 # Query 1 # use `test`; insert into t1 values (1),(1) -master-bin.000001 # Query 1 # use `test`; drop table t1 -master-bin.000001 # Query 1 # use `test`; create table t2 (a int primary key) -master-bin.000001 # Query 1 # use `test`; insert into t2 values(1) -master-bin.000001 # Query 1 # use `test`; create table t3 (id int) -master-bin.000001 # Query 1 # use `test`; insert into t3 values(connection_id()) -master-bin.000001 # Query 1 # use `test`; update t2 set a = a + 1 + get_lock('crash_lock%20C', 10) -master-bin.000001 # Query 1 # use `test`; drop table t2,t3 diff --git a/mysql-test/r/rpl_stm_loaddata_m.result b/mysql-test/r/rpl_stm_loaddata_m.result deleted file mode 100644 index 9c7dba0e711..00000000000 --- a/mysql-test/r/rpl_stm_loaddata_m.result +++ /dev/null @@ -1,20 +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; -stop slave; -create database mysqltest; -use mysqltest; -create table t1(a int, b int, unique(b)); -load data infile '../../std_data/rpl_loaddata.dat' into table t1; -show binlog events from 102; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # drop database if exists mysqltest -master-bin.000001 # Query 1 # create database mysqltest -master-bin.000001 # Query 1 # use `mysqltest`; create table t1(a int, b int, unique(b)) -master-bin.000001 # Begin_load_query 1 # ;file_id=1;block_len=12 -master-bin.000001 # Execute_load_query 1 # use `mysqltest`; load data infile '../../std_data/rpl_loaddata.dat' into table t1 ;file_id=1 -drop database mysqltest; diff --git a/mysql-test/r/rpl_stm_rewrt_db.result b/mysql-test/r/rpl_stm_rewrt_db.result deleted file mode 100644 index 6c72e982e3e..00000000000 --- a/mysql-test/r/rpl_stm_rewrt_db.result +++ /dev/null @@ -1,93 +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 mysqltest1; -create database mysqltest1; -use mysqltest1; -create table t1 (a int); -insert into t1 values(9); -select * from mysqltest1.t1; -a -9 -show databases like 'mysqltest1'; -Database (mysqltest1) -mysqltest1 -select * from test.t1; -a -9 -drop table t1; -drop database mysqltest1; -drop database if exists rewrite; -create database rewrite; -use test; -create table t1 (a date, b date, c date not null, d date); -load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ','; -Warnings: -Warning 1265 Data truncated for column 'a' at row 1 -Warning 1265 Data truncated for column 'c' at row 1 -Warning 1265 Data truncated for column 'd' at row 1 -Warning 1265 Data truncated for column 'a' at row 2 -Warning 1265 Data truncated for column 'b' at row 2 -Warning 1265 Data truncated for column 'd' at row 2 -load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' IGNORE 2 LINES; -select * from rewrite.t1; -a b c d -0000-00-00 NULL 0000-00-00 0000-00-00 -0000-00-00 0000-00-00 0000-00-00 0000-00-00 -2003-03-03 2003-03-03 2003-03-03 NULL -2003-03-03 2003-03-03 2003-03-03 NULL -truncate table t1; -load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' LINES STARTING BY ',' (b,c,d); -Warnings: -Warning 1265 Data truncated for column 'c' at row 1 -Warning 1265 Data truncated for column 'd' at row 1 -Warning 1265 Data truncated for column 'b' at row 2 -Warning 1265 Data truncated for column 'd' at row 2 -select * from rewrite.t1; -a b c d -NULL NULL 0000-00-00 0000-00-00 -NULL 0000-00-00 0000-00-00 0000-00-00 -NULL 2003-03-03 2003-03-03 NULL -drop table t1; -create table t1 (a text, b text); -load data infile '../../std_data/loaddata2.dat' into table t1 fields terminated by ',' enclosed by ''''; -Warnings: -Warning 1261 Row 3 doesn't contain data for all columns -select concat('|',a,'|'), concat('|',b,'|') from rewrite.t1; -concat('|',a,'|') concat('|',b,'|') -|Field A| |Field B| -|Field 1| |Field 2' -Field 3,'Field 4| -|Field 5' ,'Field 6| NULL -|Field 6| | 'Field 7'| -drop table t1; -create table t1 (a int, b char(10)); -load data infile '../../std_data/loaddata3.dat' into table t1 fields terminated by '' enclosed by '' ignore 1 lines; -Warnings: -Warning 1264 Out of range value for column 'a' at row 3 -Warning 1262 Row 3 was truncated; it contained more data than there were input columns -Warning 1264 Out of range value for column 'a' at row 5 -Warning 1262 Row 5 was truncated; it contained more data than there were input columns -select * from rewrite.t1; -a b -1 row 1 -2 row 2 -0 1234567890 -3 row 3 -0 1234567890 -truncate table t1; -load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated by '' enclosed by '' lines terminated by '' ignore 1 lines; -Warnings: -Warning 1264 Out of range value for column 'a' at row 4 -Warning 1261 Row 4 doesn't contain data for all columns -select * from rewrite.t1; -a b -1 row 1 -2 row 2 -3 row 3 -0 -drop database rewrite; -drop table t1; diff --git a/mysql-test/r/rpl_stm_timezone.result b/mysql-test/r/rpl_stm_timezone.result deleted file mode 100644 index 64d05aa787e..00000000000 --- a/mysql-test/r/rpl_stm_timezone.result +++ /dev/null @@ -1,127 +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; -set timestamp=100000000; -create table t1 (t timestamp); -create table t2 (t char(32)); -select @@time_zone; -@@time_zone -Japan -select @@time_zone; -@@time_zone -Europe/Moscow -insert into t1 values ('20050101000000'), ('20050611093902'); -set time_zone='UTC'; -insert into t1 values ('20040101000000'), ('20040611093902'); -select * from t1; -t -2004-12-31 21:00:00 -2005-06-11 05:39:02 -2004-01-01 00:00:00 -2004-06-11 09:39:02 -set time_zone='UTC'; -select * from t1; -t -2004-12-31 21:00:00 -2005-06-11 05:39:02 -2004-01-01 00:00:00 -2004-06-11 09:39:02 -delete from t1; -set time_zone='Europe/Moscow'; -insert into t1 values ('20040101000000'), ('20040611093902'); -select * from t1; -t -2004-01-01 00:00:00 -2004-06-11 09:39:02 -set time_zone='Europe/Moscow'; -select * from t1; -t -2004-01-01 00:00:00 -2004-06-11 09:39:02 -/*!40019 SET @@session.max_insert_delayed_threads=0*/; -/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; -ROLLBACK; -use test; -SET TIMESTAMP=100000000; -SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1; -SET @@session.sql_mode=0; -SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8; -create table t1 (t timestamp); -SET TIMESTAMP=100000000; -create table t2 (t char(32)); -SET TIMESTAMP=100000000; -SET @@session.time_zone='Europe/Moscow'; -insert into t1 values ('20050101000000'), ('20050611093902'); -SET TIMESTAMP=100000000; -SET @@session.time_zone='UTC'; -insert into t1 values ('20040101000000'), ('20040611093902'); -SET TIMESTAMP=100000000; -delete from t1; -SET TIMESTAMP=100000000; -SET @@session.time_zone='Europe/Moscow'; -insert into t1 values ('20040101000000'), ('20040611093902'); -# End of log file -ROLLBACK /* added by mysqlbinlog */; -/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; -delete from t1; -set time_zone='UTC'; -load data infile '../../std_data/rpl_timezone.dat' into table t1; -select * from t1; -t -2004-01-01 00:00:00 -2004-06-11 09:39:02 -set time_zone='UTC'; -select * from t1; -t -2004-01-01 00:00:00 -2004-06-11 09:39:02 -set time_zone='Europe/Moscow'; -set time_zone='Europe/Moscow'; -delete from t1; -insert into t1 values ('20040101000000'), ('20040611093902'); -set time_zone='MET'; -insert into t2 (select t from t1); -select * from t1; -t -2003-12-31 22:00:00 -2004-06-11 07:39:02 -select * from t2; -t -2003-12-31 22:00:00 -2004-06-11 07:39:02 -delete from t2; -set timestamp=1000072000; -insert into t2 values (current_timestamp), (current_date), (current_time); -select * from t2; -t -2001-09-09 23:46:40 -2001-09-09 -23:46:40 -delete from t2; -insert into t2 values (from_unixtime(1000000000)), -(unix_timestamp('2001-09-09 03:46:40')); -select * from t2; -t -2001-09-09 03:46:40 -1000000000 -select * from t2; -t -2001-09-09 03:46:40 -1000000000 -set global time_zone='MET'; -delete from t2; -set time_zone='UTC'; -insert into t2 values(convert_tz('2004-01-01 00:00:00','MET',@@time_zone)); -insert into t2 values(convert_tz('2005-01-01 00:00:00','MET','Japan')); -select * from t2; -t -2003-12-31 23:00:00 -2005-01-01 08:00:00 -select * from t2; -t -2003-12-31 23:00:00 -2005-01-01 08:00:00 -drop table t1, t2; diff --git a/mysql-test/r/rpl_stm_user_variables.result b/mysql-test/r/rpl_stm_user_variables.result deleted file mode 100644 index 3e2efcbe9da..00000000000 --- a/mysql-test/r/rpl_stm_user_variables.result +++ /dev/null @@ -1,82 +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; -reset master; -create table t1(n char(30)); -set @i1:=12345678901234, @i2:=-12345678901234, @i3:=0, @i4:=-1; -set @s1:='This is a test', @r1:=12.5, @r2:=-12.5; -set @n1:=null; -set @s2:='', @s3:='abc\'def', @s4:= 'abc\\def', @s5:= 'abc''def'; -insert into t1 values (@i1), (@i2), (@i3), (@i4); -insert into t1 values (@r1), (@r2); -insert into t1 values (@s1), (@s2), (@s3), (@s4), (@s5); -insert into t1 values (@n1); -insert into t1 values (@n2); -insert into t1 values (@a:=0), (@a:=@a+1), (@a:=@a+1); -insert into t1 values (@a+(@b:=@a+1)); -set @q:='abc'; -insert t1 values (@q), (@q:=concat(@q, 'n1')), (@q:=concat(@q, 'n2')); -set @a:=5; -insert into t1 values (@a),(@a); -select * from t1 where n = ''; -n -insert into t1 values (@a),(@a),(@a*5); -select * from t1; -n -12345678901234 --12345678901234 -0 --1 -12.5 --12.5 -This is a test - -abc'def -abc\def -abc'def -NULL -NULL -0 -1 -2 -5 -abc -abcn1 -abcn1n2 -5 -5 -NULL -NULL -NULL -select * from t1; -n -12345678901234 --12345678901234 -0 --1 -12.5 --12.5 -This is a test - -abc'def -abc\def -abc'def -NULL -NULL -0 -1 -2 -5 -abc -abcn1 -abcn1n2 -5 -5 -NULL -NULL -NULL -drop table t1; -stop slave; diff --git a/mysql-test/r/rpl_stm_view.result b/mysql-test/r/rpl_stm_view.result deleted file mode 100644 index cf4c161b296..00000000000 --- a/mysql-test/r/rpl_stm_view.result +++ /dev/null @@ -1,56 +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 table if exists t1,v1; -drop view if exists t1,v1; -reset master; -create table t1 (a int); -insert into t1 values (1); -create view v1 as select a from t1; -insert into v1 values (2); -select * from v1 order by a; -a -1 -2 -select * from v1 order by a; -a -1 -2 -update v1 set a=3 where a=1; -select * from v1 order by a; -a -2 -3 -select * from v1 order by a; -a -2 -3 -delete from v1 where a=2; -select * from v1 order by a; -a -3 -select * from v1 order by a; -a -3 -alter view v1 as select a as b from t1; -select * from v1 order by 1; -b -3 -drop view v1; -select * from v1 order by a; -ERROR 42S02: Table 'test.v1' doesn't exist -drop table t1; -show binlog events limit 1,100; -Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000001 # Query 1 # use `test`; create table t1 (a int) -slave-bin.000001 # Query 1 # use `test`; insert into t1 values (1) -slave-bin.000001 # Query 1 # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW v1 AS select a from t1 -slave-bin.000001 # Query 1 # use `test`; insert into v1 values (2) -slave-bin.000001 # Query 1 # use `test`; update v1 set a=3 where a=1 -slave-bin.000001 # Query 1 # use `test`; delete from v1 where a=2 -slave-bin.000001 # Query 1 # use `test`; ALTER ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW v1 AS select a as b from t1 -slave-bin.000001 # Query 1 # use `test`; drop view v1 -slave-bin.000001 # Query 1 # use `test`; drop table t1 diff --git a/mysql-test/r/rpl_row_timezone.result b/mysql-test/r/rpl_timezone.result similarity index 76% rename from mysql-test/r/rpl_row_timezone.result rename to mysql-test/r/rpl_timezone.result index 26c10648ffb..9c45997cbf6 100644 --- a/mysql-test/r/rpl_row_timezone.result +++ b/mysql-test/r/rpl_timezone.result @@ -9,7 +9,7 @@ create table t1 (t timestamp, n int not null auto_increment, PRIMARY KEY(n)); create table t2 (t char(32), n int not null auto_increment, PRIMARY KEY(n)); select @@time_zone; @@time_zone -Europe/Moscow +Japan select @@time_zone; @@time_zone Europe/Moscow @@ -23,10 +23,10 @@ t n 2004-06-11 09:39:02 4 select * from t1; t n -2005-01-01 00:00:00 1 -2005-06-11 09:39:02 2 -2004-01-01 00:00:00 3 -2004-06-11 09:39:02 4 +2005-01-01 06:00:00 1 +2005-06-11 14:39:02 2 +2004-01-01 06:00:00 3 +2004-06-11 14:39:02 4 delete from t1; set time_zone='Europe/Moscow'; insert into t1 values ('20040101000000',NULL), ('20040611093902',NULL); @@ -39,22 +39,6 @@ select * from t1; t n 2004-01-01 00:00:00 5 2004-06-11 09:39:02 6 -/*!40019 SET @@session.max_insert_delayed_threads=0*/; -/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; -ROLLBACK; -use test; -SET TIMESTAMP=100000000; -SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1; -SET @@session.sql_mode=0; -SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8; -create table t1 (t timestamp, n int not null auto_increment, PRIMARY KEY(n)); -SET TIMESTAMP=100000000; -create table t2 (t char(32), n int not null auto_increment, PRIMARY KEY(n)); -SET TIMESTAMP=100000000; -delete from t1; -# End of log file -ROLLBACK /* added by mysqlbinlog */; -/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; delete from t1; set time_zone='UTC'; load data infile '../../std_data/rpl_timezone2.dat' into table t1; diff --git a/mysql-test/r/rpl_row_user_variables.result b/mysql-test/r/rpl_user_variables.result similarity index 100% rename from mysql-test/r/rpl_row_user_variables.result rename to mysql-test/r/rpl_user_variables.result diff --git a/mysql-test/r/rpl_row_view.result b/mysql-test/r/rpl_view.result similarity index 98% rename from mysql-test/r/rpl_row_view.result rename to mysql-test/r/rpl_view.result index ce807a361ba..f038f4d00cb 100644 --- a/mysql-test/r/rpl_row_view.result +++ b/mysql-test/r/rpl_view.result @@ -6,6 +6,7 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; drop table if exists t1,v1; drop view if exists t1,v1; +reset master; create table t1 (a int); insert into t1 values (1); create view v1 as select a from t1; diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index f32ed667864..683cd4558ea 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -25,3 +25,5 @@ type_time : Bug#15805 rpl000002 : Bug#15920 Temporary tables are not binlogged in SBR ps_7ndb : Bug#15923 Core dump in RBR mode when executing test suite sp_trans : Bug#15924 Code dump in RBR mode when executing test suite +rpl_loaddata_m : Bug#15942 RBR ignores --binlog_ignore_db +rpl_ddl : Bug#15963 SBR does not show "Definer" correctly diff --git a/mysql-test/t/rpl_row_ddl.test b/mysql-test/t/rpl_ddl.test similarity index 97% rename from mysql-test/t/rpl_row_ddl.test rename to mysql-test/t/rpl_ddl.test index 2433d6a83a7..d08406334d1 100644 --- a/mysql-test/t/rpl_row_ddl.test +++ b/mysql-test/t/rpl_ddl.test @@ -29,7 +29,6 @@ # --source include/have_innodb.inc ---source include/have_binlog_format_row.inc --source include/master-slave.inc let $engine_type= "InnoDB"; -- source extra/rpl_tests/rpl_ddl.test diff --git a/mysql-test/t/rpl_stm_err_ignoredtable-slave.opt b/mysql-test/t/rpl_err_ignoredtable-slave.opt similarity index 100% rename from mysql-test/t/rpl_stm_err_ignoredtable-slave.opt rename to mysql-test/t/rpl_err_ignoredtable-slave.opt diff --git a/mysql-test/extra/rpl_tests/rpl_err_ignoredtable.test b/mysql-test/t/rpl_err_ignoredtable.test similarity index 77% rename from mysql-test/extra/rpl_tests/rpl_err_ignoredtable.test rename to mysql-test/t/rpl_err_ignoredtable.test index e439dbdc388..81aa76225be 100644 --- a/mysql-test/extra/rpl_tests/rpl_err_ignoredtable.test +++ b/mysql-test/t/rpl_err_ignoredtable.test @@ -7,20 +7,19 @@ connection master; create table t1 (a int primary key); +create table t4 (a int primary key); # generate an error that goes to the binlog --error 1062 insert into t1 values (1),(1); +insert into t4 values (1),(2); save_master_pos; connection slave; # as the t1 table is ignored on the slave, the slave should be able to sync sync_with_master; -# The port number is different when doing the release build with -# Do-compile, hence we have to replace the port number here accordingly ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 8 # 9 # 23 # 33 # -show slave status; # check that the table has been ignored, because otherwise the test is nonsense show tables like 't1'; +show tables like 't4'; +SELECT * FROM test.t4; connection master; drop table t1; save_master_pos; @@ -46,17 +45,20 @@ real_sleep 2; select (@id := id) - id from t3; kill @id; drop table t2,t3; +insert into t4 values (3),(4); connection master; --error 0,1053,2013 reap; connection master1; ---replace_column 2 # 5 # -show binlog events from 102; save_master_pos; connection slave; -# SQL slave thread should not have stopped (because table of the killed -# query is in the ignore list). sync_with_master; +SELECT * FROM test.t4; +connection master1; +DROP TABLE test.t4; +save_master_pos; +connection slave; +sync_with_master; # End of 4.1 tests # Adding comment for force manual merge 5.0 -> wl1012. delete me if needed diff --git a/mysql-test/t/rpl_stm_loaddata_m-master.opt b/mysql-test/t/rpl_loaddata_m-master.opt similarity index 100% rename from mysql-test/t/rpl_stm_loaddata_m-master.opt rename to mysql-test/t/rpl_loaddata_m-master.opt diff --git a/mysql-test/t/rpl_loaddata_m.test b/mysql-test/t/rpl_loaddata_m.test new file mode 100644 index 00000000000..01ef89d4efc --- /dev/null +++ b/mysql-test/t/rpl_loaddata_m.test @@ -0,0 +1,49 @@ +# See if the master logs LOAD DATA INFILE correctly when binlog_*_db rules +# exist. +# This is for BUG#1100 (LOAD DATA INFILE was half-logged). +###################################################### +# Change Author: JBM +# Change Date: 2005-12-22 +# Change: Test rewritten to remove show binlog events +# and to test the option better + Cleanup +###################################################### +-- source include/master-slave.inc + +--disable_warnings +drop database if exists mysqltest; +--enable_warnings + +connection master; +# 'test' database should be ignored by the slave +USE test; +CREATE TABLE t1(a INT, b INT, UNIQUE(b)); +LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE test.t1; +SELECT COUNT(*) FROM test.t1; + +# 'mysqltest' database should NOT be ignored by the slave +CREATE DATABASE mysqltest; +USE mysqltest; +CREATE TABLE t1(a INT, b INT, UNIQUE(b)); +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; + +SHOW DATABASES; + +USE test; +SHOW TABLES; + +USE mysqltest; +SHOW TABLES; +SELECT COUNT(*) FROM mysqltest.t1; + +#show binlog events; +connection master; +DROP DATABASE mysqltest; +DROP TABLE test.t1; + +# End of test diff --git a/mysql-test/t/rpl_row_rewrt_db-slave.opt b/mysql-test/t/rpl_rewrt_db-slave.opt similarity index 100% rename from mysql-test/t/rpl_row_rewrt_db-slave.opt rename to mysql-test/t/rpl_rewrt_db-slave.opt diff --git a/mysql-test/t/rpl_stm_rewrt_db.test b/mysql-test/t/rpl_rewrt_db.test similarity index 100% rename from mysql-test/t/rpl_stm_rewrt_db.test rename to mysql-test/t/rpl_rewrt_db.test diff --git a/mysql-test/t/rpl_row_log.test b/mysql-test/t/rpl_row_log.test index 290a08ff75a..29abf5bb93e 100644 --- a/mysql-test/t/rpl_row_log.test +++ b/mysql-test/t/rpl_row_log.test @@ -1,4 +1,4 @@ -# Requires statement logging +# Requires row base logging -- source include/have_binlog_format_row.inc -- source extra/rpl_tests/rpl_log.test diff --git a/mysql-test/t/rpl_row_rewrt_db.test b/mysql-test/t/rpl_row_rewrt_db.test deleted file mode 100644 index 8781b361d87..00000000000 --- a/mysql-test/t/rpl_row_rewrt_db.test +++ /dev/null @@ -1,83 +0,0 @@ -# TBF - difference in row level logging --- source include/have_binlog_format_row.inc --- source include/master-slave.inc - ---disable_warnings -drop database if exists mysqltest1; ---enable_warnings -create database mysqltest1; - -use mysqltest1; -create table t1 (a int); -insert into t1 values(9); -select * from mysqltest1.t1; -sync_slave_with_master; -show databases like 'mysqltest1'; # should be empty -select * from test.t1; -# cleanup -connection master; -drop table t1; -drop database mysqltest1; -sync_slave_with_master; - -# -# BUG#6353: -# Option --replicate-rewrite-db should work together with LOAD DATA INFILE -# - -connection slave; ---disable_warnings -drop database if exists rewrite; ---enable_warnings -create database rewrite; - -connection master; -use test; -create table t1 (a date, b date, c date not null, d date); -load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ','; -load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' IGNORE 2 LINES; -sync_slave_with_master; - -connection slave; -select * from rewrite.t1; - -connection master; -truncate table t1; -load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' LINES STARTING BY ',' (b,c,d); -sync_slave_with_master; - -connection slave; -select * from rewrite.t1; - -connection master; -drop table t1; -create table t1 (a text, b text); -load data infile '../../std_data/loaddata2.dat' into table t1 fields terminated by ',' enclosed by ''''; -sync_slave_with_master; - -connection slave; -select concat('|',a,'|'), concat('|',b,'|') from rewrite.t1; - -connection master; -drop table t1; -create table t1 (a int, b char(10)); -load data infile '../../std_data/loaddata3.dat' into table t1 fields terminated by '' enclosed by '' ignore 1 lines; -sync_slave_with_master; - -connection slave; -select * from rewrite.t1; - -connection master; -truncate table t1; -load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated by '' enclosed by '' lines terminated by '' ignore 1 lines; -sync_slave_with_master; - -connection slave; -# The empty line last comes from the end line field in the file -select * from rewrite.t1; - -drop database rewrite; - -connection master; -drop table t1; - diff --git a/mysql-test/t/rpl_row_timezone-slave.opt b/mysql-test/t/rpl_row_timezone-slave.opt deleted file mode 100644 index c383fd9f17d..00000000000 --- a/mysql-test/t/rpl_row_timezone-slave.opt +++ /dev/null @@ -1,2 +0,0 @@ ---default-time-zone=Europe/Moscow - diff --git a/mysql-test/t/rpl_row_user_variables.test b/mysql-test/t/rpl_row_user_variables.test deleted file mode 100644 index 2ebb668b1a8..00000000000 --- a/mysql-test/t/rpl_row_user_variables.test +++ /dev/null @@ -1,4 +0,0 @@ -# row-based and statement binlog difference in result files --- source include/have_binlog_format_row.inc --- source extra/rpl_tests/rpl_user_variables.test - diff --git a/mysql-test/t/rpl_row_view.test b/mysql-test/t/rpl_row_view.test deleted file mode 100644 index 6d460d58df6..00000000000 --- a/mysql-test/t/rpl_row_view.test +++ /dev/null @@ -1,47 +0,0 @@ -# NYI - row-based cannot use CREATE ... SELECT ---source include/have_binlog_format_row.inc - -source include/master-slave.inc; ---disable_warnings -drop table if exists t1,v1; -drop view if exists t1,v1; -sync_slave_with_master; ---enable_warnings - -# -# Check that createion drop of view is replicated, also check replication of -# updating of view -# -connection master; -create table t1 (a int); -insert into t1 values (1); -create view v1 as select a from t1; -insert into v1 values (2); -select * from v1 order by a; -sync_slave_with_master; -# view already have to be on slave -select * from v1 order by a; -connection master; -update v1 set a=3 where a=1; -select * from v1 order by a; -sync_slave_with_master; -select * from v1 order by a; -connection master; -delete from v1 where a=2; -select * from v1 order by a; -sync_slave_with_master; -select * from v1 order by a; -connection master; -# 'alter view' internally maped to creation, but still check that it works -alter view v1 as select a as b from t1; -sync_slave_with_master; -select * from v1 order by 1; -connection master; -drop view v1; -sync_slave_with_master; -#error, because view have to be removed from slave --- error 1146 -select * from v1 order by a; -connection master; -drop table t1; -sync_slave_with_master; diff --git a/mysql-test/t/rpl_stm_ddl.test b/mysql-test/t/rpl_stm_ddl.test deleted file mode 100644 index 54548114f86..00000000000 --- a/mysql-test/t/rpl_stm_ddl.test +++ /dev/null @@ -1,35 +0,0 @@ -######################## rpl_ddl.test ######################## -# # -# DDL statements (sometimes with implicit COMMIT) executed # -# by the master and it's propagation into the slave # -# # -############################################################## - -# -# NOTE, PLEASE BE CAREFUL, WHEN MODIFYING THE TESTS !! -# -# 1. !All! objects to be dropped, renamed, altered ... must be created -# in AUTOCOMMIT= 1 mode before AUTOCOMMIT is set to 0 and the test -# sequences start. -# -# 2. Never use a test object, which was direct or indirect affected by a -# preceeding test sequence again. -# Except table d1.t1 where ONLY DML is allowed. -# -# If one preceeding test sequence hits a (sometimes not good visible, -# because the sql error code of the statement might be 0) bug -# and these rules are ignored, a following test sequence might earn ugly -# effects like failing 'sync_slave_with_master', crashes of the slave or -# abort of the test case etc.. -# -# 3. The assignment of the DDL command to be tested to $my_stmt can -# be a bit difficult. "'" must be avoided, because the test -# routine "include/rpl_stmt_seq.inc" performs a -# eval SELECT CONCAT('######## ','$my_stmt',' ########') as ""; -# - ---source include/have_innodb.inc ---source include/have_binlog_format_statement.inc ---source include/master-slave.inc -let $engine_type= "InnoDB"; --- source extra/rpl_tests/rpl_ddl.test diff --git a/mysql-test/t/rpl_stm_err_ignoredtable.test b/mysql-test/t/rpl_stm_err_ignoredtable.test deleted file mode 100644 index a426be27b59..00000000000 --- a/mysql-test/t/rpl_stm_err_ignoredtable.test +++ /dev/null @@ -1,8 +0,0 @@ -# Test for -# Bug #797: If a query is ignored on slave (replicate-ignore-table) the slave -# still checks that it has the same error as on the master. - -# Requires statement logging --- source include/have_binlog_format_statement.inc --- source extra/rpl_tests/rpl_err_ignoredtable.test - diff --git a/mysql-test/t/rpl_stm_rewrt_db-slave.opt b/mysql-test/t/rpl_stm_rewrt_db-slave.opt deleted file mode 100644 index a462ad19ba0..00000000000 --- a/mysql-test/t/rpl_stm_rewrt_db-slave.opt +++ /dev/null @@ -1 +0,0 @@ -"--replicate-rewrite-db=test->rewrite" "--replicate-rewrite-db=mysqltest1->test" diff --git a/mysql-test/t/rpl_stm_timezone-master.opt b/mysql-test/t/rpl_stm_timezone-master.opt deleted file mode 100644 index 8e43bfbbb7e..00000000000 --- a/mysql-test/t/rpl_stm_timezone-master.opt +++ /dev/null @@ -1 +0,0 @@ ---default-time-zone=Europe/Moscow diff --git a/mysql-test/t/rpl_stm_timezone.test b/mysql-test/t/rpl_stm_timezone.test deleted file mode 100644 index 0cd6dbf5d89..00000000000 --- a/mysql-test/t/rpl_stm_timezone.test +++ /dev/null @@ -1,129 +0,0 @@ -# TBF - difference in row level logging --- source include/have_binlog_format_statement.inc - -# Test of replication of time zones. - -# There is currently some bug possibly in prepared statements (this -# test fails with --ps-protocol): sys_var_thd_time_zone::value_ptr() -# is called only at prepare time, not at execution time. So, -# thd->time_zone_used is not equal to 1 (it is back to 0, because of -# reset_thd_for_next_command called at execution time), so the -# timezone used in CONVERT_TZ is not binlogged. To debug (by Guilhem -# and possibly Konstantin). - ---disable_ps_protocol - -source include/master-slave.inc; - -# Some preparations -let $VERSION=`select version()`; -set timestamp=100000000; # for fixed output of mysqlbinlog -create table t1 (t timestamp); -create table t2 (t char(32)); - -connection slave; -select @@time_zone; - -# -# Let us check how well replication works when we are saving datetime -# value in TIMESTAMP field. -# -connection master; -select @@time_zone; -insert into t1 values ('20050101000000'), ('20050611093902'); -set time_zone='UTC'; -insert into t1 values ('20040101000000'), ('20040611093902'); -select * from t1; -sync_slave_with_master; -set time_zone='UTC'; -select * from t1; - -# Let us check also that setting of time_zone back to default also works -# well -connection master; -delete from t1; -set time_zone='Europe/Moscow'; -insert into t1 values ('20040101000000'), ('20040611093902'); -select * from t1; -sync_slave_with_master; -set time_zone='Europe/Moscow'; -select * from t1; -connection master; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001 - -# Let us check with LOAD DATA INFILE -# (we do it after mysqlbinlog because the temp files names are not constant) -connection master; -delete from t1; -set time_zone='UTC'; -load data infile '../../std_data/rpl_timezone.dat' into table t1; -select * from t1; -sync_slave_with_master; -set time_zone='UTC'; -select * from t1; -set time_zone='Europe/Moscow'; - -# Put back values of before the LOAD -connection master; -set time_zone='Europe/Moscow'; -delete from t1; -insert into t1 values ('20040101000000'), ('20040611093902'); - -# -# Now let us check how well we replicate statments reading TIMESTAMP fields -# (We should see the same data on master and on slave but it should differ -# from originally inserted) -# -set time_zone='MET'; -insert into t2 (select t from t1); -select * from t1; -sync_slave_with_master; -select * from t2; - -# -# Now let us check how well we replicate various CURRENT_* functions -# -connection master; -delete from t2; -set timestamp=1000072000; -insert into t2 values (current_timestamp), (current_date), (current_time); -sync_slave_with_master; -select * from t2; - -# -# At last let us check replication of FROM_UNIXTIME/UNIX_TIMESTAMP functions. -# -connection master; -delete from t2; -insert into t2 values (from_unixtime(1000000000)), - (unix_timestamp('2001-09-09 03:46:40')); -select * from t2; -sync_slave_with_master; -# We should get same result on slave as on master -select * from t2; - -# -# Let us check that we are allowing to set global time_zone with -# replication -# -connection master; -set global time_zone='MET'; - -# -# Let us see if CONVERT_TZ(@@time_zone) replicates -# -delete from t2; -set time_zone='UTC'; -insert into t2 values(convert_tz('2004-01-01 00:00:00','MET',@@time_zone)); -insert into t2 values(convert_tz('2005-01-01 00:00:00','MET','Japan')); -select * from t2; -sync_slave_with_master; -select * from t2; - -# Clean up -connection master; -drop table t1, t2; -sync_slave_with_master; - -# End of 4.1 tests diff --git a/mysql-test/t/rpl_stm_user_variables.test b/mysql-test/t/rpl_stm_user_variables.test deleted file mode 100644 index af4e46cdace..00000000000 --- a/mysql-test/t/rpl_stm_user_variables.test +++ /dev/null @@ -1,5 +0,0 @@ -# row-based and statement binlog difference in result files --- source include/have_binlog_format_statement.inc --- source extra/rpl_tests/rpl_user_variables.test - -# End of 4.1 tests diff --git a/mysql-test/t/rpl_row_timezone-master.opt b/mysql-test/t/rpl_timezone-master.opt similarity index 100% rename from mysql-test/t/rpl_row_timezone-master.opt rename to mysql-test/t/rpl_timezone-master.opt diff --git a/mysql-test/t/rpl_stm_timezone-slave.opt b/mysql-test/t/rpl_timezone-slave.opt similarity index 100% rename from mysql-test/t/rpl_stm_timezone-slave.opt rename to mysql-test/t/rpl_timezone-slave.opt diff --git a/mysql-test/t/rpl_row_timezone.test b/mysql-test/t/rpl_timezone.test similarity index 93% rename from mysql-test/t/rpl_row_timezone.test rename to mysql-test/t/rpl_timezone.test index 047a458f09f..e78f1e1899e 100644 --- a/mysql-test/t/rpl_row_timezone.test +++ b/mysql-test/t/rpl_timezone.test @@ -1,6 +1,3 @@ -# TBF - difference in row level logging --- source include/have_binlog_format_row.inc - # Test of replication of time zones. # There is currently some bug possibly in prepared statements (this @@ -51,8 +48,11 @@ sync_slave_with_master; set time_zone='Europe/Moscow'; select * from t1; connection master; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001 +# Change Author: JBM +# Change Date: 2005-12-22 +# Change: Comment out the exec of the binlog so test works for both SBR and RBR +#--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR +#--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001 # Let us check with LOAD DATA INFILE # (we do it after mysqlbinlog because the temp files names are not constant) @@ -74,7 +74,7 @@ insert into t1 values ('20040101000000',NULL), ('20040611093902',NULL); # # Now let us check how well we replicate statments reading TIMESTAMP fields -# (We should see the same data on master and on slave but it should differ +# (We should see the same data on master and on slave but it should differ # from originally inserted) # set time_zone='MET'; @@ -127,3 +127,4 @@ select * from t2; connection master; drop table t1, t2; sync_slave_with_master; + diff --git a/mysql-test/extra/rpl_tests/rpl_user_variables.test b/mysql-test/t/rpl_user_variables.test similarity index 96% rename from mysql-test/extra/rpl_tests/rpl_user_variables.test rename to mysql-test/t/rpl_user_variables.test index 256c244d4eb..b46a0fad02e 100644 --- a/mysql-test/extra/rpl_tests/rpl_user_variables.test +++ b/mysql-test/t/rpl_user_variables.test @@ -1,4 +1,3 @@ -# row-based and statement binlog difference in result files # # Test of replicating user variables # diff --git a/mysql-test/t/rpl_stm_view.test b/mysql-test/t/rpl_view.test similarity index 82% rename from mysql-test/t/rpl_stm_view.test rename to mysql-test/t/rpl_view.test index 39f39705f77..0e8c7514488 100644 --- a/mysql-test/t/rpl_stm_view.test +++ b/mysql-test/t/rpl_view.test @@ -1,5 +1,4 @@ # NYI - row-based cannot use CREATE ... SELECT ---source include/have_binlog_format_statement.inc source include/master-slave.inc; --disable_warnings @@ -10,7 +9,7 @@ reset master; --enable_warnings # -# Check that createion drop of view is replicated, also check replication of +# Check that creation drop of view is replicated, also check replication of # updating of view # connection master; @@ -46,5 +45,8 @@ select * from v1 order by a; connection master; drop table t1; sync_slave_with_master; ---replace_column 2 # 5 # -show binlog events limit 1,100; +# Change Author: JBM +# Change Date: 2005-12-22 +# Change: Commented out binlog events to work with SBR and RBR +#--replace_column 2 # 5 # +# show binlog events limit 1,100; From 54231e455488d73731a7f300f95da6d70d5d874c Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 24 Dec 2005 12:07:07 +0100 Subject: [PATCH 05/48] Bug#15924 (Core dump in sp_trans): Added code for pending event flush just before executing the function or trigger. mysql-test/t/disabled.def: Enabling sp_trans test. sql/log.cc: Reorganizing/simplifying code. sql/sql_class.cc: Added code to flush pending event before executing a function/trigger. --- mysql-test/t/disabled.def | 2 +- sql/log.cc | 18 +++++++++++------- sql/sql_class.cc | 17 +++++++++++++++++ 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index f32ed667864..5fdc6f6f3dc 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -24,4 +24,4 @@ subselect : Bug#15706 type_time : Bug#15805 rpl000002 : Bug#15920 Temporary tables are not binlogged in SBR ps_7ndb : Bug#15923 Core dump in RBR mode when executing test suite -sp_trans : Bug#15924 Code dump in RBR mode when executing test suite +#sp_trans : Bug#15924 Code dump in RBR mode when executing test suite diff --git a/sql/log.cc b/sql/log.cc index 44d3869e9d5..dd08ca7b9b5 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -241,13 +241,15 @@ static int binlog_savepoint_set(THD *thd, void *sv) DBUG_ENTER("binlog_savepoint_set"); binlog_trx_data *const trx_data= (binlog_trx_data*) thd->ha_data[binlog_hton.slot]; - IO_CACHE *trans_log= &trx_data->trans_log; - DBUG_ASSERT(mysql_bin_log.is_open() && my_b_tell(trans_log)); + DBUG_ASSERT(mysql_bin_log.is_open() && my_b_tell(&trx_data->trans_log)); - *(my_off_t *)sv= my_b_tell(trans_log); + *(my_off_t *)sv= my_b_tell(&trx_data->trans_log); /* Write it to the binary log */ - Query_log_event qinfo(thd, thd->query, thd->query_length, TRUE, FALSE); - DBUG_RETURN(mysql_bin_log.write(&qinfo)); + + int const error= + thd->binlog_query(THD::STMT_QUERY_TYPE, + thd->query, thd->query_length, TRUE, FALSE); + DBUG_RETURN(error); } static int binlog_savepoint_rollback(THD *thd, void *sv) @@ -265,8 +267,10 @@ static int binlog_savepoint_rollback(THD *thd, void *sv) */ if (unlikely(thd->options & OPTION_STATUS_NO_TRANS_UPDATE)) { - Query_log_event qinfo(thd, thd->query, thd->query_length, TRUE, FALSE); - DBUG_RETURN(mysql_bin_log.write(&qinfo)); + int const error= + thd->binlog_query(THD::STMT_QUERY_TYPE, + thd->query, thd->query_length, TRUE, FALSE); + DBUG_RETURN(error); } reinit_io_cache(trans_log, WRITE_CACHE, *(my_off_t *)sv, 0, 0); DBUG_RETURN(0); diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 08d89228a72..2bc0d8d59ab 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1969,6 +1969,23 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup, backup->client_capabilities= client_capabilities; backup->savepoints= transaction.savepoints; + /* + For row-based replication and before executing a function/trigger, + the pending rows event has to be flushed. The function/trigger + might execute statement that require the pending event to be + flushed. A simple example: + + CREATE FUNCTION foo() RETURNS INT + BEGIN + SAVEPOINT x; + RETURN 0; + END + + INSERT INTO t1 VALUES (1), (foo()), (2); + */ + if (binlog_row_based) + thd->binlog_flush_pending_rows_event(false); + if ((!lex->requires_prelocking() || is_update_query(lex->sql_command)) && !binlog_row_based) options&= ~OPTION_BIN_LOG; From 84e439923f62c7dac04f09abfa228bb7cd1d46e0 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 27 Dec 2005 12:06:48 +0100 Subject: [PATCH 06/48] Bug#15942 (RBR ignored --binlog_ignore_db and tries to map table on slave for writes): Added code to do the filtering (seems to have gone away). sql/handler.cc: Filtering based on the database for the table. --- mysql-test/r/rpl_row_basic_11bugs.result | 45 ++++++++++++++++++++ mysql-test/t/rpl_row_basic_11bugs-master.opt | 1 + mysql-test/t/rpl_row_basic_11bugs.test | 31 ++++++++++++++ sql/handler.cc | 5 ++- 4 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 mysql-test/r/rpl_row_basic_11bugs.result create mode 100644 mysql-test/t/rpl_row_basic_11bugs-master.opt create mode 100644 mysql-test/t/rpl_row_basic_11bugs.test diff --git a/mysql-test/r/rpl_row_basic_11bugs.result b/mysql-test/r/rpl_row_basic_11bugs.result new file mode 100644 index 00000000000..9249405ac26 --- /dev/null +++ b/mysql-test/r/rpl_row_basic_11bugs.result @@ -0,0 +1,45 @@ +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 DATABASE test_ignore; +**** On Master **** +SHOW DATABASES; +Database +information_schema +mysql +test +test_ignore +USE test; +CREATE TABLE t1 (a INT, b INT); +SHOW TABLES; +Tables_in_test +t1 +INSERT INTO t1 VALUES (1,1), (2,2); +USE test_ignore; +CREATE TABLE t2 (a INT, b INT); +SHOW TABLES; +Tables_in_test_ignore +t2 +INSERT INTO t2 VALUES (3,3), (4,4); +SHOW BINLOG EVENTS; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.5-alpha-debug-log, Binlog ver: 4 +master-bin.000001 102 Query 1 195 use `test`; CREATE TABLE t1 (a INT, b INT) +master-bin.000001 195 Table_map 1 235 test.t1 +master-bin.000001 235 Write_rows 1 282 +**** On Slave **** +SHOW DATABASES; +Database +information_schema +mysql +test +USE test; +SHOW TABLES; +Tables_in_test +t1 +USE test_ignore; +ERROR 42000: Unknown database 'test_ignore' +DROP DATABASE test_ignore; diff --git a/mysql-test/t/rpl_row_basic_11bugs-master.opt b/mysql-test/t/rpl_row_basic_11bugs-master.opt new file mode 100644 index 00000000000..d5ae999b180 --- /dev/null +++ b/mysql-test/t/rpl_row_basic_11bugs-master.opt @@ -0,0 +1 @@ +--binlog_ignore_db=test_ignore; diff --git a/mysql-test/t/rpl_row_basic_11bugs.test b/mysql-test/t/rpl_row_basic_11bugs.test new file mode 100644 index 00000000000..76ff5a581c9 --- /dev/null +++ b/mysql-test/t/rpl_row_basic_11bugs.test @@ -0,0 +1,31 @@ +--source include/have_row_based.inc +--source include/have_binlog_format_row.inc +--source include/master-slave.inc + +# Bug#15942 (RBR ignores --binlog_ignore_db and tries to map to table +# on slave for writes) + +CREATE DATABASE test_ignore; # --binlog_ignore_db=mysqltest_ignore + +--echo **** On Master **** +SHOW DATABASES; +USE test; +CREATE TABLE t1 (a INT, b INT); +SHOW TABLES; +INSERT INTO t1 VALUES (1,1), (2,2); +USE test_ignore; +CREATE TABLE t2 (a INT, b INT); +SHOW TABLES; +INSERT INTO t2 VALUES (3,3), (4,4); +SHOW BINLOG EVENTS; +sync_slave_with_master; +--echo **** On Slave **** +SHOW DATABASES; +USE test; +SHOW TABLES; +--error 1049 +USE test_ignore; + +connection master; +DROP DATABASE test_ignore; +sync_slave_with_master; diff --git a/sql/handler.cc b/sql/handler.cc index 59445a1b2f1..70e445dd321 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -2797,7 +2797,7 @@ bool ha_show_status(THD *thd, handlerton *db_type, enum ha_stat_type stat) - Row-based replication is on - It is not a temporary table - The binlog is enabled - - The table shall be binlogged (binlog_*_db rules) [Seems disabled /Matz] + - The table shall be binlogged (binlog_*_db rules) */ #ifdef HAVE_ROW_BASED_REPLICATION @@ -2806,7 +2806,8 @@ static bool check_table_binlog_row_based(THD *thd, TABLE *table) return binlog_row_based && thd && (thd->options & OPTION_BIN_LOG) && - (table->s->tmp_table == NO_TMP_TABLE); + (table->s->tmp_table == NO_TMP_TABLE) && + binlog_filter->db_ok(table->s->db.str); } template int binlog_log_row(TABLE* table, From 82d5d2a9c5590c0d6dcc86e49f952de973ad3725 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Dec 2005 18:35:22 +0100 Subject: [PATCH 07/48] config-win.h: Backported Windows MAX_INDEXES handling from 5.1 include/config-win.h: Backported Windows MAX_INDEXES handling from 5.1 --- include/config-win.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/config-win.h b/include/config-win.h index 528bc8a8cdd..b825d34f1ee 100644 --- a/include/config-win.h +++ b/include/config-win.h @@ -61,6 +61,10 @@ functions */ #define __WIN__ /* To make it easier in VC++ */ #endif +#ifndef MAX_INDEXES +#define MAX_INDEXES 64 +#endif + /* File and lock constants */ #define O_SHARE 0x1000 /* Open file in sharing mode */ #ifdef __BORLANDC__ From d105ee3cc6451b6cbafc77fcdccc0b13810150fc Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 31 Dec 2005 10:54:36 +0100 Subject: [PATCH 08/48] ndb - wl#2972 (4.1) copy detached trigger fix from 5.0 ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp: detached trigger fix from 5.0 --- ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp b/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp index 470b98fd04c..e16d3df6d8d 100644 --- a/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp +++ b/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp @@ -445,6 +445,7 @@ Dbtup::commitRecord(Signal* signal, befOpPtr.p->changeMask.bitOR(attributeMask); befOpPtr.p->gci = regOperPtr->gci; + befOpPtr.p->optype = opType; operPtr.p = befOpPtr.p; checkDetachedTriggers(signal, befOpPtr.p, @@ -483,6 +484,7 @@ Dbtup::commitRecord(Signal* signal, befOpPtr.p->pageIndex = befOpPtr.p->pageIndexC; befOpPtr.p->gci = regOperPtr->gci; + befOpPtr.p->optype = opType; operPtr.p = befOpPtr.p; checkDetachedTriggers(signal, befOpPtr.p, From 758860dd7793b92f4dcef7574a048070f602202b Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 1 Jan 2006 21:48:26 +0100 Subject: [PATCH 09/48] ndb - wl#2972 (5.1) fix detached trigger opType storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp: set non-update pk pre data to UNDEFINED (previously unspecified) storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp: fix detached trigger opType storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp: fix detached trigger opType storage/ndb/test/ndbapi/test_event_merge.cpp: exact verif post/pre data --- .../src/kernel/blocks/dbtup/DbtupCommit.cpp | 2 +- .../src/kernel/blocks/dbtup/DbtupTrigger.cpp | 11 +- .../ndb/src/ndbapi/NdbEventOperationImpl.cpp | 6 +- storage/ndb/test/ndbapi/test_event_merge.cpp | 170 ++++++++++-------- 4 files changed, 114 insertions(+), 75 deletions(-) diff --git a/storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp b/storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp index 6646313eb80..7ad43a89d63 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp +++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp @@ -448,7 +448,7 @@ void Dbtup::execTUP_COMMITREQ(Signal* signal) if(!regOperPtr.p->is_first_operation()) { /** - * Out of order commit + * Out of order commit XXX check effect on triggers */ fix_commit_order(regOperPtr); } diff --git a/storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp b/storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp index e105fe1f2bd..368a828425e 100644 --- a/storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp +++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp @@ -559,8 +559,9 @@ Dbtup::fireDetachedTriggers(KeyReqStruct *req_struct, /** * Set correct operation type and fix change mask + * Note ALLOC is set in "orig" tuple */ - if(req_struct->m_tuple_ptr->m_header_bits & Tuple_header::ALLOC) + if(save_ptr->m_header_bits & Tuple_header::ALLOC) { if(save == ZDELETE) { @@ -571,6 +572,14 @@ Dbtup::fireDetachedTriggers(KeyReqStruct *req_struct, } regOperPtr->op_struct.op_type = ZINSERT; } + else if (save == ZINSERT) + /** + * Tuple was not created but last op is INSERT. + * This is possible only on DELETE + INSERT + */ + { + regOperPtr->op_struct.op_type = ZUPDATE; + } ndbrequire(regOperPtr->is_first_operation()); triggerList.first(trigPtr); diff --git a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp index 1fa0c6386be..afe73759ca5 100644 --- a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp +++ b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp @@ -376,10 +376,10 @@ NdbEventOperationImpl::receive_event() AttributeHeader(*aAttrPtr).getAttributeId()); receive_data(tAttr, aDataPtr, tDataSz); if (is_update) - { receive_data(tAttr1, aDataPtr, tDataSz); - tAttr1= tAttr1->next(); - } + else + tAttr1->setUNDEFINED(); // do not leave unspecified + tAttr1= tAttr1->next(); // next aAttrPtr++; aDataPtr+= (tDataSz + 3) >> 2; diff --git a/storage/ndb/test/ndbapi/test_event_merge.cpp b/storage/ndb/test/ndbapi/test_event_merge.cpp index 1332455cdc5..9c6a16eda2b 100644 --- a/storage/ndb/test/ndbapi/test_event_merge.cpp +++ b/storage/ndb/test/ndbapi/test_event_merge.cpp @@ -47,8 +47,8 @@ * There are 5 ways (ignoring NUL operand) to compose 2 ops: * 5.0 bugs 5.1 bugs * INS o DEL = NUL - * INS o UPD = INS 5.1 - * DEL o INS = UPD type=INS 5.1 + * INS o UPD = INS type=INS + * DEL o INS = UPD type=INS type=INS * UPD o DEL = DEL no event * UPD o UPD = UPD */ @@ -78,6 +78,7 @@ static NdbOperation* g_op = 0; static const char* g_tabname = "tem1"; static const char* g_evtname = "tem1ev1"; static const uint g_charlen = 5; +static const char* g_charval = "abcde"; static const char* g_csname = "latin1_swedish_ci"; static const NdbDictionary::Table* g_tab = 0; @@ -229,9 +230,9 @@ createtable() chkdb((g_op = g_con->getNdbOperation(g_tabname)) != 0); chkdb(g_op->insertTuple() == 0); Uint32 pk1; - char pk2[g_charlen]; + char pk2[g_charlen + 1]; pk1 = g_maxpk; - memset(pk2, 0x20, g_charlen); + sprintf(pk2, "%-*u", g_charlen, pk1); chkdb(g_op->equal("pk1", (char*)&pk1) == 0); chkdb(g_op->equal("pk2", (char*)&pk2[0]) == 0); chkdb(g_con->execute(Commit) == 0); @@ -256,9 +257,9 @@ droptable() struct Data { Uint32 pk1; - char pk2[g_charlen]; + char pk2[g_charlen + 1]; Uint32 seq; - char cc1[g_charlen]; + char cc1[g_charlen + 1]; void* ptr[g_ncol]; int ind[g_ncol]; // -1 = no data, 1 = NULL, 0 = not NULL void init() { @@ -276,6 +277,30 @@ struct Data { } }; +static int +cmpdata(const Data& d1, const Data& d2) +{ + uint i; + for (i = 0; i < g_ncol; i++) { + const Col& c = getcol(i); + if (d1.ind[i] != d2.ind[i]) + return 1; + if (d1.ind[i] == 0 && memcmp(d1.ptr[i], d2.ptr[i], c.size) != 0) + return 1; + } + return 0; +} + +static int +cmpdata(const Data (&d1)[2], const Data (&d2)[2]) +{ + if (cmpdata(d1[0], d2[0]) != 0) + return 1; + if (cmpdata(d1[1], d2[1]) != 0) + return 1; + return 0; +} + static NdbOut& operator<<(NdbOut& out, const Data& d) { @@ -304,7 +329,7 @@ operator<<(NdbOut& out, const Data& d) break; n--; } - out << buf; + out << "'" << buf << "'"; } break; default: @@ -370,7 +395,7 @@ operator<<(NdbOut& out, Op::Type t) static NdbOut& operator<<(NdbOut& out, const Op& op) { - out << "t=" << op.type; + out << op.type; out << " " << op.data[0]; out << " [" << op.data[1] << "]"; return out; @@ -504,13 +529,9 @@ checkop(const Op* op, Uint32& pk1) if (t == Op::INS) { chkrc(d[1].ind[i] == -1); } else if (t == Op::DEL) { -#ifdef ndb_event_cares_about_pk_pre_data chkrc(d[1].ind[i] == -1); -#endif } else { -#ifdef ndb_event_cares_about_pk_pre_data chkrc(d[1].ind[i] == 0); -#endif } } else { if (t == Op::INS) { @@ -547,23 +568,36 @@ copycol(const Col& c, const Data& d1, Data& d3) } static void -copykeys(const Data& d1, Data& d3) +copydata(const Data& d1, Data& d3, bool pk, bool nonpk) { uint i; for (i = 0; i < g_ncol; i++) { const Col& c = g_col[i]; - if (c.pk) + if (c.pk && pk || ! c.pk && nonpk) copycol(c, d1, d3); } } +// not needed for ops static void -copydata(const Data& d1, Data& d3) +compdata(const Data& d1, const Data& d2, Data& d3, bool pk, bool nonpk) { uint i; for (i = 0; i < g_ncol; i++) { const Col& c = g_col[i]; - copycol(c, d1, d3); + if (c.pk && pk || ! c.pk && nonpk) { + const Data* d = 0; + if (d1.ind[i] == -1 && d2.ind[i] == -1) + d3.ind[i] = -1; + else if (d1.ind[i] == -1 && d2.ind[i] != -1) + d = &d2; + else if (d1.ind[i] != -1 && d2.ind[i] == -1) + d = &d1; + else + d = &d2; + if (d != 0) + copycol(c, *d, d3); + } } } @@ -571,33 +605,12 @@ static void copyop(const Op* op1, Op* op3) { op3->type = op1->type; - copydata(op1->data[0], op3->data[0]); - copydata(op1->data[1], op3->data[1]); + copydata(op1->data[0], op3->data[0], true, true); + copydata(op1->data[1], op3->data[1], true, true); Uint32 pk1_tmp; reqrc(checkop(op3, pk1_tmp) == 0); } -// not needed for ops -static void -compdata(const Data& d1, const Data& d2, Data& d3) // d2 overrides d1 -{ - uint i; - for (i = 0; i < g_ncol; i++) { - const Col& c = g_col[i]; - const Data* d = 0; - if (d1.ind[i] == -1 && d2.ind[i] == -1) - d3.ind[i] = -1; - else if (d1.ind[i] == -1 && d2.ind[i] != -1) - d = &d2; - else if (d1.ind[i] != -1 && d2.ind[i] == -1) - d = &d1; - else - d = &d2; - if (d != 0) - copycol(c, *d, d3); - } -} - static int compop(const Op* op1, const Op* op2, Op* op3) // op1 o op2 = op3 { @@ -612,11 +625,14 @@ compop(const Op* op1, const Op* op2, Op* op3) // op1 o op2 = op3 } chkrc((comp = comptype(op1->type, op2->type)) != 0); op3->type = comp->t3; - copykeys(op2->data[0], op3->data[0]); + // sucks + copydata(op2->data[0], op3->data[0], true, false); if (op3->type != Op::DEL) - copydata(op2->data[0], op3->data[0]); + copydata(op2->data[0], op3->data[0], false, true); if (op3->type != Op::INS) - copydata(op1->data[1], op3->data[1]); + copydata(op1->data[1], op3->data[1], false, true); + if (op3->type == Op::UPD) + copydata(op2->data[0], op3->data[1], true, false); Uint32 pk1_tmp; reqrc(checkop(op3, pk1_tmp) == 0); // not eliminating identical post-pre fields @@ -705,9 +721,9 @@ waitgci() // wait for event to be installed and for at least 1 GCI to pass chkdb((g_con = g_ndb->startTransaction()) != 0); { // forced to exec a dummy op Uint32 pk1; - char pk2[g_charlen]; + char pk2[g_charlen + 1]; pk1 = g_maxpk; - memset(pk2, 0x20, g_charlen); + sprintf(pk2, "%-*u", g_charlen, pk1); chkdb((g_op = g_con->getNdbOperation(g_tabname)) != 0); chkdb(g_op->readTuple() == 0); chkdb(g_op->equal("pk1", (char*)&pk1) == 0); @@ -723,6 +739,7 @@ waitgci() // wait for event to be installed and for at least 1 GCI to pass break; } i = 1; + sleep(1); } return 0; } @@ -732,11 +749,14 @@ makeop(Op* op, Uint32 pk1, Op::Type t, const Op* prev_op) { op->type = t; if (t != Op::INS) - copydata(prev_op->data[0], op->data[1]); + copydata(prev_op->data[0], op->data[1], true, true); uint i; for (i = 0; i < g_ncol; i++) { const Col& c = getcol(i); Data (&d)[2] = op->data; + if (c.pk && t == Op::DEL) { + d[1].ind[i] = -1; + } if (i == getcol("pk1").no) { d[0].pk1 = pk1; d[0].ind[i] = 0; @@ -758,7 +778,7 @@ makeop(Op* op, Uint32 pk1, Op::Type t, const Op* prev_op) } uint u; u = urandom(100); - if (c.nullable && u < 20) { + if (c.nullable && u < 10) { d[0].ind[i] = 1; continue; } @@ -776,8 +796,8 @@ makeop(Op* op, Uint32 pk1, Op::Type t, const Op* prev_op) char* p = (char*)d[0].ptr[i]; uint j; for (j = 0; j < g_charlen; j++) { - uint v = urandom(3); - p[j] = j < u ? "abcde"[v] : 0x20; + uint v = urandom(strlen(g_charval)); + p[j] = j < u ? g_charval[v] : 0x20; } } break; @@ -993,9 +1013,9 @@ static int matchevent(Op* ev) { Op::Type t = ev->type; - Data (&d)[2] = ev->data; + Data (&d2)[2] = ev->data; // get PK - Uint32 pk1 = d[0].pk1; + Uint32 pk1 = d2[0].pk1; chkrc(pk1 < g_opts.maxpk); // on error repeat and print details uint loop = 0; @@ -1016,30 +1036,35 @@ matchevent(Op* ev) op = op->next_op; } if (com_op->type != Op::NUL) { - if (com_op->type == t) { - const Data (&d2)[2] = com_op->data; - if (t == Op::INS && d2[0].seq == d[0].seq || - t == Op::DEL && d2[1].seq == d[1].seq || - t == Op::UPD && d2[0].seq == d[0].seq) { - if (cnt == g_ev_cnt[pk1]) { - if (! com_op->match) { - ll2("match pos " << cnt); - ok = com_op->match = true; - } else { - ll2("duplicate match"); - } - } else { - ll2("match bad pos event=" << g_ev_cnt[pk1] << " op=" << cnt); - } + const Data (&d1)[2] = com_op->data; + if (cmpdata(d1, d2) == 0) { + bool tmpok = true; + if (com_op->type != t) { + ll2("***: wrong type " << com_op->type << " != " << t); + tmpok = false; + } + if (com_op->match) { + ll2("***: duplicate match"); + tmpok = false; + } + if (cnt != g_ev_cnt[pk1]) { + ll2("***: wrong pos " << cnt << " != " << g_ev_cnt[pk1]); + tmpok = false; + } + if (tmpok) { + ok = com_op->match = true; + ll2("===: match"); } } cnt++; } com_op = com_op->next_com; } - if (ok) + if (ok) { + ll1("matchevent: match"); return 0; - ll2("no match"); + } + ll1("matchevent: ERROR: no match"); if (g_loglevel >= 2) return -1; loop++; @@ -1100,12 +1125,13 @@ runevents() { ll1("runevents"); NdbEventOperation* evt_op; - uint npoll = 3; + uint mspoll = 1000; + uint npoll = 7; // strangely long delay while (npoll != 0) { npoll--; int ret; ll1("poll"); - ret = g_ndb->pollEvents(1000); + ret = g_ndb->pollEvents(mspoll); if (ret <= 0) continue; while (1) { @@ -1180,7 +1206,7 @@ runtest() chkrc(createtable() == 0); chkrc(createevent() == 0); uint n; - for (n = 0; n < g_opts.loop; n++) { + for (n = 0; g_opts.loop == 0 || n < g_opts.loop; n++) { ll0("loop " << n); setseed(n); resetmem(); @@ -1280,6 +1306,10 @@ main(int argc, char** argv) return NDBT_ProgramExit(NDBT_OK); } } + if (g_evt_op != 0) { + (void)dropeventop(); + g_evt_op = 0; + } delete g_ndb; delete g_ncc; return NDBT_ProgramExit(NDBT_FAILED); From ff8458c5893f5c178a0bb40f4b6d7dc7e11dbf8f Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 1 Jan 2006 22:18:02 +0100 Subject: [PATCH 10/48] Compile fixes for aix52-64bit. include/my_bitmap.h: Protect incluce of my_pthread.h with #ifdef THREAD, to make it work in non-thread environment. sql/rpl_tblmap.h: Remove unused NO_TABLE enum which broke compilation on picky compilers (trying to put ULONG_MAX into an int...) --- include/my_bitmap.h | 2 ++ sql/rpl_tblmap.h | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/include/my_bitmap.h b/include/my_bitmap.h index 33cd61de8a0..8afeb1b8107 100644 --- a/include/my_bitmap.h +++ b/include/my_bitmap.h @@ -17,7 +17,9 @@ #ifndef _my_bitmap_h_ #define _my_bitmap_h_ +#ifdef THREAD #include +#endif #define MY_BIT_NONE (~(uint) 0) diff --git a/sql/rpl_tblmap.h b/sql/rpl_tblmap.h index cfc2d7c2c6c..23864bd329e 100644 --- a/sql/rpl_tblmap.h +++ b/sql/rpl_tblmap.h @@ -54,10 +54,6 @@ private: public: - enum { - NO_TABLE = ULONG_MAX - }; - enum enum_error { ERR_NO_ERROR = 0, ERR_LIMIT_EXCEEDED, From 61d43a6ce5a534384aba76d6dda43bb7460e14dd Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 1 Jan 2006 22:57:48 +0100 Subject: [PATCH 11/48] Revert error in changeset "1.1979 05/12/22 06:39:02 lars@mysql.com" which caused wrong permissions in "make dist". mysql-test/Makefile.am: *.sh files must use INSTALL_SCRIPT, not INSTALL_DATA. --- mysql-test/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index c1db94e9d71..9ae5622a164 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -49,7 +49,8 @@ dist-hook: -$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t $(INSTALL_DATA) $(srcdir)/t/*.sql $(distdir)/t -$(INSTALL_DATA) $(srcdir)/t/*.disabled $(distdir)/t - $(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.sh $(srcdir)/t/*.slave-mi $(distdir)/t + $(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.slave-mi $(distdir)/t + $(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(distdir)/t $(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(distdir)/extra/binlog_tests $(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.test $(distdir)/extra/rpl_tests -$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.opt $(distdir)/extra/binlog_tests From b2168530d967db39d579437bc4493ef981ac897d Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 1 Jan 2006 23:13:16 +0100 Subject: [PATCH 12/48] Compile fixes for hpita2. sql/sql_plugin.cc: Can't initialize char * from const char *, so add cast. --- sql/sql_plugin.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index 51e53252d84..3063f665564 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -23,9 +23,9 @@ char *opt_plugin_dir_ptr; char opt_plugin_dir[FN_REFLEN]; LEX_STRING plugin_type_names[]= { - { STRING_WITH_LEN("UDF") }, - { STRING_WITH_LEN("STORAGE ENGINE") }, - { STRING_WITH_LEN("FTPARSER") } + { (char *)STRING_WITH_LEN("UDF") }, + { (char *)STRING_WITH_LEN("STORAGE ENGINE") }, + { (char *)STRING_WITH_LEN("FTPARSER") } }; static const char *plugin_interface_version_sym= "_mysql_plugin_interface_version_"; From a3e0141898736c2b60fa4808f9201e7132f76492 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 2 Jan 2006 01:35:30 +0100 Subject: [PATCH 13/48] Don't use C++ style (//) comments in C source (breaks compilation on aix52). --- client/mysqlslap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/mysqlslap.c b/client/mysqlslap.c index 4b243361316..d7b068176e0 100644 --- a/client/mysqlslap.c +++ b/client/mysqlslap.c @@ -278,7 +278,7 @@ int main(int argc, char **argv) } } - // Main interations loop + /* Main interations loop */ for (eptr= engine_statements; eptr; eptr= eptr->next) { if (!opt_silent) @@ -1287,7 +1287,7 @@ parse_delimiter(const char *script, statement **stmt, char delm) statement **sptr= stmt; statement *tmp; uint length= strlen(script); - uint count= 0; // We know that there is always one + uint count= 0; /* We know that there is always one */ DBUG_PRINT("info", ("Parsing %s\n", script)); @@ -1322,7 +1322,7 @@ parse_delimiter(const char *script, statement **stmt, char delm) uint parse_comma(const char *string, uint **range) { - uint count= 1,x; // We know that there is always one + uint count= 1,x; /* We know that there is always one */ char *retstr; char *ptr= (char *)string; uint *nptr; @@ -1330,7 +1330,7 @@ parse_comma(const char *string, uint **range) for (;*ptr; ptr++) if (*ptr == ',') count++; - // One extra spot for the NULL + /* One extra spot for the NULL */ nptr= *range= (uint *)my_malloc(sizeof(uint) * (count + 1), MYF(MY_ZEROFILL)); ptr= (char *)string; From 5f209e903638b9e8a743d10570f63f325b474ccc Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 1 Jan 2006 16:40:02 -0800 Subject: [PATCH 14/48] Now uses a single pass testing loop. Dual pass made no sense. Now does averaging when running iterations. Realligned a bunch of code and continued to remove global variables. Added CSV output along with printable. Structures are now provided for print options so adding XML, HTML, ... should now be trivial. client/client_priv.h: Simplified options client/mysqlslap.c: Giant cleanup. We now do single pass testing, not dual pass. The dual pass made no sense really especially when you started adding in more stats. Modified the testing loop so that it should not be possible to have both a fork() and thread version (which will make it easier to port to windows should someone want to). mysql-test/r/mysqlslap.result: New results mysql-test/t/mysqlslap.test: Adjusting for new options, and removed "archive" from the tests just in case archive is not compiled. --- client/client_priv.h | 5 +- client/mysqlslap.c | 675 +++---- mysql-test/r/mysqlslap.result | 3588 ++++++++++----------------------- mysql-test/t/mysqlslap.test | 10 +- 4 files changed, 1370 insertions(+), 2908 deletions(-) diff --git a/client/client_priv.h b/client/client_priv.h index 3539975df6e..fb5c7d157f3 100644 --- a/client/client_priv.h +++ b/client/client_priv.h @@ -53,9 +53,8 @@ enum options_client OPT_MYSQL_ONLY_PRINT, OPT_MYSQL_LOCK_DIRECTORY, OPT_MYSQL_SLAP_SLAVE, - OPT_MYSQL_NUMBER_OF_QUERY, OPT_MYSQL_NUMBER_OF_ROWS, - OPT_MYSQL_REPEAT_DATA, OPT_MYSQL_REPEAT_QUERY, - OPT_MYSQL_PRESERVE_SCHEMA_ENTER, OPT_MYSQL_PRESERVE_SCHEMA_EXIT, + OPT_MYSQL_NUMBER_OF_QUERY, + OPT_MYSQL_PRESERVE_SCHEMA, OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS,OPT_DROP_DATABASE, OPT_TZ_UTC, OPT_AUTO_CLOSE, OPT_CREATE_SLAP_SCHEMA, OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT, OPT_SERVER_ID diff --git a/client/mysqlslap.c b/client/mysqlslap.c index d57055219a8..8a4e10db8b0 100644 --- a/client/mysqlslap.c +++ b/client/mysqlslap.c @@ -1,3 +1,4 @@ +#include /* Copyright (C) 2005 MySQL AB This program is free software; you can redistribute it and/or modify @@ -27,9 +28,8 @@ MySQL slap runs three stages: 1) Create table (single client) - 2) Insert data (many clients) - 3) Load test (many clients) - 4) Cleanup (disconnection, drop table if specified, single client) + 2) Load test (many clients) + 3) Cleanup (disconnection, drop table if specified, single client) Examples: @@ -37,18 +37,16 @@ clients loading data (eight inserts for each) and 50 clients querying (200 selects for each): - mysqlslap --create="CREATE TABLE A (a int)" \ - --data="INSERT INTO A (23)" --concurrency-load=8 --number-rows=8 \ - --query="SELECT * FROM A" --concurrency=50 --iterations=200 \ - --concurrency-load=5 + mysqlslap --create="CREATE TABLE A (a int);INSERT INTO A (23)" \ + --query="SELECT * FROM A" --concurrency=50 --iterations=200 Let the program build create, insert and query SQL statements with a table of two int columns, three varchar columns, with five clients loading data (12 inserts each), five clients querying (20 times each), and drop schema before creating: - mysqlslap --concurrency=5 --concurrency-load=5 --iterations=20 \ - --number-int-cols=2 --number-char-cols=3 --number-rows=12 \ + mysqlslap --concurrency=5 --iterations=20 \ + --number-int-cols=2 --number-char-cols=3 \ --auto-generate-sql Let the program build the query SQL statement with a table of two int @@ -58,8 +56,7 @@ mysqlslap --concurrency=5 --iterations=20 \ --number-int-cols=2 --number-char-cols=3 \ - --number-of-rows=12 --auto-generate-sql \ - --skip-data-load --skip-create-schema + --auto-generate-sql Tell the program to load the create, insert and query SQL statements from the specified files, where the create.sql file has multiple table creation @@ -68,14 +65,9 @@ five clients (five times each), and run all the queries in the query file with five clients (five times each): - mysqlslap --drop-schema --concurrency=5 --concurrency-load=5 \ + mysqlslap --drop-schema --concurrency=5 \ --iterations=5 --query=query.sql --create=create.sql \ - --data=insert.sql --delimiter=";" --number-of-rows=5 - - Same as the last test run, with short options - - mysqlslap -D -c 5 -l 5 -i 5 -q query.sql \ - --create create.sql -d insert.sql -F ";" -n 5 + --delimiter=";" TODO: Add language for better tests @@ -109,8 +101,8 @@ TODO: static char **defaults_argv; static char *host= NULL, *opt_password= NULL, *user= NULL, - *user_supplied_query= NULL, *user_supplied_data= NULL, - *create_string= NULL, *default_engine= NULL, + *user_supplied_query= NULL, + *default_engine= NULL, *opt_mysql_unix_port= NULL; const char *delimiter= "\n"; @@ -120,33 +112,28 @@ const char *create_schema_string= "mysqlslap"; const char *lock_directory; char lock_file_str[FN_REFLEN]; -static my_bool opt_preserve_enter= FALSE, opt_preserve_exit= FALSE; +static my_bool opt_preserve; static my_bool opt_only_print= FALSE; static my_bool opt_slave; static my_bool opt_compress= FALSE, tty_password= FALSE, - create_string_alloced= FALSE, - insert_string_alloced= FALSE, query_string_alloced= FALSE, - generated_insert_flag= FALSE, opt_silent= FALSE, + opt_silent= FALSE, auto_generate_sql= FALSE; static int verbose, num_int_cols, num_char_cols, delimiter_length; static int iterations; static char *default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME; -static uint repeat_data, repeat_query; -static ulonglong actual_insert_rows= 0; static ulonglong actual_queries= 0; -static uint children_spawned; -static ulonglong num_of_rows; static ulonglong num_of_query; const char *concurrency_str= NULL; +static char *create_string; uint *concurrency; -const char *concurrency_load_str= NULL; -uint *concurrency_load; const char *default_dbug_option="d:t:o,/tmp/mysqlslap.trace"; +const char *opt_csv_str; +File csv_file; static uint opt_protocol= 0; @@ -163,26 +150,48 @@ struct statement { statement *next; }; +typedef struct stats stats; + +struct stats { + long int timing; + uint users; + unsigned long long rows; + stats *next; +}; + +typedef struct conclusions conclusions; + +struct conclusions { + char *engine; + long int avg_timing; + long int max_timing; + long int min_timing; + uint users; + unsigned long long avg_rows; + unsigned long long max_rows; + unsigned long long min_rows; +}; + static statement *create_statements= NULL, - *insert_statements= NULL, *engine_statements= NULL, *query_statements= NULL; /* Prototypes */ +void print_conclusions(conclusions *con); +void print_conclusions_csv(conclusions *con); +void generate_stats(conclusions *con, statement *eng, stats *sptr); uint parse_comma(const char *string, uint **range); uint parse_delimiter(const char *script, statement **stmt, char delm); static int drop_schema(MYSQL *mysql, const char *db); uint get_random_string(char *buf); -static int build_table_string(void); -static int build_insert_string(void); -static int build_query_string(void); +static statement *build_table_string(void); +static statement *build_insert_string(void); +static statement *build_query_string(void); static int create_schema(MYSQL *mysql, const char *db, statement *stmt, statement *engine_stmt); -static double run_scheduler(statement *stmts, - int(*task)(statement *stmt, ulonglong limit, uint repeat), - uint concur, ulonglong limit, uint repeat); -int run_task(statement *stmt, ulong limit, uint repeat); -int load_data(statement *load_stmt, ulonglong limit); +static int run_scheduler(stats *sptr, statement *stmts, uint concur, + ulonglong limit); +int run_task(statement *stmt, ulong limit); static const char ALPHANUMERICS[]= "0123456789ABCDEFGHIJKLMNOPQRSTWXYZabcdefghijklmnopqrstuvwxyz"; @@ -191,6 +200,7 @@ static const char ALPHANUMERICS[]= +#ifdef DELETE_LATER /* Return the time in ms between two timevals */ static double timedif (struct timeval end, struct timeval begin) { @@ -212,14 +222,26 @@ static double timedif (struct timeval end, struct timeval begin) DBUG_PRINT("info", ("returning time %f seconds", seconds)); DBUG_RETURN(seconds); } +#endif + +static long int timedif(struct timeval a, struct timeval b) +{ + register int us, s; + + us = a.tv_usec - b.tv_usec; + us /= 1000; + s = a.tv_sec - b.tv_sec; + s *= 1000; + return s + us; +} + + int main(int argc, char **argv) { MYSQL mysql; int client_flag= 0; - double load_difference; - double query_difference; int x; DBUG_ENTER("main"); @@ -277,81 +299,64 @@ int main(int argc, char **argv) } } - // Main interations loop + // Main iterations loop statement *eptr; - for (eptr= engine_statements; eptr; eptr= eptr->next) + unsigned long long client_limit; + + eptr= engine_statements; + do { - if (!opt_silent) - printf("Running for engine %s\n", eptr->string); - - for (x= 0; x < iterations; x++) + /* For the final stage we run whatever queries we were asked to run */ + uint *current; + conclusions conclusion; + for (current= concurrency; current && *current; current++) { - /* - We might not want to load any data, such as when we are calling - a stored_procedure that doesn't use data, or we know we already have - data in the table. - */ - if (!opt_preserve_enter) - drop_schema(&mysql, create_schema_string); + stats *head_sptr= NULL; // Not assigning NULL causes compiler to complain + stats *sptr= NULL; // Not assigning NULL causes compiler to complain + stats *nptr= NULL; // Just used for deallocation - /* - Three stag process: - create - insert - run jobs - */ + bzero(&conclusion, sizeof(conclusions)); + if (num_of_query) + client_limit= num_of_query / *current; + else + client_limit= actual_queries; - /* First we create */ - if (create_statements) - create_schema(&mysql, create_schema_string, create_statements, eptr); - - /* For the second act we load data */ - if (insert_statements) + for (x= 0, sptr= head_sptr= + (stats *)my_malloc(sizeof(stats), MYF(MY_ZEROFILL)); + x < iterations; x++, + sptr= sptr->next= (stats *)my_malloc(sizeof(stats), MYF(MY_ZEROFILL)) + ) { - uint *current; - for (current= concurrency_load; current && *current; current++) - { - load_difference= run_scheduler(insert_statements, run_task, - *current, num_of_rows, repeat_data); + /* + We might not want to load any data, such as when we are calling + a stored_procedure that doesn't use data, or we know we already have + data in the table. + */ + if (!opt_preserve) + drop_schema(&mysql, create_schema_string); + /* First we create */ + if (create_statements) + create_schema(&mysql, create_schema_string, create_statements, eptr); - if (!opt_silent) - { - printf("Seconds to load data: %.5f\n", load_difference); - printf("Number of clients loading data: %d\n", children_spawned); - printf("Number of inserts per client: %llu\n", - num_of_rows ? (unsigned long long)(num_of_rows / *current) : - (unsigned long long)repeat_data * actual_insert_rows); - } - } + run_scheduler(sptr, query_statements, *current, client_limit); } - - /* For the final stage we run whatever queries we were asked to run */ - if (query_statements) - { - uint *current; - for (current= concurrency; current && *current; current++) - { - query_difference= run_scheduler(query_statements, run_task, - *current, num_of_query, repeat_query); - - if (!opt_silent) - { - printf("Seconds to run all queries: %.5f\n", query_difference); - printf("Number of clients running queries: %d\n", children_spawned); - printf("Number of queries per client: %llu\n", - num_of_query ? (unsigned long long)(num_of_query / *current) : - (unsigned long long)repeat_query * actual_queries); - } - } - } - - if (!opt_preserve_exit) - drop_schema(&mysql, create_schema_string); - + generate_stats(&conclusion, eptr, head_sptr); if (!opt_silent) - printf("\n"); + print_conclusions(&conclusion); + if (opt_csv_str) + print_conclusions_csv(&conclusion); + + for (sptr= head_sptr; sptr;) + { + nptr= sptr->next; + my_free((byte *)sptr, MYF(0)); + sptr= nptr; + } } - } + + if (!opt_preserve) + drop_schema(&mysql, create_schema_string); + } while (eptr ? (eptr= eptr->next) : 0); if (!opt_only_print) mysql_close(&mysql); /* Close & free connection */ @@ -363,15 +368,8 @@ int main(int argc, char **argv) /* now free all the strings we created */ if (opt_password) my_free(opt_password, MYF(0)); - if (create_string_alloced) - my_free(create_string, MYF(0)); - if (insert_string_alloced) - my_free(user_supplied_data, MYF(0)); - if (query_string_alloced) - my_free(user_supplied_query, MYF(0)); my_free((byte *)concurrency, MYF(0)); - my_free((byte *)concurrency_load, MYF(0)); if (create_statements) { @@ -399,19 +397,6 @@ int main(int argc, char **argv) } } - if (insert_statements) - { - statement *ptr, *nptr; - for (ptr= insert_statements; ptr;) - { - nptr= ptr->next; - if (ptr->string) - my_free(ptr->string, MYF(0)); - my_free((byte *)ptr, MYF(0)); - ptr= nptr; - } - } - if (query_statements) { statement *ptr, *nptr; @@ -445,9 +430,6 @@ static struct my_option my_long_options[] = {"compress", 'C', "Use compression in server/client protocol.", (gptr*) &opt_compress, (gptr*) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"concurrency-load", 'l', "Number of clients to use when loading data.", - (gptr*) &concurrency_load_str, (gptr*) &concurrency_load_str, 0, - GET_STR, REQUIRED_ARG, 1, 0, 0, 0, 0, 0}, {"concurrency", 'c', "Number of clients to simulate for query to run.", (gptr*) &concurrency_str, (gptr*) &concurrency_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -457,10 +439,9 @@ static struct my_option my_long_options[] = {"create-schema", OPT_CREATE_SLAP_SCHEMA, "Schema to run tests in.", (gptr*) &create_schema_string, (gptr*) &create_schema_string, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"data", 'd', - "File or string with INSERT to use for populating data.", - (gptr*) &user_supplied_data, (gptr*) &user_supplied_data, 0, - GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"csv", OPT_CREATE_SLAP_SCHEMA, "Schema to run tests in.", + (gptr*) &opt_csv_str, (gptr*) &opt_csv_str, 0, GET_STR, + OPT_ARG, 0, 0, 0, 0, 0, 0}, {"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.", (gptr*) &default_dbug_option, (gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, @@ -477,25 +458,21 @@ static struct my_option my_long_options[] = REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"iterations", 'i', "Number of times too run the tests.", (gptr*) &iterations, (gptr*) &iterations, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0}, - {"lock-directory", OPT_MYSQL_LOCK_DIRECTORY, "Connect to host.", + {"lock-directory", OPT_MYSQL_LOCK_DIRECTORY, "Directory to use to keep locks.", (gptr*) &lock_directory, (gptr*) &lock_directory, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"number-char-cols", 'x', "Number of INT columns to create table with if specifying --sql-generate-sql.", (gptr*) &num_char_cols, (gptr*) &num_char_cols, 0, GET_UINT, REQUIRED_ARG, - 0, 0, 0, 0, 0, 0}, + 1, 0, 0, 0, 0, 0}, {"number-int-cols", 'y', "Number of VARCHAR columns to create table with if specifying \ --sql-generate-sql.", (gptr*) &num_int_cols, (gptr*) &num_int_cols, 0, - GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0}, {"number-of-query", OPT_MYSQL_NUMBER_OF_QUERY, "Limit each client to this number of queries (this is not exact).", (gptr*) &num_of_query, (gptr*) &num_of_query, 0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"number-of-rows", OPT_MYSQL_NUMBER_OF_ROWS, - "Limit each client to this number of rows (this is not exact).", - (gptr*) &num_of_rows, (gptr*) &num_of_rows, 0, - GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"only-print", OPT_MYSQL_ONLY_PRINT, "This causes mysqlslap to not connect to the databases, but instead print \ out what it would have done instead.", @@ -511,13 +488,9 @@ static struct my_option my_long_options[] = {"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"preserve-schema-enter", OPT_MYSQL_PRESERVE_SCHEMA_ENTER, + {"preserve-schema", OPT_MYSQL_PRESERVE_SCHEMA, "Preserve the schema from the mysqlslap run.", - (gptr*) &opt_preserve_enter, (gptr*) &opt_preserve_enter, 0, GET_BOOL, - NO_ARG, 0, 0, 0, 0, 0, 0}, - {"preserve-schema-exit", OPT_MYSQL_PRESERVE_SCHEMA_EXIT, - "Preserve the schema from the mysqlslap run.", - (gptr*) &opt_preserve_exit, (gptr*) &opt_preserve_exit, 0, GET_BOOL, + (gptr*) &opt_preserve, (gptr*) &opt_preserve, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"protocol", OPT_MYSQL_PROTOCOL, "The protocol of connection (tcp,socket,pipe,memory).", @@ -525,14 +498,6 @@ static struct my_option my_long_options[] = {"query", 'q', "Query to run or file containing query to run.", (gptr*) &user_supplied_query, (gptr*) &user_supplied_query, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"repeat-data", OPT_MYSQL_REPEAT_DATA, "Number of times to repeat what was specified by \ - the --data option", - (gptr*) &repeat_data, (gptr*) &repeat_data, 0, GET_UINT, - REQUIRED_ARG, 1, 0, 0, 0, 0, 0}, - {"repeat-query", OPT_MYSQL_REPEAT_QUERY, "Number of times to repeat what was specified by the \ - --query option.", (gptr*) &repeat_query, - (gptr*) &repeat_query, 0, GET_UINT, REQUIRED_ARG, - 1, 0, 0, 0, 0, 0}, {"silent", 's', "Run program in silent mode - no output.", (gptr*) &opt_silent, (gptr*) &opt_silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -665,11 +630,12 @@ get_random_string(char *buf) This function builds a create table query if the user opts to not supply a file or string containing a create table statement */ -static int +static statement * build_table_string(void) { char buf[512]; int col_count; + statement *ptr; DYNAMIC_STRING table_string; DBUG_ENTER("build_table_string"); @@ -696,12 +662,13 @@ build_table_string(void) dynstr_append(&table_string, ","); } dynstr_append(&table_string, ")"); - create_string= (char *)my_malloc(table_string.length+1, MYF(MY_WME)); - create_string_alloced= 1; - strmov(create_string, table_string.str); - DBUG_PRINT("info", ("create_string %s", create_string)); + ptr= (statement *)my_malloc(sizeof(statement), MYF(MY_ZEROFILL)); + ptr->string = (char *)my_malloc(table_string.length+1, MYF(MY_WME)); + ptr->length= table_string.length+1; + strmov(ptr->string, table_string.str); + DBUG_PRINT("info", ("create_string %s", ptr->string)); dynstr_free(&table_string); - DBUG_RETURN(0); + DBUG_RETURN(ptr); } @@ -711,11 +678,12 @@ build_table_string(void) This function builds insert statements when the user opts to not supply an insert file or string containing insert data */ -static int +static statement * build_insert_string(void) { char buf[RAND_STRING_SIZE]; int col_count; + statement *ptr; DYNAMIC_STRING insert_string; DBUG_ENTER("build_insert_string"); @@ -742,18 +710,13 @@ build_insert_string(void) } dynstr_append_mem(&insert_string, ")", 1); - /* - since this function can be called if the user wants varying insert - statement in the for loop where inserts run, free in advance - */ - if (insert_string_alloced) - my_free(user_supplied_data,MYF(0)); - user_supplied_data= (char *)my_malloc(insert_string.length+1, MYF(MY_WME)); - insert_string_alloced= 1; - strmov(user_supplied_data, insert_string.str); - DBUG_PRINT("info", ("generated_insert_data %s", user_supplied_data)); + ptr= (statement *)my_malloc(sizeof(statement), MYF(MY_ZEROFILL)); + ptr->string= (char *)my_malloc(insert_string.length+1, MYF(MY_WME)); + ptr->length= insert_string.length+1; + strmov(ptr->string, insert_string.str); + DBUG_PRINT("info", ("generated_insert_data %s", ptr->string)); dynstr_free(&insert_string); - DBUG_RETURN(insert_string.length+1); + DBUG_RETURN(ptr); } @@ -763,11 +726,12 @@ build_insert_string(void) This function builds a query if the user opts to not supply a query statement or file containing a query statement */ -static int +static statement * build_query_string(void) { char buf[512]; int col_count; + statement *ptr; static DYNAMIC_STRING query_string; DBUG_ENTER("build_query_string"); @@ -793,10 +757,11 @@ build_query_string(void) } dynstr_append_mem(&query_string, " FROM t1", 8); - user_supplied_query= (char *)my_malloc(query_string.length+1, MYF(MY_WME)); - query_string_alloced= 1; - strmov(user_supplied_query, query_string.str); - DBUG_PRINT("info", ("user_supplied_query %s", user_supplied_query)); + ptr= (statement *)my_malloc(sizeof(statement), MYF(MY_ZEROFILL)); + ptr->string= (char *)my_malloc(query_string.length+1, MYF(MY_WME)); + ptr->length= query_string.length+1; + strmov(ptr->string, query_string.str); + DBUG_PRINT("info", ("user_supplied_query %s", ptr->string)); dynstr_free(&query_string); DBUG_RETURN(0); } @@ -805,31 +770,20 @@ static int get_options(int *argc,char ***argv) { int ho_error; + char *tmp_string; MY_STAT sbuf; /* Stat information for the data file */ DBUG_ENTER("get_options"); if ((ho_error= handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); - /* - Default policy - if they don't supply either char or int cols, and - also no data, then default to 1 of each. - */ - if (num_int_cols == 0 && num_char_cols == 0 && auto_generate_sql && - !user_supplied_data) - { - num_int_cols= 1; - num_char_cols= 1; - } - if (!user) user= (char *)"root"; - if (auto_generate_sql && (create_string || - user_supplied_data || user_supplied_query)) + if (auto_generate_sql && (create_string || user_supplied_query)) { fprintf(stderr, - "%s: Can't use --auto-generate-sql when create, insert, and query strings are specified!\n", + "%s: Can't use --auto-generate-sql when create and query strings are specified!\n", my_progname); exit(1); } @@ -847,111 +801,97 @@ get_options(int *argc,char ***argv) else snprintf(lock_file_str, FN_REFLEN, "%s/%s", MYSLAPLOCK_DIR, MYSLAPLOCK); - if (concurrency_load_str) - parse_comma(concurrency_load_str, &concurrency_load); - else + if (opt_csv_str) { - concurrency_load= (uint *)my_malloc(sizeof(uint) * 2, MYF(MY_ZEROFILL)); - concurrency_load[0]= 1; + opt_silent= TRUE; + + if (opt_csv_str[0] == '-') + { + csv_file= fileno(stdout); + } + else + { + if ((csv_file= my_open(opt_csv_str, O_CREAT|O_WRONLY|O_APPEND, MYF(0))) + == -1) + { + fprintf(stderr,"%s: Could not open csv file: %sn\n", + my_progname, opt_csv_str); + exit(1); + } + } } if (opt_only_print) opt_silent= TRUE; - if (!create_string && auto_generate_sql) + if (auto_generate_sql) { - build_table_string(); + create_statements= build_table_string(); + query_statements= build_insert_string(); + DBUG_PRINT("info", ("auto-generated insert is %s", query_statements->string)); + query_statements->next= build_query_string(); + DBUG_PRINT("info", ("auto-generated is %s", query_statements->next->string)); } - else if (create_string && my_stat(create_string, &sbuf, MYF(0))) + else { - File data_file; - if (!MY_S_ISREG(sbuf.st_mode)) + if (create_string && my_stat(create_string, &sbuf, MYF(0))) { - fprintf(stderr,"%s: Create file was not a regular file\n", - my_progname); - exit(1); + File data_file; + if (!MY_S_ISREG(sbuf.st_mode)) + { + fprintf(stderr,"%s: Create file was not a regular file\n", + my_progname); + exit(1); + } + if ((data_file= my_open(create_string, O_RDWR, MYF(0))) == -1) + { + fprintf(stderr,"%s: Could not open create file\n", my_progname); + exit(1); + } + tmp_string= (char *)my_malloc(sbuf.st_size+1, MYF(MY_WME)); + my_read(data_file, tmp_string, sbuf.st_size, MYF(0)); + tmp_string[sbuf.st_size]= '\0'; + my_close(data_file,MYF(0)); + parse_delimiter(tmp_string, &create_statements, delimiter[0]); + my_free(tmp_string, MYF(0)); } - if ((data_file= my_open(create_string, O_RDWR, MYF(0))) == -1) + else if (create_string) { - fprintf(stderr,"%s: Could not open create file\n", my_progname); - exit(1); + parse_delimiter(create_string, &create_statements, delimiter[0]); } - create_string= (char *)my_malloc(sbuf.st_size+1, MYF(MY_WME)); - create_string_alloced= 1; - my_read(data_file, create_string, sbuf.st_size, MYF(0)); - create_string[sbuf.st_size]= '\0'; - my_close(data_file,MYF(0)); - } - if (!default_engine) - default_engine= (char *)"MYISAM"; - - parse_delimiter(default_engine, &engine_statements, ','); - - if (create_string) - parse_delimiter(create_string, &create_statements, delimiter[0]); - - if (!user_supplied_data && auto_generate_sql) - { - int length; - generated_insert_flag= 1; - length= build_insert_string(); - DBUG_PRINT("info", ("user_supplied_data is %s", user_supplied_data)); - } - else if (user_supplied_data && my_stat(user_supplied_data, &sbuf, MYF(0))) - { - File data_file; - if (!MY_S_ISREG(sbuf.st_mode)) + if (user_supplied_query && my_stat(user_supplied_query, &sbuf, MYF(0))) { - fprintf(stderr,"%s: User data supplied file was not a regular file\n", - my_progname); - exit(1); - } - if ((data_file= my_open(user_supplied_data, O_RDWR, MYF(0))) == -1) - { - fprintf(stderr,"%s: Could not open data supplied file\n", my_progname); - exit(1); - } - user_supplied_data= (char *)my_malloc(sbuf.st_size+1, MYF(MY_WME)); - insert_string_alloced= 1; - my_read(data_file, user_supplied_data, sbuf.st_size, MYF(0)); - user_supplied_data[sbuf.st_size]= '\0'; - my_close(data_file,MYF(0)); - } - - if (user_supplied_data) - actual_insert_rows= parse_delimiter(user_supplied_data, - &insert_statements, + File data_file; + if (!MY_S_ISREG(sbuf.st_mode)) + { + fprintf(stderr,"%s: User query supplied file was not a regular file\n", + my_progname); + exit(1); + } + if ((data_file= my_open(user_supplied_query, O_RDWR, MYF(0))) == -1) + { + fprintf(stderr,"%s: Could not open query supplied file\n", my_progname); + exit(1); + } + tmp_string= (char *)my_malloc(sbuf.st_size+1, MYF(MY_WME)); + my_read(data_file, tmp_string, sbuf.st_size, MYF(0)); + tmp_string[sbuf.st_size]= '\0'; + my_close(data_file,MYF(0)); + if (user_supplied_query) + actual_queries= parse_delimiter(tmp_string, &query_statements, delimiter[0]); - - if (!user_supplied_query && auto_generate_sql) - { - build_query_string(); - } - else if (user_supplied_query && my_stat(user_supplied_query, &sbuf, MYF(0))) - { - File data_file; - if (!MY_S_ISREG(sbuf.st_mode)) + my_free(tmp_string, MYF(0)); + } + else if (user_supplied_query) { - fprintf(stderr,"%s: User query supplied file was not a regular file\n", - my_progname); - exit(1); + actual_queries= parse_delimiter(user_supplied_query, &query_statements, + delimiter[0]); } - if ((data_file= my_open(user_supplied_query, O_RDWR, MYF(0))) == -1) - { - fprintf(stderr,"%s: Could not open query supplied file\n", my_progname); - exit(1); - } - user_supplied_query= (char *)my_malloc(sbuf.st_size+1, MYF(MY_WME)); - query_string_alloced= 1; - my_read(data_file, user_supplied_query, sbuf.st_size, MYF(0)); - user_supplied_query[sbuf.st_size]= '\0'; - my_close(data_file,MYF(0)); } - if (user_supplied_query) - actual_queries= parse_delimiter(user_supplied_query, &query_statements, - delimiter[0]); + if (default_engine) + parse_delimiter(default_engine, &engine_statements, ','); if (tty_password) opt_password= get_tty_password(NullS); @@ -998,19 +938,22 @@ create_schema(MYSQL *mysql, const char *db, statement *stmt, } } - snprintf(query, HUGE_STRING_LENGTH, "set storage_engine=`%s`", - engine_stmt->string); - if (opt_only_print) + if (engine_stmt) { - printf("%s;\n", query); - } - else - { - if (mysql_query(mysql, query)) + snprintf(query, HUGE_STRING_LENGTH, "set storage_engine=`%s`", + engine_stmt->string); + if (opt_only_print) { - fprintf(stderr,"%s: Cannot set default engine: %s\n", my_progname, - mysql_error(mysql)); - exit(1); + printf("%s;\n", query); + } + else + { + if (mysql_query(mysql, query)) + { + fprintf(stderr,"%s: Cannot set default engine: %s\n", my_progname, + mysql_error(mysql)); + exit(1); + } } } @@ -1060,22 +1003,14 @@ drop_schema(MYSQL *mysql, const char *db) } -static double -run_scheduler(statement *stmts, - int(*task)(statement *stmt, ulonglong limit, uint repeat), - uint concur, ulonglong limit, uint repeat) +static int +run_scheduler(stats *sptr, statement *stmts, uint concur, ulonglong limit) { uint x; - ulonglong client_limit= 0; File lock_file; struct timeval start_time, end_time; - if (limit) - client_limit= limit / concur; - DBUG_ENTER("run_scheduler"); - /* reset to 0 */ - children_spawned= 0; lock_file= my_open(lock_file_str, O_CREAT|O_WRONLY|O_TRUNC, MYF(0)); @@ -1086,6 +1021,7 @@ run_scheduler(statement *stmts, my_progname); exit(0); } + for (x= 0; x < concur; x++) { int pid; @@ -1101,7 +1037,7 @@ run_scheduler(statement *stmts, fprintf(stderr, "%s: fork returned 0, calling task pid %d gid %d\n", my_progname, pid, getgid()); - task(stmts, client_limit, repeat); + run_task(stmts, limit); exit(0); break; case -1: @@ -1121,7 +1057,6 @@ run_scheduler(statement *stmts, my_progname, pid, getgid()); break; } - children_spawned++; } /* Lets release use some clients! */ if (!opt_slave) @@ -1140,17 +1075,22 @@ WAIT: } gettimeofday(&end_time, NULL); - DBUG_RETURN(timedif(end_time, start_time)); + sptr->timing= timedif(end_time, start_time); + sptr->users= concur; + sptr->rows= limit; + + DBUG_RETURN(0); } int -run_task(statement *qstmt, ulonglong limit, uint repeat) +run_task(statement *qstmt, ulonglong limit) { - ulonglong counter= 0, x, queries; + ulonglong counter= 0, queries; File lock_file; MYSQL mysql; MYSQL_RES *result; MYSQL_ROW row; + statement *ptr; DBUG_ENTER("run_task"); DBUG_PRINT("info", ("task script \"%s\"", qstmt->string)); @@ -1175,9 +1115,6 @@ run_task(statement *qstmt, ulonglong limit, uint repeat) queries= 0; limit_not_met: - for (x= 0; x < repeat; x++) - { - statement *ptr; for (ptr= qstmt; ptr && ptr->length; ptr= ptr->next) { if (opt_only_print) @@ -1205,7 +1142,6 @@ limit_not_met: if (limit && queries == limit) DBUG_RETURN(0); } - } if (limit && queries < limit) goto limit_not_met; @@ -1215,70 +1151,11 @@ limit_not_met: if (!opt_only_print) mysql_close(&mysql); + DBUG_RETURN(0); } -#ifdef TO_BE_DELETED - -int -load_data(statement *load_stmt, ulonglong limit) -{ - uint x; - uint inserted; - MYSQL mysql; - - DBUG_ENTER("load_data"); - DBUG_PRINT("info", ("task load_data, pid %d", getpid())); - mysql_init(&mysql); - - if (!opt_only_print) - { - if (!(mysql_real_connect(&mysql, host, user, opt_password, - "mysqlslap", opt_mysql_port, opt_mysql_unix_port, - 0))) - { - fprintf(stderr,"%s: Unable to connect to mysqlslap ERROR: %s\n", - my_progname, mysql_error(&mysql)); - exit(1); - } - } - - for (x= 0, inserted= 0; x < repeat_data; x++) - { - statement *ptr; - for (ptr= load_stmt; ptr && ptr->length; ptr= ptr->next) - { - if (opt_only_print) - { - printf("%.*s;\n", (uint)ptr->length, ptr->string); - } - else - { - if (mysql_real_query(&mysql, ptr->string, ptr->length)) - { - DBUG_PRINT("info", ("iteration %d with INSERT statement %s", ptr->string)); - fprintf(stderr,"%s: Cannot insert into table using sql:%.*s: ERROR: %s\n", - my_progname, (uint)ptr->length, ptr->string, - mysql_error(&mysql)); - exit(1); - } - } - inserted++; - - if (limit && inserted == limit) - return 0; - } - } - - if (!opt_only_print) - mysql_close(&mysql); - DBUG_RETURN(0); -} - -#endif - - uint parse_delimiter(const char *script, statement **stmt, char delm) { @@ -1344,3 +1221,69 @@ parse_comma(const char *string, uint **range) return count; } + +void +print_conclusions(conclusions *con) +{ + printf("Benchmark\n"); + if (con->engine) + printf("\tRunning for engine %s\n", con->engine); + printf("\tAverage number of seconds to run all queries: %ld.%03ld seconds\n", + con->avg_timing / 1000, con->avg_timing % 1000); + printf("\tMinimum number of seconds to run all queries: %ld.%03ld seconds\n", + con->min_timing / 1000, con->min_timing % 1000); + printf("\tMaximum number of seconds to run all queries: %ld.%03ld seconds\n", + con->max_timing / 1000, con->max_timing % 1000); + printf("\tNumber of clients running queries: %d\n", con->users); + printf("\tAverage number of queries per client: %llu\n", con->avg_rows); + printf("\n"); +} + +void +print_conclusions_csv(conclusions *con) +{ + char buffer[HUGE_STRING_LENGTH]; + snprintf(buffer, HUGE_STRING_LENGTH, + "%s,query,%ld.%03ld,%ld.%03ld,%ld.%03ld,%d,%llu\n", + con->engine ? con->engine : "", // Storage engine we ran against + con->avg_timing / 1000, con->avg_timing % 1000, // Time to load + con->min_timing / 1000, con->min_timing % 1000, // Min time to load + con->max_timing / 1000, con->max_timing % 1000, // Max time to load + con->users, // Children used + con->avg_rows // Queries run + ); + my_write(csv_file, buffer, strlen(buffer), MYF(0)); +} + +void +generate_stats(conclusions *con, statement *eng, stats *sptr) +{ + stats *ptr; + int x; + + con->min_timing= sptr->timing; + con->max_timing= sptr->timing; + con->min_rows= sptr->rows; + con->max_rows= sptr->rows; + + // At the moment we assume uniform + con->users= sptr->users; + con->avg_rows= sptr->rows; + + // With no next, we know it is the last element that was malloced + for (ptr= sptr, x= 0; x < iterations; ptr= ptr->next, x++) + { + con->avg_timing+= ptr->timing; + + if (ptr->timing > con->max_timing) + con->max_timing= ptr->timing; + if (ptr->timing < con->min_timing) + con->min_timing= ptr->timing; + } + con->avg_timing= con->avg_timing/iterations; + + if (eng && eng->string) + con->engine= eng->string; + else + con->engine= NULL; +} diff --git a/mysql-test/r/mysqlslap.result b/mysql-test/r/mysqlslap.result index e1741402b35..b9f3cec4681 100644 --- a/mysql-test/r/mysqlslap.result +++ b/mysql-test/r/mysqlslap.result @@ -1,2665 +1,1213 @@ DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); select * from t1; DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); select * from t1; DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); select * from t1; DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); select * from t1; DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); select * from t1; DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -select * from t1; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; +INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); select * from t1; DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +CREATE TABLE t1 (id int, name varchar(64)); +INSERT INTO t1 VALUES (1, 'This is a test'); DROP SCHEMA IF EXISTS `mysqlslap`; DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; +set storage_engine=`heap`; CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; +create table t2(foo1 varchar(32), foo2 varchar(32)); +INSERT INTO t1 VALUES (1, 'This is a test'); +insert into t2 values ('test', 'test2'); +select * from t1; +select * from t2; +select * from t1; DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`MYISAM`; -CREATE TABLE t1 (id int, name varchar(64)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`archive`; +set storage_engine=`heap`; CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32)); INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2'); DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`archive`; -CREATE TABLE t1 (id int, name varchar(64)); -create table t2(foo1 varchar(32), foo2 varchar(32)); -select * from t1; -select * from t2; DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; use mysqlslap; -set storage_engine=`archive`; +set storage_engine=`myisam`; CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32)); +INSERT INTO t1 VALUES (1, 'This is a test'); +insert into t2 values ('test', 'test2'); +select * from t1; +select * from t2; +select * from t1; +DROP SCHEMA IF EXISTS `mysqlslap`; +CREATE SCHEMA `mysqlslap`; +use mysqlslap; +set storage_engine=`heap`; +CREATE TABLE t1 (id int, name varchar(64)); +create table t2(foo1 varchar(32), foo2 varchar(32)); +INSERT INTO t1 VALUES (1, 'This is a test'); +insert into t2 values ('test', 'test2'); DROP SCHEMA IF EXISTS `mysqlslap`; DROP SCHEMA IF EXISTS `mysqlslap`; CREATE SCHEMA `mysqlslap`; @@ -2670,31 +1218,3 @@ create table t2(foo1 varchar(32), foo2 varchar(32)); INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2'); DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`archive`; -CREATE TABLE t1 (id int, name varchar(64)); -create table t2(foo1 varchar(32), foo2 varchar(32)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`myisam`; -CREATE TABLE t1 (id int, name varchar(64)); -create table t2(foo1 varchar(32), foo2 varchar(32)); -select * from t1; -select * from t2; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`archive`; -CREATE TABLE t1 (id int, name varchar(64)); -create table t2(foo1 varchar(32), foo2 varchar(32)); -DROP SCHEMA IF EXISTS `mysqlslap`; -DROP SCHEMA IF EXISTS `mysqlslap`; -CREATE SCHEMA `mysqlslap`; -use mysqlslap; -set storage_engine=`myisam`; -CREATE TABLE t1 (id int, name varchar(64)); -create table t2(foo1 varchar(32), foo2 varchar(32)); -DROP SCHEMA IF EXISTS `mysqlslap`; diff --git a/mysql-test/t/mysqlslap.test b/mysql-test/t/mysqlslap.test index 13464f02855..b3cbebe4ff4 100644 --- a/mysql-test/t/mysqlslap.test +++ b/mysql-test/t/mysqlslap.test @@ -2,12 +2,12 @@ --source include/not_embedded.inc --source include/not_windows.inc ---exec $MYSQL_SLAP --silent --concurrency=5 --concurrency-load=5 --iterations=20 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql +--exec $MYSQL_SLAP --silent --concurrency=5 --iterations=20 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql ---exec $MYSQL_SLAP --only-print --concurrency=1 --concurrency-load=1 --iterations=20 --query="select * from t1" --data="INSERT INTO t1 VALUES (1, 'This is a test')" --create="CREATE TABLE t1 (id int, name varchar(64))" +--exec $MYSQL_SLAP --only-print --concurrency=1 --iterations=20 --query="select * from t1" --create="CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test')" --delimiter=";" ---exec $MYSQL_SLAP --silent --concurrency=5 --concurrency-load=5 --iterations=20 --query="select * from t1" --data="INSERT INTO t1 VALUES (1, 'This is a test')" --create="CREATE TABLE t1 (id int, name varchar(64))" +--exec $MYSQL_SLAP --silent --concurrency=5 --iterations=20 --query="select * from t1" --create="CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test')" --delimiter=";" ---exec $MYSQL_SLAP --only-print --concurrency=1 --concurrency-load=1 --iterations=1 --delimiter=";" --query="select * from t1;select * from t2" --data="INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2')" --create="CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32))" --engine="archive,myisam" +--exec $MYSQL_SLAP --only-print --concurrency=1 --iterations=1 --delimiter=";" --query="select * from t1;select * from t2" --create="CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32)); INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2')" --engine="heap,myisam" ---exec $MYSQL_SLAP --silent --concurrency=5 --concurrency-load=5 --iterations=20 --delimiter=";" --query="select * from t1;select * from t2" --data="INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2')" --create="CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32))" +--exec $MYSQL_SLAP --silent --concurrency=5 --iterations=20 --delimiter=";" --query="select * from t1;select * from t2" --create="CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32)); INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2')" From 67a6dd9fb9a50e6adf31d3af9872ade3a6a79fb6 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 2 Jan 2006 02:45:26 +0100 Subject: [PATCH 15/48] Do not use C++ style comments (//) in C source (breaks compilation on aix52). --- storage/innobase/row/row0mysql.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/innobase/row/row0mysql.c b/storage/innobase/row/row0mysql.c index c733bf5c8f2..86d9ecf9c54 100644 --- a/storage/innobase/row/row0mysql.c +++ b/storage/innobase/row/row0mysql.c @@ -3484,7 +3484,7 @@ row_is_mysql_tmp_table_name( const char* name) /* in: table name in the form 'database/tablename' */ { - //return(strstr(name, "/#sql") != NULL); + /* return(strstr(name, "/#sql") != NULL); */ return(strstr(name, "/@0023sql") != NULL); } From 9b9af86ac07df7ff2557ea5870879223d221cb33 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 1 Jan 2006 20:08:45 -0800 Subject: [PATCH 16/48] Cleaned up memory allocation to be a little more staight forward (though I suspect someone will hate my sizeof() increment). Nothing really to see here. Updated comments in code. More comments are probably needed, but isn't that always the case? client/mysqlslap.c: Updated docs. Removed complicated malloc calls with a single malloc. Cleaned up the way statements were be free'd (aka its now a function instead of a bunch of copy/paste). Removed older and not so accurate timediff() call. Cleaned up call to parse out concurrency. mysql-test/t/mysqlslap.test: Edited the tests to make sure we check default concurrency (we can't test concurrency normally since in theory the results could be random). You will noticed that the result was not changed. --- client/mysqlslap.c | 152 +++++++++++------------------------- mysql-test/t/mysqlslap.test | 4 +- 2 files changed, 47 insertions(+), 109 deletions(-) diff --git a/client/mysqlslap.c b/client/mysqlslap.c index 295665d91f5..5c34e8a0d41 100644 --- a/client/mysqlslap.c +++ b/client/mysqlslap.c @@ -1,4 +1,3 @@ -#include /* Copyright (C) 2005 MySQL AB This program is free software; you can redistribute it and/or modify @@ -27,28 +26,19 @@ then reporting the timing of each stage. MySQL slap runs three stages: - 1) Create table (single client) + 1) Create schema,table, and optionally any SP or data you want to beign + the test with. (single client) 2) Load test (many clients) 3) Cleanup (disconnection, drop table if specified, single client) Examples: - Supply your own create, insert and query SQL statements, with eight - clients loading data (eight inserts for each) and 50 clients querying (200 - selects for each): + Supply your own create and query SQL statements, with 50 clients + querying (200 selects for each): mysqlslap --create="CREATE TABLE A (a int);INSERT INTO A (23)" \ --query="SELECT * FROM A" --concurrency=50 --iterations=200 - Let the program build create, insert and query SQL statements with a table - of two int columns, three varchar columns, with five clients loading data - (12 inserts each), five clients querying (20 times each), and drop schema - before creating: - - mysqlslap --concurrency=5 --iterations=20 \ - --number-int-cols=2 --number-char-cols=3 \ - --auto-generate-sql - Let the program build the query SQL statement with a table of two int columns, three varchar columns, five clients querying (20 times each), don't create the table or insert the data (using the previous test's @@ -60,9 +50,9 @@ Tell the program to load the create, insert and query SQL statements from the specified files, where the create.sql file has multiple table creation - statements delimited by ';', multiple insert statements delimited by ';', - and multiple queries delimited by ';', run all the load statements with - five clients (five times each), and run all the queries in the query file + statements delimited by ';' and multiple insert statements delimited by ';'. + The --query file will have multiple queries delimited by ';', run all the + load statements, and then run all the queries in the query file with five clients (five times each): mysqlslap --drop-schema --concurrency=5 \ @@ -74,6 +64,9 @@ TODO: String length for files and those put on the command line are not setup to handle binary data. Report results of each thread into the lock file we use. + More stats + Break up tests and run them on multiple hosts at once. + Allow output to be fed into a database directly. */ @@ -156,7 +149,6 @@ struct stats { long int timing; uint users; unsigned long long rows; - stats *next; }; typedef struct conclusions conclusions; @@ -168,6 +160,7 @@ struct conclusions { long int min_timing; uint users; unsigned long long avg_rows; + // The following are not used yet unsigned long long max_rows; unsigned long long min_rows; }; @@ -192,6 +185,7 @@ static int create_schema(MYSQL *mysql, const char *db, statement *stmt, static int run_scheduler(stats *sptr, statement *stmts, uint concur, ulonglong limit); int run_task(statement *stmt, ulong limit); +void statement_cleanup(statement *stmt); static const char ALPHANUMERICS[]= "0123456789ABCDEFGHIJKLMNOPQRSTWXYZabcdefghijklmnopqrstuvwxyz"; @@ -199,31 +193,6 @@ static const char ALPHANUMERICS[]= #define ALPHANUMERICS_SIZE (sizeof(ALPHANUMERICS)-1) - -#ifdef DELETE_LATER -/* Return the time in ms between two timevals */ -static double timedif (struct timeval end, struct timeval begin) -{ - double seconds; - DBUG_ENTER("timedif"); - - seconds= (double)(end.tv_usec - begin.tv_usec)/1000000; - DBUG_PRINT("info", ("end.tv_usec %d - begin.tv_usec %d = " - "%d microseconds ( fseconds %f)", - end.tv_usec, begin.tv_usec, - (end.tv_usec - begin.tv_usec), - seconds)); - seconds += (double)(end.tv_sec - begin.tv_sec); - DBUG_PRINT("info", ("end.tv_sec %d - begin.tv_sec %d = " - "%d seconds (fseconds %f)", - end.tv_sec, begin.tv_sec, - (end.tv_sec - begin.tv_sec), seconds)); - - DBUG_PRINT("info", ("returning time %f seconds", seconds)); - DBUG_RETURN(seconds); -} -#endif - static long int timedif(struct timeval a, struct timeval b) { register int us, s; @@ -236,13 +205,13 @@ static long int timedif(struct timeval a, struct timeval b) } - - int main(int argc, char **argv) { MYSQL mysql; int client_flag= 0; int x; + unsigned long long client_limit; + statement *eptr; DBUG_ENTER("main"); MY_INIT(argv[0]); @@ -300,31 +269,28 @@ int main(int argc, char **argv) } // Main iterations loop - unsigned long long client_limit; - eptr= engine_statements; do { /* For the final stage we run whatever queries we were asked to run */ uint *current; conclusions conclusion; + for (current= concurrency; current && *current; current++) { - stats *head_sptr= NULL; // Not assigning NULL causes compiler to complain - stats *sptr= NULL; // Not assigning NULL causes compiler to complain - stats *nptr= NULL; // Just used for deallocation + stats *head_sptr; + stats *sptr; + + head_sptr= (stats *)my_malloc(sizeof(stats) * *current, MYF(MY_ZEROFILL)); bzero(&conclusion, sizeof(conclusions)); + if (num_of_query) client_limit= num_of_query / *current; else client_limit= actual_queries; - for (x= 0, sptr= head_sptr= - (stats *)my_malloc(sizeof(stats), MYF(MY_ZEROFILL)); - x < iterations; x++, - sptr= sptr->next= (stats *)my_malloc(sizeof(stats), MYF(MY_ZEROFILL)) - ) + for (x= 0, sptr= head_sptr; x < iterations; x++, sptr+= sizeof(stats)) { /* We might not want to load any data, such as when we are calling @@ -339,18 +305,15 @@ int main(int argc, char **argv) run_scheduler(sptr, query_statements, *current, client_limit); } + generate_stats(&conclusion, eptr, head_sptr); + if (!opt_silent) print_conclusions(&conclusion); if (opt_csv_str) print_conclusions_csv(&conclusion); - for (sptr= head_sptr; sptr;) - { - nptr= sptr->next; - my_free((byte *)sptr, MYF(0)); - sptr= nptr; - } + my_free((byte *)head_sptr, MYF(0)); } if (!opt_preserve) @@ -370,44 +333,9 @@ int main(int argc, char **argv) my_free((byte *)concurrency, MYF(0)); - if (create_statements) - { - statement *ptr, *nptr; - for (ptr= create_statements; ptr;) - { - nptr= ptr->next; - if (ptr->string) - my_free(ptr->string, MYF(0)); - my_free((byte *)ptr, MYF(0)); - ptr= nptr; - } - } - - if (engine_statements) - { - statement *ptr, *nptr; - for (ptr= engine_statements; ptr;) - { - nptr= ptr->next; - if (ptr->string) - my_free(ptr->string, MYF(0)); - my_free((byte *)ptr, MYF(0)); - ptr= nptr; - } - } - - if (query_statements) - { - statement *ptr, *nptr; - for (ptr= query_statements; ptr;) - { - nptr= ptr->next; - if (ptr->string) - my_free(ptr->string, MYF(0)); - my_free((byte *)ptr, MYF(0)); - ptr= nptr; - } - } + statement_cleanup(create_statements); + statement_cleanup(engine_statements); + statement_cleanup(query_statements); #ifdef HAVE_SMEM if (shared_memory_base_name) @@ -787,13 +715,7 @@ get_options(int *argc,char ***argv) exit(1); } - if (concurrency_str) - parse_comma(concurrency_str, &concurrency); - else - { - concurrency= (uint *)my_malloc(sizeof(uint) * 2, MYF(MY_ZEROFILL)); - concurrency[0]= 1; - } + parse_comma(concurrency_str ? concurrency_str : "1", &concurrency); if (lock_directory) snprintf(lock_file_str, FN_REFLEN, "%s/%s", lock_directory, MYSLAPLOCK); @@ -1270,7 +1192,7 @@ generate_stats(conclusions *con, statement *eng, stats *sptr) con->avg_rows= sptr->rows; // With no next, we know it is the last element that was malloced - for (ptr= sptr, x= 0; x < iterations; ptr= ptr->next, x++) + for (ptr= sptr, x= 0; x < iterations; ptr+= sizeof(stats), x++) { con->avg_timing+= ptr->timing; @@ -1286,3 +1208,19 @@ generate_stats(conclusions *con, statement *eng, stats *sptr) else con->engine= NULL; } + +void +statement_cleanup(statement *stmt) +{ + statement *ptr, *nptr; + if (!stmt) + return; + + for (ptr= stmt; ptr; ptr= nptr) + { + nptr= ptr->next; + if (ptr->string) + my_free(ptr->string, MYF(0)); + my_free((byte *)ptr, MYF(0)); + } +} diff --git a/mysql-test/t/mysqlslap.test b/mysql-test/t/mysqlslap.test index b3cbebe4ff4..8234659b2e6 100644 --- a/mysql-test/t/mysqlslap.test +++ b/mysql-test/t/mysqlslap.test @@ -4,10 +4,10 @@ --exec $MYSQL_SLAP --silent --concurrency=5 --iterations=20 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql ---exec $MYSQL_SLAP --only-print --concurrency=1 --iterations=20 --query="select * from t1" --create="CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test')" --delimiter=";" +--exec $MYSQL_SLAP --only-print --iterations=20 --query="select * from t1" --create="CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test')" --delimiter=";" --exec $MYSQL_SLAP --silent --concurrency=5 --iterations=20 --query="select * from t1" --create="CREATE TABLE t1 (id int, name varchar(64)); INSERT INTO t1 VALUES (1, 'This is a test')" --delimiter=";" ---exec $MYSQL_SLAP --only-print --concurrency=1 --iterations=1 --delimiter=";" --query="select * from t1;select * from t2" --create="CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32)); INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2')" --engine="heap,myisam" +--exec $MYSQL_SLAP --only-print --delimiter=";" --query="select * from t1;select * from t2" --create="CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32)); INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2')" --engine="heap,myisam" --exec $MYSQL_SLAP --silent --concurrency=5 --iterations=20 --delimiter=";" --query="select * from t1;select * from t2" --create="CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32)); INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2')" From 03ad9cb577389e8f734b191e8ad16077457bf99a Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 2 Jan 2006 09:58:58 +0100 Subject: [PATCH 17/48] Do not use C++ style comments (//) in C source (breaks compilation on aix52). --- storage/archive/archive_test.c | 2 +- storage/archive/azio.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/storage/archive/archive_test.c b/storage/archive/archive_test.c index 5e3a60b606d..e01a75404d8 100644 --- a/storage/archive/archive_test.c +++ b/storage/archive/archive_test.c @@ -43,6 +43,6 @@ int main(int argc, char *argv[]) azclose(&foo); azclose(&foo1); - //unlink("test"); + /* unlink("test"); */ return 0; } diff --git a/storage/archive/azio.c b/storage/archive/azio.c index 14e074f3157..aa969b39b53 100644 --- a/storage/archive/azio.c +++ b/storage/archive/azio.c @@ -166,7 +166,7 @@ int get_byte(s) if (s->stream.avail_in == 0) { s->z_eof = 1; - // if (ferror(s->file)) s->z_err = Z_ERRNO; + /* if (ferror(s->file)) s->z_err = Z_ERRNO; */ return EOF; } s->stream.next_in = s->inbuf; From d68fdc0e84b7a8e3ad10e71130cb5f8fce950dac Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 2 Jan 2006 13:19:13 +0100 Subject: [PATCH 18/48] Fix compile failure, reapply changeset "05/12/29 15:37:36 sergefp@mysql.com" apparently lost in merge. client/mysqlslap.c: Fix compile failure. --- client/mysqlslap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/mysqlslap.c b/client/mysqlslap.c index 24a052bab8d..13d44d70bd7 100644 --- a/client/mysqlslap.c +++ b/client/mysqlslap.c @@ -184,7 +184,7 @@ static int create_schema(MYSQL *mysql, const char *db, statement *stmt, statement *engine_stmt); static int run_scheduler(stats *sptr, statement *stmts, uint concur, ulonglong limit); -int run_task(statement *stmt, ulong limit); +int run_task(statement *stmt, ulonglong limit); void statement_cleanup(statement *stmt); static const char ALPHANUMERICS[]= From de1962cd66dd40a13a65322ac7f377b770303009 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 2 Jan 2006 13:20:17 +0100 Subject: [PATCH 19/48] Bug#13115 (CREATE TABLE t2 SELECT a inside SP is not replicated when using RBR): Test passes. Bug was probably fixed in the implementation of WL#2867. mysql-test/t/rpl_sp_effects.test: Removed check for statement-based replication. --- mysql-test/t/rpl_sp_effects.test | 3 --- 1 file changed, 3 deletions(-) diff --git a/mysql-test/t/rpl_sp_effects.test b/mysql-test/t/rpl_sp_effects.test index 1c23f956082..c081f8e00c6 100644 --- a/mysql-test/t/rpl_sp_effects.test +++ b/mysql-test/t/rpl_sp_effects.test @@ -1,7 +1,4 @@ # Test of replication of stored procedures (WL#2146 for MySQL 5.0) -# Make this statement only until bug 13115 is corrected [jbm] -# TODO: Remove statement include once bug 13115 is patched. --- source include/have_binlog_format_statement.inc -- source include/master-slave.inc # **************************************************************** From c8570c5cf53b4ab8dc1c959c3c5c97dec4184359 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 2 Jan 2006 14:14:48 +0100 Subject: [PATCH 20/48] Fix mysqlslap problems when running multiple tests in parallel, by setting the mysqlslap lock directory to value of --tmpdir. mysql-test/mysql-test-run.pl: Set mysqlslap --lock-directory to avoid conflicts between parallel tests. --- mysql-test/mysql-test-run.pl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 95968e1511e..60c9686bf0a 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -2503,7 +2503,8 @@ sub run_mysqltest ($) { { $cmdline_mysqlslap= "$exe_mysqlslap -uroot " . "--port=$master->[0]->{'path_myport'} " . - "--socket=$master->[0]->{'path_mysock'} --password="; + "--socket=$master->[0]->{'path_mysock'} --password= " . + "--lock-directory=$opt_tmpdir"; if ( $opt_debug ) { $cmdline_mysqlslap .= From a74472c849037c97ee44b80336f045ab19607829 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 3 Jan 2006 11:09:18 +0100 Subject: [PATCH 21/48] Fix memory problem: Both the allocation and pointer arithmetics on the head_sptr array was wrong. --- client/mysqlslap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/mysqlslap.c b/client/mysqlslap.c index 13d44d70bd7..d371387de10 100644 --- a/client/mysqlslap.c +++ b/client/mysqlslap.c @@ -281,7 +281,7 @@ int main(int argc, char **argv) stats *head_sptr; stats *sptr; - head_sptr= (stats *)my_malloc(sizeof(stats) * *current, MYF(MY_ZEROFILL)); + head_sptr= (stats *)my_malloc(sizeof(stats) * iterations, MYF(MY_ZEROFILL)); bzero(&conclusion, sizeof(conclusions)); @@ -290,7 +290,7 @@ int main(int argc, char **argv) else client_limit= actual_queries; - for (x= 0, sptr= head_sptr; x < iterations; x++, sptr+= sizeof(stats)) + for (x= 0, sptr= head_sptr; x < iterations; x++, sptr++) { /* We might not want to load any data, such as when we are calling @@ -1192,7 +1192,7 @@ generate_stats(conclusions *con, statement *eng, stats *sptr) con->avg_rows= sptr->rows; /* With no next, we know it is the last element that was malloced */ - for (ptr= sptr, x= 0; x < iterations; ptr+= sizeof(stats), x++) + for (ptr= sptr, x= 0; x < iterations; ptr++, x++) { con->avg_timing+= ptr->timing; From 5e7cbbcbbcb871432cf513c89cd5240c754cde29 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 3 Jan 2006 14:25:19 +0400 Subject: [PATCH 22/48] Fix for bug#15533 crash, information_schema, function, view enable view prepared mode during getting metedata for I_S table mysql-test/r/information_schema.result: Fix for bug#15533 crash, information_schema, function, view test case mysql-test/t/information_schema.test: Fix for bug#15533 crash, information_schema, function, view test case --- mysql-test/r/information_schema.result | 16 ++++++++++++++++ mysql-test/t/information_schema.test | 23 +++++++++++++++++++++++ sql/sql_show.cc | 3 +++ 3 files changed, 42 insertions(+) diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index e8d343ad711..05f2118a8c7 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -1074,3 +1074,19 @@ character_maximum_length character_octet_length 32 32 64 64 drop table t1; +CREATE TABLE t1 (f1 BIGINT, f2 VARCHAR(20), f3 BIGINT); +INSERT INTO t1 SET f1 = 1, f2 = 'Schoenenbourg', f3 = 1; +CREATE FUNCTION func2() RETURNS BIGINT RETURN 1; +CREATE FUNCTION func1() RETURNS BIGINT +BEGIN +RETURN ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.VIEWS); +END// +CREATE VIEW v1 AS SELECT 1 FROM t1 +WHERE f3 = (SELECT func2 ()); +SELECT func1(); +func1() +1 +DROP TABLE t1; +DROP VIEW v1; +DROP FUNCTION func1; +DROP FUNCTION func2; diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index b05798b781f..f835a7148a2 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -767,3 +767,26 @@ create table t1(f1 binary(32), f2 varbinary(64)); select character_maximum_length, character_octet_length from information_schema.columns where table_name='t1'; drop table t1; + +# +# Bug#15533 crash, information_schema, function, view +# +CREATE TABLE t1 (f1 BIGINT, f2 VARCHAR(20), f3 BIGINT); +INSERT INTO t1 SET f1 = 1, f2 = 'Schoenenbourg', f3 = 1; + +CREATE FUNCTION func2() RETURNS BIGINT RETURN 1; + +delimiter //; +CREATE FUNCTION func1() RETURNS BIGINT +BEGIN + RETURN ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.VIEWS); +END// +delimiter ;// + +CREATE VIEW v1 AS SELECT 1 FROM t1 + WHERE f3 = (SELECT func2 ()); +SELECT func1(); +DROP TABLE t1; +DROP VIEW v1; +DROP FUNCTION func1; +DROP FUNCTION func2; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 1b31e8f7dc3..089314078a6 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2045,6 +2045,8 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) int error= 1; db_type not_used; Open_tables_state open_tables_state_backup; + bool save_view_prepare_mode= lex->view_prepare_mode; + lex->view_prepare_mode= TRUE; DBUG_ENTER("get_all_tables"); LINT_INIT(end); @@ -2230,6 +2232,7 @@ err: lex->derived_tables= derived_tables; lex->all_selects_list= old_all_select_lex; lex->query_tables_last= save_query_tables_last; + lex->view_prepare_mode= save_view_prepare_mode; *save_query_tables_last= 0; lex->sql_command= save_sql_command; DBUG_RETURN(error); From 99966acd3336bbecdb06befc390b58229b1316ae Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 3 Jan 2006 14:36:31 +0100 Subject: [PATCH 23/48] Test files in new subdirectory "mysql-test/extra" need to be propagated into binary distribution. --- scripts/make_binary_distribution.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/make_binary_distribution.sh b/scripts/make_binary_distribution.sh index dcd0b948694..f1ed07382b6 100644 --- a/scripts/make_binary_distribution.sh +++ b/scripts/make_binary_distribution.sh @@ -92,7 +92,9 @@ esac mkdir $BASE $BASE/bin $BASE/docs \ $BASE/include $BASE/lib $BASE/support-files $BASE/share $BASE/scripts \ $BASE/mysql-test $BASE/mysql-test/t $BASE/mysql-test/r \ - $BASE/mysql-test/include $BASE/mysql-test/std_data $BASE/mysql-test/lib + $BASE/mysql-test/include $BASE/mysql-test/std_data $BASE/mysql-test/lib \ + $BASE/mysql-test/extra \ + $BASE/mysql-test/extra/binlog_tests $BASE/mysql-test/extra/rpl_tests if [ $BASE_SYSTEM != "netware" ] ; then mkdir $BASE/share/mysql $BASE/tests $BASE/sql-bench $BASE/man \ @@ -242,6 +244,8 @@ $CP mysql-test/t/*.test mysql-test/t/*.imtest \ mysql-test/t/*.slave-mi mysql-test/t/*.sh mysql-test/t/*.sql $BASE/mysql-test/t $CP mysql-test/r/*.result mysql-test/r/*.require \ $BASE/mysql-test/r +$CP mysql-test/extra/binlog_tests/*.test $BASE/mysql-test/extra/binlog_tests +$CP mysql-test/extra/rpl_tests/*.test $BASE/mysql-test/extra/rpl_tests if [ $BASE_SYSTEM != "netware" ] ; then chmod a+x $BASE/bin/* From 1aacfd4fb425eb933b2f9d52b0bf373f370370ca Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 3 Jan 2006 23:37:29 +0100 Subject: [PATCH 24/48] BUG#16167: Disable mysqlslap test case until bug is fixed. mysql-test/t/disabled.def: BUG#16167: Disable test case until bug is fixed. --- mysql-test/t/disabled.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index ef5bdefa1ed..ce5c8ac67f4 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -18,10 +18,10 @@ ndb_cache_multi2: Bug #15004 func_group : Bug #15448 func_math : Bug #15448 group_min_max : Bug #15448 -#mysqlslap : Bug #15483 innodb_concurrent : Results are not deterministic, Elliot will fix (BUG#3300) subselect : Bug#15706 type_time : Bug#15805 #rpl000002 : Bug#15920 Temporary tables are not binlogged in SBR ps_7ndb : Bug#15923 Core dump in RBR mode when executing test suite sp_trans : Bug#15924 Code dump in RBR mode when executing test suite +mysqlslap : Bug#16167 From e1fdf8b4f9b47aa5fc2590961c1f21e87b562824 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jan 2006 10:32:52 +0100 Subject: [PATCH 25/48] Avoid double slash (//) in socket paths, breaks on QNX. --- mysql-test/mysql-test-run.pl | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index d64a487758d..2c53b94a248 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -804,6 +804,12 @@ sub command_line_setup () { } } + # On QNX, /tmp/dir/master.sock and /tmp/dir//master.sock seem to be + # considered different, so avoid the extra slash (/) in the socket + # paths. + my $sockdir = $opt_tmpdir; + $sockdir =~ s|/+$||; + # Put this into a hash, will be a C struct $master->[0]= @@ -812,7 +818,7 @@ sub command_line_setup () { path_myerr => "$opt_vardir/log/master.err", path_mylog => "$opt_vardir/log/master.log", path_mypid => "$opt_vardir/run/master.pid", - path_mysock => "$opt_tmpdir/master.sock", + path_mysock => "$sockdir/master.sock", path_myport => $opt_master_myport, start_timeout => 400, # enough time create innodb tables @@ -825,7 +831,7 @@ sub command_line_setup () { path_myerr => "$opt_vardir/log/master1.err", path_mylog => "$opt_vardir/log/master1.log", path_mypid => "$opt_vardir/run/master1.pid", - path_mysock => "$opt_tmpdir/master1.sock", + path_mysock => "$sockdir/master1.sock", path_myport => $opt_master_myport + 1, start_timeout => 400, # enough time create innodb tables }; @@ -836,7 +842,7 @@ sub command_line_setup () { path_myerr => "$opt_vardir/log/slave.err", path_mylog => "$opt_vardir/log/slave.log", path_mypid => "$opt_vardir/run/slave.pid", - path_mysock => "$opt_tmpdir/slave.sock", + path_mysock => "$sockdir/slave.sock", path_myport => $opt_slave_myport, start_timeout => 400, }; @@ -847,7 +853,7 @@ sub command_line_setup () { path_myerr => "$opt_vardir/log/slave1.err", path_mylog => "$opt_vardir/log/slave1.log", path_mypid => "$opt_vardir/run/slave1.pid", - path_mysock => "$opt_tmpdir/slave1.sock", + path_mysock => "$sockdir/slave1.sock", path_myport => $opt_slave_myport + 1, start_timeout => 300, }; @@ -858,7 +864,7 @@ sub command_line_setup () { path_myerr => "$opt_vardir/log/slave2.err", path_mylog => "$opt_vardir/log/slave2.log", path_mypid => "$opt_vardir/run/slave2.pid", - path_mysock => "$opt_tmpdir/slave2.sock", + path_mysock => "$sockdir/slave2.sock", path_myport => $opt_slave_myport + 2, start_timeout => 300, }; @@ -868,7 +874,7 @@ sub command_line_setup () { path_err => "$opt_vardir/log/im.err", path_log => "$opt_vardir/log/im.log", path_pid => "$opt_vardir/run/im.pid", - path_sock => "$opt_tmpdir/im.sock", + path_sock => "$sockdir/im.sock", port => $im_port, start_timeout => $master->[0]->{'start_timeout'}, admin_login => 'im_admin', @@ -883,7 +889,7 @@ sub command_line_setup () { server_id => 1, port => $im_mysqld1_port, path_datadir => "$opt_vardir/im_mysqld_1.data", - path_sock => "$opt_tmpdir/mysqld_1.sock", + path_sock => "$sockdir/mysqld_1.sock", path_pid => "$opt_vardir/run/mysqld_1.pid", }; @@ -892,7 +898,7 @@ sub command_line_setup () { server_id => 2, port => $im_mysqld2_port, path_datadir => "$opt_vardir/im_mysqld_2.data", - path_sock => "$opt_tmpdir/mysqld_2.sock", + path_sock => "$sockdir/mysqld_2.sock", path_pid => "$opt_vardir/run/mysqld_2.pid", nonguarded => 1, }; From b0d716a5db04c5ea16da0c58726a19c1a5a8e489 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jan 2006 15:04:36 +0100 Subject: [PATCH 26/48] Post-merge fixes. --- sql/sql_class.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 3a816a62321..f7894beec6d 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1991,7 +1991,7 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup, INSERT INTO t1 VALUES (1), (foo()), (2); */ if (binlog_row_based) - thd->binlog_flush_pending_rows_event(false); + binlog_flush_pending_rows_event(false); if ((!lex->requires_prelocking() || is_update_query(lex->sql_command)) && !binlog_row_based) From 95cecbf815ee7db84a681181d083dd97b96d1c58 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jan 2006 15:25:32 +0100 Subject: [PATCH 27/48] BUG#14931: Temporarily add synchronization to avoid sporadic test failures until the bug is fixed. mysql-test/r/rpl_sp.result: BUG#14931: Temporarily add synchronization to avoid sporadic failures until the bug is fixed. mysql-test/t/rpl_sp.test: BUG#14931: Temporarily add synchronization to avoid sporadic failures until the bug is fixed. --- mysql-test/r/rpl_sp.result | 3 +++ mysql-test/t/rpl_sp.test | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/mysql-test/r/rpl_sp.result b/mysql-test/r/rpl_sp.result index 41bcfc7d72c..c9a9e162fa6 100644 --- a/mysql-test/r/rpl_sp.result +++ b/mysql-test/r/rpl_sp.result @@ -57,6 +57,9 @@ insert into t1 values (15); grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1; +SELECT 1; +1 +1 create procedure foo4() deterministic begin diff --git a/mysql-test/t/rpl_sp.test b/mysql-test/t/rpl_sp.test index 386582f8f1b..8fa330584e2 100644 --- a/mysql-test/t/rpl_sp.test +++ b/mysql-test/t/rpl_sp.test @@ -87,6 +87,14 @@ grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1; +# ToDo: BUG#14931: There is a race between the last grant binlogging, and +# the binlogging in the new connection made below, causing sporadic test +# failures due to switched statement order in binlog. To fix this we do +# SELECT 1 in the first connection before starting the second, ensuring +# that binlogging is done in the expected order. +# Please remove this SELECT 1 when BUG#14931 is fixed. +SELECT 1; + connect (con1,127.0.0.1,zedjzlcsjhd,,mysqltest1,$MASTER_MYPORT,); connection con1; From a7bb8a977bfc976afd193baa99ec1401cca1105d Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jan 2006 15:25:51 +0100 Subject: [PATCH 28/48] BUG#14931: Temporarily add synchronization to avoid sporadic test failures until the bug is fixed. mysql-test/t/rpl_row_sp000.test: BUG#14931: Temporarily add synchronization to avoid sporadic failures until the bug is fixed. mysql-test/r/rpl_row_sp000.result: BUG#14931: Temporarily add synchronization to avoid sporadic failures until the bug is fixed. mysql-test/r/rpl_stm_sp.result: BUG#14931: Temporarily add synchronization to avoid sporadic failures until the bug is fixed. mysql-test/t/rpl_stm_sp.test: BUG#14931: Temporarily add synchronization to avoid sporadic failures until the bug is fixed. --- mysql-test/r/rpl_row_sp000.result | 3 +++ mysql-test/r/rpl_stm_sp.result | 3 +++ mysql-test/t/rpl_row_sp000.test | 8 ++++++++ mysql-test/t/rpl_stm_sp.test | 8 ++++++++ 4 files changed, 22 insertions(+) diff --git a/mysql-test/r/rpl_row_sp000.result b/mysql-test/r/rpl_row_sp000.result index a7f72193842..c02fdecf7fd 100644 --- a/mysql-test/r/rpl_row_sp000.result +++ b/mysql-test/r/rpl_row_sp000.result @@ -58,6 +58,9 @@ insert into t1 values (15); grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1; +SELECT 1; +1 +1 create procedure foo4() deterministic begin diff --git a/mysql-test/r/rpl_stm_sp.result b/mysql-test/r/rpl_stm_sp.result index 4fe0f61b550..1acb57f67d5 100644 --- a/mysql-test/r/rpl_stm_sp.result +++ b/mysql-test/r/rpl_stm_sp.result @@ -57,6 +57,9 @@ insert into t1 values (15); grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1; +SELECT 1; +1 +1 create procedure foo4() deterministic begin diff --git a/mysql-test/t/rpl_row_sp000.test b/mysql-test/t/rpl_row_sp000.test index e591cb054fc..4d638cfcc1c 100644 --- a/mysql-test/t/rpl_row_sp000.test +++ b/mysql-test/t/rpl_row_sp000.test @@ -82,6 +82,14 @@ grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1; +# ToDo: BUG#14931: There is a race between the last grant binlogging, and +# the binlogging in the new connection made below, causing sporadic test +# failures due to switched statement order in binlog. To fix this we do +# SELECT 1 in the first connection before starting the second, ensuring +# that binlogging is done in the expected order. +# Please remove this SELECT 1 when BUG#14931 is fixed. +SELECT 1; + connect (con1,127.0.0.1,zedjzlcsjhd,,mysqltest1,$MASTER_MYPORT,); connection con1; diff --git a/mysql-test/t/rpl_stm_sp.test b/mysql-test/t/rpl_stm_sp.test index 95c4543c952..62ea87e5352 100644 --- a/mysql-test/t/rpl_stm_sp.test +++ b/mysql-test/t/rpl_stm_sp.test @@ -90,6 +90,14 @@ grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1; +# ToDo: BUG#14931: There is a race between the last grant binlogging, and +# the binlogging in the new connection made below, causing sporadic test +# failures due to switched statement order in binlog. To fix this we do +# SELECT 1 in the first connection before starting the second, ensuring +# that binlogging is done in the expected order. +# Please remove this SELECT 1 when BUG#14931 is fixed. +SELECT 1; + connect (con1,127.0.0.1,zedjzlcsjhd,,mysqltest1,$MASTER_MYPORT,); connection con1; From f577d864cdac14d9a5cf7714b3506bab7688b1c7 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jan 2006 17:35:30 +0300 Subject: [PATCH 29/48] A fix for Bug#7209 "Client error with "Access Denied" on updates when high concurrency": remove HASH::current_record and make it an external search parameter, so that it can not be the cause of a race condition under high concurrent load. The bug was in a race condition in table_hash_search, when column_priv_hash.current_record was overwritten simultaneously by multiple threads, causing the search for a suitable grant record to fail. No test case as the bug is repeatable only under concurrent load. include/hash.h: - remove current_record from HASH, instead modify hash_first, hash_next to accept HASH_SEARCH_STATE as an IN/OUT parameter mysys/hash.c: - remove HASH::current_record - change declarations of functions that use HASH in read-only mode to accept const HASH * instead of HASH *. - implement hash_search; move the old implementation of hash_search to hash_first mysys/testhash.c: - adjust the test case to changed function declarations sql/lock.cc: - adjust to changed declarations of hash_search, hash_next sql/sql_acl.cc: - adjust to changed declarations of hash_search, hash_next sql/sql_base.cc: - adjust to changed declarations of hash_search, hash_nex sql/sql_cache.cc: - adjust to a changed declaration of hash_replace --- include/hash.h | 14 +++++++---- mysys/hash.c | 60 ++++++++++++++++++++++++++++-------------------- mysys/testhash.c | 9 ++++---- sql/lock.cc | 5 ++-- sql/sql_acl.cc | 9 ++++---- sql/sql_base.cc | 22 ++++++++++++------ sql/sql_cache.cc | 10 ++++---- 7 files changed, 79 insertions(+), 50 deletions(-) diff --git a/include/hash.h b/include/hash.h index 9a6d91036e1..8f5ff21ae5e 100644 --- a/include/hash.h +++ b/include/hash.h @@ -33,7 +33,7 @@ typedef void (*hash_free_key)(void *); typedef struct st_hash { uint key_offset,key_length; /* Length of key if const length */ - uint records,blength,current_record; + uint records, blength; uint flags; DYNAMIC_ARRAY array; /* Place for hash_keys */ hash_get_key get_key; @@ -41,6 +41,9 @@ typedef struct st_hash { CHARSET_INFO *charset; } HASH; +/* A search iterator state */ +typedef uint HASH_SEARCH_STATE; + #define hash_init(A,B,C,D,E,F,G,H) _hash_init(A,B,C,D,E,F,G, H CALLER_INFO) my_bool _hash_init(HASH *hash, CHARSET_INFO *charset, uint default_array_elements, uint key_offset, @@ -49,12 +52,15 @@ my_bool _hash_init(HASH *hash, CHARSET_INFO *charset, void hash_free(HASH *tree); void my_hash_reset(HASH *hash); byte *hash_element(HASH *hash,uint idx); -gptr hash_search(HASH *info,const byte *key,uint length); -gptr hash_next(HASH *info,const byte *key,uint length); +gptr hash_search(const HASH *info, const byte *key, uint length); +gptr hash_first(const HASH *info, const byte *key, uint length, + HASH_SEARCH_STATE *state); +gptr hash_next(const HASH *info, const byte *key, uint length, + HASH_SEARCH_STATE *state); my_bool my_hash_insert(HASH *info,const byte *data); my_bool hash_delete(HASH *hash,byte *record); my_bool hash_update(HASH *hash,byte *record,byte *old_key,uint old_key_length); -void hash_replace(HASH *hash, uint idx, byte *new_row); +void hash_replace(HASH *hash, HASH_SEARCH_STATE *state, byte *new_row); my_bool hash_check(HASH *hash); /* Only in debug library */ #define hash_clear(H) bzero((char*) (H),sizeof(*(H))) diff --git a/mysys/hash.c b/mysys/hash.c index ffebdf76144..75135a470c9 100644 --- a/mysys/hash.c +++ b/mysys/hash.c @@ -36,9 +36,10 @@ typedef struct st_hash_info { static uint hash_mask(uint hashnr,uint buffmax,uint maxlength); static void movelink(HASH_LINK *array,uint pos,uint next_link,uint newlink); -static int hashcmp(HASH *hash,HASH_LINK *pos,const byte *key,uint length); +static int hashcmp(const HASH *hash, HASH_LINK *pos, const byte *key, + uint length); -static uint calc_hash(HASH *hash,const byte *key,uint length) +static uint calc_hash(const HASH *hash, const byte *key, uint length) { ulong nr1=1, nr2=4; hash->charset->coll->hash_sort(hash->charset,(uchar*) key,length,&nr1,&nr2); @@ -63,7 +64,6 @@ _hash_init(HASH *hash,CHARSET_INFO *charset, hash->key_offset=key_offset; hash->key_length=key_length; hash->blength=1; - hash->current_record= NO_RECORD; /* For the future */ hash->get_key=get_key; hash->free=free_element; hash->flags=flags; @@ -135,7 +135,6 @@ void my_hash_reset(HASH *hash) reset_dynamic(&hash->array); /* Set row pointers so that the hash can be reused at once */ hash->blength= 1; - hash->current_record= NO_RECORD; DBUG_VOID_RETURN; } @@ -147,7 +146,8 @@ void my_hash_reset(HASH *hash) */ static inline char* -hash_key(HASH *hash,const byte *record,uint *length,my_bool first) +hash_key(const HASH *hash, const byte *record, uint *length, + my_bool first) { if (hash->get_key) return (*hash->get_key)(record,length,first); @@ -163,8 +163,8 @@ static uint hash_mask(uint hashnr,uint buffmax,uint maxlength) return (hashnr & ((buffmax >> 1) -1)); } -static uint hash_rec_mask(HASH *hash,HASH_LINK *pos,uint buffmax, - uint maxlength) +static uint hash_rec_mask(const HASH *hash, HASH_LINK *pos, + uint buffmax, uint maxlength) { uint length; byte *key= (byte*) hash_key(hash,pos->data,&length,0); @@ -186,14 +186,25 @@ unsigned int rec_hashnr(HASH *hash,const byte *record) } - /* Search after a record based on a key */ - /* Sets info->current_ptr to found record */ +gptr hash_search(const HASH *hash, const byte *key, uint length) +{ + HASH_SEARCH_STATE state; + return hash_first(hash, key, length, &state); +} -gptr hash_search(HASH *hash,const byte *key,uint length) +/* + Search after a record based on a key + + NOTE + Assigns the number of the found record to HASH_SEARCH_STATE state +*/ + +gptr hash_first(const HASH *hash, const byte *key, uint length, + HASH_SEARCH_STATE *current_record) { HASH_LINK *pos; uint flag,idx; - DBUG_ENTER("hash_search"); + DBUG_ENTER("hash_first"); flag=1; if (hash->records) @@ -206,7 +217,7 @@ gptr hash_search(HASH *hash,const byte *key,uint length) if (!hashcmp(hash,pos,key,length)) { DBUG_PRINT("exit",("found key at %d",idx)); - hash->current_record= idx; + *current_record= idx; DBUG_RETURN (pos->data); } if (flag) @@ -218,31 +229,32 @@ gptr hash_search(HASH *hash,const byte *key,uint length) } while ((idx=pos->next) != NO_RECORD); } - hash->current_record= NO_RECORD; + *current_record= NO_RECORD; DBUG_RETURN(0); } /* Get next record with identical key */ /* Can only be called if previous calls was hash_search */ -gptr hash_next(HASH *hash,const byte *key,uint length) +gptr hash_next(const HASH *hash, const byte *key, uint length, + HASH_SEARCH_STATE *current_record) { HASH_LINK *pos; uint idx; - if (hash->current_record != NO_RECORD) + if (*current_record != NO_RECORD) { HASH_LINK *data=dynamic_element(&hash->array,0,HASH_LINK*); - for (idx=data[hash->current_record].next; idx != NO_RECORD ; idx=pos->next) + for (idx=data[*current_record].next; idx != NO_RECORD ; idx=pos->next) { pos=data+idx; if (!hashcmp(hash,pos,key,length)) { - hash->current_record= idx; + *current_record= idx; return pos->data; } } - hash->current_record=NO_RECORD; + *current_record= NO_RECORD; } return 0; } @@ -282,7 +294,8 @@ static void movelink(HASH_LINK *array,uint find,uint next_link,uint newlink) > 0 key of record > key */ -static int hashcmp(HASH *hash,HASH_LINK *pos,const byte *key,uint length) +static int hashcmp(const HASH *hash, HASH_LINK *pos, const byte *key, + uint length) { uint rec_keylength; byte *rec_key= (byte*) hash_key(hash,pos->data,&rec_keylength,1); @@ -308,7 +321,6 @@ my_bool my_hash_insert(HASH *info,const byte *record) if (!(empty=(HASH_LINK*) alloc_dynamic(&info->array))) return(TRUE); /* No more memory */ - info->current_record= NO_RECORD; data=dynamic_element(&info->array,0,HASH_LINK*); halfbuff= info->blength >> 1; @@ -451,7 +463,6 @@ my_bool hash_delete(HASH *hash,byte *record) } if ( --(hash->records) < hash->blength >> 1) hash->blength>>=1; - hash->current_record= NO_RECORD; lastpos=data+hash->records; /* Remove link to record */ @@ -544,7 +555,6 @@ my_bool hash_update(HASH *hash,byte *record,byte *old_key,uint old_key_length) if ((idx=pos->next) == NO_RECORD) DBUG_RETURN(1); /* Not found in links */ } - hash->current_record= NO_RECORD; org_link= *pos; empty=idx; @@ -594,10 +604,10 @@ byte *hash_element(HASH *hash,uint idx) isn't changed */ -void hash_replace(HASH *hash, uint idx, byte *new_row) +void hash_replace(HASH *hash, HASH_SEARCH_STATE *current_record, byte *new_row) { - if (idx != NO_RECORD) /* Safety */ - dynamic_element(&hash->array,idx,HASH_LINK*)->data=new_row; + if (*current_record != NO_RECORD) /* Safety */ + dynamic_element(&hash->array, *current_record, HASH_LINK*)->data= new_row; } diff --git a/mysys/testhash.c b/mysys/testhash.c index 72badffdbcd..d15016113cd 100644 --- a/mysys/testhash.c +++ b/mysys/testhash.c @@ -74,7 +74,7 @@ static int do_test() bzero((char*) key1,sizeof(key1[0])*1000); printf("- Creating hash\n"); - if (hash_init(&hash,recant/2,0,6,0,free_record,0)) + if (hash_init(&hash, default_charset_info, recant/2, 0, 6, 0, free_record, 0)) goto err; printf("- Writing records:\n"); @@ -172,15 +172,16 @@ static int do_test() break; if (key1[j] > 1) { + HASH_SEARCH_STATE state; printf("- Testing identical read\n"); sprintf(key,"%6d",j); pos=1; - if (!(recpos=hash_search(&hash,key,0))) + if (!(recpos= hash_first(&hash, key, 0, &state))) { printf("can't find key1: \"%s\"\n",key); goto err; } - while (hash_next(&hash,key,0) && pos < (ulong) (key1[j]+10)) + while (hash_next(&hash, key, 0, &state) && pos < (ulong) (key1[j]+10)) pos++; if (pos != (ulong) key1[j]) { @@ -189,7 +190,7 @@ static int do_test() } } printf("- Creating output heap-file 2\n"); - if (hash_init(&hash2,hash.records,0,0,hash2_key,free_record,0)) + if (hash_init(&hash2, default_charset_info, hash.records, 0, 0, hash2_key, free_record,0)) goto err; printf("- Copying and removing records\n"); diff --git a/sql/lock.cc b/sql/lock.cc index a571b7f8ee8..f65ce69bb80 100644 --- a/sql/lock.cc +++ b/sql/lock.cc @@ -641,6 +641,7 @@ int lock_table_name(THD *thd, TABLE_LIST *table_list) char key[MAX_DBKEY_LENGTH]; char *db= table_list->db; uint key_length; + HASH_SEARCH_STATE state; DBUG_ENTER("lock_table_name"); DBUG_PRINT("enter",("db: %s name: %s", db, table_list->real_name)); @@ -651,9 +652,9 @@ int lock_table_name(THD *thd, TABLE_LIST *table_list) /* Only insert the table if we haven't insert it already */ - for (table=(TABLE*) hash_search(&open_cache,(byte*) key,key_length) ; + for (table=(TABLE*) hash_first(&open_cache, (byte*)key, key_length, &state); table ; - table = (TABLE*) hash_next(&open_cache,(byte*) key,key_length)) + table = (TABLE*) hash_next(&open_cache, (byte*)key, key_length, &state)) if (table->in_use == thd) DBUG_RETURN(0); diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 0ee83424d9f..74f7a1dcf06 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -1988,14 +1988,15 @@ static GRANT_TABLE *table_hash_search(const char *host,const char* ip, char helping [NAME_LEN*2+USERNAME_LENGTH+3]; uint len; GRANT_TABLE *grant_table,*found=0; + HASH_SEARCH_STATE state; len = (uint) (strmov(strmov(strmov(helping,user)+1,db)+1,tname)-helping)+ 1; - for (grant_table=(GRANT_TABLE*) hash_search(&column_priv_hash, - (byte*) helping, - len) ; + for (grant_table=(GRANT_TABLE*) hash_first(&column_priv_hash, + (byte*) helping, + len, &state) ; grant_table ; grant_table= (GRANT_TABLE*) hash_next(&column_priv_hash,(byte*) helping, - len)) + len, &state)) { if (exact) { diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 8b1fa754929..c8443948a4a 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -799,6 +799,7 @@ TABLE *open_table(THD *thd,const char *db,const char *table_name, reg1 TABLE *table; char key[MAX_DBKEY_LENGTH]; uint key_length; + HASH_SEARCH_STATE state; DBUG_ENTER("open_table"); /* find a unused table in the open table cache */ @@ -863,9 +864,11 @@ TABLE *open_table(THD *thd,const char *db,const char *table_name, /* close handler tables which are marked for flush */ mysql_ha_flush(thd, (TABLE_LIST*) NULL, MYSQL_HA_REOPEN_ON_USAGE, TRUE); - for (table=(TABLE*) hash_search(&open_cache,(byte*) key,key_length) ; + for (table= (TABLE*) hash_first(&open_cache, (byte*) key, key_length, + &state); table && table->in_use ; - table = (TABLE*) hash_next(&open_cache,(byte*) key,key_length)) + table= (TABLE*) hash_next(&open_cache, (byte*) key, key_length, + &state)) { if (table->version != refresh_version) { @@ -1236,12 +1239,14 @@ bool table_is_used(TABLE *table, bool wait_for_name_lock) { do { + HASH_SEARCH_STATE state; char *key= table->table_cache_key; uint key_length=table->key_length; - for (TABLE *search=(TABLE*) hash_search(&open_cache, - (byte*) key,key_length) ; + for (TABLE *search= (TABLE*) hash_first(&open_cache, (byte*) key, + key_length, &state); search ; - search = (TABLE*) hash_next(&open_cache,(byte*) key,key_length)) + search= (TABLE*) hash_next(&open_cache, (byte*) key, + key_length, &state)) { if (search->locked_by_flush || search->locked_by_name && wait_for_name_lock || @@ -2958,11 +2963,14 @@ bool remove_table_from_cache(THD *thd, const char *db, const char *table_name, key_length=(uint) (strmov(strmov(key,db)+1,table_name)-key)+1; for (;;) { + HASH_SEARCH_STATE state; result= signalled= 0; - for (table=(TABLE*) hash_search(&open_cache,(byte*) key,key_length) ; + for (table= (TABLE*) hash_first(&open_cache, (byte*) key, key_length, + &state); table; - table = (TABLE*) hash_next(&open_cache,(byte*) key,key_length)) + table= (TABLE*) hash_next(&open_cache, (byte*) key, key_length, + &state)) { THD *in_use; table->version=0L; /* Free when thread is ready */ diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index b40257511f7..457478e90db 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -2873,6 +2873,7 @@ my_bool Query_cache::move_by_type(byte **border, } case Query_cache_block::TABLE: { + HASH_SEARCH_STATE record_idx; DBUG_PRINT("qcache", ("block 0x%lx TABLE", (ulong) block)); if (*border == 0) break; @@ -2890,7 +2891,7 @@ my_bool Query_cache::move_by_type(byte **border, byte *key; uint key_length; key=query_cache_table_get_key((byte*) block, &key_length, 0); - hash_search(&tables, (byte*) key, key_length); + hash_first(&tables, (byte*) key, key_length, &record_idx); block->destroy(); new_block->init(len); @@ -2924,7 +2925,7 @@ my_bool Query_cache::move_by_type(byte **border, /* Fix pointer to table name */ new_block->table()->table(new_block->table()->db() + tablename_offset); /* Fix hash to point at moved block */ - hash_replace(&tables, tables.current_record, (byte*) new_block); + hash_replace(&tables, &record_idx, (byte*) new_block); DBUG_PRINT("qcache", ("moved %lu bytes to 0x%lx, new gap at 0x%lx", len, (ulong) new_block, (ulong) *border)); @@ -2932,6 +2933,7 @@ my_bool Query_cache::move_by_type(byte **border, } case Query_cache_block::QUERY: { + HASH_SEARCH_STATE record_idx; DBUG_PRINT("qcache", ("block 0x%lx QUERY", (ulong) block)); if (*border == 0) break; @@ -2949,7 +2951,7 @@ my_bool Query_cache::move_by_type(byte **border, byte *key; uint key_length; key=query_cache_query_get_key((byte*) block, &key_length, 0); - hash_search(&queries, (byte*) key, key_length); + hash_first(&queries, (byte*) key, key_length, &record_idx); // Move table of used tables memmove((char*) new_block->table(0), (char*) block->table(0), ALIGN_SIZE(n_tables*sizeof(Query_cache_block_table))); @@ -3017,7 +3019,7 @@ my_bool Query_cache::move_by_type(byte **border, net->query_cache_query= (gptr) new_block; } /* Fix hash to point at moved block */ - hash_replace(&queries, queries.current_record, (byte*) new_block); + hash_replace(&queries, &record_idx, (byte*) new_block); DBUG_PRINT("qcache", ("moved %lu bytes to 0x%lx, new gap at 0x%lx", len, (ulong) new_block, (ulong) *border)); break; From b6e0d940d61ad7eda9e04ea31a24c1505967ad71 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jan 2006 16:02:41 +0100 Subject: [PATCH 30/48] Fix QNX test abort in release builds and pushbuild, avoid killing our parent when we are not the process group leader. --- mysql-test/lib/mtr_process.pl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index b3a243444c1..4d88c9b3322 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -890,7 +890,14 @@ sub mtr_exit ($) { # cluck("Called mtr_exit()"); mtr_timer_stop_all($::glob_timers); local $SIG{HUP} = 'IGNORE'; - kill('HUP', -$$); + # ToDo: Signalling -$$ will only work if we are the process group + # leader (in fact on QNX it will signal our session group leader, + # which might be Do-compile or Pushbuild, causing tests to be + # aborted). So we only do it if we are the group leader. We might + # set ourselves as the group leader at startup (with + # POSIX::setpgrp(0,0)), but then care must be needed to always do + # proper child process cleanup. + kill('HUP', -$$) if $$ == getpgrp(); sleep 2; exit($code); } From d102b5457ceaf24cbe55ddc8ab9494f589ea03c5 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jan 2006 16:24:58 +0100 Subject: [PATCH 31/48] BUG#16188: Could not compile sql/sql_class.cc: Needed to be able to compile without RBR --- sql/sql_class.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql/sql_class.cc b/sql/sql_class.cc index f7894beec6d..853e8be6629 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1976,6 +1976,7 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup, backup->client_capabilities= client_capabilities; backup->savepoints= transaction.savepoints; +#ifdef HAVE_ROW_BASED_REPLICATION /* For row-based replication and before executing a function/trigger, the pending rows event has to be flushed. The function/trigger @@ -1992,6 +1993,7 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup, */ if (binlog_row_based) binlog_flush_pending_rows_event(false); +#endif /* HAVE_ROW_BASED_REPLICATION */ if ((!lex->requires_prelocking() || is_update_query(lex->sql_command)) && !binlog_row_based) From a6b0029f4d446adc730b09206b9cd838b0da3f7c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jan 2006 16:38:54 +0100 Subject: [PATCH 32/48] EADDRINUSE is not defined on Windows. --- include/my_global.h | 3 +++ sql/mysqld.cc | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/include/my_global.h b/include/my_global.h index e62f6c269aa..0df9ac78eb2 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -862,6 +862,7 @@ typedef off_t os_off_t; #define SOCKET_EAGAIN WSAEINPROGRESS #define SOCKET_ETIMEDOUT WSAETIMEDOUT #define SOCKET_EWOULDBLOCK WSAEWOULDBLOCK +#define SOCKET_EADDRINUSE WSAEADDRINUSE #define SOCKET_ENFILE ENFILE #define SOCKET_EMFILE EMFILE #elif defined(OS2) @@ -870,6 +871,7 @@ typedef off_t os_off_t; #define SOCKET_EAGAIN SOCEINPROGRESS #define SOCKET_ETIMEDOUT SOCKET_EINTR #define SOCKET_EWOULDBLOCK SOCEWOULDBLOCK +#define SOCKET_EADDRINUSE SOCEADDRINUSE #define SOCKET_ENFILE SOCENFILE #define SOCKET_EMFILE SOCEMFILE #define closesocket(A) soclose(A) @@ -880,6 +882,7 @@ typedef off_t os_off_t; #define SOCKET_EAGAIN EAGAIN #define SOCKET_ETIMEDOUT SOCKET_EINTR #define SOCKET_EWOULDBLOCK EWOULDBLOCK +#define SOCKET_EADDRINUSE EADDRINUSE #define SOCKET_ENFILE ENFILE #define SOCKET_EMFILE EMFILE #endif diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 14cbaf28ae3..8934b872c94 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1401,7 +1401,7 @@ static void network_init(void) { if (((ret= bind(ip_sock, my_reinterpret_cast(struct sockaddr *) (&IPaddr), sizeof(IPaddr))) >= 0) || - (socket_errno != EADDRINUSE) || + (socket_errno != SOCKET_EADDRINUSE) || (waited >= mysqld_port_timeout)) break; sql_print_information("Retrying bind on TCP/IP port %u", mysqld_port); From 58d4830c6352422177630ce31160d0d0aaa9aab1 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jan 2006 21:39:39 +0300 Subject: [PATCH 33/48] Post-merge fixes. sql/sql_acl.cc: A post-merge fix. sql/sql_base.cc: A post-merge fix. --- sql/sql_acl.cc | 1 - sql/sql_base.cc | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 22fecda2599..66a1b1f9b11 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -2245,7 +2245,6 @@ static GRANT_NAME *name_hash_search(HASH *name_hash, uint len; GRANT_NAME *grant_name,*found=0; HASH_SEARCH_STATE state; - GRANT_TABLE *grant_table,*found=0; len = (uint) (strmov(strmov(strmov(helping,user)+1,db)+1,tname)-helping)+ 1; for (grant_name= (GRANT_NAME*) hash_first(name_hash, (byte*) helping, diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 290f16a09d6..0b414f59223 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -1624,7 +1624,8 @@ bool table_is_used(TABLE *table, bool wait_for_name_lock) { char *key= table->s->table_cache_key; uint key_length= table->s->key_length; - for (TABLE *search= (TABLE*) hash_search(&open_cache, (byte*) key, + HASH_SEARCH_STATE state; + for (TABLE *search= (TABLE*) hash_first(&open_cache, (byte*) key, key_length, &state); search ; search= (TABLE*) hash_next(&open_cache, (byte*) key, From ab5144ded3064396424e3c66160cf510d374b405 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jan 2006 13:37:59 -0600 Subject: [PATCH 34/48] mysqlbinlog.cc: Put options in standard order: help first, then lexically, then variables. client/mysqlbinlog.cc: Put options in standard order: help first, then lexically, then variables. --- client/mysqlbinlog.cc | 52 +++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 6ecbb6802c7..d86e3a44746 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -663,7 +663,8 @@ end: static struct my_option my_long_options[] = { - + {"help", '?', "Display this help and exit.", + 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef __NETWARE__ {"autoclose", OPT_AUTO_CLOSE, "Auto close the screen on exit for Netware.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -683,13 +684,13 @@ static struct my_option my_long_options[] = {"character-sets-dir", OPT_CHARSETS_DIR, "Directory where character sets are.", (gptr*) &charsets_dir, (gptr*) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"database", 'd', "List entries for just this database (local log only).", + (gptr*) &database, (gptr*) &database, 0, GET_STR_ALLOC, REQUIRED_ARG, + 0, 0, 0, 0, 0, 0}, #ifndef DBUG_OFF {"debug", '#', "Output debug log.", (gptr*) &default_dbug_option, (gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"database", 'd', "List entries for just this database (local log only).", - (gptr*) &database, (gptr*) &database, 0, GET_STR_ALLOC, REQUIRED_ARG, - 0, 0, 0, 0, 0, 0}, {"disable-log-bin", 'D', "Disable binary log. This is useful, if you " "enabled --to-last-log and are sending the output to the same MySQL server. " "This way you could avoid an endless loop. You would also like to use it " @@ -700,13 +701,14 @@ static struct my_option my_long_options[] = {"force-read", 'f', "Force reading unknown binlog events.", (gptr*) &force_opt, (gptr*) &force_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"help", '?', "Display this help and exit.", - 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"hexdump", 'H', "Augment output with hexadecimal and ASCII event dump.", (gptr*) &opt_hexdump, (gptr*) &opt_hexdump, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"host", 'h', "Get the binlog from server.", (gptr*) &host, (gptr*) &host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"local-load", 'l', "Prepare local temporary files for LOAD DATA INFILE in the specified directory.", + (gptr*) &dirname_for_local_load, (gptr*) &dirname_for_local_load, 0, + GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"offset", 'o', "Skip the first N entries.", (gptr*) &offset, (gptr*) &offset, 0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"password", 'p', "Password to connect to remote server.", @@ -722,15 +724,15 @@ static struct my_option my_long_options[] = {"protocol", OPT_MYSQL_PROTOCOL, "The protocol of connection (tcp,socket,pipe,memory).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"result-file", 'r', "Direct output to a given file.", 0, 0, 0, GET_STR, - REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"read-from-remote-server", 'R', "Read binary logs from a MySQL server", (gptr*) &remote_opt, (gptr*) &remote_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"open_files_limit", OPT_OPEN_FILES_LIMIT, - "Used to reserve file descriptors for usage by this program", - (gptr*) &open_files_limit, (gptr*) &open_files_limit, 0, GET_ULONG, - REQUIRED_ARG, MY_NFILE, 8, OS_FILE_LIMIT, 0, 1, 0}, + {"result-file", 'r', "Direct output to a given file.", 0, 0, 0, GET_STR, + REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"server-id", OPT_SERVER_ID, + "Extract only binlog entries created by the server having the given id.", + (gptr*) &server_id, (gptr*) &server_id, 0, GET_ULONG, + REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"short-form", 's', "Just show the queries, no extra info.", (gptr*) &short_form, (gptr*) &short_form, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -745,6 +747,13 @@ static struct my_option my_long_options[] = "(you should probably use quotes for your shell to set it properly).", (gptr*) &start_datetime_str, (gptr*) &start_datetime_str, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"start-position", OPT_START_POSITION, + "Start reading the binlog at position N. Applies to the first binlog " + "passed on the command line.", + (gptr*) &start_position, (gptr*) &start_position, 0, GET_ULL, + REQUIRED_ARG, BIN_LOG_HEADER_SIZE, BIN_LOG_HEADER_SIZE, + /* COM_BINLOG_DUMP accepts only 4 bytes for the position */ + (ulonglong)(~(uint32)0), 0, 0, 0}, {"stop-datetime", OPT_STOP_DATETIME, "Stop reading the binlog at first event having a datetime equal or " "posterior to the argument; the argument must be a date and time " @@ -753,24 +762,12 @@ static struct my_option my_long_options[] = "(you should probably use quotes for your shell to set it properly).", (gptr*) &stop_datetime_str, (gptr*) &stop_datetime_str, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"start-position", OPT_START_POSITION, - "Start reading the binlog at position N. Applies to the first binlog " - "passed on the command line.", - (gptr*) &start_position, (gptr*) &start_position, 0, GET_ULL, - REQUIRED_ARG, BIN_LOG_HEADER_SIZE, BIN_LOG_HEADER_SIZE, - /* COM_BINLOG_DUMP accepts only 4 bytes for the position */ - (ulonglong)(~(uint32)0), 0, 0, 0}, {"stop-position", OPT_STOP_POSITION, "Stop reading the binlog at position N. Applies to the last binlog " "passed on the command line.", (gptr*) &stop_position, (gptr*) &stop_position, 0, GET_ULL, REQUIRED_ARG, (ulonglong)(~(my_off_t)0), BIN_LOG_HEADER_SIZE, (ulonglong)(~(my_off_t)0), 0, 0, 0}, - {"server-id", OPT_SERVER_ID, - "Only extract binlog entries created by a certain server id " - "passed on the command line.", - (gptr*) &server_id, (gptr*) &server_id, 0, GET_ULONG, - REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"to-last-log", 't', "Requires -R. Will not stop at the end of the \ requested binlog but rather continue printing until the end of the last \ binlog of the MySQL server. If you send the output to the same MySQL server, \ @@ -780,11 +777,12 @@ that may lead to an endless loop.", {"user", 'u', "Connect to the remote server as username.", (gptr*) &user, (gptr*) &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"local-load", 'l', "Prepare local temporary files for LOAD DATA INFILE in the specified directory.", - (gptr*) &dirname_for_local_load, (gptr*) &dirname_for_local_load, 0, - GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Print version and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"open_files_limit", OPT_OPEN_FILES_LIMIT, + "Used to reserve file descriptors for usage by this program", + (gptr*) &open_files_limit, (gptr*) &open_files_limit, 0, GET_ULONG, + REQUIRED_ARG, MY_NFILE, 8, OS_FILE_LIMIT, 0, 1, 0}, {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; From 95321f048f3061158df78318061feb9778950b05 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jan 2006 13:43:21 -0600 Subject: [PATCH 35/48] set_var.cc: Fix out of order system variable. sql/set_var.cc: Fix out of order system variable. --- sql/set_var.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/set_var.cc b/sql/set_var.cc index 01ff30045c4..7468e4aadf7 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -695,9 +695,9 @@ struct show_var_st init_vars[]= { {sys_have_partition_db.name,(char*) &have_partition_db, SHOW_HAVE}, {sys_have_query_cache.name, (char*) &have_query_cache, SHOW_HAVE}, {sys_have_raid.name, (char*) &have_raid, SHOW_HAVE}, + {sys_have_row_based_replication.name, (char*) &have_row_based_replication, SHOW_HAVE}, {sys_have_rtree_keys.name, (char*) &have_rtree_keys, SHOW_HAVE}, {sys_have_symlink.name, (char*) &have_symlink, SHOW_HAVE}, - {sys_have_row_based_replication.name, (char*) &have_row_based_replication, SHOW_HAVE}, {"init_connect", (char*) &sys_init_connect, SHOW_SYS}, {"init_file", (char*) &opt_init_file, SHOW_CHAR_PTR}, {"init_slave", (char*) &sys_init_slave, SHOW_SYS}, From 8085d440ec32a0df085768cb996505ea46baa299 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 Jan 2006 03:56:22 +0100 Subject: [PATCH 36/48] New rbr blob test requested by Lars mysql-test/extra/rpl_tests/rpl_row_blob.test: New blobs test for RBR mysql-test/t/rpl_row_blob_innodb.test: Innodb wrapper for rbr blob test mysql-test/t/rpl_row_blob_myisam.test: MyISAM wrapper for rbr blob test mysql-test/r/rpl_row_blob_myisam.result: MyISAM result for rbr blob test mysql-test/r/rpl_row_blob_innodb.result: Innodb result for rbr blob test --- mysql-test/extra/rpl_tests/rpl_row_blob.test | 179 +++++++++++++++++++ mysql-test/r/rpl_row_blob_innodb.result | 159 ++++++++++++++++ mysql-test/r/rpl_row_blob_myisam.result | 159 ++++++++++++++++ mysql-test/t/rpl_row_blob_innodb.test | 7 + mysql-test/t/rpl_row_blob_myisam.test | 6 + 5 files changed, 510 insertions(+) create mode 100644 mysql-test/extra/rpl_tests/rpl_row_blob.test create mode 100644 mysql-test/r/rpl_row_blob_innodb.result create mode 100644 mysql-test/r/rpl_row_blob_myisam.result create mode 100644 mysql-test/t/rpl_row_blob_innodb.test create mode 100644 mysql-test/t/rpl_row_blob_myisam.test diff --git a/mysql-test/extra/rpl_tests/rpl_row_blob.test b/mysql-test/extra/rpl_tests/rpl_row_blob.test new file mode 100644 index 00000000000..5f1e4bea6f3 --- /dev/null +++ b/mysql-test/extra/rpl_tests/rpl_row_blob.test @@ -0,0 +1,179 @@ +################################################# +# Author: JBM +# Date: 2006-01-06 +# Purpose: Test test that BLOBs are replicated +# correctly. +################################################ + +# Includes +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc + +# Pre test clean up section +connection master; +--disable_warnings +DROP TABLE IF EXISTS test.t1; +DROP TABLE IF EXISTS test.t2; +--enable_warnings + +# Start test section +--echo ***** Table Create Section **** +--echo +--disable_warnings +--replace_result $engine_type engine_type +CREATE TABLE test.t1 (c1 int not null auto_increment, +data LONGBLOB, PRIMARY KEY(c1))ENGINE=$engine_type; +--enable_warnings +--echo + +--echo **** Data Insert Section test.t1 ***** +--echo +INSERT INTO test.t1 VALUES (NULL, NULL); +INSERT INTO test.t1 VALUES (NULL, repeat('a',1*1024)); +INSERT INTO test.t1 VALUES (NULL, repeat('b',16*1024)); +CHECK TABLE test.t1; +--echo + +--echo **** Data Insert Validation Master Section test.t1 **** +--echo +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; +save_master_pos; +connection slave; +sync_with_master; +--echo +--echo **** Data Insert Validation Slave Section test.t1 **** +--echo +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; +connection master; +--echo + +--echo **** Data Update Section test.t1 **** +--echo +UPDATE test.t1 set data=repeat('a',18*1024) where c1 = 1; +UPDATE t1 set data=repeat('c',17*1024) where c1 = 2; +--echo + +--echo **** Data Update Validation Master Section test.t1 **** +--echo +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +save_master_pos; +connection slave; +sync_with_master; +--echo +--echo **** Data Update Validation Slave Section test.t1 **** +--echo +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +connection master; +--echo +--echo **** End Test Section test.t1 **** +--echo + +--echo **** Create Table test.t2 **** +--echo +--disable_warnings +--replace_result $engine_type engine_type +CREATE TABLE test.t2 ( + c1 INT NOT NULL PRIMARY KEY, + c2 TEXT, + c3 INT, + c4 LONGBLOB, + KEY(c3))ENGINE=$engine_type; +--enable_warnings +--echo + +--echo *** Setup Values For test.t2 *** +# x0 size 256 (current inline size) +set @x0 = '01234567012345670123456701234567'; +set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0); + +# b1 length 2000+256 (blob part aligned) +set @b1 = 'b1'; +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@x0); +# d1 length 3000 +set @d1 = 'dd1'; +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); + +# b2 length 20000 +set @b2 = 'b2'; +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); + +# d2 length 30000 +set @d2 = 'dd2'; +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +--echo + +--echo **** Data Insert Section test.t2 ***** +--echo +INSERT INTO test.t2 VALUES(1,@b1,111,@d1); +INSERT INTO test.t2 VALUES(2,@b2,222,@d2); +--echo + +--echo **** Data Insert Validation Master Section test.t2 **** +--echo +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; +save_master_pos; +connection slave; +sync_with_master; +--echo +--echo **** Data Insert Validation Slave Section test.t2 **** +--echo +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; +connection master; +--echo + +--echo **** Data Update Section test.t2 **** +--echo +UPDATE test.t2 SET c2=@b2, c4=@d2 WHERE c1=1; +UPDATE test.t2 SET c2=@b1, c4=@d1 WHERE c1=2; +--echo + +--echo **** Data Update Validation Master Section test.t2 **** +--echo +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; +save_master_pos; +connection slave; +sync_with_master; +--echo +--echo **** Data Update Validation Slave Section test.t2 **** +--echo +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; +connection master; +--echo + +# Post test clean up section +--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > ./var/tmp/rpl_row_blob_master.sql +--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > ./var/tmp/rpl_row_blob_slave.sql + +--exec diff ./var/tmp/rpl_row_blob_master.sql ./var/tmp/rpl_row_blob_slave.sql + +DROP TABLE IF EXISTS test.t1; +DROP TABLE IF EXISTS test.t2; diff --git a/mysql-test/r/rpl_row_blob_innodb.result b/mysql-test/r/rpl_row_blob_innodb.result new file mode 100644 index 00000000000..92671f10ab9 --- /dev/null +++ b/mysql-test/r/rpl_row_blob_innodb.result @@ -0,0 +1,159 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +DROP TABLE IF EXISTS test.t1; +DROP TABLE IF EXISTS test.t2; +***** Table Create Section **** + +CREATE TABLE test.t1 (c1 int not null auto_increment, +data LONGBLOB, PRIMARY KEY(c1))ENGINE=$engine_type; + +**** Data Insert Section test.t1 ***** + +INSERT INTO test.t1 VALUES (NULL, NULL); +INSERT INTO test.t1 VALUES (NULL, repeat('a',1*1024)); +INSERT INTO test.t1 VALUES (NULL, repeat('b',16*1024)); +CHECK TABLE test.t1; +Table Op Msg_type Msg_text +test.t1 check status OK + +**** Data Insert Validation Master Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +NULL +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +1024 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; +LENGTH(data) +16384 + +**** Data Insert Validation Slave Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +NULL +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +1024 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; +LENGTH(data) +16384 + +**** Data Update Section test.t1 **** + +UPDATE test.t1 set data=repeat('a',18*1024) where c1 = 1; +UPDATE t1 set data=repeat('c',17*1024) where c1 = 2; + +**** Data Update Validation Master Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +18432 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +17408 + +**** Data Update Validation Slave Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +18432 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +17408 + +**** End Test Section test.t1 **** + +**** Create Table test.t2 **** + +CREATE TABLE test.t2 ( +c1 INT NOT NULL PRIMARY KEY, +c2 TEXT, +c3 INT, +c4 LONGBLOB, +KEY(c3))ENGINE=$engine_type; + +*** Setup Values For test.t2 *** +set @x0 = '01234567012345670123456701234567'; +set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0); +set @b1 = 'b1'; +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@x0); +set @d1 = 'dd1'; +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); +set @b2 = 'b2'; +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @d2 = 'dd2'; +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); + +**** Data Insert Section test.t2 ***** + +INSERT INTO test.t2 VALUES(1,@b1,111,@d1); +INSERT INTO test.t2 VALUES(2,@b2,222,@d2); + +**** Data Insert Validation Master Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 2256 b1 3000 dd1 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 20000 b2 30000 dd2 + +**** Data Insert Validation Slave Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 2256 b1 3000 dd1 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 20000 b2 30000 dd2 + +**** Data Update Section test.t2 **** + +UPDATE test.t2 SET c2=@b2, c4=@d2 WHERE c1=1; +UPDATE test.t2 SET c2=@b1, c4=@d1 WHERE c1=2; + +**** Data Update Validation Master Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 20000 b2 30000 dd2 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 2256 b1 3000 dd1 + +**** Data Update Validation Slave Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 20000 b2 30000 dd2 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 2256 b1 3000 dd1 + +DROP TABLE IF EXISTS test.t1; +DROP TABLE IF EXISTS test.t2; diff --git a/mysql-test/r/rpl_row_blob_myisam.result b/mysql-test/r/rpl_row_blob_myisam.result new file mode 100644 index 00000000000..92671f10ab9 --- /dev/null +++ b/mysql-test/r/rpl_row_blob_myisam.result @@ -0,0 +1,159 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +DROP TABLE IF EXISTS test.t1; +DROP TABLE IF EXISTS test.t2; +***** Table Create Section **** + +CREATE TABLE test.t1 (c1 int not null auto_increment, +data LONGBLOB, PRIMARY KEY(c1))ENGINE=$engine_type; + +**** Data Insert Section test.t1 ***** + +INSERT INTO test.t1 VALUES (NULL, NULL); +INSERT INTO test.t1 VALUES (NULL, repeat('a',1*1024)); +INSERT INTO test.t1 VALUES (NULL, repeat('b',16*1024)); +CHECK TABLE test.t1; +Table Op Msg_type Msg_text +test.t1 check status OK + +**** Data Insert Validation Master Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +NULL +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +1024 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; +LENGTH(data) +16384 + +**** Data Insert Validation Slave Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +NULL +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +1024 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; +LENGTH(data) +16384 + +**** Data Update Section test.t1 **** + +UPDATE test.t1 set data=repeat('a',18*1024) where c1 = 1; +UPDATE t1 set data=repeat('c',17*1024) where c1 = 2; + +**** Data Update Validation Master Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +18432 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +17408 + +**** Data Update Validation Slave Section test.t1 **** + +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; +LENGTH(data) +18432 +SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; +LENGTH(data) +17408 + +**** End Test Section test.t1 **** + +**** Create Table test.t2 **** + +CREATE TABLE test.t2 ( +c1 INT NOT NULL PRIMARY KEY, +c2 TEXT, +c3 INT, +c4 LONGBLOB, +KEY(c3))ENGINE=$engine_type; + +*** Setup Values For test.t2 *** +set @x0 = '01234567012345670123456701234567'; +set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0); +set @b1 = 'b1'; +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); +set @b1 = concat(@b1,@x0); +set @d1 = 'dd1'; +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); +set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); +set @b2 = 'b2'; +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); +set @d2 = 'dd2'; +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); +set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); + +**** Data Insert Section test.t2 ***** + +INSERT INTO test.t2 VALUES(1,@b1,111,@d1); +INSERT INTO test.t2 VALUES(2,@b2,222,@d2); + +**** Data Insert Validation Master Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 2256 b1 3000 dd1 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 20000 b2 30000 dd2 + +**** Data Insert Validation Slave Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 2256 b1 3000 dd1 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 20000 b2 30000 dd2 + +**** Data Update Section test.t2 **** + +UPDATE test.t2 SET c2=@b2, c4=@d2 WHERE c1=1; +UPDATE test.t2 SET c2=@b1, c4=@d1 WHERE c1=2; + +**** Data Update Validation Master Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 20000 b2 30000 dd2 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 2256 b1 3000 dd1 + +**** Data Update Validation Slave Section test.t2 **** + +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=1; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +1 20000 b2 30000 dd2 +SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) +FROM test.t2 WHERE c1=2; +c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3) +2 2256 b1 3000 dd1 + +DROP TABLE IF EXISTS test.t1; +DROP TABLE IF EXISTS test.t2; diff --git a/mysql-test/t/rpl_row_blob_innodb.test b/mysql-test/t/rpl_row_blob_innodb.test new file mode 100644 index 00000000000..b6832010e22 --- /dev/null +++ b/mysql-test/t/rpl_row_blob_innodb.test @@ -0,0 +1,7 @@ +################################# +# Wrapper for rpl_row_blob.test# +################################# +-- source include/have_innodb.inc +let $engine_type=INNODB; +-- source extra/rpl_tests/rpl_row_blob.test + diff --git a/mysql-test/t/rpl_row_blob_myisam.test b/mysql-test/t/rpl_row_blob_myisam.test new file mode 100644 index 00000000000..2914aa7b348 --- /dev/null +++ b/mysql-test/t/rpl_row_blob_myisam.test @@ -0,0 +1,6 @@ +################################# +# Wrapper for rpl_row_blob.test# +################################# +let $engine_type=myisam; +-- source extra/rpl_tests/rpl_row_blob.test + From 02f4054ece1f927cd1c90140896e41cec2b34cb1 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 Jan 2006 11:18:26 +0300 Subject: [PATCH 37/48] Fix -ansi -pedantic compile --- sql/item_xmlfunc.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/item_xmlfunc.cc b/sql/item_xmlfunc.cc index 79a5c8e6445..bb5775780fa 100644 --- a/sql/item_xmlfunc.cc +++ b/sql/item_xmlfunc.cc @@ -715,7 +715,7 @@ String *Item_nodeset_func_predicate::val_nodeset(String *str) ((XPathFilter*)str)->append_element(flt->num, pos++); } return str; -}; +} String *Item_nodeset_func_elementbyindex::val_nodeset(String *nodeset) From c663d045faadb22f70802425cdf7cd672b86476d Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 Jan 2006 14:17:05 +0100 Subject: [PATCH 38/48] Some header files were missing from "make dist". --- storage/csv/Makefile.am | 1 + storage/example/Makefile.am | 1 + 2 files changed, 2 insertions(+) diff --git a/storage/csv/Makefile.am b/storage/csv/Makefile.am index 1d3c47bd650..f1802f4e5b0 100644 --- a/storage/csv/Makefile.am +++ b/storage/csv/Makefile.am @@ -29,6 +29,7 @@ WRAPLIBS= pkglib_LTLIBRARIES = ha_csv.la ha_csv_la_LDFLAGS = -module +noinst_HEADERS = ha_tina.h ha_csv_la_SOURCES = ha_tina.cc LDADD = diff --git a/storage/example/Makefile.am b/storage/example/Makefile.am index d5896946c5b..efc0ede91e9 100644 --- a/storage/example/Makefile.am +++ b/storage/example/Makefile.am @@ -29,6 +29,7 @@ WRAPLIBS= pkglib_LTLIBRARIES = ha_example.la ha_example_la_LDFLAGS = -module +noinst_HEADERS = ha_example.h ha_example_la_SOURCES = ha_example.cc LDADD = From f6bcc388da522c4428d47ab023a4556dd4930e8f Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 5 Jan 2006 23:39:45 +0100 Subject: [PATCH 39/48] Port to Win64/x64 in Visual Studio 2005 include/config-win.h: Port to Win64/x64 in Visual Studio 2005. Avoid endless deprecation warnings. --- include/config-win.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/config-win.h b/include/config-win.h index 528bc8a8cdd..cebc4c8b82b 100644 --- a/include/config-win.h +++ b/include/config-win.h @@ -22,6 +22,11 @@ functions */ #define _WIN32_WINNT 0x0500 #endif +#if defined(_MSC_VER) && _MSC_VER >= 1400 +/* Avoid endless warnings about sprintf() etc. being unsafe. */ +#define _CRT_SECURE_NO_DEPRECATE 1 +#endif + #include #include #include /* Because of rint() */ @@ -325,6 +330,11 @@ inline double ulonglong2double(ulonglong value) #define HAVE_SETFILEPOINTER #define HAVE_VIO_READ_BUFF +#if defined(_WIN64) && defined(_M_X64) +/* Avoid type conflicts with built-in functions. */ +#define HAVE_STRNLEN +#endif + #ifndef __NT__ #undef FILE_SHARE_DELETE #define FILE_SHARE_DELETE 0 /* Not implemented on Win 98/ME */ From 64206b1850bc93c74f93c3e0dd2e2e909240fcda Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 Jan 2006 00:47:49 +0200 Subject: [PATCH 40/48] Review fixes of new pushed code - Fixed tests - Optimized new code - Fixed some unlikely core dumps - Better bug fixes for: - #14397 - OPTIMIZE TABLE with an open HANDLER causes a crash - #14850 (ERROR 1062 when a quering a view using a Group By on a column that can be null mysql-test/r/create.result: Update results after removing wrong warnings for CREATE ... SELECT New tests mysql-test/r/handler.result: Drop used tables mysql-test/r/kill.result: Make test portable mysql-test/r/mysqlshow.result: Drop tables used by previous test mysql-test/r/trigger.result: Reuse old procedure name mysql-test/r/view.result: Extra tests mysql-test/t/create.test: New tests to test fix of removing wrong warnings for CREATE ... SELECT mysql-test/t/disabled.def: Enable 'kill' test (should now be portable) mysql-test/t/handler.test: Drop used tables mysql-test/t/kill.test: Make test portable even if kill doesn't work at once mysql-test/t/mysqlshow.test: Drop tables used by previous test mysql-test/t/trigger.test: Reuse old procedure name mysql-test/t/view.test: Extra tests sql/field.cc: Removed compiler warning sql/ha_federated.cc: my_snprintf -> strmake() (Simple optimization) sql/ha_ndbcluster.cc: Indentation cleanups and trival optimization sql/item.cc: Moved save_org_in_field() to item.cc to make it easier to test Remove setting of null_value as this is not needed sql/item.h: Moved save_org_in_field() to item.cc to make it easier to test sql/log_event.cc: Remove inline of slave_load_file_stem() Added 'extension' parameter to slave_load_file_stem() to get smaller code Removed not critical (or needed) DBUG_ASSERT()'s Cleaned up usage of slave_load_file_stem() to not depend on constant string lengths Indentation fixes sql/opt_range.cc: Moved code from declaration to function body (To make it more readable) sql/parse_file.cc: Fixed DBUG_PRINT sql/sp.cc: Simple cleanups - Removed not needed {} level - Ensure saved variables starts with old_ sql/sp_head.cc: Indentation fixes Remove core dump when using --debug when m_next_cached_sp == 0 Fixed compiler warnings Trivial optimizations sql/sp_head.h: Changed argument to set_definer() to const Added THD argument to recursion_level_error() to avoid call to current_thd sql/sql_acl.cc: Removed not needed test (first_not_own_table is the guard) sql/sql_base.cc: Removed extra empty line sql/sql_handler.cc: Don't test table version in mysql_ha_read() as this is already tested in lock_tables() Moved call to insert_fields to be after lock_table() to guard aganst reopen of tables (Better fix for Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash) sql/sql_insert.cc: Mark fields that are set in CREATE ... SELECT as used (Removed wrong warnings about field not having a default value) sql/sql_parse.cc: Removed not needed test of 'tables' (first_not_own_table is the guard) Simplify code sql/sql_select.cc: Use group->field to check if value is null instead of item called by 'save_org_in_field' This is a better bug fix for #14850 (ERROR 1062 when a quering a view using a Group By on a column that can be null) sql/sql_trigger.cc: Move sql_modes_parameters outside of function Indentation fixes Fixed compiler warning Ensure that thd->lex->query_tables_own_last is set properly before calling check_table_access() (This allows us to remove the extra test in check_grant() and check_table_access()) --- mysql-test/r/create.result | 43 ++++++++++------ mysql-test/r/handler.result | 2 +- mysql-test/r/kill.result | 2 - mysql-test/r/mysqlshow.result | 2 +- mysql-test/r/trigger.result | 7 ++- mysql-test/r/view.result | 3 ++ mysql-test/t/create.test | 16 ++++++ mysql-test/t/disabled.def | 1 - mysql-test/t/handler.test | 2 +- mysql-test/t/kill.test | 13 +++-- mysql-test/t/mysqlshow.test | 2 +- mysql-test/t/trigger.test | 9 ++-- mysql-test/t/view.test | 1 + sql/field.cc | 4 +- sql/ha_federated.cc | 3 +- sql/ha_ndbcluster.cc | 22 +++++---- sql/item.cc | 6 +++ sql/item.h | 6 +-- sql/log_event.cc | 93 ++++++++++++++++++++--------------- sql/opt_range.cc | 14 ++++-- sql/parse_file.cc | 2 +- sql/sp.cc | 70 +++++++++++++------------- sql/sp_head.cc | 68 ++++++++++++++----------- sql/sp_head.h | 4 +- sql/sql_acl.cc | 2 +- sql/sql_base.cc | 1 - sql/sql_handler.cc | 35 +++---------- sql/sql_insert.cc | 6 ++- sql/sql_parse.cc | 12 ++--- sql/sql_select.cc | 2 +- sql/sql_trigger.cc | 32 +++++++----- 31 files changed, 269 insertions(+), 216 deletions(-) diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index a201af78518..199fdd1eb5d 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -287,7 +287,6 @@ a b create table if not exists t1 select 3 as 'a',4 as 'b'; Warnings: Note 1050 Table 't1' already exists -Warning 1364 Field 'a' doesn't have a default value create table if not exists t1 select 3 as 'a',3 as 'b'; ERROR 23000: Duplicate entry '3' for key 1 select * from t1; @@ -645,8 +644,6 @@ create table t1 ( a varchar(112) charset utf8 collate utf8_bin not null, primary key (a) ) select 'test' as a ; -Warnings: -Warning 1364 Field 'a' doesn't have a default value show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -662,9 +659,6 @@ create table t1 ( a varchar(12) charset utf8 collate utf8_bin not null, b int not null, primary key (a) ) select a, 1 as b from t2 ; -Warnings: -Warning 1364 Field 'a' doesn't have a default value -Warning 1364 Field 'b' doesn't have a default value show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -674,12 +668,37 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; create table t1 ( +a varchar(12) charset utf8 collate utf8_bin not null, +b int not null, primary key (a) +) select a, 1 as c from t2 ; +Warnings: +Warning 1364 Field 'b' doesn't have a default value +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `b` int(11) NOT NULL, + `a` varchar(12) character set utf8 collate utf8_bin NOT NULL, + `c` bigint(1) NOT NULL default '0', + PRIMARY KEY (`a`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +drop table t1; +create table t1 ( +a varchar(12) charset utf8 collate utf8_bin not null, +b int null, primary key (a) +) select a, 1 as c from t2 ; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `b` int(11) default NULL, + `a` varchar(12) character set utf8 collate utf8_bin NOT NULL, + `c` bigint(1) NOT NULL default '0', + PRIMARY KEY (`a`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +drop table t1; +create table t1 ( a varchar(12) charset utf8 collate utf8_bin not null, b int not null, primary key (a) ) select 'a' as a , 1 as b from t2 ; -Warnings: -Warning 1364 Field 'a' doesn't have a default value -Warning 1364 Field 'b' doesn't have a default value show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -692,8 +711,6 @@ create table t1 ( a varchar(12) charset utf8 collate utf8_bin, b int not null, primary key (a) ) select 'a' as a , 1 as b from t2 ; -Warnings: -Warning 1364 Field 'b' doesn't have a default value show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -712,8 +729,6 @@ a1 varchar(12) charset utf8 collate utf8_bin not null, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, primary key (a1) ) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1 ; -Warnings: -Warning 1364 Field 'a1' doesn't have a default value drop table t2; create table t2 ( a1 varchar(12) charset utf8 collate utf8_bin, @@ -729,8 +744,6 @@ a1 varchar(12) charset utf8 collate utf8_bin not null, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, primary key (a1) ) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1 ; -Warnings: -Warning 1364 Field 'a1' doesn't have a default value drop table t2; create table t2 ( a int default 3, b int default 3) select a1,a2 from t1; diff --git a/mysql-test/r/handler.result b/mysql-test/r/handler.result index 133683fb273..104025e83eb 100644 --- a/mysql-test/r/handler.result +++ b/mysql-test/r/handler.result @@ -1,4 +1,4 @@ -drop table if exists t1; +drop table if exists t1,t3,t4,t5; create table t1 (a int, b char(10), key a(a), key b(a,b)); insert into t1 values (17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"), diff --git a/mysql-test/r/kill.result b/mysql-test/r/kill.result index 754568093ff..2413834be4f 100644 --- a/mysql-test/r/kill.result +++ b/mysql-test/r/kill.result @@ -5,8 +5,6 @@ select ((@id := kill_id) - kill_id) from t1; ((@id := kill_id) - kill_id) 0 kill @id; -select 1; -Got one of the listed errors select ((@id := kill_id) - kill_id) from t1; ((@id := kill_id) - kill_id) 0 diff --git a/mysql-test/r/mysqlshow.result b/mysql-test/r/mysqlshow.result index 355c20fdad3..942cde83f21 100644 --- a/mysql-test/r/mysqlshow.result +++ b/mysql-test/r/mysqlshow.result @@ -1,4 +1,4 @@ -DROP TABLE IF EXISTS t1,t2; +DROP TABLE IF EXISTS t1,t2,test1,test2; CREATE TABLE t1 (a int); INSERT INTO t1 VALUES (1),(2),(3); CREATE TABLE t2 (a int, b int); diff --git a/mysql-test/r/trigger.result b/mysql-test/r/trigger.result index ff92fc543d4..0ad5c485b28 100644 --- a/mysql-test/r/trigger.result +++ b/mysql-test/r/trigger.result @@ -767,8 +767,7 @@ deallocate prepare stmt1; drop procedure p1; drop table t1, t2, t3; create table t1 (a int); -drop procedure if exists p2; -CREATE PROCEDURE `p2`() +CREATE PROCEDURE `p1`() begin insert into t1 values (1); end// @@ -777,6 +776,6 @@ begin declare done int default 0; set done= not done; end// -CALL p2(); -drop procedure p2; +CALL p1(); +drop procedure p1; drop table t1; diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index ebb2c190eb1..c26671ac937 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -2418,6 +2418,9 @@ drop view v1; drop table t1; create table t1(f1 int, f2 int); insert into t1 values (null, 10), (null,2); +select f1, sum(f2) from t1 group by f1; +f1 sum(f2) +NULL 12 create view v1 as select * from t1; select f1, sum(f2) from v1 group by f1; f1 sum(f2) diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index 470a7bcbb59..fcbdff7ec5b 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -571,6 +571,22 @@ create table t1 ( show create table t1; drop table t1; +--warning 1364 +create table t1 ( + a varchar(12) charset utf8 collate utf8_bin not null, + b int not null, primary key (a) +) select a, 1 as c from t2 ; +show create table t1; +drop table t1; + +--warning 1364 +create table t1 ( + a varchar(12) charset utf8 collate utf8_bin not null, + b int null, primary key (a) +) select a, 1 as c from t2 ; +show create table t1; +drop table t1; + --warning 1364 create table t1 ( a varchar(12) charset utf8 collate utf8_bin not null, diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index fe95a543fb5..b96aa7befd9 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -14,4 +14,3 @@ sp-goto : GOTO is currently is disabled - will be fixed in the future rpl_relayrotate : Unstable test case, bug#12429 rpl_until : Unstable test case, bug#12429 rpl_deadlock : Unstable test case, bug#12429 -kill : Unstable test case, bug#9712 diff --git a/mysql-test/t/handler.test b/mysql-test/t/handler.test index f3e14c3cd2b..3fb09df5f2f 100644 --- a/mysql-test/t/handler.test +++ b/mysql-test/t/handler.test @@ -3,7 +3,7 @@ # --disable_warnings -drop table if exists t1; +drop table if exists t1,t3,t4,t5; --enable_warnings create table t1 (a int, b char(10), key a(a), key b(a,b)); diff --git a/mysql-test/t/kill.test b/mysql-test/t/kill.test index 7f3a9932d31..c50c35825fc 100644 --- a/mysql-test/t/kill.test +++ b/mysql-test/t/kill.test @@ -25,11 +25,18 @@ select ((@id := kill_id) - kill_id) from t1; kill @id; connection con1; ---sleep 1 +--sleep 2 -# this statement should fail ---error 2006,2013 +--disable_query_log +--disable_result_log +# One of the following statements should fail +--error 0,2006,2013 select 1; +--error 0,2006,2013 +select 1; +--enable_query_log +--enable_result_log + --enable_reconnect # this should work, and we should have a new connection_id() select ((@id := kill_id) - kill_id) from t1; diff --git a/mysql-test/t/mysqlshow.test b/mysql-test/t/mysqlshow.test index 1e2e97a4e07..78c4ae2b531 100644 --- a/mysql-test/t/mysqlshow.test +++ b/mysql-test/t/mysqlshow.test @@ -2,7 +2,7 @@ -- source include/not_embedded.inc --disable_warnings -DROP TABLE IF EXISTS t1,t2; +DROP TABLE IF EXISTS t1,t2,test1,test2; --enable_warnings # diff --git a/mysql-test/t/trigger.test b/mysql-test/t/trigger.test index d4fa5268762..acd3297e12a 100644 --- a/mysql-test/t/trigger.test +++ b/mysql-test/t/trigger.test @@ -928,11 +928,8 @@ drop table t1, t2, t3; # operator. # create table t1 (a int); ---disable_warnings -drop procedure if exists p2; ---enable_warnings DELIMITER //; -CREATE PROCEDURE `p2`() +CREATE PROCEDURE `p1`() begin insert into t1 values (1); end// @@ -942,7 +939,7 @@ begin set done= not done; end// DELIMITER ;// -CALL p2(); -drop procedure p2; +CALL p1(); +drop procedure p1; drop table t1; diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test index ac103278f08..bc54287afb2 100644 --- a/mysql-test/t/view.test +++ b/mysql-test/t/view.test @@ -2276,6 +2276,7 @@ drop table t1; # create table t1(f1 int, f2 int); insert into t1 values (null, 10), (null,2); +select f1, sum(f2) from t1 group by f1; create view v1 as select * from t1; select f1, sum(f2) from v1 group by f1; drop view v1; diff --git a/sql/field.cc b/sql/field.cc index b70e2a92618..9e73c132d68 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -6204,8 +6204,8 @@ Field *Field_string::new_field(MEM_ROOT *root, struct st_table *new_table) This is done to ensure that ALTER TABLE will convert old VARCHAR fields to now VARCHAR fields. */ - if (new_field= new Field_varstring(field_length, maybe_null(), - field_name, new_table, charset())) + if ((new_field= new Field_varstring(field_length, maybe_null(), + field_name, new_table, charset()))) { /* delayed_insert::get_local_table() needs a ptr copied from old table. diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc index d2f827989f5..14b79a9a418 100644 --- a/sql/ha_federated.cc +++ b/sql/ha_federated.cc @@ -2616,8 +2616,7 @@ int ha_federated::stash_remote_error() { DBUG_ENTER("ha_federated::stash_remote_error()"); remote_error_number= mysql_errno(mysql); - my_snprintf(remote_error_buf, sizeof(remote_error_buf), "%s", - mysql_error(mysql)); + strmake(remote_error_buf, mysql_error(mysql), sizeof(remote_error_buf)-1); DBUG_RETURN(HA_FEDERATED_ERROR_WITH_REMOTE_SYSTEM); } diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index cdd406d473c..81d11e0a27c 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -300,7 +300,8 @@ Thd_ndb::~Thd_ndb() if (ndb) { #ifndef DBUG_OFF - Ndb::Free_list_usage tmp; tmp.m_name= 0; + Ndb::Free_list_usage tmp; + tmp.m_name= 0; while (ndb->get_free_list_usage(&tmp)) { uint leaked= (uint) tmp.m_created - tmp.m_free; @@ -312,8 +313,8 @@ Thd_ndb::~Thd_ndb() } #endif delete ndb; + ndb= NULL; } - ndb= NULL; changed_tables.empty(); } @@ -4883,7 +4884,8 @@ bool ndbcluster_end() if (g_ndb) { #ifndef DBUG_OFF - Ndb::Free_list_usage tmp; tmp.m_name= 0; + Ndb::Free_list_usage tmp; + tmp.m_name= 0; while (g_ndb->get_free_list_usage(&tmp)) { uint leaked= (uint) tmp.m_created - tmp.m_free; @@ -4895,10 +4897,9 @@ bool ndbcluster_end() } #endif delete g_ndb; + g_ndb= NULL; } - g_ndb= NULL; - if (g_ndb_cluster_connection) - delete g_ndb_cluster_connection; + delete g_ndb_cluster_connection; g_ndb_cluster_connection= NULL; hash_free(&ndbcluster_open_tables); @@ -7443,7 +7444,8 @@ ndbcluster_show_status(THD* thd) if (have_ndbcluster != SHOW_OPTION_YES) { my_message(ER_NOT_SUPPORTED_YET, - "Cannot call SHOW NDBCLUSTER STATUS because skip-ndbcluster is defined", + "Cannot call SHOW NDBCLUSTER STATUS because skip-ndbcluster is " + "defined", MYF(0)); DBUG_RETURN(TRUE); } @@ -7454,13 +7456,15 @@ ndbcluster_show_status(THD* thd) field_list.push_back(new Item_return_int("free", 10,MYSQL_TYPE_LONG)); field_list.push_back(new Item_return_int("sizeof", 10,MYSQL_TYPE_LONG)); - if (protocol->send_fields(&field_list, Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF)) + if (protocol->send_fields(&field_list, + Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF)) DBUG_RETURN(TRUE); if (get_thd_ndb(thd) && get_thd_ndb(thd)->ndb) { Ndb* ndb= (get_thd_ndb(thd))->ndb; - Ndb::Free_list_usage tmp; tmp.m_name= 0; + Ndb::Free_list_usage tmp; + tmp.m_name= 0; while (ndb->get_free_list_usage(&tmp)) { protocol->prepare_for_resend(); diff --git a/sql/item.cc b/sql/item.cc index 6d5855cd0ca..dadbd31c81f 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -4843,6 +4843,12 @@ int Item_ref::save_in_field(Field *to, bool no_conversions) } +void Item_ref::save_org_in_field(Field *field) +{ + (*ref)->save_org_in_field(field); +} + + void Item_ref::make_field(Send_field *field) { (*ref)->make_field(field); diff --git a/sql/item.h b/sql/item.h index 4201790e907..c64e6586d5f 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1612,11 +1612,7 @@ public: void make_field(Send_field *field); bool fix_fields(THD *, Item **); int save_in_field(Field *field, bool no_conversions); - void save_org_in_field(Field *field) - { - (*ref)->save_org_in_field(field); - null_value= (*ref)->null_value; - } + void save_org_in_field(Field *field); enum Item_result result_type () const { return (*ref)->result_type(); } enum_field_types field_type() const { return (*ref)->field_type(); } Field *get_tmp_table_field() diff --git a/sql/log_event.cc b/sql/log_event.cc index 056bcca1a02..519b077b17b 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -114,13 +114,24 @@ static char *pretty_print_str(char *packet, char *str, int len) /* - slave_load_file_stem() + Creates a temporary name for load data infile: + + SYNOPSIS + slave_load_file_stem() + buf Store new filename here + file_id File_id (part of file name) + event_server_id Event_id (part of file name) + ext Extension for file name + + RETURN + Pointer to start of extension */ #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT) -static inline char* slave_load_file_stem(char*buf, uint file_id, - int event_server_id) +static char *slave_load_file_stem(char *buf, uint file_id, + int event_server_id, const char *ext) { + char *res; fn_format(buf,"SQL_LOAD-",slave_load_tmpdir, "", MY_UNPACK_FILENAME); to_unix_path(buf); @@ -129,7 +140,9 @@ static inline char* slave_load_file_stem(char*buf, uint file_id, *buf++ = '-'; buf = int10_to_str(event_server_id, buf, 10); *buf++ = '-'; - return int10_to_str(file_id, buf, 10); + res= int10_to_str(file_id, buf, 10); + strmov(res, ext); // Add extension last + return res; // Pointer to extension } #endif @@ -901,7 +914,6 @@ void Log_event::print_header(FILE* file, PRINT_EVENT_INFO* print_event_info) /* Pretty-print event common header if header is exactly 19 bytes */ if (print_event_info->common_header_len == LOG_EVENT_MINIMAL_HEADER_LEN) { - DBUG_ASSERT(hexdump_from == (unsigned long) hexdump_from); fprintf(file, "# Position Timestamp Type Master ID " "Size Master Pos Flags \n"); fprintf(file, "# %8.8lx %02x %02x %02x %02x %02x " @@ -927,7 +939,6 @@ void Log_event::print_header(FILE* file, PRINT_EVENT_INFO* print_event_info) if (i % 16 == 15) { - DBUG_ASSERT(hexdump_from == (unsigned long) hexdump_from); fprintf(file, "# %8.8lx %-48.48s |%16s|\n", (unsigned long) (hexdump_from + (i & 0xfffffff0)), hex_string, char_string); @@ -941,12 +952,10 @@ void Log_event::print_header(FILE* file, PRINT_EVENT_INFO* print_event_info) *c= '\0'; /* Non-full last line */ - if (hex_string[0]) { - DBUG_ASSERT(hexdump_from == (unsigned long) hexdump_from); + if (hex_string[0]) fprintf(file, "# %8.8lx %-48.48s |%s|\n# ", (unsigned long) (hexdump_from + (i & 0xfffffff0)), hex_string, char_string); - } } } @@ -4160,16 +4169,15 @@ void Create_file_log_event::pack_info(Protocol *protocol) #if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT) int Create_file_log_event::exec_event(struct st_relay_log_info* rli) { - char proc_info[17+FN_REFLEN+10], *fname_buf= proc_info+17; - char *p; + char proc_info[17+FN_REFLEN+10], *fname_buf; + char *ext; int fd = -1; IO_CACHE file; int error = 1; bzero((char*)&file, sizeof(file)); - p = slave_load_file_stem(fname_buf, file_id, server_id); - strmov(p, ".info"); // strmov takes less code than memcpy - strnmov(proc_info, STRING_WITH_LEN("Making temp file ")); // no end 0 + fname_buf= strmov(proc_info, "Making temp file "); + ext= slave_load_file_stem(fname_buf, file_id, server_id, ".info"); thd->proc_info= proc_info; my_delete(fname_buf, MYF(0)); // old copy may exist already if ((fd= my_create(fname_buf, CREATE_MODE, @@ -4178,19 +4186,21 @@ int Create_file_log_event::exec_event(struct st_relay_log_info* rli) init_io_cache(&file, fd, IO_SIZE, WRITE_CACHE, (my_off_t)0, 0, MYF(MY_WME|MY_NABP))) { - slave_print_error(rli,my_errno, "Error in Create_file event: could not open file '%s'", fname_buf); + slave_print_error(rli,my_errno, + "Error in Create_file event: could not open file '%s'", + fname_buf); goto err; } // a trick to avoid allocating another buffer - strmov(p, ".data"); - fname = fname_buf; - fname_len = (uint)(p-fname) + 5; + fname= fname_buf; + fname_len= (uint) (strmov(ext, ".data") - fname); if (write_base(&file)) { - strmov(p, ".info"); // to have it right in the error message + strmov(ext, ".info"); // to have it right in the error message slave_print_error(rli,my_errno, - "Error in Create_file event: could not write to file '%s'", + "Error in Create_file event: could not write to file " + "'%s'", fname_buf); goto err; } @@ -4203,12 +4213,16 @@ int Create_file_log_event::exec_event(struct st_relay_log_info* rli) O_WRONLY | O_BINARY | O_EXCL | O_NOFOLLOW, MYF(MY_WME))) < 0) { - slave_print_error(rli,my_errno, "Error in Create_file event: could not open file '%s'", fname_buf); + slave_print_error(rli,my_errno, + "Error in Create_file event: could not open file '%s'", + fname_buf); goto err; } if (my_write(fd, (byte*) block, block_len, MYF(MY_WME+MY_NABP))) { - slave_print_error(rli,my_errno, "Error in Create_file event: write to '%s' failed", fname_buf); + slave_print_error(rli,my_errno, + "Error in Create_file event: write to '%s' failed", + fname_buf); goto err; } error=0; // Everything is ok @@ -4332,13 +4346,12 @@ int Append_block_log_event::get_create_or_append() const int Append_block_log_event::exec_event(struct st_relay_log_info* rli) { char proc_info[17+FN_REFLEN+10], *fname= proc_info+17; - char *p= slave_load_file_stem(fname, file_id, server_id); int fd; int error = 1; DBUG_ENTER("Append_block_log_event::exec_event"); - memcpy(p, ".data", 6); - strnmov(proc_info, STRING_WITH_LEN("Making temp file ")); // no end 0 + fname= strmov(proc_info, "Making temp file "); + slave_load_file_stem(fname, file_id, server_id, ".data"); thd->proc_info= proc_info; if (get_create_or_append()) { @@ -4464,10 +4477,9 @@ void Delete_file_log_event::pack_info(Protocol *protocol) int Delete_file_log_event::exec_event(struct st_relay_log_info* rli) { char fname[FN_REFLEN+10]; - char *p= slave_load_file_stem(fname, file_id, server_id); - memcpy(p, ".data", 6); + char *ext= slave_load_file_stem(fname, file_id, server_id, ".data"); (void) my_delete(fname, MYF(MY_WME)); - memcpy(p, ".info", 6); + strmov(ext, ".info"); (void) my_delete(fname, MYF(MY_WME)); return Log_event::exec_event(rli); } @@ -4560,19 +4572,21 @@ void Execute_load_log_event::pack_info(Protocol *protocol) int Execute_load_log_event::exec_event(struct st_relay_log_info* rli) { char fname[FN_REFLEN+10]; - char *p= slave_load_file_stem(fname, file_id, server_id); + char *ext; int fd; - int error = 1; + int error= 1; IO_CACHE file; - Load_log_event* lev = 0; + Load_log_event *lev= 0; - memcpy(p, ".info", 6); + ext= slave_load_file_stem(fname, file_id, server_id, ".info"); if ((fd = my_open(fname, O_RDONLY | O_BINARY | O_NOFOLLOW, MYF(MY_WME))) < 0 || init_io_cache(&file, fd, IO_SIZE, READ_CACHE, (my_off_t)0, 0, MYF(MY_WME|MY_NABP))) { - slave_print_error(rli,my_errno, "Error in Exec_load event: could not open file '%s'", fname); + slave_print_error(rli,my_errno, + "Error in Exec_load event: could not open file '%s'", + fname); goto err; } if (!(lev = (Load_log_event*)Log_event::read_log_event(&file, @@ -4580,7 +4594,9 @@ int Execute_load_log_event::exec_event(struct st_relay_log_info* rli) rli->relay_log.description_event_for_exec)) || lev->get_type_code() != NEW_LOAD_EVENT) { - slave_print_error(rli,0, "Error in Exec_load event: file '%s' appears corrupted", fname); + slave_print_error(rli,0, + "Error in Exec_load event: file '%s' appears corrupted", + fname); goto err; } @@ -4625,7 +4641,7 @@ int Execute_load_log_event::exec_event(struct st_relay_log_info* rli) fd= -1; } (void) my_delete(fname, MYF(MY_WME)); - memcpy(p, ".data", 6); + memcpy(ext, ".data", 6); (void) my_delete(fname, MYF(MY_WME)); error = 0; @@ -4823,11 +4839,10 @@ Execute_load_query_log_event::exec_event(struct st_relay_log_info* rli) memcpy(p, query, fn_pos_start); p+= fn_pos_start; fname= (p= strmake(p, STRING_WITH_LEN(" INFILE \'"))); - p= slave_load_file_stem(p, file_id, server_id); - fname_end= (p= strmake(p, STRING_WITH_LEN(".data"))); + p= slave_load_file_stem(p, file_id, server_id, ".data"); + fname_end= p= strend(p); // Safer than p=p+5 *(p++)='\''; - switch (dup_handling) - { + switch (dup_handling) { case LOAD_DUP_IGNORE: p= strmake(p, STRING_WITH_LEN(" IGNORE")); break; diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 323e829f219..12b00a62012 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -5737,6 +5737,7 @@ bool QUICK_ROR_UNION_SELECT::check_if_keys_used(List *fields) /* Create quick select from ref/ref_or_null scan. + SYNOPSIS get_quick_select_for_ref() thd Thread handle @@ -5756,15 +5757,18 @@ bool QUICK_ROR_UNION_SELECT::check_if_keys_used(List *fields) QUICK_RANGE_SELECT *get_quick_select_for_ref(THD *thd, TABLE *table, TABLE_REF *ref, ha_rows records) { - MEM_ROOT *old_root= thd->mem_root; - /* The following call may change thd->mem_root */ - QUICK_RANGE_SELECT *quick= new QUICK_RANGE_SELECT(thd, table, ref->key, 0); - /* save mem_root set by QUICK_RANGE_SELECT constructor */ - MEM_ROOT *alloc= thd->mem_root; + MEM_ROOT *old_root, *alloc; + QUICK_RANGE_SELECT *quick; KEY *key_info = &table->key_info[ref->key]; KEY_PART *key_part; QUICK_RANGE *range; uint part; + + old_root= thd->mem_root; + /* The following call may change thd->mem_root */ + quick= new QUICK_RANGE_SELECT(thd, table, ref->key, 0); + /* save mem_root set by QUICK_RANGE_SELECT constructor */ + alloc= thd->mem_root; /* return back default mem_root (thd->mem_root) changed by QUICK_RANGE_SELECT constructor diff --git a/sql/parse_file.cc b/sql/parse_file.cc index 69757e0be06..041b770ac0b 100644 --- a/sql/parse_file.cc +++ b/sql/parse_file.cc @@ -944,6 +944,6 @@ File_parser_dummy_hook::process_unknown_string(char *&unknown_key, char *end) { DBUG_ENTER("file_parser_dummy_hook::process_unknown_string"); - DBUG_PRINT("info", ("unknown key:%60s", unknown_key)); + DBUG_PRINT("info", ("Unknown key: '%60s'", unknown_key)); DBUG_RETURN(FALSE); } diff --git a/sql/sp.cc b/sql/sp.cc index 8991cc78b5e..983addb2db7 100644 --- a/sql/sp.cc +++ b/sql/sp.cc @@ -399,14 +399,14 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, const char *body, st_sp_chistics &chistics, const char *definer, longlong created, longlong modified) { - LEX *oldlex= thd->lex, newlex; - sp_rcontext *save_spcont= thd->spcont; + LEX *old_lex= thd->lex, newlex; String defstr; char olddb[128]; bool dbchanged; ulong old_sql_mode= thd->variables.sql_mode; - ha_rows select_limit= thd->variables.select_limit; - int ret= SP_INTERNAL_ERROR; + ha_rows old_select_limit= thd->variables.select_limit; + sp_rcontext *old_spcont= thd->spcont; + int ret; thd->variables.sql_mode= sql_mode; thd->variables.select_limit= HA_POS_ERROR; @@ -422,7 +422,10 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, returns, strlen(returns), body, strlen(body), &chistics)) + { + ret= SP_INTERNAL_ERROR; goto end; + } dbchanged= FALSE; if ((ret= sp_use_new_db(thd, name->m_db.str, olddb, sizeof(olddb), @@ -451,10 +454,10 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, (*sphp)->optimize(); } end: - thd->spcont= save_spcont; + thd->spcont= old_spcont; thd->variables.sql_mode= old_sql_mode; - thd->variables.select_limit= select_limit; - thd->lex= oldlex; + thd->variables.select_limit= old_select_limit; + thd->lex= old_lex; return ret; } @@ -926,7 +929,6 @@ sp_find_routine(THD *thd, int type, sp_name *name, sp_cache **cp, ulong depth= (type == TYPE_ENUM_PROCEDURE ? thd->variables.max_sp_recursion_depth : 0); - DBUG_ENTER("sp_find_routine"); DBUG_PRINT("enter", ("name: %.*s.%.*s, type: %d, cache only %d", name->m_db.length, name->m_db.str, @@ -936,6 +938,11 @@ sp_find_routine(THD *thd, int type, sp_name *name, sp_cache **cp, if ((sp= sp_cache_lookup(cp, name))) { ulong level; + sp_head *new_sp; + const char *returns= ""; + char definer[HOSTNAME_LENGTH+USERNAME_LENGTH+2]; + String retstr(64); + DBUG_PRINT("info", ("found: 0x%lx", (ulong)sp)); if (sp->m_first_free_instance) { @@ -946,7 +953,7 @@ sp_find_routine(THD *thd, int type, sp_name *name, sp_cache **cp, DBUG_ASSERT(!(sp->m_first_free_instance->m_flags & sp_head::IS_INVOKED)); if (sp->m_first_free_instance->m_recursion_level > depth) { - sp->recursion_level_error(); + sp->recursion_level_error(thd); DBUG_RETURN(0); } DBUG_RETURN(sp->m_first_free_instance); @@ -954,37 +961,32 @@ sp_find_routine(THD *thd, int type, sp_name *name, sp_cache **cp, level= sp->m_last_cached_sp->m_recursion_level + 1; if (level > depth) { - sp->recursion_level_error(); + sp->recursion_level_error(thd); DBUG_RETURN(0); } + + strxmov(definer, sp->m_definer_user.str, "@", + sp->m_definer_host.str, NullS); + if (type == TYPE_ENUM_FUNCTION) { - sp_head *new_sp; - const char *returns= ""; - char definer[HOSTNAME_LENGTH+USERNAME_LENGTH+2]; - String retstr(64); - strxmov(definer, sp->m_definer_user.str, "@", - sp->m_definer_host.str, NullS); - if (type == TYPE_ENUM_FUNCTION) - { - sp_returns_type(thd, retstr, sp); - returns= retstr.ptr(); - } - if (db_load_routine(thd, type, name, &new_sp, - sp->m_sql_mode, sp->m_params.str, returns, - sp->m_body.str, *sp->m_chistics, definer, - sp->m_created, sp->m_modified) == SP_OK) - { - sp->m_last_cached_sp->m_next_cached_sp= new_sp; - new_sp->m_recursion_level= level; - new_sp->m_first_instance= sp; - sp->m_last_cached_sp= sp->m_first_free_instance= new_sp; - DBUG_PRINT("info", ("added level: 0x%lx, level: %lu, flags %x", + sp_returns_type(thd, retstr, sp); + returns= retstr.ptr(); + } + if (db_load_routine(thd, type, name, &new_sp, + sp->m_sql_mode, sp->m_params.str, returns, + sp->m_body.str, *sp->m_chistics, definer, + sp->m_created, sp->m_modified) == SP_OK) + { + sp->m_last_cached_sp->m_next_cached_sp= new_sp; + new_sp->m_recursion_level= level; + new_sp->m_first_instance= sp; + sp->m_last_cached_sp= sp->m_first_free_instance= new_sp; + DBUG_PRINT("info", ("added level: 0x%lx, level: %lu, flags %x", (ulong)new_sp, new_sp->m_recursion_level, new_sp->m_flags)); - DBUG_RETURN(new_sp); - } - DBUG_RETURN(0); + DBUG_RETURN(new_sp); } + DBUG_RETURN(0); } if (!cache_only) { diff --git a/sql/sp_head.cc b/sql/sp_head.cc index a6e88c08789..576830a6587 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -24,11 +24,17 @@ #include "sp_rcontext.h" #include "sp_cache.h" +/* + Sufficient max length of printed destinations and frame offsets (all uints). +*/ +#define SP_INSTR_UINT_MAXLEN 8 +#define SP_STMT_PRINT_MAXLEN 40 + + Item_result sp_map_result_type(enum enum_field_types type) { - switch (type) - { + switch (type) { case MYSQL_TYPE_TINY: case MYSQL_TYPE_SHORT: case MYSQL_TYPE_LONG: @@ -891,17 +897,17 @@ static bool subst_spvars(THD *thd, sp_instr *instr, LEX_STRING *query_str) SYNOPSIS sp_head::recursion_level_error() + thd Thread handle NOTE For functions and triggers we return error about prohibited recursion. For stored procedures we return about reaching recursion limit. */ -void sp_head::recursion_level_error() +void sp_head::recursion_level_error(THD *thd) { if (m_type == TYPE_ENUM_PROCEDURE) { - THD *thd= current_thd; my_error(ER_SP_RECURSION_LIMIT, MYF(0), thd->variables.max_sp_recursion_depth, m_name); @@ -952,10 +958,15 @@ int sp_head::execute(THD *thd) DBUG_ASSERT(!(m_flags & IS_INVOKED)); m_flags|= IS_INVOKED; m_first_instance->m_first_free_instance= m_next_cached_sp; - DBUG_PRINT("info", ("first free for 0x%lx ++: 0x%lx->0x%lx, level: %lu, flags %x", - (ulong)m_first_instance, this, m_next_cached_sp, - m_next_cached_sp->m_recursion_level, - m_next_cached_sp->m_flags)); + if (m_next_cached_sp) + { + DBUG_PRINT("info", + ("first free for 0x%lx ++: 0x%lx->0x%lx level: %lu flags %x", + (ulong)m_first_instance, (ulong) this, + (ulong) m_next_cached_sp, + m_next_cached_sp->m_recursion_level, + m_next_cached_sp->m_flags)); + } /* Check that if there are not any instances after this one then pointer to the last instance points on this instance or if there are @@ -1140,9 +1151,9 @@ int sp_head::execute(THD *thd) } m_flags&= ~IS_INVOKED; DBUG_PRINT("info", ("first free for 0x%lx --: 0x%lx->0x%lx, level: %lu, flags %x", - (ulong)m_first_instance, - m_first_instance->m_first_free_instance, this, - m_recursion_level, m_flags)); + (ulong) m_first_instance, + (ulong) m_first_instance->m_first_free_instance, + (ulong) this, m_recursion_level, m_flags)); /* Check that we have one of following: @@ -1152,7 +1163,7 @@ int sp_head::execute(THD *thd) 2) There are some free instances which mean that first free instance should go just after this one and recursion level of that free instance - should be on 1 more then recursion leven of this instance. + should be on 1 more then recursion level of this instance. */ DBUG_ASSERT((m_first_instance->m_first_free_instance == 0 && this == m_first_instance->m_last_cached_sp && @@ -1684,16 +1695,16 @@ sp_head::set_info(longlong created, longlong modified, void -sp_head::set_definer(char *definer, uint definerlen) + +sp_head::set_definer(const char *definer, uint definerlen) { char *p= strrchr(definer, '@'); if (!p) { - m_definer_user.str= strmake_root(mem_root, "", 0); + m_definer_user.str= (char*) ""; m_definer_user.length= 0; - - m_definer_host.str= strmake_root(mem_root, "", 0); + m_definer_host.str= (char*) ""; m_definer_host.length= 0; } else @@ -1788,9 +1799,9 @@ sp_head::show_create_procedure(THD *thd) byte *sql_mode_str; ulong sql_mode_len; bool full_access; - DBUG_ENTER("sp_head::show_create_procedure"); DBUG_PRINT("info", ("procedure %s", m_name.str)); + LINT_INIT(sql_mode_str); LINT_INIT(sql_mode_len); @@ -2143,12 +2154,7 @@ sp_instr_stmt::execute(THD *thd, uint *nextp) DBUG_RETURN(res); } -/* - Sufficient max length of printed destinations and frame offsets (all uints). -*/ -#define SP_INSTR_UINT_MAXLEN 8 -#define SP_STMT_PRINT_MAXLEN 40 void sp_instr_stmt::print(String *str) { @@ -2170,16 +2176,16 @@ sp_instr_stmt::print(String *str) /* Copy the query string and replace '\n' with ' ' in the process */ for (i= 0 ; i < len ; i++) { - if (m_query.str[i] == '\n') - str->qs_append(' '); - else - str->qs_append(m_query.str[i]); + char c= m_query.str[i]; + if (c == '\n') + c= ' '; + str->qs_append(c); } if (m_query.length > SP_STMT_PRINT_MAXLEN) str->qs_append(STRING_WITH_LEN("...")); /* Indicate truncated string */ str->qs_append('"'); } -#undef SP_STMT_PRINT_MAXLEN + int sp_instr_stmt::exec_core(THD *thd, uint *nextp) @@ -2523,6 +2529,7 @@ sp_instr_hpush_jump::execute(THD *thd, uint *nextp) DBUG_RETURN(0); } + void sp_instr_hpush_jump::print(String *str) { @@ -2533,8 +2540,7 @@ sp_instr_hpush_jump::print(String *str) str->qs_append(m_dest); str->qs_append(' '); str->qs_append(m_frame); - switch (m_type) - { + switch (m_type) { case SP_HANDLER_NONE: str->qs_append(STRING_WITH_LEN(" NONE")); // This would be a bug break; @@ -2548,11 +2554,13 @@ sp_instr_hpush_jump::print(String *str) str->qs_append(STRING_WITH_LEN(" UNDO")); break; default: - str->qs_append(STRING_WITH_LEN(" UNKNOWN:")); // This would be a bug as well + // This would be a bug as well + str->qs_append(STRING_WITH_LEN(" UNKNOWN:")); str->qs_append(m_type); } } + uint sp_instr_hpush_jump::opt_mark(sp_head *sp) { diff --git a/sql/sp_head.h b/sql/sp_head.h index 6334bca0fc6..6f4a2de1518 100644 --- a/sql/sp_head.h +++ b/sql/sp_head.h @@ -283,7 +283,7 @@ public: void set_info(longlong created, longlong modified, st_sp_chistics *chistics, ulong sql_mode); - void set_definer(char *definer, uint definerlen); + void set_definer(const char *definer, uint definerlen); void reset_thd_mem_root(THD *thd); @@ -292,7 +292,7 @@ public: void optimize(); void opt_mark(uint ip); - void recursion_level_error(); + void recursion_level_error(THD *thd); inline sp_instr * get_instr(uint i) diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 46be74ae972..8d3bb316630 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -3537,7 +3537,7 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables, of other queries). For simple queries first_not_own_table is 0. */ for (i= 0, table= tables; - table && table != first_not_own_table && i < number; + table != first_not_own_table && i < number; table= table->next_global, i++) { /* Remove SHOW_VIEW_ACL, because it will be checked during making view */ diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 39e15675e47..598e6d46a60 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -5135,7 +5135,6 @@ bool remove_table_from_cache(THD *thd, const char *db, const char *table_name, bool result=0, signalled= 0; DBUG_ENTER("remove_table_from_cache"); - key_length=(uint) (strmov(strmov(key,db)+1,table_name)-key)+1; for (;;) { diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index da72d283259..545cf41eeeb 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -227,6 +227,7 @@ bool mysql_ha_open(THD *thd, TABLE_LIST *tables, bool reopen) /* add to hash */ if (my_hash_insert(&thd->handler_tables_hash, (byte*) hash_tables)) { + my_free((char*) hash_tables, MYF(0)); mysql_ha_close(thd, tables); goto err; } @@ -369,28 +370,6 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables, DBUG_PRINT("info-in-hash",("'%s'.'%s' as '%s' tab %p", hash_tables->db, hash_tables->table_name, hash_tables->alias, table)); - /* Table might have been flushed. */ - if (table && (table->s->version != refresh_version)) - { - /* - We must follow the thd->handler_tables chain, as we need the - address of the 'next' pointer referencing this table - for close_thread_table(). - */ - for (table_ptr= &(thd->handler_tables); - *table_ptr && (*table_ptr != table); - table_ptr= &(*table_ptr)->next) - {} - (*table_ptr)->file->ha_index_or_rnd_end(); - VOID(pthread_mutex_lock(&LOCK_open)); - if (close_thread_table(thd, table_ptr)) - { - /* Tell threads waiting for refresh that something has happened */ - VOID(pthread_cond_broadcast(&COND_refresh)); - } - VOID(pthread_mutex_unlock(&LOCK_open)); - table= hash_tables->table= NULL; - } if (!table) { /* @@ -448,12 +427,6 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables, } } - if (insert_fields(thd, &thd->lex->select_lex.context, - tables->db, tables->alias, &it, 0)) - goto err0; - - protocol->send_fields(&list, Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF); - HANDLER_TABLES_HACK(thd); lock= mysql_lock_tables(thd, &tables->table, 1, 0, ¬_used); HANDLER_TABLES_HACK(thd); @@ -461,6 +434,12 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables, if (!lock) goto err0; // mysql_lock_tables() printed error message already + if (insert_fields(thd, &thd->lex->select_lex.context, + tables->db, tables->alias, &it, 0)) + goto err0; + + protocol->send_fields(&list, Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF); + /* In ::external_lock InnoDB resets the fields which tell it that the handle is used in the HANDLER interface. Tell it again that diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 5e9ca203632..a291a824e61 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2492,7 +2492,11 @@ select_create::prepare(List &values, SELECT_LEX_UNIT *u) } /* First field to copy */ - field=table->field+table->s->fields - values.elements; + field= table->field+table->s->fields - values.elements; + + /* Mark all fields that are given values */ + for (Field **f= field ; *f ; f++) + (*f)->query_id= thd->query_id; /* Don't set timestamp if used */ table->timestamp_field_type= TIMESTAMP_NO_AUTO_SET; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 1a9b4ef4db7..065406d1f0c 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -4843,7 +4843,6 @@ end_with_restore_list: if (thd->one_shot_set && lex->sql_command != SQLCOM_SET_OPTION) reset_one_shot_variables(thd); - /* The return value for ROW_COUNT() is "implementation dependent" if the statement is not DELETE, INSERT or UPDATE (or a CALL executing @@ -4851,13 +4850,10 @@ end_with_restore_list: */ if (lex->sql_command != SQLCOM_CALL && uc_update_queries[lex->sql_command]<2) thd->row_count_func= -1; - goto cleanup; + DBUG_RETURN(res || thd->net.report_error); error: - res= 1; - -cleanup: - DBUG_RETURN(res || thd->net.report_error); + DBUG_RETURN(1); } @@ -5080,7 +5076,7 @@ check_table_access(THD *thd, ulong want_access,TABLE_LIST *tables, the given table list refers to the list for prelocking (contains tables of other queries). For simple queries first_not_own_table is 0. */ - for (; tables && tables != first_not_own_table; tables= tables->next_global) + for (; tables != first_not_own_table; tables= tables->next_global) { if (tables->schema_table && (want_access & ~(SELECT_ACL | EXTRA_ACL | FILE_ACL))) @@ -7558,7 +7554,7 @@ LEX_USER *create_definer(THD *thd, LEX_STRING *user_name, LEX_STRING *host_name) /* Create and initialize. */ - if (! (definer= (LEX_USER*) thd->alloc(sizeof (LEX_USER)))) + if (! (definer= (LEX_USER*) thd->alloc(sizeof(LEX_USER)))) return 0; definer->user= *user_name; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 470015f8869..52070aa8983 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -10628,7 +10628,7 @@ end_update(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)), item->save_org_in_field(group->field); /* Store in the used key if the field was 0 */ if (item->maybe_null) - group->buff[-1]=item->null_value ? 1 : 0; + group->buff[-1]= (char) group->field->is_null(); } if (!table->file->index_read(table->record[1], join->tmp_table_param.group_buff,0, diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index 296b55679a3..d3fda132f50 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -51,6 +51,13 @@ static File_option triggers_file_parameters[]= { { 0, 0 }, 0, FILE_OPTIONS_STRING } }; +File_option sql_modes_parameters= +{ + {STRING_WITH_LEN("sql_modes") }, + offsetof(class Table_triggers_list, definition_modes_list), + FILE_OPTIONS_ULLLIST +}; + /* This must be kept up to date whenever a new option is added to the list above, as it specifies the number of required parameters of the trigger in @@ -428,7 +435,7 @@ bool Table_triggers_list::create_trigger(THD *thd, TABLE_LIST *tables, #ifndef NO_EMBEDDED_ACCESS_CHECKS if (!is_acl_user(lex->definer->host.str, - lex->definer->user.str)) + lex->definer->user.str)) { push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, @@ -771,7 +778,7 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, sizeof(LEX_STRING)))) DBUG_RETURN(1); // EOM - trg_definer->str= ""; + trg_definer->str= (char*) ""; trg_definer->length= 0; while (it++) @@ -1164,7 +1171,7 @@ bool Table_triggers_list::process_triggers(THD *thd, trg_event_type event, if (is_special_var_used(event, time_type)) { - TABLE_LIST table_list; + TABLE_LIST table_list, **save_query_tables_own_last; bzero((char *) &table_list, sizeof (table_list)); table_list.db= (char *) table->s->db; table_list.db_length= strlen(table_list.db); @@ -1172,8 +1179,12 @@ bool Table_triggers_list::process_triggers(THD *thd, trg_event_type event, table_list.table_name_length= strlen(table_list.table_name); table_list.alias= (char *) table->alias; table_list.table= table; + save_query_tables_own_last= thd->lex->query_tables_own_last; + thd->lex->query_tables_own_last= 0; - if (check_table_access(thd, SELECT_ACL | UPDATE_ACL, &table_list, 0)) + res= check_table_access(thd, SELECT_ACL | UPDATE_ACL, &table_list, 0); + thd->lex->query_tables_own_last= save_query_tables_own_last; + if (res) { sp_restore_security_context(thd, save_ctx); return TRUE; @@ -1215,32 +1226,29 @@ bool Table_triggers_list::process_triggers(THD *thd, trg_event_type event, TRUE Error */ +#define INVALID_SQL_MODES_LENGTH 13 + bool Handle_old_incorrect_sql_modes_hook::process_unknown_string(char *&unknown_key, gptr base, MEM_ROOT *mem_root, char *end) { -#define INVALID_SQL_MODES_LENGTH 13 DBUG_ENTER("handle_old_incorrect_sql_modes"); DBUG_PRINT("info", ("unknown key:%60s", unknown_key)); + if (unknown_key + INVALID_SQL_MODES_LENGTH + 1 < end && unknown_key[INVALID_SQL_MODES_LENGTH] == '=' && !memcmp(unknown_key, STRING_WITH_LEN("sql_modes"))) { + char *ptr= unknown_key + INVALID_SQL_MODES_LENGTH + 1; + DBUG_PRINT("info", ("sql_modes affected by BUG#14090 detected")); push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_NOTE, ER_OLD_FILE_FORMAT, ER(ER_OLD_FILE_FORMAT), (char *)path, "TRIGGER"); - File_option sql_modes_parameters= - { - {STRING_WITH_LEN("sql_modes") }, - offsetof(class Table_triggers_list, definition_modes_list), - FILE_OPTIONS_ULLLIST - }; - char *ptr= unknown_key + INVALID_SQL_MODES_LENGTH + 1; if (get_file_options_ulllist(ptr, end, unknown_key, base, &sql_modes_parameters, mem_root)) { From 53d9981399589cf7ef56cd79863c495764d08329 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 Jan 2006 00:06:04 +0100 Subject: [PATCH 41/48] File needs to be removed BitKeeper/deleted/.del-rpl_stm_loaddata_m.test~e9a2f21ee38926ca: Delete: mysql-test/t/rpl_stm_loaddata_m.test --- mysql-test/t/rpl_stm_loaddata_m.test | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 mysql-test/t/rpl_stm_loaddata_m.test diff --git a/mysql-test/t/rpl_stm_loaddata_m.test b/mysql-test/t/rpl_stm_loaddata_m.test deleted file mode 100644 index ac52a8dfb9e..00000000000 --- a/mysql-test/t/rpl_stm_loaddata_m.test +++ /dev/null @@ -1,10 +0,0 @@ -# See if the master logs LOAD DATA INFILE correctly when binlog_*_db rules -# exist. -# This is for BUG#1100 (LOAD DATA INFILE was half-logged). - -# Requires statement logging --- source include/have_binlog_format_statement.inc --- source extra/rpl_tests/rpl_loaddata_m.test - -# End of 4.1 tests -# Adding comment for force manual merge 5.0 -> wl1012: Delete me From 3cd9ef4eb0c32d1ea7befbb0a8a7b71015454513 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 Jan 2006 01:09:17 +0100 Subject: [PATCH 42/48] Test case clean-up do to causing other test failures mysql-test/t/rpl_drop_db.test: Fixed test bug mysql-test/r/rpl_drop_db.result: New result file mysql-test/t/rpl_multi_engine.test: Fixed test bug mysql-test/r/rpl_multi_engine.result: New result file --- mysql-test/r/rpl_drop_db.result | 2 +- mysql-test/r/rpl_multi_engine.result | 1 + mysql-test/t/rpl_drop_db.test | 5 +++-- mysql-test/t/rpl_multi_engine.test | 2 ++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/rpl_drop_db.result b/mysql-test/r/rpl_drop_db.result index ce9d39e87f6..3a35dc266b6 100644 --- a/mysql-test/r/rpl_drop_db.result +++ b/mysql-test/r/rpl_drop_db.result @@ -31,5 +31,5 @@ use test; select * from t1; n 1234 -drop table t1; +DROP DATABASE mysqltest1; stop slave; diff --git a/mysql-test/r/rpl_multi_engine.result b/mysql-test/r/rpl_multi_engine.result index 27482eae6d9..0492231be37 100644 --- a/mysql-test/r/rpl_multi_engine.result +++ b/mysql-test/r/rpl_multi_engine.result @@ -363,3 +363,4 @@ id hex(b1) vc bc d f total y t select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id; id hex(b1) vc bc d f total y t DROP TABLE t1; +DROP DATABASE mysqltest1; diff --git a/mysql-test/t/rpl_drop_db.test b/mysql-test/t/rpl_drop_db.test index 98afc6e3d02..548009b758e 100644 --- a/mysql-test/t/rpl_drop_db.test +++ b/mysql-test/t/rpl_drop_db.test @@ -46,12 +46,13 @@ show tables; use test; select * from t1; +system rm var/master-data/mysqltest1/f1.txt; connection master; -drop table t1; +DROP DATABASE mysqltest1; sync_slave_with_master; #cleanup connection slave; stop slave; -system rm -rf var/master-data/mysqltest1; +#system rm -rf var/master-data/mysqltest1; diff --git a/mysql-test/t/rpl_multi_engine.test b/mysql-test/t/rpl_multi_engine.test index b0879757468..356237d1584 100644 --- a/mysql-test/t/rpl_multi_engine.test +++ b/mysql-test/t/rpl_multi_engine.test @@ -94,6 +94,8 @@ show create table t1; # cleanup connection master; DROP TABLE t1; +# Need to drop mysqltest1 as well so other test will pass. +DROP DATABASE mysqltest1; sync_slave_with_master; # End of 5.1 test case From 360a5e3c2a4f3f37e52ea12810a50aefd0f05d04 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 Jan 2006 12:48:14 +0200 Subject: [PATCH 43/48] After merge fix and a safety fix for handler sql/sql_handler.cc: Move lock tables before conditions as lock tables may reopen tables sql/sql_trigger.cc: After merge fix --- sql/sql_handler.cc | 14 +++++++------- sql/sql_trigger.cc | 5 +++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index 545cf41eeeb..fae48c7d164 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -414,6 +414,13 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables, } tables->table=table; + HANDLER_TABLES_HACK(thd); + lock= mysql_lock_tables(thd, &tables->table, 1, 0, ¬_used); + HANDLER_TABLES_HACK(thd); + + if (!lock) + goto err0; // mysql_lock_tables() printed error message already + if (cond && ((!cond->fixed && cond->fix_fields(thd, &cond)) || cond->check_cols(1))) goto err0; @@ -427,13 +434,6 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables, } } - HANDLER_TABLES_HACK(thd); - lock= mysql_lock_tables(thd, &tables->table, 1, 0, ¬_used); - HANDLER_TABLES_HACK(thd); - - if (!lock) - goto err0; // mysql_lock_tables() printed error message already - if (insert_fields(thd, &thd->lex->select_lex.context, tables->db, tables->alias, &it, 0)) goto err0; diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index 5f2d269ed1e..bbc32950c2d 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -1189,9 +1189,10 @@ bool Table_triggers_list::process_triggers(THD *thd, trg_event_type event, save_query_tables_own_last= thd->lex->query_tables_own_last; thd->lex->query_tables_own_last= 0; - res= check_table_access(thd, SELECT_ACL | UPDATE_ACL, &table_list, 0); + err_status= check_table_access(thd, SELECT_ACL | UPDATE_ACL, + &table_list, 0); thd->lex->query_tables_own_last= save_query_tables_own_last; - if (res) + if (err_status) { sp_restore_security_context(thd, save_ctx); return TRUE; From f2f597f808d79d41760447c24aa7611e961b6180 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 Jan 2006 12:21:15 +0100 Subject: [PATCH 44/48] Compile fix: An "int" function had accidentally lost its "return 0;", re-add it. sql/handler.cc: An "int" function should explicitly return a value (Sun compilers insist on it): Re-add the original "return 0;" (Heikki 1.82.1.12) which got lost by accident. --- sql/handler.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/sql/handler.cc b/sql/handler.cc index d36db3281b3..cff7b21ddc2 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1178,6 +1178,7 @@ int ha_release_temporary_latches(THD *thd) #ifdef WITH_INNOBASE_STORAGE_ENGINE innobase_release_temporary_latches(thd); #endif + return 0; } From 48709c60531923cdab3ac40f16478d80ed1fdd47 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 Jan 2006 12:40:32 +0100 Subject: [PATCH 45/48] Disabled mysqlslap test case was errorneously enabled in merge; disable again. mysql-test/t/disabled.def: Disabled mysqlslap was errorneously enabled in merge; disable again. --- mysql-test/t/disabled.def | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 2342778671f..cbe9b7d851f 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -24,3 +24,4 @@ type_time : Bug#15805 #rpl000002 : Bug#15920 Temporary tables are not binlogged in SBR ps_7ndb : Bug#15923 Core dump in RBR mode when executing test suite rpl_ddl : Bug#15963 SBR does not show "Definer" correctly +mysqlslap : Bug#16167 From f3915a41647978a71aedb209a28f8b61f1dd4cd5 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 Jan 2006 14:30:25 +0100 Subject: [PATCH 46/48] Fix compile failure on QNX. --- sql/sp_head.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/sp_head.cc b/sql/sp_head.cc index d6db9a47748..12f9260e7b1 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -1755,7 +1755,7 @@ void sp_head::set_definer(const char *definer, uint definerlen) { - char *p= strrchr(definer, '@'); + const char *p= strrchr(definer, '@'); if (!p) { From 3c4c332fd0ce4f6ec06a1f3b0c98a25cac80a2f4 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 Jan 2006 17:02:57 +0100 Subject: [PATCH 47/48] BUG#16155: Workaround AIX 5.2 64-bit compiler bug. --- sql/sql_delete.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index ba1cce3abfe..764aa435cae 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -890,7 +890,9 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok) } // Remove the .frm extension - *(path + path_length - reg_ext_length)= '\0'; + // AIX 5.2 64-bit compiler bug (BUG#16155): this crashes, replacement works. + // *(path + path_length - reg_ext_length)= '\0'; + path[path_length - reg_ext_length] = 0; error= ha_create_table(thd, path, table_list->db, table_list->table_name, &create_info, 1); query_cache_invalidate3(thd, table_list, 0); From d8dccc31058e8448e18981308395aac890cc4224 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 Jan 2006 15:16:44 -0800 Subject: [PATCH 48/48] Fix result after merge mysql-test/r/binlog_stm_blackhole.result: Update results --- mysql-test/r/binlog_stm_blackhole.result | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/r/binlog_stm_blackhole.result b/mysql-test/r/binlog_stm_blackhole.result index 7b6e61984ec..994a40832c7 100644 --- a/mysql-test/r/binlog_stm_blackhole.result +++ b/mysql-test/r/binlog_stm_blackhole.result @@ -121,6 +121,7 @@ master-bin.000001 # Query 1 # use `test`; replace into t1 values(100) master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; create table t2 (a varchar(200)) engine=blackhole master-bin.000001 # Begin_load_query 1 # ;file_id=1;block_len=581 +master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Execute_load_query 1 # use `test`; load data infile '../../std_data/words.dat' into table t2 ;file_id=1 master-bin.000001 # Query 1 # use `test`; COMMIT master-bin.000001 # Query 1 # use `test`; alter table t1 add b int