From 8249fd6eef37dcbfc7f37359998c41e96aabee03 Mon Sep 17 00:00:00 2001 From: Mats Kindahl Date: Wed, 23 Sep 2009 11:43:43 +0200 Subject: [PATCH 001/461] BUG#29288: myisam transactions replicated to a transactional slave leaves slave unstable Problem: when replicating from non-transactional to transactional engine with autocommit off, no BEGIN/COMMIT is written to the binlog. When the slave replicates, it will start a transaction that never ends. Fix: Force autocommit=on on slave by always replicating autocommit=1 from the master. --- .../rpl_ndb/r/rpl_ndb_mixed_tables.result | 286 ++++++++++++++ .../rpl_ndb/t/rpl_ndb_mixed_tables-master.opt | 1 + .../rpl_ndb/t/rpl_ndb_mixed_tables-slave.opt | 1 + .../suite/rpl_ndb/t/rpl_ndb_mixed_tables.test | 349 ++++++++++++++++++ sql/log_event.cc | 28 +- 5 files changed, 659 insertions(+), 6 deletions(-) create mode 100644 mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result create mode 100644 mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-master.opt create mode 100644 mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-slave.opt create mode 100644 mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result new file mode 100644 index 00000000000..92fda774da5 --- /dev/null +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result @@ -0,0 +1,286 @@ +==== Initialization ==== +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +---- setup master ---- +CREATE TABLE myisam_innodb (a INT) ENGINE=MYISAM; +CREATE TABLE innodb_myisam (a INT) ENGINE=INNODB; +CREATE TABLE myisam_ndb (a INT) ENGINE=MYISAM; +CREATE TABLE ndb_myisam (a INT) ENGINE=NDB; +CREATE TABLE innodb_ndb (a INT) ENGINE=INNODB; +CREATE TABLE ndb_innodb (a INT) ENGINE=NDB; +SHOW CREATE TABLE myisam_innodb; +Table Create Table +myisam_innodb CREATE TABLE `myisam_innodb` ( + `a` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +SHOW CREATE TABLE innodb_myisam; +Table Create Table +innodb_myisam CREATE TABLE `innodb_myisam` ( + `a` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SHOW CREATE TABLE myisam_ndb; +Table Create Table +myisam_ndb CREATE TABLE `myisam_ndb` ( + `a` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +SHOW CREATE TABLE ndb_myisam; +Table Create Table +ndb_myisam CREATE TABLE `ndb_myisam` ( + `a` int(11) DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 +SHOW CREATE TABLE innodb_ndb; +Table Create Table +innodb_ndb CREATE TABLE `innodb_ndb` ( + `a` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SHOW CREATE TABLE ndb_innodb; +Table Create Table +ndb_innodb CREATE TABLE `ndb_innodb` ( + `a` int(11) DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 +---- setup slave with different engines ---- +DROP TABLE myisam_innodb, innodb_myisam; +DROP TABLE myisam_ndb, ndb_myisam; +DROP TABLE innodb_ndb, ndb_innodb; +CREATE TABLE myisam_innodb (a INT) ENGINE=INNODB; +CREATE TABLE innodb_myisam (a INT) ENGINE=MYISAM; +CREATE TABLE myisam_ndb (a INT) ENGINE=NDB; +CREATE TABLE ndb_myisam (a INT) ENGINE=MYISAM; +CREATE TABLE innodb_ndb (a INT) ENGINE=NDB; +CREATE TABLE ndb_innodb (a INT) ENGINE=INNODB; +SHOW CREATE TABLE myisam_innodb; +Table Create Table +myisam_innodb CREATE TABLE `myisam_innodb` ( + `a` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SHOW CREATE TABLE innodb_myisam; +Table Create Table +innodb_myisam CREATE TABLE `innodb_myisam` ( + `a` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +SHOW CREATE TABLE myisam_ndb; +Table Create Table +myisam_ndb CREATE TABLE `myisam_ndb` ( + `a` int(11) DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 +SHOW CREATE TABLE ndb_myisam; +Table Create Table +ndb_myisam CREATE TABLE `ndb_myisam` ( + `a` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +SHOW CREATE TABLE innodb_ndb; +Table Create Table +innodb_ndb CREATE TABLE `innodb_ndb` ( + `a` int(11) DEFAULT NULL +) ENGINE=ndbcluster DEFAULT CHARSET=latin1 +SHOW CREATE TABLE ndb_innodb; +Table Create Table +ndb_innodb CREATE TABLE `ndb_innodb` ( + `a` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +==== AUTOCOMMIT=0, transactions ==== +---- COMMIT ---- +SET AUTOCOMMIT = 0; +BEGIN; +INSERT INTO myisam_innodb VALUES (1); +INSERT INTO myisam_innodb VALUES (2); +COMMIT; +BEGIN; +INSERT INTO innodb_myisam VALUES (3); +INSERT INTO innodb_myisam VALUES (4); +COMMIT; +BEGIN; +INSERT INTO myisam_ndb VALUES (5); +INSERT INTO myisam_ndb VALUES (6); +COMMIT; +BEGIN; +INSERT INTO ndb_myisam VALUES (7); +INSERT INTO ndb_myisam VALUES (8); +COMMIT; +BEGIN; +INSERT INTO ndb_innodb VALUES (9); +INSERT INTO ndb_innodb VALUES (10); +COMMIT; +BEGIN; +INSERT INTO innodb_ndb VALUES (11); +INSERT INTO innodb_ndb VALUES (12); +COMMIT; +---- ROLLBACK ---- +BEGIN; +INSERT INTO myisam_innodb VALUES (13); +INSERT INTO myisam_innodb VALUES (14); +ROLLBACK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back +BEGIN; +INSERT INTO innodb_myisam VALUES (15); +INSERT INTO innodb_myisam VALUES (16); +ROLLBACK; +BEGIN; +INSERT INTO myisam_ndb VALUES (17); +INSERT INTO myisam_ndb VALUES (18); +ROLLBACK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back +BEGIN; +INSERT INTO ndb_myisam VALUES (19); +INSERT INTO ndb_myisam VALUES (20); +ROLLBACK; +BEGIN; +INSERT INTO ndb_innodb VALUES (21); +INSERT INTO ndb_innodb VALUES (22); +ROLLBACK; +BEGIN; +INSERT INTO innodb_ndb VALUES (23); +INSERT INTO innodb_ndb VALUES (24); +ROLLBACK; +==== AUTOCOMMIT=1, transactions ==== +---- COMMIT ---- +SET AUTOCOMMIT = 1; +BEGIN; +INSERT INTO myisam_innodb VALUES (25); +INSERT INTO myisam_innodb VALUES (26); +COMMIT; +BEGIN; +INSERT INTO innodb_myisam VALUES (27); +INSERT INTO innodb_myisam VALUES (28); +COMMIT; +BEGIN; +INSERT INTO myisam_ndb VALUES (29); +INSERT INTO myisam_ndb VALUES (30); +COMMIT; +BEGIN; +INSERT INTO ndb_myisam VALUES (31); +INSERT INTO ndb_myisam VALUES (32); +COMMIT; +BEGIN; +INSERT INTO ndb_innodb VALUES (33); +INSERT INTO ndb_innodb VALUES (34); +COMMIT; +BEGIN; +INSERT INTO innodb_ndb VALUES (35); +INSERT INTO innodb_ndb VALUES (36); +COMMIT; +---- ROLLBACK ---- +BEGIN; +INSERT INTO myisam_innodb VALUES (37); +INSERT INTO myisam_innodb VALUES (38); +ROLLBACK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back +BEGIN; +INSERT INTO innodb_myisam VALUES (39); +INSERT INTO innodb_myisam VALUES (40); +ROLLBACK; +BEGIN; +INSERT INTO myisam_ndb VALUES (41); +INSERT INTO myisam_ndb VALUES (42); +ROLLBACK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back +BEGIN; +INSERT INTO ndb_myisam VALUES (43); +INSERT INTO ndb_myisam VALUES (44); +ROLLBACK; +BEGIN; +INSERT INTO ndb_innodb VALUES (45); +INSERT INTO ndb_innodb VALUES (46); +ROLLBACK; +BEGIN; +INSERT INTO innodb_ndb VALUES (47); +INSERT INTO innodb_ndb VALUES (48); +ROLLBACK; +==== AUTOCOMMIT=1, single statements ==== +INSERT INTO myisam_innodb VALUES (49); +INSERT INTO myisam_innodb VALUES (50); +INSERT INTO innodb_myisam VALUES (51); +INSERT INTO innodb_myisam VALUES (52); +INSERT INTO myisam_ndb VALUES (53); +INSERT INTO myisam_ndb VALUES (54); +INSERT INTO ndb_myisam VALUES (55); +INSERT INTO ndb_myisam VALUES (56); +INSERT INTO ndb_innodb VALUES (57); +INSERT INTO ndb_innodb VALUES (58); +INSERT INTO innodb_ndb VALUES (59); +INSERT INTO innodb_ndb VALUES (60); +==== AUTOCOMMIT=0, single statements, myisam on master ==== +SET AUTOCOMMIT = 0; +INSERT INTO myisam_innodb VALUES (61); +INSERT INTO myisam_innodb VALUES (62); +INSERT INTO myisam_ndb VALUES (63); +INSERT INTO myisam_ndb VALUES (64); +==== Show results ==== +SELECT * FROM myisam_innodb ORDER BY a; +a +1 +2 +13 +14 +25 +26 +37 +38 +49 +50 +61 +62 +SELECT * FROM innodb_myisam ORDER BY a; +a +3 +4 +27 +28 +51 +52 +SELECT * FROM myisam_ndb ORDER BY a; +a +5 +6 +17 +18 +29 +30 +41 +42 +53 +54 +63 +64 +SELECT * FROM ndb_myisam ORDER BY a; +a +7 +8 +31 +32 +55 +56 +SELECT * FROM innodb_ndb ORDER BY a; +a +11 +12 +35 +36 +59 +60 +SELECT * FROM ndb_innodb ORDER BY a; +a +9 +10 +33 +34 +57 +58 +Comparing tables master:test.myisam_innodb and slave:test.myisam_innodb +Comparing tables master:test.innodb_myisam and slave:test.innodb_myisam +Comparing tables master:test.myisam_ndb and slave:test.myisam_ndb +Comparing tables master:test.ndb_myisam and slave:test.ndb_myisam +Comparing tables master:test.innodb_ndb and slave:test.innodb_ndb +Comparing tables master:test.ndb_innodb and slave:test.ndb_innodb +==== Clean up ==== +drop table myisam_innodb, innodb_myisam; +drop table myisam_ndb, ndb_myisam; +drop table innodb_ndb, ndb_innodb; diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-master.opt new file mode 100644 index 00000000000..b74354b22e1 --- /dev/null +++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-master.opt @@ -0,0 +1 @@ +--innodb --ndbcluster diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-slave.opt new file mode 100644 index 00000000000..bbb86b2991b --- /dev/null +++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-slave.opt @@ -0,0 +1 @@ +--innodb --ndbcluster --replicate-ignore-table=mysql.ndb_apply_status diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test new file mode 100644 index 00000000000..7d7cd5770cf --- /dev/null +++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test @@ -0,0 +1,349 @@ +# ==== Purpose ==== +# +# Test replication of transactions on tables which have different +# engines on master and slave. This tests all combinations of innodb, +# myisam, and ndb. +# +# ==== Method ==== +# +# Set up six tables, each being innodb, myisam, or innodb on master, +# and another of innodb, myisam, or innodb on slave. For each table, +# do the following: +# +# - committed and rollback'ed transactions, with autocommit on and +# off +# - non-transactions with autocommit on +# - non-transactions with autocommit off, where the master table is +# myisam. +# +# Note: we are running the slave with +# --replicate-ignore-table=mysql.ndb_apply_status . See BUG#34557 for +# explanation. +# +# ==== Related bugs ==== +# +# BUG#26395: if crash during autocommit update to transactional table on master, slave fails +# BUG#29288: myisam transactions replicated to a transactional slave leaves slave unstable +# BUG#34557: Row-based replication from ndb to non-ndb gives error on slave +# BUG#34600: Rolled-back punch transactions not replicated correctly +# +# ==== Todo ==== +# +# We should eventually try transactions touching two tables which are +# of different engines on the same server (so that we try, e.g. punch +# transactions; cf BUG#34600). However, that will make the test much +# bigger (9 master-slave engine combinations [myisam->myisam, +# myisam->ndb, etc]. To try all combinations of one or more such +# tables means 2^9-1=511 transactions. We need to multiplied by 5 +# since we want to test committed/rollback'ed transactions +# with/without AUTOCOMMIT, as well as non-transactions with +# autocommit). We'd have to write a script to produce the test case. + + +--echo ==== Initialization ==== + +--source include/have_ndb.inc +--source include/have_innodb.inc +--source include/ndb_master-slave.inc + +--echo ---- setup master ---- + +CREATE TABLE myisam_innodb (a INT) ENGINE=MYISAM; +CREATE TABLE innodb_myisam (a INT) ENGINE=INNODB; +CREATE TABLE myisam_ndb (a INT) ENGINE=MYISAM; +CREATE TABLE ndb_myisam (a INT) ENGINE=NDB; +CREATE TABLE innodb_ndb (a INT) ENGINE=INNODB; +CREATE TABLE ndb_innodb (a INT) ENGINE=NDB; + +SHOW CREATE TABLE myisam_innodb; +SHOW CREATE TABLE innodb_myisam; +SHOW CREATE TABLE myisam_ndb; +SHOW CREATE TABLE ndb_myisam; +SHOW CREATE TABLE innodb_ndb; +SHOW CREATE TABLE ndb_innodb; + +--echo ---- setup slave with different engines ---- + +sync_slave_with_master; + +DROP TABLE myisam_innodb, innodb_myisam; +DROP TABLE myisam_ndb, ndb_myisam; +DROP TABLE innodb_ndb, ndb_innodb; + +CREATE TABLE myisam_innodb (a INT) ENGINE=INNODB; +CREATE TABLE innodb_myisam (a INT) ENGINE=MYISAM; +CREATE TABLE myisam_ndb (a INT) ENGINE=NDB; +CREATE TABLE ndb_myisam (a INT) ENGINE=MYISAM; +CREATE TABLE innodb_ndb (a INT) ENGINE=NDB; +CREATE TABLE ndb_innodb (a INT) ENGINE=INNODB; + +SHOW CREATE TABLE myisam_innodb; +SHOW CREATE TABLE innodb_myisam; +SHOW CREATE TABLE myisam_ndb; +SHOW CREATE TABLE ndb_myisam; +SHOW CREATE TABLE innodb_ndb; +SHOW CREATE TABLE ndb_innodb; + +connection master; + + +--echo ==== AUTOCOMMIT=0, transactions ==== + +--echo ---- COMMIT ---- + +SET AUTOCOMMIT = 0; + +BEGIN; +INSERT INTO myisam_innodb VALUES (1); +INSERT INTO myisam_innodb VALUES (2); +COMMIT; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO innodb_myisam VALUES (3); +INSERT INTO innodb_myisam VALUES (4); +COMMIT; +sync_slave_with_master; +connection master; + +BEGIN; +INSERT INTO myisam_ndb VALUES (5); +INSERT INTO myisam_ndb VALUES (6); +COMMIT; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO ndb_myisam VALUES (7); +INSERT INTO ndb_myisam VALUES (8); +COMMIT; +sync_slave_with_master; +connection master; + +BEGIN; +INSERT INTO ndb_innodb VALUES (9); +INSERT INTO ndb_innodb VALUES (10); +COMMIT; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO innodb_ndb VALUES (11); +INSERT INTO innodb_ndb VALUES (12); +COMMIT; +sync_slave_with_master; +connection master; + +--echo ---- ROLLBACK ---- + +BEGIN; +INSERT INTO myisam_innodb VALUES (13); +INSERT INTO myisam_innodb VALUES (14); +ROLLBACK; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO innodb_myisam VALUES (15); +INSERT INTO innodb_myisam VALUES (16); +ROLLBACK; +sync_slave_with_master; +connection master; + +BEGIN; +INSERT INTO myisam_ndb VALUES (17); +INSERT INTO myisam_ndb VALUES (18); +ROLLBACK; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO ndb_myisam VALUES (19); +INSERT INTO ndb_myisam VALUES (20); +ROLLBACK; +sync_slave_with_master; +connection master; + +BEGIN; +INSERT INTO ndb_innodb VALUES (21); +INSERT INTO ndb_innodb VALUES (22); +ROLLBACK; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO innodb_ndb VALUES (23); +INSERT INTO innodb_ndb VALUES (24); +ROLLBACK; +sync_slave_with_master; +connection master; + + +--echo ==== AUTOCOMMIT=1, transactions ==== + +--echo ---- COMMIT ---- + +SET AUTOCOMMIT = 1; + +BEGIN; +INSERT INTO myisam_innodb VALUES (25); +INSERT INTO myisam_innodb VALUES (26); +COMMIT; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO innodb_myisam VALUES (27); +INSERT INTO innodb_myisam VALUES (28); +COMMIT; +sync_slave_with_master; +connection master; + +BEGIN; +INSERT INTO myisam_ndb VALUES (29); +INSERT INTO myisam_ndb VALUES (30); +COMMIT; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO ndb_myisam VALUES (31); +INSERT INTO ndb_myisam VALUES (32); +COMMIT; +sync_slave_with_master; +connection master; + +BEGIN; +INSERT INTO ndb_innodb VALUES (33); +INSERT INTO ndb_innodb VALUES (34); +COMMIT; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO innodb_ndb VALUES (35); +INSERT INTO innodb_ndb VALUES (36); +COMMIT; +sync_slave_with_master; +connection master; + +--echo ---- ROLLBACK ---- + +BEGIN; +INSERT INTO myisam_innodb VALUES (37); +INSERT INTO myisam_innodb VALUES (38); +ROLLBACK; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO innodb_myisam VALUES (39); +INSERT INTO innodb_myisam VALUES (40); +ROLLBACK; +sync_slave_with_master; +connection master; + +BEGIN; +INSERT INTO myisam_ndb VALUES (41); +INSERT INTO myisam_ndb VALUES (42); +ROLLBACK; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO ndb_myisam VALUES (43); +INSERT INTO ndb_myisam VALUES (44); +ROLLBACK; +sync_slave_with_master; +connection master; + +BEGIN; +INSERT INTO ndb_innodb VALUES (45); +INSERT INTO ndb_innodb VALUES (46); +ROLLBACK; +sync_slave_with_master; +connection master; +BEGIN; +INSERT INTO innodb_ndb VALUES (47); +INSERT INTO innodb_ndb VALUES (48); +ROLLBACK; +sync_slave_with_master; +connection master; + + +--echo ==== AUTOCOMMIT=1, single statements ==== + +INSERT INTO myisam_innodb VALUES (49); +INSERT INTO myisam_innodb VALUES (50); +sync_slave_with_master; +connection master; +INSERT INTO innodb_myisam VALUES (51); +INSERT INTO innodb_myisam VALUES (52); +sync_slave_with_master; +connection master; + +INSERT INTO myisam_ndb VALUES (53); +INSERT INTO myisam_ndb VALUES (54); +sync_slave_with_master; +connection master; +INSERT INTO ndb_myisam VALUES (55); +INSERT INTO ndb_myisam VALUES (56); +sync_slave_with_master; +connection master; + +INSERT INTO ndb_innodb VALUES (57); +INSERT INTO ndb_innodb VALUES (58); +sync_slave_with_master; +connection master; +INSERT INTO innodb_ndb VALUES (59); +INSERT INTO innodb_ndb VALUES (60); +sync_slave_with_master; +connection master; + + +--echo ==== AUTOCOMMIT=0, single statements, myisam on master ==== + +SET AUTOCOMMIT = 0; + +# This tests BUG#29288. +INSERT INTO myisam_innodb VALUES (61); +INSERT INTO myisam_innodb VALUES (62); +sync_slave_with_master; +connection master; + +INSERT INTO myisam_ndb VALUES (63); +INSERT INTO myisam_ndb VALUES (64); +sync_slave_with_master; +connection master; + + +--echo ==== Show results ==== + +SELECT * FROM myisam_innodb ORDER BY a; +SELECT * FROM innodb_myisam ORDER BY a; +SELECT * FROM myisam_ndb ORDER BY a; +SELECT * FROM ndb_myisam ORDER BY a; +SELECT * FROM innodb_ndb ORDER BY a; +SELECT * FROM ndb_innodb ORDER BY a; + +let $diff_table_1=master:test.myisam_innodb; +let $diff_table_2=slave:test.myisam_innodb; +source include/diff_tables.inc; + +let $diff_table_1=master:test.innodb_myisam; +let $diff_table_2=slave:test.innodb_myisam; +source include/diff_tables.inc; + +let $diff_table_1=master:test.myisam_ndb; +let $diff_table_2=slave:test.myisam_ndb; +source include/diff_tables.inc; + +let $diff_table_1=master:test.ndb_myisam; +let $diff_table_2=slave:test.ndb_myisam; +source include/diff_tables.inc; + +let $diff_table_1=master:test.innodb_ndb; +let $diff_table_2=slave:test.innodb_ndb; +source include/diff_tables.inc; + +let $diff_table_1=master:test.ndb_innodb; +let $diff_table_2=slave:test.ndb_innodb; +source include/diff_tables.inc; + + +--echo ==== Clean up ==== + +drop table myisam_innodb, innodb_myisam; +drop table myisam_ndb, ndb_myisam; +drop table innodb_ndb, ndb_innodb; +sync_slave_with_master; diff --git a/sql/log_event.cc b/sql/log_event.cc index 0cda724b698..fb6a5230fda 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -2389,13 +2389,29 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg, charset_database_number= thd_arg->variables.collation_database->number; /* - If we don't use flags2 for anything else than options contained in - thd_arg->options, it would be more efficient to flags2=thd_arg->options - (OPTIONS_WRITTEN_TO_BIN_LOG would be used only at reading time). - But it's likely that we don't want to use 32 bits for 3 bits; in the future - we will probably want to reclaim the 29 bits. So we need the &. + We only replicate over the bits of flags2 that we need: the rest + are masked out by "& OPTIONS_WRITTEN_TO_BINLOG". + + We also force AUTOCOMMIT=1. Rationale (cf. BUG#29288): After + fixing BUG#26395, we always write BEGIN and COMMIT around all + transactions (even single statements in autocommit mode). This is + so that replication from non-transactional to transactional table + and error recovery from XA to non-XA table should work as + expected. The BEGIN/COMMIT are added in log.cc. However, there is + one exception: MyISAM bypasses log.cc and writes directly to the + binlog. So if autocommit is off, master has MyISAM, and slave has + a transactional engine, then the slave will just see one long + never-ending transaction. The only way to bypass explicit + BEGIN/COMMIT in the binlog is by using a non-transactional table. + So setting AUTOCOMMIT=1 will make this work as expected. + + Note: explicitly replicate AUTOCOMMIT=1 from master. We do not + assume AUTOCOMMIT=1 on slave; the slave still reads the state of + the autocommit flag as written by the master to the binlog. This + behavior may change after WL#4162 has been implemented. */ - flags2= (uint32) (thd_arg->options & OPTIONS_WRITTEN_TO_BIN_LOG); + flags2= (uint32) (thd_arg->options & + (OPTIONS_WRITTEN_TO_BIN_LOG & ~OPTION_NOT_AUTOCOMMIT)); DBUG_ASSERT(thd_arg->variables.character_set_client->number < 256*256); DBUG_ASSERT(thd_arg->variables.collation_connection->number < 256*256); DBUG_ASSERT(thd_arg->variables.collation_server->number < 256*256); From d72a15fcaaf55a5c5e6356524186ebd2a8705b70 Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Fri, 11 Dec 2009 18:41:31 +0100 Subject: [PATCH 002/461] Bug#49477: Assertion `0' failed in ha_partition.cc:5530 with temporary table and partitions It was possible to create temporary partitioned tables via create table ... like ... (which is not allowed with create temporary table). This lead to a new HA_EXTRA flag (HA_EXTRA_MMAP) was sent to the partitioning handler, which was caught on an assert in debug builds. Solution was to check for partitioned tables when doing create table ... like ... and disallow it. mysql-test/r/partition_error.result: Bug#49477: Assertion `0' failed in ha_partition.cc:5530 with temporary table and partitions Added result mysql-test/t/partition_error.test: Bug#49477: Assertion `0' failed in ha_partition.cc:5530 with temporary table and partitions Added test sql/sql_table.cc: Bug#49477: Assertion `0' failed in ha_partition.cc:5530 with temporary table and partitions Added check to prevent creation of partitioned temporary tables. Only copy .par file for partitioned tables. --- mysql-test/r/partition_error.result | 8 ++++++++ mysql-test/t/partition_error.test | 9 +++++++++ sql/sql_table.cc | 20 +++++++++++++------- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result index 511806d64bd..5b7030d33fe 100644 --- a/mysql-test/r/partition_error.result +++ b/mysql-test/r/partition_error.result @@ -1,4 +1,12 @@ drop table if exists t1; +# +# Bug#49477: Assertion `0' failed in ha_partition.cc:5530 +# with temporary table and partitions +# +CREATE TABLE t1 (a INT) PARTITION BY HASH(a); +CREATE TEMPORARY TABLE tmp_t1 LIKE t1; +ERROR HY000: Cannot create temporary table with partitions +DROP TABLE t1; CREATE TABLE t1 (a INTEGER NOT NULL, PRIMARY KEY (a)); INSERT INTO t1 VALUES (1),(1); ERROR 23000: Duplicate entry '1' for key 'PRIMARY' diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test index 49632f95dfb..5f824fefc93 100644 --- a/mysql-test/t/partition_error.test +++ b/mysql-test/t/partition_error.test @@ -8,6 +8,15 @@ drop table if exists t1; --enable_warnings +--echo # +--echo # Bug#49477: Assertion `0' failed in ha_partition.cc:5530 +--echo # with temporary table and partitions +--echo # +CREATE TABLE t1 (a INT) PARTITION BY HASH(a); +--error ER_PARTITION_NO_TEMPORARY +CREATE TEMPORARY TABLE tmp_t1 LIKE t1; +DROP TABLE t1; + # # Bug#38719: Partitioning returns a different error code for a # duplicate key error diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 869ae42c98c..6e0daefb7c1 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -5257,6 +5257,11 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table, */ if (create_info->options & HA_LEX_CREATE_TMP_TABLE) { + if (src_table->table->file->ht == partition_hton) + { + my_error(ER_PARTITION_NO_TEMPORARY, MYF(0)); + goto err; + } if (find_temporary_table(thd, db, table_name)) goto table_exists; dst_path_length= build_tmptable_filename(thd, dst_path, sizeof(dst_path)); @@ -5321,14 +5326,15 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table, /* For partitioned tables we need to copy the .par file as well since it is used in open_table_def to even be able to create a new handler. - There is no way to find out here if the original table is a - partitioned table so we copy the file and ignore any errors. */ - fn_format(tmp_path, dst_path, reg_ext, ".par", MYF(MY_REPLACE_EXT)); - strmov(dst_path, tmp_path); - fn_format(tmp_path, src_path, reg_ext, ".par", MYF(MY_REPLACE_EXT)); - strmov(src_path, tmp_path); - my_copy(src_path, dst_path, MYF(MY_DONT_OVERWRITE_FILE)); + if (src_table->table->file->ht == partition_hton) + { + fn_format(tmp_path, dst_path, reg_ext, ".par", MYF(MY_REPLACE_EXT)); + strmov(dst_path, tmp_path); + fn_format(tmp_path, src_path, reg_ext, ".par", MYF(MY_REPLACE_EXT)); + strmov(src_path, tmp_path); + my_copy(src_path, dst_path, MYF(MY_DONT_OVERWRITE_FILE)); + } #endif DBUG_EXECUTE_IF("sleep_create_like_before_ha_create", my_sleep(6000000);); From 5196beed02b8bbd2758cd8c8ac11b6b0b711d390 Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Wed, 17 Mar 2010 15:10:41 +0100 Subject: [PATCH 003/461] Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with concurrent I_S query There were two problem: 1) MYSQL_LOCK_IGNORE_FLUSH also ignored name locks 2) there was a race between abort_and_upgrade_locks and alter_close_tables (i.e. remove_table_from_cache and close_data_files_and_morph_locks) Which allowed the table to be opened with MYSQL_LOCK_IGNORE_FLUSH flag resulting in renaming a partition that was already in use, which could cause the table to be unusable. Solution was to not allow IGNORE_FLUSH to skip waiting for a named locked table. And to not release the LOCK_open mutex between the calls to remove_table_from_cache and close_data_files_and_morph_locks by merging the functions abort_and_upgrade_locks and alter_close_tables. mysql-test/suite/parts/r/partition_debug_sync_innodb.result: Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with concurrent I_S query Added test result mysql-test/suite/parts/t/partition_debug_sync_innodb-master.opt: Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with concurrent I_S query Added test option mysql-test/suite/parts/t/partition_debug_sync_innodb.test: Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with concurrent I_S query Added test file sql/authors.h: Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with concurrent I_S query Time to be acknowledged :) sql/ha_partition.cc: Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with concurrent I_S query Added DEBUG_SYNC for deterministic testing sql/mysql_priv.h: Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with concurrent I_S query Renamed function since merging alter_close_tables into abort_and_upgrade_lock. sql/sql_base.cc: Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with concurrent I_S query Changed MYSQL_LOCK_IGNORE_FLUSH to not ignore name locks (open_placeholder). Merged alter_close_tables into abort_and_upgrade_locks (and added _and_close_table to the name) to not release LOCK_open between remove_table_from_cache and close_data_files_and_morph_locks. Added DEBUG_SYNC for deterministic testing. sql/sql_partition.cc: Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with concurrent I_S query Removed alter_close_tables, (merged it into abort_and_upgrad_lock) so that LOCK_open never is released between remove_table_from_cache and close_data_files_and_morph_locks. sql/sql_show.cc: Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with concurrent I_S query Added DEBUG_SYNC for deterministic testing --- .../r/partition_debug_sync_innodb.result | 61 +++++++++++++++++++ .../t/partition_debug_sync_innodb-master.opt | 1 + .../parts/t/partition_debug_sync_innodb.test | 44 +++++++++++++ sql/authors.h | 1 + sql/ha_partition.cc | 4 ++ sql/mysql_priv.h | 2 +- sql/sql_base.cc | 34 +++++++---- sql/sql_partition.cc | 38 +----------- sql/sql_show.cc | 2 + 9 files changed, 140 insertions(+), 47 deletions(-) create mode 100644 mysql-test/suite/parts/r/partition_debug_sync_innodb.result create mode 100644 mysql-test/suite/parts/t/partition_debug_sync_innodb-master.opt create mode 100644 mysql-test/suite/parts/t/partition_debug_sync_innodb.test diff --git a/mysql-test/suite/parts/r/partition_debug_sync_innodb.result b/mysql-test/suite/parts/r/partition_debug_sync_innodb.result new file mode 100644 index 00000000000..41c3d1af174 --- /dev/null +++ b/mysql-test/suite/parts/r/partition_debug_sync_innodb.result @@ -0,0 +1,61 @@ +# +# Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with +# concurrent I_S query +create table t1 (a int) +engine = innodb +partition by range (a) +(partition p0 values less than MAXVALUE); +insert into t1 values (1), (11), (21), (33); +SELECT * FROM t1; +a +1 +11 +21 +33 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +/*!50100 PARTITION BY RANGE (a) +(PARTITION p0 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */ +t1#P#p0.ibd +t1.frm +t1.par +SET DEBUG_SYNC='before_open_in_get_all_tables SIGNAL parked WAIT_FOR open'; +SET DEBUG_SYNC='partition_open_error SIGNAL alter WAIT_FOR finish'; +SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test'; +SET DEBUG_SYNC = 'now WAIT_FOR parked'; +# When waiting for the name lock in get_all_tables in sql_show.cc +# this will not be concurrent any more, thus the TIMEOUT +SET DEBUG_SYNC = 'before_rename_partitions SIGNAL open WAIT_FOR alter TIMEOUT 1'; +# Needs to be executed twice, since first is this 'SET DEBUG_SYNC ...' +SET DEBUG_SYNC = 'before_close_thread_tables SIGNAL finish EXECUTE 2'; +ALTER TABLE t1 REORGANIZE PARTITION p0 INTO +(PARTITION p0 VALUES LESS THAN (10), +PARTITION p10 VALUES LESS THAN MAXVALUE); +Warnings: +Warning 1639 debug sync point wait timed out +TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME +NULL test t1 p0 NULL 1 NULL RANGE NULL a NULL 10 1 16384 16384 NULL 0 0 NULL NULL NULL NULL default NULL +NULL test t1 p10 NULL 2 NULL RANGE NULL a NULL MAXVALUE 3 5461 16384 NULL 0 0 NULL NULL NULL NULL default NULL +t1#P#p0.ibd +t1#P#p10.ibd +t1.frm +t1.par +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +/*!50100 PARTITION BY RANGE (a) +(PARTITION p0 VALUES LESS THAN (10) ENGINE = InnoDB, + PARTITION p10 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */ +SELECT * FROM t1; +a +1 +11 +21 +33 +drop table t1; +SET DEBUG_SYNC = 'RESET'; diff --git a/mysql-test/suite/parts/t/partition_debug_sync_innodb-master.opt b/mysql-test/suite/parts/t/partition_debug_sync_innodb-master.opt new file mode 100644 index 00000000000..9854fda301d --- /dev/null +++ b/mysql-test/suite/parts/t/partition_debug_sync_innodb-master.opt @@ -0,0 +1 @@ +--innodb_file_per_table=1 diff --git a/mysql-test/suite/parts/t/partition_debug_sync_innodb.test b/mysql-test/suite/parts/t/partition_debug_sync_innodb.test new file mode 100644 index 00000000000..79ef3d537bf --- /dev/null +++ b/mysql-test/suite/parts/t/partition_debug_sync_innodb.test @@ -0,0 +1,44 @@ +--source include/have_innodb.inc +--source include/have_partition.inc +--source include/have_debug_sync.inc + +let $MYSQLD_DATADIR=`SELECT @@datadir`; + +--echo # +--echo # Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with +--echo # concurrent I_S query +create table t1 (a int) +engine = innodb +partition by range (a) +(partition p0 values less than MAXVALUE); +insert into t1 values (1), (11), (21), (33); +SELECT * FROM t1; +SHOW CREATE TABLE t1; +--list_files $MYSQLD_DATADIR/test + +SET DEBUG_SYNC='before_open_in_get_all_tables SIGNAL parked WAIT_FOR open'; +SET DEBUG_SYNC='partition_open_error SIGNAL alter WAIT_FOR finish'; +send +SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test'; + +connect (con1, localhost, root,,); +SET DEBUG_SYNC = 'now WAIT_FOR parked'; +--echo # When waiting for the name lock in get_all_tables in sql_show.cc +--echo # this will not be concurrent any more, thus the TIMEOUT +SET DEBUG_SYNC = 'before_rename_partitions SIGNAL open WAIT_FOR alter TIMEOUT 1'; +--echo # Needs to be executed twice, since first is this 'SET DEBUG_SYNC ...' +SET DEBUG_SYNC = 'before_close_thread_tables SIGNAL finish EXECUTE 2'; +--error 0,ER_TABLE_EXISTS_ERROR +ALTER TABLE t1 REORGANIZE PARTITION p0 INTO +(PARTITION p0 VALUES LESS THAN (10), + PARTITION p10 VALUES LESS THAN MAXVALUE); + +disconnect con1; +connection default; +--reap +--list_files $MYSQLD_DATADIR/test +SHOW CREATE TABLE t1; +SELECT * FROM t1; +drop table t1; +--list_files $MYSQLD_DATADIR/test +SET DEBUG_SYNC = 'RESET'; diff --git a/sql/authors.h b/sql/authors.h index dfe3b143e2f..925c942fa24 100644 --- a/sql/authors.h +++ b/sql/authors.h @@ -76,6 +76,7 @@ struct show_table_authors_st show_table_authors[]= { { "Eric Herman", "Amsterdam, Netherlands", "Bug fixing - federated" }, { "Andrey Hristov", "Walldorf, Germany", "Event scheduler (5.1)" }, { "Alexander (Alexi) Ivanov", "St. Petersburg, Russia", "Replication" }, + { "Mattias Jonsson", "Uppsala, Sweden", "Partitioning" }, { "Alexander (Salle) Keremidarski", "Sofia, Bulgaria", "Bug fixing" }, { "Mats Kindahl", "Storvreta, Sweden", "Replication" }, diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 4523d620821..fc6c88e8732 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -58,6 +58,8 @@ #include +#include "debug_sync.h" + static const char *ha_par_ext= ".par"; #ifdef NOT_USED static int free_share(PARTITION_SHARE * share); @@ -690,6 +692,7 @@ int ha_partition::rename_partitions(const char *path) DBUG_ASSERT(!strcmp(path, get_canonical_filename(m_file[0], path, norm_name_buff))); + DEBUG_SYNC(ha_thd(), "before_rename_partitions"); if (temp_partitions) { /* @@ -2607,6 +2610,7 @@ int ha_partition::open(const char *name, int mode, uint test_if_locked) DBUG_RETURN(0); err_handler: + DEBUG_SYNC(ha_thd(), "partition_open_error"); while (file-- != m_file) (*file)->close(); bitmap_free(&m_bulk_insert_started); diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 90b02f5337a..604a3589089 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1750,7 +1750,7 @@ extern pthread_mutex_t LOCK_gdl; #define WFRM_PACK_FRM 4 #define WFRM_KEEP_SHARE 8 bool mysql_write_frm(ALTER_PARTITION_PARAM_TYPE *lpt, uint flags); -int abort_and_upgrade_lock(ALTER_PARTITION_PARAM_TYPE *lpt); +int abort_and_upgrade_lock_and_close_table(ALTER_PARTITION_PARAM_TYPE *lpt); void close_open_tables_and_downgrade(ALTER_PARTITION_PARAM_TYPE *lpt); void mysql_wait_completed_table(ALTER_PARTITION_PARAM_TYPE *lpt, TABLE *my_table); diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 0e70eb93725..91794e061e4 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -1244,6 +1244,7 @@ void close_thread_tables(THD *thd) table->s->table_name.str, (long) table)); #endif + DEBUG_SYNC(thd, "before_close_thread_tables"); /* We are assuming here that thd->derived_tables contains ONLY derived tables for this substatement. i.e. instead of approach which uses @@ -2502,7 +2503,7 @@ bool check_if_table_exists(THD *thd, TABLE_LIST *table, bool *exists) put in the thread-open-list. flags Bitmap of flags to modify how open works: MYSQL_LOCK_IGNORE_FLUSH - Open table even if - someone has done a flush or namelock on it. + someone has done a flush on it. No version number checking is done. MYSQL_OPEN_TEMPORARY_ONLY - Open only temporary table not the base table or view. @@ -2792,8 +2793,10 @@ TABLE *open_table(THD *thd, TABLE_LIST *table_list, MEM_ROOT *mem_root, ("Found table '%s.%s' with different refresh version", table_list->db, table_list->table_name)); - if (flags & MYSQL_LOCK_IGNORE_FLUSH) + /* Ignore FLUSH, but not name locks! */ + if (flags & MYSQL_LOCK_IGNORE_FLUSH && !table->open_placeholder) { + DBUG_ASSERT(table->db_stat); /* Force close at once after usage */ thd->version= table->s->version; continue; @@ -4448,7 +4451,7 @@ thr_lock_type read_lock_type_for_table(THD *thd, TABLE *table) counter - number of opened tables will be return using this parameter flags - bitmap of flags to modify how the tables will be open: MYSQL_LOCK_IGNORE_FLUSH - open table even if someone has - done a flush or namelock on it. + done a flush on it. NOTE Unless we are already in prelocked mode, this function will also precache @@ -5047,7 +5050,7 @@ int open_and_lock_tables_derived(THD *thd, TABLE_LIST *tables, bool derived) tables - list of tables for open flags - bitmap of flags to modify how the tables will be open: MYSQL_LOCK_IGNORE_FLUSH - open table even if someone has - done a flush or namelock on it. + done a flush on it. RETURN FALSE - ok @@ -8708,7 +8711,7 @@ bool is_equal(const LEX_STRING *a, const LEX_STRING *b) /* SYNOPSIS - abort_and_upgrade_lock() + abort_and_upgrade_lock_and_close_table() lpt Parameter passing struct All parameters passed through the ALTER_PARTITION_PARAM_TYPE object RETURN VALUE @@ -8717,7 +8720,7 @@ bool is_equal(const LEX_STRING *a, const LEX_STRING *b) Remember old lock level (for possible downgrade later on), abort all waiting threads and ensure that all keeping locks currently are completed such that we own the lock exclusively and no other interaction - is ongoing. + is ongoing. Close the table and hold the name lock. thd Thread object table Table object @@ -8726,17 +8729,26 @@ bool is_equal(const LEX_STRING *a, const LEX_STRING *b) old_lock_level Old lock level */ -int abort_and_upgrade_lock(ALTER_PARTITION_PARAM_TYPE *lpt) +int abort_and_upgrade_lock_and_close_table(ALTER_PARTITION_PARAM_TYPE *lpt) { uint flags= RTFC_WAIT_OTHER_THREAD_FLAG | RTFC_CHECK_KILLED_FLAG; - DBUG_ENTER("abort_and_upgrade_locks"); + const char *db= lpt->db; + const char *table_name= lpt->table_name; + THD *thd= lpt->thd; + DBUG_ENTER("abort_and_upgrade_lock_and_close_table"); lpt->old_lock_type= lpt->table->reginfo.lock_type; + safe_mutex_assert_not_owner(&LOCK_open); VOID(pthread_mutex_lock(&LOCK_open)); /* If MERGE child, forward lock handling to parent. */ - mysql_lock_abort(lpt->thd, lpt->table->parent ? lpt->table->parent : - lpt->table, TRUE); - VOID(remove_table_from_cache(lpt->thd, lpt->db, lpt->table_name, flags)); + mysql_lock_abort(thd, lpt->table->parent ? lpt->table->parent : lpt->table, + TRUE); + if (remove_table_from_cache(thd, db, table_name, flags)) + { + VOID(pthread_mutex_unlock(&LOCK_open)); + DBUG_RETURN(1); + } + close_data_files_and_morph_locks(thd, db, table_name); VOID(pthread_mutex_unlock(&LOCK_open)); DBUG_RETURN(0); } diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 395156dcd63..679d23b49ad 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -5955,32 +5955,6 @@ static void alter_partition_lock_handling(ALTER_PARTITION_PARAM_TYPE *lpt) } } -/* - Unlock and close table before renaming and dropping partitions - SYNOPSIS - alter_close_tables() - lpt Struct carrying parameters - RETURN VALUES - 0 -*/ - -static int alter_close_tables(ALTER_PARTITION_PARAM_TYPE *lpt) -{ - THD *thd= lpt->thd; - const char *db= lpt->db; - const char *table_name= lpt->table_name; - DBUG_ENTER("alter_close_tables"); - /* - We need to also unlock tables and close all handlers. - We set lock to zero to ensure we don't do this twice - and we set db_stat to zero to ensure we don't close twice. - */ - pthread_mutex_lock(&LOCK_open); - close_data_files_and_morph_locks(thd, db, table_name); - pthread_mutex_unlock(&LOCK_open); - DBUG_RETURN(0); -} - /* Handle errors for ALTER TABLE for partitioning @@ -6278,9 +6252,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, write_log_drop_partition(lpt) || ERROR_INJECT_CRASH("crash_drop_partition_3") || (not_completed= FALSE) || - abort_and_upgrade_lock(lpt) || /* Always returns 0 */ - ERROR_INJECT_CRASH("crash_drop_partition_4") || - alter_close_tables(lpt) || + abort_and_upgrade_lock_and_close_table(lpt) || ERROR_INJECT_CRASH("crash_drop_partition_5") || ((!thd->lex->no_write_to_binlog) && (write_bin_log(thd, FALSE, @@ -6345,9 +6317,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, ERROR_INJECT_CRASH("crash_add_partition_2") || mysql_change_partitions(lpt) || ERROR_INJECT_CRASH("crash_add_partition_3") || - abort_and_upgrade_lock(lpt) || /* Always returns 0 */ - ERROR_INJECT_CRASH("crash_add_partition_4") || - alter_close_tables(lpt) || + abort_and_upgrade_lock_and_close_table(lpt) || ERROR_INJECT_CRASH("crash_add_partition_5") || ((!thd->lex->no_write_to_binlog) && (write_bin_log(thd, FALSE, @@ -6435,9 +6405,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, write_log_final_change_partition(lpt) || ERROR_INJECT_CRASH("crash_change_partition_4") || (not_completed= FALSE) || - abort_and_upgrade_lock(lpt) || /* Always returns 0 */ - ERROR_INJECT_CRASH("crash_change_partition_5") || - alter_close_tables(lpt) || + abort_and_upgrade_lock_and_close_table(lpt) || ERROR_INJECT_CRASH("crash_change_partition_6") || ((!thd->lex->no_write_to_binlog) && (write_bin_log(thd, FALSE, diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 989606300d8..9062f005738 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -30,6 +30,7 @@ #include "event_data_objects.h" #endif #include +#include "debug_sync.h" #define STR_OR_NIL(S) ((S) ? (S) : "") @@ -3447,6 +3448,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) lex->sql_command= SQLCOM_SHOW_FIELDS; show_table_list->i_s_requested_object= schema_table->i_s_requested_object; + DEBUG_SYNC(thd, "before_open_in_get_all_tables"); res= open_normal_and_derived_tables(thd, show_table_list, MYSQL_LOCK_IGNORE_FLUSH); lex->sql_command= save_sql_command; From ca086708bcae0a364a1babea45b74729d287449e Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Thu, 18 Mar 2010 14:04:19 +0100 Subject: [PATCH 004/461] Additional fix for DEBUG_SYNC which failed for some rpl-tests, due to DBUG_ASSERT. (added in bug#50561) sql/sql_base.cc: DEBUG_SYNC asserts that thd->debug_sync_control is set. --- sql/sql_base.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 91794e061e4..61a8d5af815 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -1244,7 +1244,12 @@ void close_thread_tables(THD *thd) table->s->table_name.str, (long) table)); #endif - DEBUG_SYNC(thd, "before_close_thread_tables"); +#if defined(ENABLED_DEBUG_SYNC) + /* debug_sync may not be initialized for some slave threads */ + if (thd->debug_sync_control) + DEBUG_SYNC(thd, "before_close_thread_tables"); +#endif + /* We are assuming here that thd->derived_tables contains ONLY derived tables for this substatement. i.e. instead of approach which uses From 287fa3caf532509d01d92e8d32f2149603914137 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Wed, 7 Apr 2010 18:17:56 +0300 Subject: [PATCH 005/461] Bug #52512: Assertion `! is_set()' in Diagnostics_area::set_ok_status on LOAD DATA Two problems : 1. LOAD DATA was not checking for SQL errors and was sending an OK packet even when there were errors reported already. Fixed to check for SQL errors in addition to the error conditions already detected. 2. There was an over-ambitious assert() on the server to check if the protocol is always followed by the client. This can cause crashes on debug servers by clients not completing the protocol exchange for some reason (e.g. --send command in mysqltest). Fixed by keeping the assert only on client side, since the server always completes the protocol exchange. --- mysql-test/r/loaddata.result | 7 +++++++ mysql-test/t/loaddata.test | 20 ++++++++++++++++++++ sql/net_serv.cc | 8 +++++++- sql/sql_load.cc | 4 ++++ 4 files changed, 38 insertions(+), 1 deletion(-) mode change 100755 => 100644 mysql-test/r/loaddata.result diff --git a/mysql-test/r/loaddata.result b/mysql-test/r/loaddata.result old mode 100755 new mode 100644 index ef206565db5..2f645187530 --- a/mysql-test/r/loaddata.result +++ b/mysql-test/r/loaddata.result @@ -502,4 +502,11 @@ SELECT * FROM t1; col0 test DROP TABLE t1; +# +# Bug #52512 : Assertion `! is_set()' in +# Diagnostics_area::set_ok_status on LOAD DATA +# +CREATE TABLE t1 (id INT NOT NULL); +LOAD DATA LOCAL INFILE 'tb.txt' INTO TABLE t1; +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/t/loaddata.test b/mysql-test/t/loaddata.test index e5f0a1d7eba..1047cd0101a 100644 --- a/mysql-test/t/loaddata.test +++ b/mysql-test/t/loaddata.test @@ -554,4 +554,24 @@ let $MYSQLD_DATADIR= `select @@datadir`; remove_file $MYSQLD_DATADIR/test/t1.txt; +--echo # +--echo # Bug #52512 : Assertion `! is_set()' in +--echo # Diagnostics_area::set_ok_status on LOAD DATA +--echo # + +connect (con1,localhost,root,,test); + +CREATE TABLE t1 (id INT NOT NULL); +--send LOAD DATA LOCAL INFILE 'tb.txt' INTO TABLE t1 +# please keep this is a spearate test file : it's important to have no +# commands after this one + +connection default; +dirty_close con1; + +connect (con1,localhost,root,,test); +DROP TABLE t1; +connection default; +disconnect con1; + --echo End of 5.1 tests diff --git a/sql/net_serv.cc b/sql/net_serv.cc index 73892f31ccf..1badee68be4 100644 --- a/sql/net_serv.cc +++ b/sql/net_serv.cc @@ -903,7 +903,13 @@ my_real_read(NET *net, size_t *complen) ("Packets out of order (Found: %d, expected %u)", (int) net->buff[net->where_b + 3], net->pkt_nr)); -#ifdef EXTRA_DEBUG + /* + We don't make noise server side, since the client is expected + to break the protocol for e.g. --send LOAD DATA .. LOCAL where + the server expects the client to send a file, but the client + may reply with a new command instead. + */ +#if defined (EXTRA_DEBUG) && !defined (MYSQL_SERVER) fflush(stdout); fprintf(stderr,"Error: Packets out of order (Found: %d, expected %d)\n", (int) net->buff[net->where_b + 3], diff --git a/sql/sql_load.cc b/sql/sql_load.cc index 3fb1b07cf6c..114651b9efb 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -940,6 +940,10 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, DBUG_RETURN(1); } } + + if (thd->is_error()) + read_info.error= 1; + if (read_info.error) break; if (skip_lines) From 93013ae6307fad0525c5317b798e3f394de95cbd Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Thu, 15 Apr 2010 17:04:24 +0300 Subject: [PATCH 006/461] Bug #52711: Segfault when doing EXPLAIN SELECT with union...order by (select... where...) The problem is mysql is trying to materialize and cache the scalar sub-queries at JOIN::optimize even for EXPLAIN where the number of columns is totally different from what's expected. Fixed by not executing the scalar subqueries for EXPLAIN. --- mysql-test/r/subselect.result | 17 +++++++++++++++++ mysql-test/t/subselect.test | 25 +++++++++++++++++++++++++ sql/sql_select.cc | 3 ++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result index d767e741c4d..47a89897daf 100644 --- a/mysql-test/r/subselect.result +++ b/mysql-test/r/subselect.result @@ -4717,3 +4717,20 @@ t1_id total_amount DROP TABLE t3; DROP TABLE t2; DROP TABLE t1; +# +# Bug #52711: Segfault when doing EXPLAIN SELECT with +# union...order by (select... where...) +# +CREATE TABLE t1 (a VARCHAR(10), FULLTEXT KEY a (a)); +INSERT INTO t1 VALUES (1),(2); +CREATE TABLE t2 (b INT); +INSERT INTO t2 VALUES (1),(2); +# Should not crash +EXPLAIN +SELECT * FROM t2 UNION SELECT * FROM t2 +ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE)); +# Should not crash +SELECT * FROM t2 UNION SELECT * FROM t2 +ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE)); +DROP TABLE t1,t2; +End of 5.1 tests diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test index c58faf60010..1f471b46c4e 100644 --- a/mysql-test/t/subselect.test +++ b/mysql-test/t/subselect.test @@ -3701,3 +3701,28 @@ GROUP BY DROP TABLE t3; DROP TABLE t2; DROP TABLE t1; + + +--echo # +--echo # Bug #52711: Segfault when doing EXPLAIN SELECT with +--echo # union...order by (select... where...) +--echo # + +CREATE TABLE t1 (a VARCHAR(10), FULLTEXT KEY a (a)); +INSERT INTO t1 VALUES (1),(2); +CREATE TABLE t2 (b INT); +INSERT INTO t2 VALUES (1),(2); + +--echo # Should not crash +--disable_result_log +EXPLAIN +SELECT * FROM t2 UNION SELECT * FROM t2 + ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE)); + +--echo # Should not crash +SELECT * FROM t2 UNION SELECT * FROM t2 + ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE)); +DROP TABLE t1,t2; +--enable_result_log + +--echo End of 5.1 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index a426f4b68a1..6886db87ddf 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -7210,7 +7210,8 @@ remove_const(JOIN *join,ORDER *first_order, COND *cond, *simple_order=0; // Must do a temp table to sort else if (!(order_tables & not_const_tables)) { - if (order->item[0]->with_subselect) + if (order->item[0]->with_subselect && + !(join->select_lex->options & SELECT_DESCRIBE)) order->item[0]->val_str(&order->item[0]->str_value); DBUG_PRINT("info",("removing: %s", order->item[0]->full_name())); continue; // skip const item From fbe81e3c97414d091b3861ae8d64f49e114869a8 Mon Sep 17 00:00:00 2001 From: Luis Soares Date: Wed, 21 Apr 2010 13:47:55 +0100 Subject: [PATCH 007/461] BUG#52868: Wrong handling of NULL value during update, replication out of sync In RBR, sometimes the table->s->last_null_bit_pos can be zero. This has impact at the slave when it compares records fetched from the storage engine against records in the binary log event. If last_null_bit_pos is zero the slave, while comparing in log_event.cc:record_compare function, would set all bits in the last null_byte to 1 (assumed all 8 were unused) . Thence it would loose the ability to distinguish records that were similar in contents except for the fact that some field was null in one record, but not in the other. Ultimately this would cause wrong matches, and in the specific case depicted in the bug report the same record would be updated twice, resulting in a lost update. Additionally, in the record_compare function the slave was setting the X bit unconditionally. There are cases that the X bit does not exist in the record header. This could also lead to wrong matches between records. We fix both by conditionally resetting the bits: (i) unused null_bits are set if last_null_bit_pos > 0; (ii) X bit is set if HA_OPTION_PACK_RECORD is in use. mysql-test/extra/rpl_tests/rpl_record_compare.test: Shared part of the test case for MyISAM and InnoDB. mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test: InnoDB test case. mysql-test/suite/rpl/t/rpl_row_rec_comp_myisam.test: MyISAM test case. Added also coverage for Field_bits case. sql/log_event.cc: Deployed conditional setting of unused bits at record_compare. sql/log_event_old.cc: Same change as in log_event.cc. --- .../extra/rpl_tests/rpl_record_compare.test | 68 +++++++++++++++++++ .../rpl/r/rpl_row_rec_comp_innodb.result | 46 +++++++++++++ .../rpl/r/rpl_row_rec_comp_myisam.result | 60 ++++++++++++++++ .../suite/rpl/t/rpl_row_rec_comp_innodb.test | 10 +++ .../suite/rpl/t/rpl_row_rec_comp_myisam.test | 31 +++++++++ sql/log_event.cc | 34 ++++++++-- sql/log_event_old.cc | 36 +++++++--- 7 files changed, 270 insertions(+), 15 deletions(-) create mode 100644 mysql-test/extra/rpl_tests/rpl_record_compare.test create mode 100644 mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result create mode 100644 mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result create mode 100644 mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test create mode 100644 mysql-test/suite/rpl/t/rpl_row_rec_comp_myisam.test diff --git a/mysql-test/extra/rpl_tests/rpl_record_compare.test b/mysql-test/extra/rpl_tests/rpl_record_compare.test new file mode 100644 index 00000000000..dc27dcb1f9d --- /dev/null +++ b/mysql-test/extra/rpl_tests/rpl_record_compare.test @@ -0,0 +1,68 @@ + +# +# BUG#52868: Wrong handling of NULL value during update, replication out of sync +# +-- echo ## case #1 - last_null_bit_pos==0 in record_compare without X bit + +-- source include/master-slave-reset.inc +-- connection master + +-- eval CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 varchar(1) DEFAULT '', c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0, c8 bigint(20) DEFAULT 0) ENGINE=$engine DEFAULT CHARSET=latin1 + +INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 ); +INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 ); +-- disable_warnings +UPDATE t1 SET c5 = 'a'; +-- enable_warnings +-- sync_slave_with_master + +-- let $diff_table_1= master:test.t1 +-- let $diff_table_2= slave:test.t1 +-- source include/diff_tables.inc + +--connection master +DROP TABLE t1; +-- sync_slave_with_master + +-- echo ## case #1.1 - last_null_bit_pos==0 in record_compare with X bit +-- echo ## (1 column less and no varchar) +-- source include/master-slave-reset.inc +-- connection master + +-- eval CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 bigint(20) DEFAULT 0, c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0) ENGINE=$engine DEFAULT CHARSET=latin1 + +INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 ); +INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 ); +-- disable_warnings +UPDATE t1 SET c5 = 'a'; +-- enable_warnings +-- sync_slave_with_master + +-- let $diff_table_1= master:test.t1 +-- let $diff_table_2= slave:test.t1 +-- source include/diff_tables.inc + +--connection master +DROP TABLE t1; +-- sync_slave_with_master + +-- echo ## case #2 - X bit is wrongly set. + +-- source include/master-slave-reset.inc +-- connection master + +-- eval CREATE TABLE t1 (c1 int, c2 varchar(1) default '') ENGINE=$engine DEFAULT CHARSET= latin1 +INSERT INTO t1(c1) VALUES (10); +INSERT INTO t1(c1) VALUES (NULL); +UPDATE t1 SET c1= 0; +-- sync_slave_with_master + +-- let $diff_table_1= master:test.t1 +-- let $diff_table_2= slave:test.t1 +-- source include/diff_tables.inc + +-- connection master +DROP TABLE t1; +-- sync_slave_with_master + + diff --git a/mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result b/mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result new file mode 100644 index 00000000000..c461cafbd7c --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result @@ -0,0 +1,46 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +## case #1 - last_null_bit_pos==0 in record_compare without X bit +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 varchar(1) DEFAULT '', c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0, c8 bigint(20) DEFAULT 0) ENGINE=InnoDB DEFAULT CHARSET=latin1; +INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 ); +INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 ); +UPDATE t1 SET c5 = 'a'; +Comparing tables master:test.t1 and slave:test.t1 +DROP TABLE t1; +## case #1.1 - last_null_bit_pos==0 in record_compare with X bit +## (1 column less and no varchar) +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 bigint(20) DEFAULT 0, c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0) ENGINE=InnoDB DEFAULT CHARSET=latin1; +INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 ); +INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 ); +UPDATE t1 SET c5 = 'a'; +Comparing tables master:test.t1 and slave:test.t1 +DROP TABLE t1; +## case #2 - X bit is wrongly set. +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +CREATE TABLE t1 (c1 int, c2 varchar(1) default '') ENGINE=InnoDB DEFAULT CHARSET= latin1; +INSERT INTO t1(c1) VALUES (10); +INSERT INTO t1(c1) VALUES (NULL); +UPDATE t1 SET c1= 0; +Comparing tables master:test.t1 and slave:test.t1 +DROP TABLE t1; diff --git a/mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result b/mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result new file mode 100644 index 00000000000..38fbe486d2e --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result @@ -0,0 +1,60 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +## case #1 - last_null_bit_pos==0 in record_compare without X bit +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 varchar(1) DEFAULT '', c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0, c8 bigint(20) DEFAULT 0) ENGINE=MyISAM DEFAULT CHARSET=latin1; +INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 ); +INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 ); +UPDATE t1 SET c5 = 'a'; +Comparing tables master:test.t1 and slave:test.t1 +DROP TABLE t1; +## case #1.1 - last_null_bit_pos==0 in record_compare with X bit +## (1 column less and no varchar) +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 bigint(20) DEFAULT 0, c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0) ENGINE=MyISAM DEFAULT CHARSET=latin1; +INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 ); +INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 ); +UPDATE t1 SET c5 = 'a'; +Comparing tables master:test.t1 and slave:test.t1 +DROP TABLE t1; +## case #2 - X bit is wrongly set. +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +CREATE TABLE t1 (c1 int, c2 varchar(1) default '') ENGINE=MyISAM DEFAULT CHARSET= latin1; +INSERT INTO t1(c1) VALUES (10); +INSERT INTO t1(c1) VALUES (NULL); +UPDATE t1 SET c1= 0; +Comparing tables master:test.t1 and slave:test.t1 +DROP TABLE t1; +## coverage purposes - Field_bits +## 1 X bit + 2 Null bits + 5 bits => last_null_bit_pos==0 +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bit(5)) ENGINE=MyISAM DEFAULT CHARSET=latin1; +INSERT INTO t1(c1,c2) VALUES (10, b'1'); +INSERT INTO t1(c1,c2) VALUES (NULL, b'1'); +UPDATE t1 SET c1= 0; +Comparing tables master:test.t1 and slave:test.t1 +DROP TABLE t1; diff --git a/mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test b/mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test new file mode 100644 index 00000000000..67e4c4fb14d --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test @@ -0,0 +1,10 @@ +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc +-- source include/have_innodb.inc + +# +# BUG#52868 Wrong handling of NULL value during update, replication out of sync +# + +-- let $engine= InnoDB +-- source extra/rpl_tests/rpl_record_compare.test diff --git a/mysql-test/suite/rpl/t/rpl_row_rec_comp_myisam.test b/mysql-test/suite/rpl/t/rpl_row_rec_comp_myisam.test new file mode 100644 index 00000000000..43fa99a51da --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_row_rec_comp_myisam.test @@ -0,0 +1,31 @@ +-- source include/have_binlog_format_row.inc +-- source include/master-slave.inc + +# +# BUG#52868 Wrong handling of NULL value during update, replication out of sync +# + +-- let $engine= MyISAM +-- source extra/rpl_tests/rpl_record_compare.test + +-- echo ## coverage purposes - Field_bits +-- echo ## 1 X bit + 2 Null bits + 5 bits => last_null_bit_pos==0 +## Added here because AFAIK it's only MyISAM and NDB that use Field_bits + +-- source include/master-slave-reset.inc +-- connection master + +-- eval CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bit(5)) ENGINE=$engine DEFAULT CHARSET=latin1 + +INSERT INTO t1(c1,c2) VALUES (10, b'1'); +INSERT INTO t1(c1,c2) VALUES (NULL, b'1'); +UPDATE t1 SET c1= 0; +-- sync_slave_with_master + +-- let $diff_table_1= master:test.t1 +-- let $diff_table_2= slave:test.t1 +-- source include/diff_tables.inc + +-- connection master +DROP TABLE t1; +-- sync_slave_with_master diff --git a/sql/log_event.cc b/sql/log_event.cc index a8e227fa99b..057cd0cb178 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -8758,11 +8758,28 @@ static bool record_compare(TABLE *table) { for (int i = 0 ; i < 2 ; ++i) { - saved_x[i]= table->record[i][0]; - saved_filler[i]= table->record[i][table->s->null_bytes - 1]; - table->record[i][0]|= 1U; - table->record[i][table->s->null_bytes - 1]|= - 256U - (1U << table->s->last_null_bit_pos); + /* + If we have an X bit then we need to take care of it. + */ + if (!(table->s->db_options_in_use & HA_OPTION_PACK_RECORD)) + { + saved_x[i]= table->record[i][0]; + table->record[i][0]|= 1U; + } + + /* + If (last_null_bit_pos == 0 && null_bytes > 1), then: + + X bit (if any) + N nullable fields + M Field_bit fields = 8 bits + + Ie, the entire byte is used. + */ + if (table->s->last_null_bit_pos > 0) + { + saved_filler[i]= table->record[i][table->s->null_bytes - 1]; + table->record[i][table->s->null_bytes - 1]|= + 256U - (1U << table->s->last_null_bit_pos); + } } } @@ -8802,8 +8819,11 @@ record_compare_exit: { for (int i = 0 ; i < 2 ; ++i) { - table->record[i][0]= saved_x[i]; - table->record[i][table->s->null_bytes - 1]= saved_filler[i]; + if (!(table->s->db_options_in_use & HA_OPTION_PACK_RECORD)) + table->record[i][0]= saved_x[i]; + + if (table->s->last_null_bit_pos) + table->record[i][table->s->null_bytes - 1]= saved_filler[i]; } } diff --git a/sql/log_event_old.cc b/sql/log_event_old.cc index df162761b35..60b0df5253a 100644 --- a/sql/log_event_old.cc +++ b/sql/log_event_old.cc @@ -342,12 +342,29 @@ static bool record_compare(TABLE *table) if (table->s->null_bytes > 0) { for (int i = 0 ; i < 2 ; ++i) - { - saved_x[i]= table->record[i][0]; - saved_filler[i]= table->record[i][table->s->null_bytes - 1]; - table->record[i][0]|= 1U; - table->record[i][table->s->null_bytes - 1]|= - 256U - (1U << table->s->last_null_bit_pos); + { + /* + If we have an X bit then we need to take care of it. + */ + if (!(table->s->db_options_in_use & HA_OPTION_PACK_RECORD)) + { + saved_x[i]= table->record[i][0]; + table->record[i][0]|= 1U; + } + + /* + If (last_null_bit_pos == 0 && null_bytes > 1), then: + + X bit (if any) + N nullable fields + M Field_bit fields = 8 bits + + Ie, the entire byte is used. + */ + if (table->s->last_null_bit_pos > 0) + { + saved_filler[i]= table->record[i][table->s->null_bytes - 1]; + table->record[i][table->s->null_bytes - 1]|= + 256U - (1U << table->s->last_null_bit_pos); + } } } @@ -387,8 +404,11 @@ record_compare_exit: { for (int i = 0 ; i < 2 ; ++i) { - table->record[i][0]= saved_x[i]; - table->record[i][table->s->null_bytes - 1]= saved_filler[i]; + if (!(table->s->db_options_in_use & HA_OPTION_PACK_RECORD)) + table->record[i][0]= saved_x[i]; + + if (table->s->last_null_bit_pos > 0) + table->record[i][table->s->null_bytes - 1]= saved_filler[i]; } } From 39be66c7cea79b54e3aab138c3f5af0c339012e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 4 May 2010 13:55:46 +0300 Subject: [PATCH 008/461] Remove UNIV_BTR_AVOID_COPY. It was broken because btr_attach_half_pages() would get the block, new_block in the wrong order. Fixing that would have complicated the function even further for this marginal case. --- storage/innodb_plugin/ChangeLog | 6 ------ storage/innodb_plugin/btr/btr0btr.c | 20 +------------------- storage/innodb_plugin/include/univ.i | 4 ---- 3 files changed, 1 insertion(+), 29 deletions(-) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index bc69aaca96a..b4d8afab50c 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -48,12 +48,6 @@ Only check the record size at index creation time when innodb_strict_mode is set or when ROW_FORMAT is DYNAMIC or COMPRESSED. -2010-04-20 The InnoDB Team - - * btr/btr0btr.c, include/univ.i: - Implement UNIV_BTR_AVOID_COPY, for avoiding writes when a B-tree - node is split at the first or last record. - 2010-04-15 The InnoDB Team * trx/trx0rec.c: diff --git a/storage/innodb_plugin/btr/btr0btr.c b/storage/innodb_plugin/btr/btr0btr.c index 96fcc2ed821..3c24eaac81e 100644 --- a/storage/innodb_plugin/btr/btr0btr.c +++ b/storage/innodb_plugin/btr/btr0btr.c @@ -2046,17 +2046,7 @@ insert_empty: } /* 5. Move then the records to the new page */ - if (direction == FSP_DOWN -#ifdef UNIV_BTR_AVOID_COPY - && page_rec_is_supremum(move_limit)) { - /* Instead of moving all records, make the new page - the empty page. */ - - left_block = block; - right_block = new_block; - } else if (direction == FSP_DOWN -#endif /* UNIV_BTR_AVOID_COPY */ - ) { + if (direction == FSP_DOWN) { /* fputs("Split left\n", stderr); */ if (0 @@ -2099,14 +2089,6 @@ insert_empty: right_block = block; lock_update_split_left(right_block, left_block); -#ifdef UNIV_BTR_AVOID_COPY - } else if (!split_rec) { - /* Instead of moving all records, make the new page - the empty page. */ - - left_block = new_block; - right_block = block; -#endif /* UNIV_BTR_AVOID_COPY */ } else { /* fputs("Split right\n", stderr); */ diff --git a/storage/innodb_plugin/include/univ.i b/storage/innodb_plugin/include/univ.i index 49717760456..2aa27245d5f 100644 --- a/storage/innodb_plugin/include/univ.i +++ b/storage/innodb_plugin/include/univ.i @@ -205,10 +205,6 @@ operations (very slow); also UNIV_DEBUG must be defined */ adaptive hash index */ #define UNIV_SRV_PRINT_LATCH_WAITS /* enable diagnostic output in sync0sync.c */ -#define UNIV_BTR_AVOID_COPY /* when splitting B-tree nodes, - do not move any records when - all the records would - be moved */ #define UNIV_BTR_PRINT /* enable functions for printing B-trees */ #define UNIV_ZIP_DEBUG /* extensive consistency checks From 19263724e481b44785d0d6938b964e1ddbf31215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 4 May 2010 15:47:44 +0300 Subject: [PATCH 009/461] Add Valgrind checks to catch uninitialized writes to data files. buf_flush_insert_into_flush_list(), buf_flush_insert_sorted_into_flush_list(), buf_flush_post_to_doublewrite_buf(): Check that the page is initialized. --- storage/innodb_plugin/buf/buf0flu.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/storage/innodb_plugin/buf/buf0flu.c b/storage/innodb_plugin/buf/buf0flu.c index f2b07492470..d8c0497fa1e 100644 --- a/storage/innodb_plugin/buf/buf0flu.c +++ b/storage/innodb_plugin/buf/buf0flu.c @@ -249,6 +249,17 @@ buf_flush_insert_into_flush_list( ut_d(block->page.in_flush_list = TRUE); UT_LIST_ADD_FIRST(list, buf_pool->flush_list, &block->page); +#ifdef UNIV_DEBUG_VALGRIND + { + ulint zip_size = buf_block_get_zip_size(block); + + if (UNIV_UNLIKELY(zip_size)) { + UNIV_MEM_ASSERT_RW(block->page.zip.data, zip_size); + } else { + UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE); + } + } +#endif /* UNIV_DEBUG_VALGRIND */ #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG ut_a(buf_flush_validate_low()); #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ @@ -276,6 +287,18 @@ buf_flush_insert_sorted_into_flush_list( ut_ad(!block->page.in_flush_list); ut_d(block->page.in_flush_list = TRUE); +#ifdef UNIV_DEBUG_VALGRIND + { + ulint zip_size = buf_block_get_zip_size(block); + + if (UNIV_UNLIKELY(zip_size)) { + UNIV_MEM_ASSERT_RW(block->page.zip.data, zip_size); + } else { + UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE); + } + } +#endif /* UNIV_DEBUG_VALGRIND */ + prev_b = NULL; /* For the most part when this function is called the flush_rbt @@ -809,6 +832,7 @@ try_again: zip_size = buf_page_get_zip_size(bpage); if (UNIV_UNLIKELY(zip_size)) { + UNIV_MEM_ASSERT_RW(bpage->zip.data, zip_size); /* Copy the compressed page and clear the rest. */ memcpy(trx_doublewrite->write_buf + UNIV_PAGE_SIZE * trx_doublewrite->first_free, @@ -818,6 +842,8 @@ try_again: + zip_size, 0, UNIV_PAGE_SIZE - zip_size); } else { ut_a(buf_page_get_state(bpage) == BUF_BLOCK_FILE_PAGE); + UNIV_MEM_ASSERT_RW(((buf_block_t*) bpage)->frame, + UNIV_PAGE_SIZE); memcpy(trx_doublewrite->write_buf + UNIV_PAGE_SIZE * trx_doublewrite->first_free, From 6e5619be2c8a5e9ead3f3849cac1ebabed9d57cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 4 May 2010 15:55:10 +0300 Subject: [PATCH 010/461] Add Valgrind checks to catch uninitialized writes to data files. buf_flush_insert_into_flush_list(), buf_flush_insert_sorted_into_flush_list(), buf_flush_post_to_doublewrite_buf(): Check that the page is initialized. --- storage/innobase/buf/buf0flu.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/storage/innobase/buf/buf0flu.c b/storage/innobase/buf/buf0flu.c index 423c08c0569..7533205d695 100644 --- a/storage/innobase/buf/buf0flu.c +++ b/storage/innobase/buf/buf0flu.c @@ -55,6 +55,7 @@ buf_flush_insert_into_flush_list( || (ut_dulint_cmp((UT_LIST_GET_FIRST(buf_pool->flush_list)) ->oldest_modification, block->oldest_modification) <= 0)); + UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE); UT_LIST_ADD_FIRST(flush_list, buf_pool->flush_list, block); @@ -75,6 +76,7 @@ buf_flush_insert_sorted_into_flush_list( buf_block_t* b; ut_ad(mutex_own(&(buf_pool->mutex))); + UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE); prev_b = NULL; b = UT_LIST_GET_FIRST(buf_pool->flush_list); @@ -423,6 +425,7 @@ try_again: goto try_again; } + UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE); ut_memcpy(trx_doublewrite->write_buf + UNIV_PAGE_SIZE * trx_doublewrite->first_free, block->frame, UNIV_PAGE_SIZE); From 54b01fbff1906543e7794d6a335e6665511f48c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 4 May 2010 16:09:17 +0300 Subject: [PATCH 011/461] fsp_init_file_page_low(): Zero out the page. (Bug #53306) --- storage/innodb_plugin/fsp/fsp0fsp.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/storage/innodb_plugin/fsp/fsp0fsp.c b/storage/innodb_plugin/fsp/fsp0fsp.c index c7f1a299d8a..2bae8481d20 100644 --- a/storage/innodb_plugin/fsp/fsp0fsp.c +++ b/storage/innodb_plugin/fsp/fsp0fsp.c @@ -869,12 +869,10 @@ fsp_init_file_page_low( return; } - UNIV_MEM_INVALID(page, UNIV_PAGE_SIZE); + memset(page, 0, UNIV_PAGE_SIZE); mach_write_to_4(page + FIL_PAGE_OFFSET, buf_block_get_page_no(block)); - memset(page + FIL_PAGE_LSN, 0, 8); mach_write_to_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, buf_block_get_space(block)); - memset(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM, 0, 8); } #ifndef UNIV_HOTBACKUP From 304daa74319017eb5e8653cc97c9b8829de8c7c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 4 May 2010 16:13:58 +0300 Subject: [PATCH 012/461] fsp_init_file_page_low(): Zero out the page. (Bug #53306) --- mysql-test/suite/innodb/t/disabled.def | 1 - storage/innobase/fsp/fsp0fsp.c | 7 +------ storage/innobase/include/univ.i | 5 ----- 3 files changed, 1 insertion(+), 12 deletions(-) diff --git a/mysql-test/suite/innodb/t/disabled.def b/mysql-test/suite/innodb/t/disabled.def index dff86f24787..888298bbb09 100644 --- a/mysql-test/suite/innodb/t/disabled.def +++ b/mysql-test/suite/innodb/t/disabled.def @@ -9,4 +9,3 @@ # Do not use any TAB characters for whitespace. # ############################################################################## -innodb : Bug#53306 2010-04-30 VasilDimov valgrind warnings diff --git a/storage/innobase/fsp/fsp0fsp.c b/storage/innobase/fsp/fsp0fsp.c index e1074933fe8..1ec1c262a52 100644 --- a/storage/innobase/fsp/fsp0fsp.c +++ b/storage/innobase/fsp/fsp0fsp.c @@ -802,12 +802,7 @@ fsp_init_file_page_low( buf_block_align(page)->check_index_page_at_flush = FALSE; -#ifdef UNIV_BASIC_LOG_DEBUG - memset(page, 0xff, UNIV_PAGE_SIZE); -#endif - mach_write_to_8(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM, - ut_dulint_zero); - mach_write_to_8(page + FIL_PAGE_LSN, ut_dulint_zero); + memset(page, 0, UNIV_PAGE_SIZE); } /*************************************************************** diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i index ee3a0b27b20..ecf754762ad 100644 --- a/storage/innobase/include/univ.i +++ b/storage/innobase/include/univ.i @@ -126,11 +126,6 @@ by one. */ /* the above option prevents forcing of log to disk at a buffer page write: it should be tested with this option off; also some ibuf tests are suppressed */ -/* -#define UNIV_BASIC_LOG_DEBUG -*/ - /* the above option enables basic recovery debugging: - new allocated file pages are reset */ #if (!defined(UNIV_DEBUG) && !defined(INSIDE_HA_INNOBASE_CC) && !defined(UNIV_MUST_NOT_INLINE)) /* Definition for inline version */ From 322dda239775212b6f572297792e49c0c0bca9e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 4 May 2010 16:15:17 +0300 Subject: [PATCH 013/461] Document Bug #53306 in the InnoDB Plugin ChangeLog. --- storage/innodb_plugin/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index b4d8afab50c..06577b4c1e7 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,8 @@ +2010-05-04 The InnoDB Team + + * fsp/fsp0fsp.c: + Fix Bug#53306 valgrind: warnings in innodb.innodb + 2010-05-03 The InnoDB Team * buf0buf.c: From efcc90b6eb3e20a0bfb787e94236416090e77d4d Mon Sep 17 00:00:00 2001 From: Andrei Elkin Date: Tue, 4 May 2010 22:31:49 +0300 Subject: [PATCH 014/461] Bug #50942 mix_innodb_myisam_side_effects.test is not deterministic The test was used to fail because of UPDATE t3,t4 SET t3.a=t4.a + bug27417(1); did not prescribe the order of two row operations implied by the update. Fixed with forcing the order with adding a where condition w/o affecting the former bug fixes logics. mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test: implemented the bug page suggestion to make a test deterministic. mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result: results are updated and (!) corrected. mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result: results are updated --- .../extra/binlog_tests/mix_innodb_myisam_side_effects.test | 2 +- mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result | 4 ++-- mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test b/mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test index 26a70c4319e..68aa949a7c7 100644 --- a/mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test +++ b/mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test @@ -214,7 +214,7 @@ CREATE TABLE t5 (a int, PRIMARY KEY (a)) ENGINE=InnoDB; # execute --error ER_DUP_ENTRY - UPDATE t3,t4 SET t3.a=t4.a + bug27417(1); + UPDATE t3,t4 SET t3.a = t4.a + bug27417(1) where t3.a = 1; # check select count(*) from t1 /* must be 1 */; diff --git a/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result index 9057395ab82..8b42cadf6cb 100644 --- a/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result +++ b/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result @@ -879,11 +879,11 @@ delete from t4; insert into t3 values (1,1),(2,2); insert into t4 values (1,1),(2,2); reset master; -UPDATE t3,t4 SET t3.a=t4.a + bug27417(1); +UPDATE t3,t4 SET t3.a = t4.a + bug27417(1) where t3.a = 1; ERROR 23000: Duplicate entry '2' for key 'PRIMARY' select count(*) from t1 /* must be 1 */; count(*) -2 +1 drop table t4; delete from t1; delete from t2; diff --git a/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result index 75094ca3b4c..b3f9baed2dd 100644 --- a/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result +++ b/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result @@ -802,7 +802,7 @@ delete from t4; insert into t3 values (1,1),(2,2); insert into t4 values (1,1),(2,2); reset master; -UPDATE t3,t4 SET t3.a=t4.a + bug27417(1); +UPDATE t3,t4 SET t3.a = t4.a + bug27417(1) where t3.a = 1; ERROR 23000: Duplicate entry '2' for key 'PRIMARY' select count(*) from t1 /* must be 1 */; count(*) From 6bc1a96b31cd9d931bb5a8515c82e75520db8388 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Tue, 4 May 2010 21:52:24 -0700 Subject: [PATCH 015/461] Port fix for 53165 to InnoDB 5.1 plugin. The change buffering options are different in 5.1 comparing to that of 5.5, so a hand port is necessary to avoid wrong default option to be set by a simple branch merge. --- storage/innodb_plugin/handler/ha_innodb.cc | 79 ++++++++++++++++------ 1 file changed, 58 insertions(+), 21 deletions(-) diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index 0fc6e786f4c..0a2340d0f67 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -10346,7 +10346,35 @@ innodb_old_blocks_pct_update( } /*************************************************************//** -Check if it is a valid value of innodb_change_buffering. This function is +Find the corresponding ibuf_use_t value that indexes into +innobase_change_buffering_values[] array for the input +change buffering option name. +@return corresponding IBUF_USE_* value for the input variable +name, or IBUF_USE_COUNT if not able to find a match */ +static +ibuf_use_t +innodb_find_change_buffering_value( +/*===============================*/ + const char* input_name) /*!< in: input change buffering + option name */ +{ + ulint use; + + for (use = 0; use < UT_ARR_SIZE(innobase_change_buffering_values); + use++) { + /* found a match */ + if (!innobase_strcasecmp( + input_name, innobase_change_buffering_values[use])) { + return((ibuf_use_t)use); + } + } + + /* Did not find any match */ + return(IBUF_USE_COUNT); +} + +/*************************************************************//** +Check if it is a valid value of innodb_change_buffering. This function is registered as a callback with MySQL. @return 0 for valid innodb_change_buffering */ static @@ -10370,19 +10398,22 @@ innodb_change_buffering_validate( change_buffering_input = value->val_str(value, buff, &len); if (change_buffering_input != NULL) { - ulint use; + ibuf_use_t use; - for (use = 0; use < UT_ARR_SIZE(innobase_change_buffering_values); - use++) { - if (!innobase_strcasecmp( - change_buffering_input, - innobase_change_buffering_values[use])) { - *(ibuf_use_t*) save = (ibuf_use_t) use; - return(0); - } + use = innodb_find_change_buffering_value( + change_buffering_input); + + if (use != IBUF_USE_COUNT) { + /* Find a matching change_buffering option value. */ + *static_cast(save) = + innobase_change_buffering_values[use]; + + return(0); } } + /* No corresponding change buffering option for user supplied + "change_buffering_input" */ return(1); } @@ -10393,21 +10424,27 @@ static void innodb_change_buffering_update( /*===========================*/ - THD* thd, /*!< in: thread handle */ - struct st_mysql_sys_var* var, /*!< in: pointer to - system variable */ - void* var_ptr, /*!< out: where the - formal string goes */ - const void* save) /*!< in: immediate result - from check function */ + THD* thd, /*!< in: thread handle */ + struct st_mysql_sys_var* var, /*!< in: pointer to + system variable */ + void* var_ptr,/*!< out: where the + formal string goes */ + const void* save) /*!< in: immediate result + from check function */ { + ibuf_use_t use; + ut_a(var_ptr != NULL); ut_a(save != NULL); - ut_a((*(ibuf_use_t*) save) < IBUF_USE_COUNT); - ibuf_use = *(const ibuf_use_t*) save; + use = innodb_find_change_buffering_value( + *static_cast(save)); - *(const char**) var_ptr = innobase_change_buffering_values[ibuf_use]; + ut_a(use < IBUF_USE_COUNT); + + ibuf_use = use; + *static_cast(var_ptr) = + *static_cast(save); } static int show_innodb_vars(THD *thd, SHOW_VAR *var, char *buff) @@ -10735,7 +10772,7 @@ static MYSQL_SYSVAR_STR(change_buffering, innobase_change_buffering, "Buffer changes to reduce random access: " "OFF, ON, none, inserts.", innodb_change_buffering_validate, - innodb_change_buffering_update, NULL); + innodb_change_buffering_update, "inserts"); static MYSQL_SYSVAR_ULONG(read_ahead_threshold, srv_read_ahead_threshold, PLUGIN_VAR_RQCMDARG, From 264942661b5181c670a62fc7be1e7f4e54df7a62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 May 2010 12:53:28 +0300 Subject: [PATCH 016/461] Add Valgrind diagnostics to track down Bug #38999. --- storage/innobase/row/row0sel.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/storage/innobase/row/row0sel.c b/storage/innobase/row/row0sel.c index 1d30249c53e..6912a489f75 100644 --- a/storage/innobase/row/row0sel.c +++ b/storage/innobase/row/row0sel.c @@ -2452,6 +2452,7 @@ row_sel_field_store_in_mysql_format( byte* pad_ptr; ut_ad(len != UNIV_SQL_NULL); + UNIV_MEM_ASSERT_RW(data, len); if (templ->type == DATA_INT) { /* Convert integer data from Innobase to a little-endian @@ -2687,6 +2688,9 @@ row_sel_store_mysql_rec( /* MySQL assumes that the field for an SQL NULL value is set to the default value. */ + UNIV_MEM_ASSERT_RW(prebuilt->default_rec + + templ->mysql_col_offset, + templ->mysql_col_len); mysql_rec[templ->mysql_null_byte_offset] |= (byte) templ->mysql_null_bit_mask; memcpy(mysql_rec + templ->mysql_col_offset, @@ -3007,6 +3011,11 @@ row_sel_pop_cached_row_for_mysql( for (i = 0; i < prebuilt->n_template; i++) { templ = prebuilt->mysql_template + i; +#if 0 /* Some of the cached_rec may legitimately be uninitialized. */ + UNIV_MEM_ASSERT_RW(cached_rec + + templ->mysql_col_offset, + templ->mysql_col_len); +#endif ut_memcpy(buf + templ->mysql_col_offset, cached_rec + templ->mysql_col_offset, templ->mysql_col_len); @@ -3021,6 +3030,11 @@ row_sel_pop_cached_row_for_mysql( } } else { +#if 0 /* Some of the cached_rec may legitimately be uninitialized. */ + UNIV_MEM_ASSERT_RW(prebuilt->fetch_cache + [prebuilt->fetch_cache_first], + prebuilt->mysql_prefix_len); +#endif ut_memcpy(buf, prebuilt->fetch_cache[prebuilt->fetch_cache_first], prebuilt->mysql_prefix_len); @@ -3070,6 +3084,8 @@ row_sel_push_cache_row_for_mysql( } ut_ad(prebuilt->fetch_cache_first == 0); + UNIV_MEM_INVALID(prebuilt->fetch_cache[prebuilt->n_fetch_cached], + prebuilt->mysql_row_len); if (UNIV_UNLIKELY(!row_sel_store_mysql_rec( prebuilt->fetch_cache[ From 9141b67822d589d5a6df6cb0f8459ea48ea4c4a5 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Wed, 5 May 2010 03:02:19 -0700 Subject: [PATCH 017/461] Update ChangeLog for bug fix of #53165 --- storage/innodb_plugin/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 06577b4c1e7..fd76d8d40ee 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-05-05 The InnoDB Team + + * handler/ha_innodb.cc: + Fix Bug#53165 Setting innodb_change_buffering=DEFAULT produces + incorrect result + 2010-05-04 The InnoDB Team * fsp/fsp0fsp.c: From d4b1117768084e76c3c0ab06e7da83d22f02cbde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 May 2010 13:05:07 +0300 Subject: [PATCH 018/461] Add Valgrind diagnostics to track down Bug #38999. --- storage/innodb_plugin/row/row0sel.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/storage/innodb_plugin/row/row0sel.c b/storage/innodb_plugin/row/row0sel.c index d0702a0cd2f..0735215a9a9 100644 --- a/storage/innodb_plugin/row/row0sel.c +++ b/storage/innodb_plugin/row/row0sel.c @@ -2498,6 +2498,7 @@ row_sel_field_store_in_mysql_format( byte* pad_ptr; ut_ad(len != UNIV_SQL_NULL); + UNIV_MEM_ASSERT_RW(data, len); switch (templ->type) { case DATA_INT: @@ -2746,6 +2747,9 @@ row_sel_store_mysql_rec( /* MySQL assumes that the field for an SQL NULL value is set to the default value. */ + UNIV_MEM_ASSERT_RW(prebuilt->default_rec + + templ->mysql_col_offset, + templ->mysql_col_len); mysql_rec[templ->mysql_null_byte_offset] |= (byte) templ->mysql_null_bit_mask; memcpy(mysql_rec + templ->mysql_col_offset, @@ -3070,6 +3074,11 @@ row_sel_pop_cached_row_for_mysql( for (i = 0; i < prebuilt->n_template; i++) { templ = prebuilt->mysql_template + i; +#if 0 /* Some of the cached_rec may legitimately be uninitialized. */ + UNIV_MEM_ASSERT_RW(cached_rec + + templ->mysql_col_offset, + templ->mysql_col_len); +#endif ut_memcpy(buf + templ->mysql_col_offset, cached_rec + templ->mysql_col_offset, templ->mysql_col_len); @@ -3084,6 +3093,11 @@ row_sel_pop_cached_row_for_mysql( } } else { +#if 0 /* Some of the cached_rec may legitimately be uninitialized. */ + UNIV_MEM_ASSERT_RW(prebuilt->fetch_cache + [prebuilt->fetch_cache_first], + prebuilt->mysql_prefix_len); +#endif ut_memcpy(buf, prebuilt->fetch_cache[prebuilt->fetch_cache_first], prebuilt->mysql_prefix_len); @@ -3134,6 +3148,8 @@ row_sel_push_cache_row_for_mysql( } ut_ad(prebuilt->fetch_cache_first == 0); + UNIV_MEM_INVALID(prebuilt->fetch_cache[prebuilt->n_fetch_cached], + prebuilt->mysql_row_len); if (UNIV_UNLIKELY(!row_sel_store_mysql_rec( prebuilt->fetch_cache[ From e73feed2d80588bc1ea8e5187405ec68353bbcc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 May 2010 13:40:01 +0300 Subject: [PATCH 019/461] Factor out innodb_multi_update.test from innodb.test --- mysql-test/suite/innodb/r/innodb.result | 80 +------------------ .../suite/innodb/r/innodb_multi_update.result | 76 ++++++++++++++++++ mysql-test/suite/innodb/t/disabled.def | 1 + mysql-test/suite/innodb/t/innodb.test | 27 ------- .../suite/innodb/t/innodb_multi_update.test | 29 +++++++ 5 files changed, 108 insertions(+), 105 deletions(-) create mode 100644 mysql-test/suite/innodb/r/innodb_multi_update.result create mode 100644 mysql-test/suite/innodb/t/innodb_multi_update.test diff --git a/mysql-test/suite/innodb/r/innodb.result b/mysql-test/suite/innodb/r/innodb.result index 5b84a64e8e8..c6f6f352743 100644 --- a/mysql-test/suite/innodb/r/innodb.result +++ b/mysql-test/suite/innodb/r/innodb.result @@ -1179,82 +1179,6 @@ a b 8 8 9 9 drop table t1; -CREATE TABLE t1 (a int not null primary key, b int not null, key (b)) engine=innodb; -CREATE TABLE t2 (a int not null primary key, b int not null, key (b)) engine=innodb; -INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12); -INSERT INTO t2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); -update t1,t2 set t1.a=t1.a+100; -select * from t1; -a b -101 1 -102 2 -103 3 -104 4 -105 5 -106 6 -107 7 -108 8 -109 9 -110 10 -111 11 -112 12 -update t1,t2 set t1.a=t1.a+100 where t1.a=101; -select * from t1; -a b -201 1 -102 2 -103 3 -104 4 -105 5 -106 6 -107 7 -108 8 -109 9 -110 10 -111 11 -112 12 -update t1,t2 set t1.b=t1.b+10 where t1.b=2; -select * from t1; -a b -201 1 -103 3 -104 4 -105 5 -106 6 -107 7 -108 8 -109 9 -110 10 -111 11 -102 12 -112 12 -update t1,t2 set t1.b=t1.b+2,t2.b=t1.b+10 where t1.b between 3 and 5 and t1.a=t2.a+100; -select * from t1; -a b -201 1 -103 5 -104 6 -106 6 -105 7 -107 7 -108 8 -109 9 -110 10 -111 11 -102 12 -112 12 -select * from t2; -a b -1 1 -2 2 -6 6 -7 7 -8 8 -9 9 -3 13 -4 14 -5 15 -drop table t1,t2; CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM; CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB; SET AUTOCOMMIT=0; @@ -1747,10 +1671,10 @@ variable_value - @innodb_rows_deleted_orig 71 SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted'; variable_value - @innodb_rows_inserted_orig -1084 +1063 SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated'; variable_value - @innodb_rows_updated_orig -885 +865 SELECT variable_value - @innodb_row_lock_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits'; variable_value - @innodb_row_lock_waits_orig 0 diff --git a/mysql-test/suite/innodb/r/innodb_multi_update.result b/mysql-test/suite/innodb/r/innodb_multi_update.result new file mode 100644 index 00000000000..7af9b030d1f --- /dev/null +++ b/mysql-test/suite/innodb/r/innodb_multi_update.result @@ -0,0 +1,76 @@ +CREATE TABLE bug38999_1 (a int not null primary key, b int not null, key (b)) engine=innodb; +CREATE TABLE bug38999_2 (a int not null primary key, b int not null, key (b)) engine=innodb; +INSERT INTO bug38999_1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12); +INSERT INTO bug38999_2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); +update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100; +select * from bug38999_1; +a b +101 1 +102 2 +103 3 +104 4 +105 5 +106 6 +107 7 +108 8 +109 9 +110 10 +111 11 +112 12 +update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100 where bug38999_1.a=101; +select * from bug38999_1; +a b +201 1 +102 2 +103 3 +104 4 +105 5 +106 6 +107 7 +108 8 +109 9 +110 10 +111 11 +112 12 +update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+10 where bug38999_1.b=2; +select * from bug38999_1; +a b +201 1 +103 3 +104 4 +105 5 +106 6 +107 7 +108 8 +109 9 +110 10 +111 11 +102 12 +112 12 +update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+2,bug38999_2.b=bug38999_1.b+10 where bug38999_1.b between 3 and 5 and bug38999_1.a=bug38999_2.a+100; +select * from bug38999_1; +a b +201 1 +103 5 +104 6 +106 6 +105 7 +107 7 +108 8 +109 9 +110 10 +111 11 +102 12 +112 12 +select * from bug38999_2; +a b +1 1 +2 2 +6 6 +7 7 +8 8 +9 9 +3 13 +4 14 +5 15 +drop table bug38999_1,bug38999_2; diff --git a/mysql-test/suite/innodb/t/disabled.def b/mysql-test/suite/innodb/t/disabled.def index 888298bbb09..da04138fd0a 100644 --- a/mysql-test/suite/innodb/t/disabled.def +++ b/mysql-test/suite/innodb/t/disabled.def @@ -9,3 +9,4 @@ # Do not use any TAB characters for whitespace. # ############################################################################## +innodb_multi_update: Bug #38999 2010-05-05 mmakela Valgrind warnings diff --git a/mysql-test/suite/innodb/t/innodb.test b/mysql-test/suite/innodb/t/innodb.test index 8641163e4f7..480183b9e2d 100644 --- a/mysql-test/suite/innodb/t/innodb.test +++ b/mysql-test/suite/innodb/t/innodb.test @@ -905,33 +905,6 @@ UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000; SELECT * from t1; drop table t1; -# -# Test multi update with different join methods -# - -CREATE TABLE t1 (a int not null primary key, b int not null, key (b)) engine=innodb; -CREATE TABLE t2 (a int not null primary key, b int not null, key (b)) engine=innodb; -INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12); -INSERT INTO t2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); - -# Full join, without key -update t1,t2 set t1.a=t1.a+100; -select * from t1; - -# unique key -update t1,t2 set t1.a=t1.a+100 where t1.a=101; -select * from t1; - -# ref key -update t1,t2 set t1.b=t1.b+10 where t1.b=2; -select * from t1; - -# Range key (in t1) -update t1,t2 set t1.b=t1.b+2,t2.b=t1.b+10 where t1.b between 3 and 5 and t1.a=t2.a+100; -select * from t1; -select * from t2; - -drop table t1,t2; CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM; CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB; SET AUTOCOMMIT=0; diff --git a/mysql-test/suite/innodb/t/innodb_multi_update.test b/mysql-test/suite/innodb/t/innodb_multi_update.test new file mode 100644 index 00000000000..7ab17ccf70a --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_multi_update.test @@ -0,0 +1,29 @@ +-- source include/have_innodb.inc + +# +# Test multi update with different join methods +# + +CREATE TABLE bug38999_1 (a int not null primary key, b int not null, key (b)) engine=innodb; +CREATE TABLE bug38999_2 (a int not null primary key, b int not null, key (b)) engine=innodb; +INSERT INTO bug38999_1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12); +INSERT INTO bug38999_2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); + +# Full join, without key +update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100; +select * from bug38999_1; + +# unique key +update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100 where bug38999_1.a=101; +select * from bug38999_1; + +# ref key +update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+10 where bug38999_1.b=2; +select * from bug38999_1; + +# Range key (in bug38999_1) +update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+2,bug38999_2.b=bug38999_1.b+10 where bug38999_1.b between 3 and 5 and bug38999_1.a=bug38999_2.a+100; +select * from bug38999_1; +select * from bug38999_2; + +drop table bug38999_1,bug38999_2; From 415e5b282b07b4d9b34120f336306c8d8cfd41c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 May 2010 13:44:25 +0300 Subject: [PATCH 020/461] Factor out innodb_multi_update.test from innodb.test --- .../suite/innodb_plugin/r/innodb.result | 80 +------------------ .../r/innodb_multi_update.result | 76 ++++++++++++++++++ mysql-test/suite/innodb_plugin/t/disabled.def | 12 +++ mysql-test/suite/innodb_plugin/t/innodb.test | 27 ------- .../innodb_plugin/t/innodb_multi_update.test | 29 +++++++ 5 files changed, 119 insertions(+), 105 deletions(-) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_multi_update.result create mode 100644 mysql-test/suite/innodb_plugin/t/disabled.def create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_multi_update.test diff --git a/mysql-test/suite/innodb_plugin/r/innodb.result b/mysql-test/suite/innodb_plugin/r/innodb.result index e435c0f68ca..75a7023f9d0 100644 --- a/mysql-test/suite/innodb_plugin/r/innodb.result +++ b/mysql-test/suite/innodb_plugin/r/innodb.result @@ -1184,82 +1184,6 @@ a b 8 8 9 9 drop table t1; -CREATE TABLE t1 (a int not null primary key, b int not null, key (b)) engine=innodb; -CREATE TABLE t2 (a int not null primary key, b int not null, key (b)) engine=innodb; -INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12); -INSERT INTO t2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); -update t1,t2 set t1.a=t1.a+100; -select * from t1; -a b -101 1 -102 2 -103 3 -104 4 -105 5 -106 6 -107 7 -108 8 -109 9 -110 10 -111 11 -112 12 -update t1,t2 set t1.a=t1.a+100 where t1.a=101; -select * from t1; -a b -201 1 -102 2 -103 3 -104 4 -105 5 -106 6 -107 7 -108 8 -109 9 -110 10 -111 11 -112 12 -update t1,t2 set t1.b=t1.b+10 where t1.b=2; -select * from t1; -a b -201 1 -103 3 -104 4 -105 5 -106 6 -107 7 -108 8 -109 9 -110 10 -111 11 -102 12 -112 12 -update t1,t2 set t1.b=t1.b+2,t2.b=t1.b+10 where t1.b between 3 and 5 and t1.a=t2.a+100; -select * from t1; -a b -201 1 -103 5 -104 6 -106 6 -105 7 -107 7 -108 8 -109 9 -110 10 -111 11 -102 12 -112 12 -select * from t2; -a b -1 1 -2 2 -6 6 -7 7 -8 8 -9 9 -3 13 -4 14 -5 15 -drop table t1,t2; CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM; CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB; SET AUTOCOMMIT=0; @@ -1752,10 +1676,10 @@ variable_value - @innodb_rows_deleted_orig 71 SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted'; variable_value - @innodb_rows_inserted_orig -1087 +1066 SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated'; variable_value - @innodb_rows_updated_orig -885 +865 SELECT variable_value - @innodb_row_lock_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits'; variable_value - @innodb_row_lock_waits_orig 0 diff --git a/mysql-test/suite/innodb_plugin/r/innodb_multi_update.result b/mysql-test/suite/innodb_plugin/r/innodb_multi_update.result new file mode 100644 index 00000000000..7af9b030d1f --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_multi_update.result @@ -0,0 +1,76 @@ +CREATE TABLE bug38999_1 (a int not null primary key, b int not null, key (b)) engine=innodb; +CREATE TABLE bug38999_2 (a int not null primary key, b int not null, key (b)) engine=innodb; +INSERT INTO bug38999_1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12); +INSERT INTO bug38999_2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); +update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100; +select * from bug38999_1; +a b +101 1 +102 2 +103 3 +104 4 +105 5 +106 6 +107 7 +108 8 +109 9 +110 10 +111 11 +112 12 +update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100 where bug38999_1.a=101; +select * from bug38999_1; +a b +201 1 +102 2 +103 3 +104 4 +105 5 +106 6 +107 7 +108 8 +109 9 +110 10 +111 11 +112 12 +update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+10 where bug38999_1.b=2; +select * from bug38999_1; +a b +201 1 +103 3 +104 4 +105 5 +106 6 +107 7 +108 8 +109 9 +110 10 +111 11 +102 12 +112 12 +update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+2,bug38999_2.b=bug38999_1.b+10 where bug38999_1.b between 3 and 5 and bug38999_1.a=bug38999_2.a+100; +select * from bug38999_1; +a b +201 1 +103 5 +104 6 +106 6 +105 7 +107 7 +108 8 +109 9 +110 10 +111 11 +102 12 +112 12 +select * from bug38999_2; +a b +1 1 +2 2 +6 6 +7 7 +8 8 +9 9 +3 13 +4 14 +5 15 +drop table bug38999_1,bug38999_2; diff --git a/mysql-test/suite/innodb_plugin/t/disabled.def b/mysql-test/suite/innodb_plugin/t/disabled.def new file mode 100644 index 00000000000..da04138fd0a --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/disabled.def @@ -0,0 +1,12 @@ +############################################################################## +# +# List the test cases that are to be disabled temporarily. +# +# Separate the test case name and the comment with ':'. +# +# : BUG# +# +# Do not use any TAB characters for whitespace. +# +############################################################################## +innodb_multi_update: Bug #38999 2010-05-05 mmakela Valgrind warnings diff --git a/mysql-test/suite/innodb_plugin/t/innodb.test b/mysql-test/suite/innodb_plugin/t/innodb.test index 6cfc0f0cb9a..60ba7d1e3bf 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb.test +++ b/mysql-test/suite/innodb_plugin/t/innodb.test @@ -915,33 +915,6 @@ UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000; SELECT * from t1; drop table t1; -# -# Test multi update with different join methods -# - -CREATE TABLE t1 (a int not null primary key, b int not null, key (b)) engine=innodb; -CREATE TABLE t2 (a int not null primary key, b int not null, key (b)) engine=innodb; -INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12); -INSERT INTO t2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); - -# Full join, without key -update t1,t2 set t1.a=t1.a+100; -select * from t1; - -# unique key -update t1,t2 set t1.a=t1.a+100 where t1.a=101; -select * from t1; - -# ref key -update t1,t2 set t1.b=t1.b+10 where t1.b=2; -select * from t1; - -# Range key (in t1) -update t1,t2 set t1.b=t1.b+2,t2.b=t1.b+10 where t1.b between 3 and 5 and t1.a=t2.a+100; -select * from t1; -select * from t2; - -drop table t1,t2; CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM; CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB; SET AUTOCOMMIT=0; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_multi_update.test b/mysql-test/suite/innodb_plugin/t/innodb_multi_update.test new file mode 100644 index 00000000000..7ab17ccf70a --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_multi_update.test @@ -0,0 +1,29 @@ +-- source include/have_innodb.inc + +# +# Test multi update with different join methods +# + +CREATE TABLE bug38999_1 (a int not null primary key, b int not null, key (b)) engine=innodb; +CREATE TABLE bug38999_2 (a int not null primary key, b int not null, key (b)) engine=innodb; +INSERT INTO bug38999_1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12); +INSERT INTO bug38999_2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9); + +# Full join, without key +update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100; +select * from bug38999_1; + +# unique key +update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100 where bug38999_1.a=101; +select * from bug38999_1; + +# ref key +update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+10 where bug38999_1.b=2; +select * from bug38999_1; + +# Range key (in bug38999_1) +update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+2,bug38999_2.b=bug38999_1.b+10 where bug38999_1.b between 3 and 5 and bug38999_1.a=bug38999_2.a+100; +select * from bug38999_1; +select * from bug38999_2; + +drop table bug38999_1,bug38999_2; From 3f8a812d7a8df215654e3abbd528e5e4d16c4bb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 May 2010 14:24:11 +0300 Subject: [PATCH 021/461] row_merge_drop_temp_indexes(): Load the table via the dictionary cache. Allow multiple indexes to be dropped. (Bug #53256) --- storage/innodb_plugin/row/row0merge.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/innodb_plugin/row/row0merge.c b/storage/innodb_plugin/row/row0merge.c index d61d626f92e..bedad2d1c71 100644 --- a/storage/innodb_plugin/row/row0merge.c +++ b/storage/innodb_plugin/row/row0merge.c @@ -2087,7 +2087,7 @@ row_merge_drop_temp_indexes(void) btr_pcur_store_position(&pcur, &mtr); btr_pcur_commit_specify_mtr(&pcur, &mtr); - table = dict_load_table_on_id(table_id); + table = dict_table_get_on_id_low(table_id); if (table) { dict_index_t* index; From 3ea54dbfa968fac58c4ca06d1c980c7e36bd856d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 May 2010 14:45:13 +0300 Subject: [PATCH 022/461] Note the 1.0.7 release --- storage/innodb_plugin/ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index fd76d8d40ee..9269703f974 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -77,6 +77,10 @@ * mysql-test/innodb_bug38231.test: Remove non-determinism in the test case. +2010-03-29 The InnoDB Team + + InnoDB Plugin 1.0.7 released + 2010-03-18 The InnoDB Team * CMakeLists.txt: From dc4abe9481fcd5afc57dde78ed166abc90e6c9f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 May 2010 14:50:11 +0300 Subject: [PATCH 023/461] Document Bug #53256 --- storage/innodb_plugin/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 9269703f974..9b8709c4e8e 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-05-05 The InnoDB Team + + * row/row0merge.c: + Fix Bug#53256 in a stress test, assert dict/dict0dict.c:815 + table2 == NULL + 2010-05-05 The InnoDB Team * handler/ha_innodb.cc: From fa2c00d316371620d98073737989b68c2c034ce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 May 2010 15:05:55 +0300 Subject: [PATCH 024/461] Re-enable ps_3innodb. --- mysql-test/t/disabled.def | 1 - 1 file changed, 1 deletion(-) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 68584c6f3e3..03fb781b34f 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -12,4 +12,3 @@ kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild. query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically partition_innodb_plugin : Bug#53307 2010-04-30 VasilDimov valgrind warnings -ps_3innodb : Bug#53309 2010-04-30 VasilDimov valgrind warnings From 326d75bd414290c1548b5ca337c19887c7165d76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 May 2010 15:39:01 +0300 Subject: [PATCH 025/461] Merge a contribution from Ryan Mack at Facebook: Bugfix for 53290, fast unique index creation fails on duplicate null values Summary: Bug in the fast index creation code incorrectly considers null values to be duplicates during block merging. Innodb policy is that multiple null values are allowed in a unique index. Null duplicates were correctly ignored while sorting individual blocks and with slow index creation. Test Plan: mtr, including new test, load dbs using deferred index creation DiffCamp Revision: 110840 Reviewed By: mcallaghan CC: mcallaghan, mysql-devel@lists Revert Plan: OK --- .../innodb_plugin/r/innodb_bug53290.result | 17 ++++++++++++++ .../innodb_plugin/t/innodb_bug53290.test | 22 +++++++++++++++++++ storage/innodb_plugin/include/rem0cmp.h | 4 +++- storage/innodb_plugin/rem/rem0cmp.c | 7 +++++- storage/innodb_plugin/row/row0merge.c | 13 +++++++---- 5 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug53290.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug53290.test diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug53290.result b/mysql-test/suite/innodb_plugin/r/innodb_bug53290.result new file mode 100644 index 00000000000..46cd7248c4e --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug53290.result @@ -0,0 +1,17 @@ +create table bug53290 (x bigint) engine=innodb; +insert into bug53290 () values (),(),(),(),(),(),(),(),(),(),(),(); +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +alter table bug53290 add unique index `idx` (x); +drop table bug53290; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53290.test b/mysql-test/suite/innodb_plugin/t/innodb_bug53290.test new file mode 100644 index 00000000000..3f6b9b513f7 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53290.test @@ -0,0 +1,22 @@ +-- source include/have_innodb_plugin.inc + +create table bug53290 (x bigint) engine=innodb; + +insert into bug53290 () values (),(),(),(),(),(),(),(),(),(),(),(); +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; +insert into bug53290 select * from bug53290; + +alter table bug53290 add unique index `idx` (x); + +drop table bug53290; diff --git a/storage/innodb_plugin/include/rem0cmp.h b/storage/innodb_plugin/include/rem0cmp.h index 072f74267ea..2f751a38864 100644 --- a/storage/innodb_plugin/include/rem0cmp.h +++ b/storage/innodb_plugin/include/rem0cmp.h @@ -148,7 +148,9 @@ cmp_rec_rec_simple( const rec_t* rec2, /*!< in: physical record */ const ulint* offsets1,/*!< in: rec_get_offsets(rec1, ...) */ const ulint* offsets2,/*!< in: rec_get_offsets(rec2, ...) */ - const dict_index_t* index); /*!< in: data dictionary index */ + const dict_index_t* index, /*!< in: data dictionary index */ + ibool* null_eq);/*!< out: set to TRUE if + found matching null values */ /*************************************************************//** This function is used to compare two physical records. Only the common first fields are compared, and if an externally stored field is diff --git a/storage/innodb_plugin/rem/rem0cmp.c b/storage/innodb_plugin/rem/rem0cmp.c index e6dab0bc66b..35b67992558 100644 --- a/storage/innodb_plugin/rem/rem0cmp.c +++ b/storage/innodb_plugin/rem/rem0cmp.c @@ -706,7 +706,9 @@ cmp_rec_rec_simple( const rec_t* rec2, /*!< in: physical record */ const ulint* offsets1,/*!< in: rec_get_offsets(rec1, ...) */ const ulint* offsets2,/*!< in: rec_get_offsets(rec2, ...) */ - const dict_index_t* index) /*!< in: data dictionary index */ + const dict_index_t* index, /*!< in: data dictionary index */ + ibool* null_eq)/*!< out: set to TRUE if + found matching null values */ { ulint rec1_f_len; /*!< length of current field in rec1 */ const byte* rec1_b_ptr; /*!< pointer to the current byte @@ -753,6 +755,9 @@ cmp_rec_rec_simple( || rec2_f_len == UNIV_SQL_NULL) { if (rec1_f_len == rec2_f_len) { + if (null_eq) { + *null_eq = TRUE; + } goto next_field; diff --git a/storage/innodb_plugin/row/row0merge.c b/storage/innodb_plugin/row/row0merge.c index bedad2d1c71..832d29df710 100644 --- a/storage/innodb_plugin/row/row0merge.c +++ b/storage/innodb_plugin/row/row0merge.c @@ -1075,11 +1075,14 @@ row_merge_cmp( record to be compared */ const ulint* offsets1, /*!< in: first record offsets */ const ulint* offsets2, /*!< in: second record offsets */ - const dict_index_t* index) /*!< in: index */ + const dict_index_t* index, /*!< in: index */ + ibool* null_eq) /*!< out: set to TRUE if + found matching null values */ { int cmp; - cmp = cmp_rec_rec_simple(mrec1, mrec2, offsets1, offsets2, index); + cmp = cmp_rec_rec_simple(mrec1, mrec2, offsets1, offsets2, index, + null_eq); #ifdef UNIV_DEBUG if (row_merge_print_cmp) { @@ -1445,11 +1448,13 @@ corrupt: } while (mrec0 && mrec1) { + ibool null_eq = FALSE; switch (row_merge_cmp(mrec0, mrec1, - offsets0, offsets1, index)) { + offsets0, offsets1, index, + &null_eq)) { case 0: if (UNIV_UNLIKELY - (dict_index_is_unique(index))) { + (dict_index_is_unique(index) && !null_eq)) { innobase_rec_to_mysql(table, mrec0, index, offsets0); mem_heap_free(heap); From c5bf05cd9555c9629c91f8874f3d866b73937dc0 Mon Sep 17 00:00:00 2001 From: Sunanda Menon Date: Wed, 5 May 2010 15:33:46 +0200 Subject: [PATCH 026/461] ------------------------------------------------------------ revno: 2861 committer: Georgi Kodinov branch nick: B53371-5.0-bugteam timestamp: Mon 2010-05-03 18:16:51 +0300 message: Bug #53371: COM_FIELD_LIST can be abused to bypass table level grants. The server was not checking the supplied to COM_FIELD_LIST table name for validity and compliance to acceptable table names standards. Fixed by checking the table name for compliance similar to how it's normally checked by the parser and returning an error message if it's not compliant. --- sql/sql_parse.cc | 7 +++++++ tests/mysql_client_test.c | 42 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 2b43d95dd7c..807d6c09a46 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2042,6 +2042,13 @@ bool dispatch_command(enum enum_server_command command, THD *thd, } thd->convert_string(&conv_name, system_charset_info, packet, arg_length, thd->charset()); + if (check_table_name (conv_name.str, conv_name.length)) + { + /* this is OK due to convert_string() null-terminating the string */ + my_error(ER_WRONG_TABLE_NAME, MYF(0), conv_name.str); + break; + } + table_list.alias= table_list.table_name= conv_name.str; packet= pend+1; diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 63137bdba93..5b26b96707b 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -16679,6 +16679,47 @@ static void test_bug45010() } +static void test_bug53371() +{ + int rc; + MYSQL_RES *result; + + myheader("test_bug53371"); + + rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1"); + myquery(rc); + rc= mysql_query(mysql, "DROP DATABASE IF EXISTS bug53371"); + myquery(rc); + rc= mysql_query(mysql, "DROP USER 'testbug'@localhost"); + + rc= mysql_query(mysql, "CREATE TABLE t1 (a INT)"); + myquery(rc); + rc= mysql_query(mysql, "CREATE DATABASE bug53371"); + myquery(rc); + rc= mysql_query(mysql, "GRANT SELECT ON bug53371.* to 'testbug'@localhost"); + myquery(rc); + + rc= mysql_change_user(mysql, "testbug", NULL, "bug53371"); + myquery(rc); + + rc= mysql_query(mysql, "SHOW COLUMNS FROM client_test_db.t1"); + DIE_UNLESS(rc); + DIE_UNLESS(mysql_errno(mysql) == 1142); + + result= mysql_list_fields(mysql, "../client_test_db/t1", NULL); + DIE_IF(result); + + rc= mysql_change_user(mysql, opt_user, opt_password, current_db); + myquery(rc); + rc= mysql_query(mysql, "DROP TABLE t1"); + myquery(rc); + rc= mysql_query(mysql, "DROP DATABASE bug53371"); + myquery(rc); + rc= mysql_query(mysql, "DROP USER 'testbug'@localhost"); + myquery(rc); +} + + /* Read and parse arguments and MySQL options from my.cnf */ @@ -16982,6 +17023,7 @@ static struct my_tests_st my_tests[]= { { "test_bug41078", test_bug41078 }, { "test_bug20023", test_bug20023 }, { "test_bug45010", test_bug45010 }, + { "test_bug53371", test_bug53371 }, { 0, 0 } }; From f908dc88bc7257fcf35337e4fd9ff5ee53aa84d5 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 5 May 2010 19:58:16 +0200 Subject: [PATCH 027/461] Raise version number after cloning 5.1.47 --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 7148c26187a..53852f46981 100644 --- a/configure.in +++ b/configure.in @@ -12,7 +12,7 @@ dnl dnl When changing the major version number please also check the switch dnl statement in mysqlbinlog::check_master_version(). You may also need dnl to update version.c in ndb. -AC_INIT([MySQL Server], [5.1.47], [], [mysql]) +AC_INIT([MySQL Server], [5.1.48], [], [mysql]) AC_CONFIG_SRCDIR([sql/mysqld.cc]) AC_CANONICAL_SYSTEM From 1eada91053287af3d46da93b88d5feb30ed4ba27 Mon Sep 17 00:00:00 2001 From: Martin Hansson Date: Thu, 6 May 2010 10:45:00 +0200 Subject: [PATCH 028/461] Bug#52357: Assertion failed: join->best_read in greedy_search optimizer_search_depth=0 The algorithm inside restore_prev_nj_state failed to properly update the counters within the NESTED_JOIN tree. The counter was decremented each time a table in the node was removed from the QEP, the correct thing to do being only to decrement it when the last table in the child node was removed from the plan. This lead to node counters getting negative values and the plan thus appeared impossible. An assertion caught this. Fixed by not recursing up the tree unless the last table in the join nest node is removed from the plan --- mysql-test/r/join_outer.result | 30 ++++++++++++++++++ mysql-test/t/join_outer.test | 24 +++++++++++++++ sql/sql_select.cc | 56 +++++++++++++++++++++++++++------- sql/table.h | 15 ++++++++- 4 files changed, 113 insertions(+), 12 deletions(-) diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result index 1366a8fe97a..31539b68069 100644 --- a/mysql-test/r/join_outer.result +++ b/mysql-test/r/join_outer.result @@ -1254,3 +1254,33 @@ SELECT * FROM t1 LEFT JOIN t2 ON e<>0 WHERE c=1 AND d<=>NULL; c e d 1 0 NULL DROP TABLE t1,t2; +# +# Bug#52357: Assertion failed: join->best_read in greedy_search +# optimizer_search_depth=0 +# +CREATE TABLE t1( a INT ); +INSERT INTO t1 VALUES (1),(2); +SET optimizer_search_depth = 0; +# Should not core dump on query preparation +EXPLAIN +SELECT 1 +FROM t1 tt3 LEFT OUTER JOIN t1 tt4 ON 1 +LEFT OUTER JOIN t1 tt5 ON 1 +LEFT OUTER JOIN t1 tt6 ON 1 +LEFT OUTER JOIN t1 tt7 ON 1 +LEFT OUTER JOIN t1 tt8 ON 1 +RIGHT OUTER JOIN t1 tt2 ON 1 +RIGHT OUTER JOIN t1 tt1 ON 1 +STRAIGHT_JOIN t1 tt9 ON 1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE tt1 ALL NULL NULL NULL NULL 2 +1 SIMPLE tt2 ALL NULL NULL NULL NULL 2 +1 SIMPLE tt3 ALL NULL NULL NULL NULL 2 +1 SIMPLE tt4 ALL NULL NULL NULL NULL 2 +1 SIMPLE tt5 ALL NULL NULL NULL NULL 2 +1 SIMPLE tt6 ALL NULL NULL NULL NULL 2 +1 SIMPLE tt7 ALL NULL NULL NULL NULL 2 +1 SIMPLE tt8 ALL NULL NULL NULL NULL 2 +1 SIMPLE tt9 ALL NULL NULL NULL NULL 2 +SET optimizer_search_depth = DEFAULT; +DROP TABLE t1; diff --git a/mysql-test/t/join_outer.test b/mysql-test/t/join_outer.test index 1a59dbf8fc2..0d75ac97266 100644 --- a/mysql-test/t/join_outer.test +++ b/mysql-test/t/join_outer.test @@ -861,3 +861,27 @@ SELECT * FROM t1 LEFT JOIN t2 ON e<>0 WHERE c=1 AND d<=>NULL; DROP TABLE t1,t2; + +--echo # +--echo # Bug#52357: Assertion failed: join->best_read in greedy_search +--echo # optimizer_search_depth=0 +--echo # +CREATE TABLE t1( a INT ); + +INSERT INTO t1 VALUES (1),(2); +SET optimizer_search_depth = 0; + +--echo # Should not core dump on query preparation +EXPLAIN +SELECT 1 +FROM t1 tt3 LEFT OUTER JOIN t1 tt4 ON 1 + LEFT OUTER JOIN t1 tt5 ON 1 + LEFT OUTER JOIN t1 tt6 ON 1 + LEFT OUTER JOIN t1 tt7 ON 1 + LEFT OUTER JOIN t1 tt8 ON 1 + RIGHT OUTER JOIN t1 tt2 ON 1 + RIGHT OUTER JOIN t1 tt1 ON 1 + STRAIGHT_JOIN t1 tt9 ON 1; + +SET optimizer_search_depth = DEFAULT; +DROP TABLE t1; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index f0177893840..53a6b699022 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -8706,6 +8706,39 @@ static bool check_interleaving_with_nj(JOIN_TAB *next_tab) /* Nested joins perspective: Remove the last table from the join order + The algorithm is the reciprocal of check_interleaving_with_nj(), hence + parent join nest nodes are updated only when the last table in its child + node is removed. The ASCII graphic below will clarify. + + %A table nesting such as t1 x [ ( t2 x t3 ) x ( t4 x t5 ) ] is + represented by the below join nest tree. + + @verbatim + NJ1 + _/ / \ + _/ / NJ2 + _/ / / \ + / / / \ + t1 x [ (t2 x t3) x (t4 x t5) ] + @endverbatim + + At the point in time when check_interleaving_with_nj() adds the table t5 to + the query execution plan, QEP, it also directs the node named NJ2 to mark + the table as covered. NJ2 does so by incrementing its @c counter + member. Since all of NJ2's tables are now covered by the QEP, the algorithm + proceeds up the tree to NJ1, incrementing its counter as well. All join + nests are now completely covered by the QEP. + + restore_prev_nj_state() does the above in reverse. As seen above, the node + NJ1 contains the nodes t2, t3, and NJ2. Its counter being equal to 3 means + that the plan covers t2, t3, and NJ2, @e and that the sub-plan (t4 x t5) + completely covers NJ2. The removal of t5 from the partial plan will first + decrement NJ2's counter to 1. It will then detect that NJ2 went from being + completely to partially covered, and hence the algorithm must continue + upwards to NJ1 and decrement its counter to 2. %A subsequent removal of t4 + will however not influence NJ1 since it did not un-cover the last table in + NJ2. + SYNOPSIS restore_prev_nj_state() last join table to remove, it is assumed to be the last in current @@ -8722,19 +8755,20 @@ static void restore_prev_nj_state(JOIN_TAB *last) { TABLE_LIST *last_emb= last->table->pos_in_table_list->embedding; JOIN *join= last->join; - while (last_emb) + for (;last_emb != NULL; last_emb= last_emb->embedding) { - if (!(--last_emb->nested_join->counter)) - join->cur_embedding_map&= ~last_emb->nested_join->nj_map; - else if (last_emb->nested_join->join_list.elements-1 == - last_emb->nested_join->counter) - { - join->cur_embedding_map|= last_emb->nested_join->nj_map; + NESTED_JOIN *nest= last_emb->nested_join; + DBUG_ASSERT(nest->counter > 0); + + bool was_fully_covered= nest->is_fully_covered(); + + if (--nest->counter == 0) + join->cur_embedding_map&= ~nest->nj_map; + + if (!was_fully_covered) break; - } - else - break; - last_emb= last_emb->embedding; + + join->cur_embedding_map|= nest->nj_map; } } diff --git a/sql/table.h b/sql/table.h index db996d45320..f162c2ed8ca 100644 --- a/sql/table.h +++ b/sql/table.h @@ -910,7 +910,11 @@ typedef struct st_nested_join List join_list; /* list of elements in the nested join */ table_map used_tables; /* bitmap of tables in the nested join */ table_map not_null_tables; /* tables that rejects nulls */ - struct st_join_table *first_nested;/* the first nested table in the plan */ + /** + Used for pointing out the first table in the plan being covered by this + join nest. It is used exclusively within make_outerjoin_info(). + */ + struct st_join_table *first_nested; /* Used to count tables in the nested join in 2 isolated places: 1. In make_outerjoin_info(). @@ -920,6 +924,15 @@ typedef struct st_nested_join */ uint counter; nested_join_map nj_map; /* Bit used to identify this nested join*/ + /** + True if this join nest node is completely covered by the query execution + plan. This means two things. + + 1. All tables on its @c join_list are covered by the plan. + + 2. All child join nest nodes are fully covered. + */ + bool is_fully_covered() const { return join_list.elements == counter; } } NESTED_JOIN; From bd2a517b2381465eb2cf366fb5d4ad08d6770708 Mon Sep 17 00:00:00 2001 From: Gleb Shchepa Date: Fri, 7 May 2010 00:41:37 +0400 Subject: [PATCH 029/461] Bug #53088: mysqldump with -T & --default-character-set set truncates text/blob to 766 chars mysqldump and SELECT ... INTO OUTFILE truncated long BLOB/TEXT values to size of 766 bytes (MAX_FIELD_WIDTH or 255 * 3 + 1). The select_export::send_data method has been modified to reallocate a conversion buffer for long field data. mysql-test/r/mysqldump.result: Test case for bug #53088. mysql-test/r/outfile_loaddata.result: Test case for bug #53088. mysql-test/t/mysqldump.test: Test case for bug #53088. mysql-test/t/outfile_loaddata.test: Test case for bug #53088. sql/sql_class.cc: Bug #53088: mysqldump with -T & --default-character-set set truncates text/blob to 766 chars The select_export::send_data method has been modified to reallocate a conversion buffer for long field data. --- mysql-test/r/mysqldump.result | 15 ++++++++++++ mysql-test/r/outfile_loaddata.result | 20 ++++++++++++++++ mysql-test/t/mysqldump.test | 29 ++++++++++++++++++++++++ mysql-test/t/outfile_loaddata.test | 34 ++++++++++++++++++++++++++++ sql/sql_class.cc | 25 ++++++++++++++++++-- 5 files changed, 121 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 8162e1aca05..d26eaac7a93 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -4561,5 +4561,20 @@ a b c SET NAMES default; DROP TABLE t1, t2; # +# Bug #53088: mysqldump with -T & --default-character-set set +# truncates text/blob to 766 chars +# +# Also see outfile_loaddata.test +# +CREATE TABLE t1 (a BLOB) CHARSET latin1; +CREATE TABLE t2 LIKE t1; +INSERT INTO t1 VALUES (REPEAT('.', 800)); +LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1.txt' INTO TABLE t2 CHARACTER SET latin1; +# should be 800 +SELECT LENGTH(a) FROM t2; +LENGTH(a) +800 +DROP TABLE t1, t2; +# # End of 5.1 tests # diff --git a/mysql-test/r/outfile_loaddata.result b/mysql-test/r/outfile_loaddata.result index 453e3adb54c..36a72fd84ce 100644 --- a/mysql-test/r/outfile_loaddata.result +++ b/mysql-test/r/outfile_loaddata.result @@ -239,4 +239,24 @@ a b c 2 NULL NULL SET NAMES default; DROP TABLE t1, t2; +# +# Bug #53088: mysqldump with -T & --default-character-set set +# truncates text/blob to 766 chars +# +# Also see mysqldump.test +# +CREATE TABLE t1 (a BLOB) CHARSET latin1; +CREATE TABLE t2 LIKE t1; +INSERT INTO t1 VALUES (REPEAT('.', 800)); +SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug53088.txt' CHARACTER SET latin1 FROM t1; +# should be greater than 800 +SELECT LENGTH(LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug53088.txt')); +LENGTH(LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug53088.txt')) +801 +LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug53088.txt' INTO TABLE t2; +# should be 800 +SELECT LENGTH(a) FROM t2; +LENGTH(a) +800 +DROP TABLE t1, t2; # End of 5.1 tests. diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index 07ab9cecd28..0bf9916dcd5 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -2131,6 +2131,35 @@ SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a, b, c; SET NAMES default; +DROP TABLE t1, t2; +########################################################################### + +--echo # +--echo # Bug #53088: mysqldump with -T & --default-character-set set +--echo # truncates text/blob to 766 chars +--echo # +--echo # Also see outfile_loaddata.test +--echo # + +CREATE TABLE t1 (a BLOB) CHARSET latin1; +CREATE TABLE t2 LIKE t1; + +let $table= t1; +let $dir= $MYSQLTEST_VARDIR/tmp; +let $file= $dir/$table.txt; +let $length= 800; + +--eval INSERT INTO t1 VALUES (REPEAT('.', $length)) + +--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --default-character-set=latin1 --tab=$dir/ test $table +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR + +--eval LOAD DATA INFILE '$file' INTO TABLE t2 CHARACTER SET latin1 +--remove_file $file + +--echo # should be $length +SELECT LENGTH(a) FROM t2; + DROP TABLE t1, t2; ########################################################################### diff --git a/mysql-test/t/outfile_loaddata.test b/mysql-test/t/outfile_loaddata.test index 3f62acbd214..26760f9a1b2 100644 --- a/mysql-test/t/outfile_loaddata.test +++ b/mysql-test/t/outfile_loaddata.test @@ -251,6 +251,40 @@ SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a, b, c; SET NAMES default; DROP TABLE t1, t2; +########################################################################### + +--echo # +--echo # Bug #53088: mysqldump with -T & --default-character-set set +--echo # truncates text/blob to 766 chars +--echo # +--echo # Also see mysqldump.test +--echo # + +CREATE TABLE t1 (a BLOB) CHARSET latin1; +CREATE TABLE t2 LIKE t1; + +let $file= '$MYSQLTEST_VARDIR/tmp/bug53088.txt'; +let $length= 800; + +--eval INSERT INTO t1 VALUES (REPEAT('.', $length)) + +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--eval SELECT * INTO OUTFILE $file CHARACTER SET latin1 FROM t1 + +--echo # should be greater than $length +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--eval SELECT LENGTH(LOAD_FILE($file)) + +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--eval LOAD DATA INFILE $file INTO TABLE t2 + +--remove_file $MYSQLTEST_VARDIR/tmp/bug53088.txt + +--echo # should be $length +SELECT LENGTH(a) FROM t2; + +DROP TABLE t1, t2; + ########################################################################### --echo # End of 5.1 tests. diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 2633f03f2d6..b639e590bbc 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1998,9 +1998,21 @@ bool select_export::send_data(List &items) const char *from_end_pos; const char *error_pos; uint32 bytes; - bytes= well_formed_copy_nchars(write_cs, cvt_buff, sizeof(cvt_buff), + uint64 estimated_bytes= + ((uint64) res->length() / res->charset()->mbminlen + 1) * + write_cs->mbmaxlen + 1; + set_if_smaller(estimated_bytes, UINT_MAX32); + if (cvt_str.realloc((uint32) estimated_bytes)) + { + my_error(ER_OUTOFMEMORY, MYF(0), (uint32) estimated_bytes); + goto err; + } + + bytes= well_formed_copy_nchars(write_cs, (char *) cvt_str.ptr(), + cvt_str.alloced_length(), res->charset(), res->ptr(), res->length(), - sizeof(cvt_buff), + UINT_MAX32, // copy all input chars, + // i.e. ignore nchars parameter &well_formed_error_pos, &cannot_convert_error_pos, &from_end_pos); @@ -2018,6 +2030,15 @@ bool select_export::send_data(List &items) "string", printable_buff, item->name, row_count); } + else if (from_end_pos < res->ptr() + res->length()) + { + /* + result is longer than UINT_MAX32 and doesn't fit into String + */ + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + WARN_DATA_TRUNCATED, ER(WARN_DATA_TRUNCATED), + item->full_name(), row_count); + } cvt_str.length(bytes); res= &cvt_str; } From 278ae9a8d5c4598854419ccc0974f57b7f2b4ddc Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Fri, 7 May 2010 10:38:42 +0500 Subject: [PATCH 030/461] Bug#53334 Incorrect result for InnoDB in LEFT JOIN with impossible condition The fix actually reverts the change introduced by the patch for bug 51494. The fact is that patches for bugs 52177&48419 fix bugs 51194&50575 as well. mysql-test/r/innodb_mysql.result: test case mysql-test/t/innodb_mysql.test: test case sql/sql_select.cc: reverted wrong fix for bug 51494 --- mysql-test/r/innodb_mysql.result | 30 ++++++++++++++++++++++++++++++ mysql-test/t/innodb_mysql.test | 30 ++++++++++++++++++++++++++++++ sql/sql_select.cc | 3 +-- 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 2bf1ef8fbf0..8257b291cf1 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -2378,4 +2378,34 @@ SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; SECOND(c)-@bug47453 0 DROP TABLE t1, t2; +# +# Bug #53334: wrong result for outer join with impossible ON condition +# (see the same test case for MyISAM in join.test) +# +CREATE TABLE t1 (id INT PRIMARY KEY); +CREATE TABLE t2 (id INT); +INSERT INTO t1 VALUES (75); +INSERT INTO t1 VALUES (79); +INSERT INTO t1 VALUES (78); +INSERT INTO t1 VALUES (77); +REPLACE INTO t1 VALUES (76); +REPLACE INTO t1 VALUES (76); +INSERT INTO t1 VALUES (104); +INSERT INTO t1 VALUES (103); +INSERT INTO t1 VALUES (102); +INSERT INTO t1 VALUES (101); +INSERT INTO t1 VALUES (105); +INSERT INTO t1 VALUES (106); +INSERT INTO t1 VALUES (107); +INSERT INTO t2 VALUES (107),(75),(1000); +SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0 +WHERE t2.id=75 AND t1.id IS NULL; +id id +NULL 75 +EXPLAIN SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0 +WHERE t2.id=75 AND t1.id IS NULL; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 const PRIMARY NULL NULL NULL 1 Impossible ON condition +1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where +DROP TABLE t1,t2; End of 5.1 tests diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index 9564d3b41fb..f179f3960a9 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -618,5 +618,35 @@ SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; DROP TABLE t1, t2; +--echo # +--echo # Bug #53334: wrong result for outer join with impossible ON condition +--echo # (see the same test case for MyISAM in join.test) +--echo # + +CREATE TABLE t1 (id INT PRIMARY KEY); +CREATE TABLE t2 (id INT); + +INSERT INTO t1 VALUES (75); +INSERT INTO t1 VALUES (79); +INSERT INTO t1 VALUES (78); +INSERT INTO t1 VALUES (77); +REPLACE INTO t1 VALUES (76); +REPLACE INTO t1 VALUES (76); +INSERT INTO t1 VALUES (104); +INSERT INTO t1 VALUES (103); +INSERT INTO t1 VALUES (102); +INSERT INTO t1 VALUES (101); +INSERT INTO t1 VALUES (105); +INSERT INTO t1 VALUES (106); +INSERT INTO t1 VALUES (107); + +INSERT INTO t2 VALUES (107),(75),(1000); + +SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0 + WHERE t2.id=75 AND t1.id IS NULL; +EXPLAIN SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0 + WHERE t2.id=75 AND t1.id IS NULL; + +DROP TABLE t1,t2; --echo End of 5.1 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 291432c2bb6..5479c1bdb36 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -2967,8 +2967,7 @@ make_join_statistics(JOIN *join, TABLE_LIST *tables_arg, COND *conds, s->quick=select->quick; s->needed_reg=select->needed_reg; select->quick=0; - if (records == 0 && s->table->reginfo.impossible_range && - (s->table->file->ha_table_flags() & HA_STATS_RECORDS_IS_EXACT)) + if (records == 0 && s->table->reginfo.impossible_range) { /* Impossible WHERE or ON expression From df0b6707dabf49ed09e798c6ace1d860320ab11c Mon Sep 17 00:00:00 2001 From: He Zhenxing Date: Sat, 8 May 2010 11:25:33 +0800 Subject: [PATCH 031/461] Bug#53189 Table map version unused and can be removed MYSQL_BIN_LOG m_table_map_version member and it's associated functions were not used in the logic of binlogging and replication, this patch removed all related code. sql/log.cc: removed unused m_table_map_version variable and functions sql/log.h: removed unused m_table_map_version variable and functions sql/log_event.h: Removed unused LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F flag sql/sql_class.cc: Removed unused LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F flag sql/sql_load.cc: Removed unused LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F flag sql/table.cc: removed unused table_map_version variable sql/table.h: removed unused table_map_version variable --- sql/log.cc | 42 +++--------------------------------------- sql/log.h | 10 ---------- sql/log_event.h | 6 +++--- sql/sql_class.cc | 2 -- sql/sql_load.cc | 2 -- sql/table.cc | 12 ------------ sql/table.h | 1 - 7 files changed, 6 insertions(+), 69 deletions(-) diff --git a/sql/log.cc b/sql/log.cc index e7090a98fd9..7d820b48c43 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1440,11 +1440,6 @@ binlog_end_trans(THD *thd, binlog_trx_data *trx_data, trx_data->has_incident()); trx_data->reset(); - /* - We need to step the table map version after writing the - transaction cache to disk. - */ - mysql_bin_log.update_table_map_version(); statistic_increment(binlog_cache_use, &LOCK_status); if (trans_log->disk_writes != 0) { @@ -1470,13 +1465,6 @@ binlog_end_trans(THD *thd, binlog_trx_data *trx_data, } else // ...statement trx_data->truncate(trx_data->before_stmt_pos); - - /* - We need to step the table map version on a rollback to ensure - that a new table map event is generated instead of the one that - was written to the thrown-away transaction cache. - */ - mysql_bin_log.update_table_map_version(); } DBUG_ASSERT(thd->binlog_get_pending_rows_event() == NULL); @@ -2437,7 +2425,7 @@ const char *MYSQL_LOG::generate_name(const char *log_name, MYSQL_BIN_LOG::MYSQL_BIN_LOG() :bytes_written(0), prepared_xids(0), file_id(1), open_count(1), - need_start_event(TRUE), m_table_map_version(0), + need_start_event(TRUE), is_relay_log(0), description_event_for_exec(0), description_event_for_queue(0) { @@ -4078,7 +4066,6 @@ int THD::binlog_write_table_map(TABLE *table, bool is_trans) DBUG_RETURN(error); binlog_table_maps++; - table->s->table_map_version= mysql_bin_log.table_map_version(); DBUG_RETURN(0); } @@ -4169,10 +4156,8 @@ MYSQL_BIN_LOG::flush_and_set_pending_rows_event(THD *thd, file= &trx_data->trans_log; /* - If we are writing to the log file directly, we could avoid - locking the log. This does not work since we need to step the - m_table_map_version below, and that change has to be protected - by the LOCK_log mutex. + If we are not writing to the log file directly, we could avoid + locking the log. */ pthread_mutex_lock(&LOCK_log); @@ -4186,24 +4171,6 @@ MYSQL_BIN_LOG::flush_and_set_pending_rows_event(THD *thd, DBUG_RETURN(1); } - /* - We step the table map version if we are writing an event - representing the end of a statement. We do this regardless of - wheather we write to the transaction cache or to directly to the - file. - - In an ideal world, we could avoid stepping the table map version - if we were writing to a transaction cache, since we could then - reuse the table map that was written earlier in the transaction - cache. This does not work since STMT_END_F implies closing all - table mappings on the slave side. - - TODO: Find a solution so that table maps does not have to be - written several times within a transaction. - */ - if (pending->get_flags(Rows_log_event::STMT_END_F)) - ++m_table_map_version; - delete pending; if (file == &log_file) @@ -4417,9 +4384,6 @@ err: set_write_error(thd); } - if (event_info->flags & LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F) - ++m_table_map_version; - pthread_mutex_unlock(&LOCK_log); DBUG_RETURN(error); } diff --git a/sql/log.h b/sql/log.h index 8b5dfcb3935..5af51e14d80 100644 --- a/sql/log.h +++ b/sql/log.h @@ -272,8 +272,6 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG */ bool no_auto_events; - ulonglong m_table_map_version; - int write_to_file(IO_CACHE *cache); /* This is used to start writing to a new log file. The difference from @@ -314,14 +312,6 @@ public: void unlog(ulong cookie, my_xid xid); int recover(IO_CACHE *log, Format_description_log_event *fdle); #if !defined(MYSQL_CLIENT) - bool is_table_mapped(TABLE *table) const - { - return table->s->table_map_version == table_map_version(); - } - - ulonglong table_map_version() const { return m_table_map_version; } - void update_table_map_version() { ++m_table_map_version; } - int flush_and_set_pending_rows_event(THD *thd, Rows_log_event* event); int remove_pending_rows_event(THD *thd); diff --git a/sql/log_event.h b/sql/log_event.h index 9b7f000648d..e3ca4ca3321 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -463,10 +463,10 @@ struct sql_ex_info #define LOG_EVENT_SUPPRESS_USE_F 0x8 /* - The table map version internal to the log should be increased after - the event has been written to the binary log. + Note: this is a place holder for the flag + LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F (0x10), which is not used any + more, please do not reused this value for other flags. */ -#define LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F 0x10 /** @def LOG_EVENT_ARTIFICIAL_F diff --git a/sql/sql_class.cc b/sql/sql_class.cc index b639e590bbc..93aa6a8268c 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -3825,7 +3825,6 @@ int THD::binlog_flush_pending_rows_event(bool stmt_end) if (stmt_end) { pending->set_flags(Rows_log_event::STMT_END_F); - pending->flags|= LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F; binlog_table_maps= 0; } @@ -3953,7 +3952,6 @@ int THD::binlog_query(THD::enum_binlog_query_type qtype, char const *query_arg, { Query_log_event qinfo(this, query_arg, query_len, is_trans, suppress_use, errcode); - qinfo.flags|= LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F; /* Binlog table maps will be irrelevant after a Query_log_event (they are just removed on the slave side) so after the query diff --git a/sql/sql_load.cc b/sql/sql_load.cc index e121f69dfdf..6628cc4e8bb 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -511,7 +511,6 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, else { Delete_file_log_event d(thd, db, transactional_table); - d.flags|= LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F; (void) mysql_bin_log.write(&d); } } @@ -691,7 +690,6 @@ static bool write_execute_load_query_log_event(THD *thd, sql_exchange* ex, (duplicates == DUP_REPLACE) ? LOAD_DUP_REPLACE : (ignore ? LOAD_DUP_IGNORE : LOAD_DUP_ERROR), transactional_table, FALSE, errcode); - e.flags|= LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F; return mysql_bin_log.write(&e); } diff --git a/sql/table.cc b/sql/table.cc index 04d7b3a8d0a..bd6251b5743 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -296,13 +296,6 @@ TABLE_SHARE *alloc_table_share(TABLE_LIST *table_list, char *key, share->version= refresh_version; - /* - This constant is used to mark that no table map version has been - assigned. No arithmetic is done on the value: it will be - overwritten with a value taken from MYSQL_BIN_LOG. - */ - share->table_map_version= ~(ulonglong)0; - /* Since alloc_table_share() can be called without any locking (for example, ha_create_table... functions), we do not assign a table @@ -366,11 +359,6 @@ void init_tmp_table_share(THD *thd, TABLE_SHARE *share, const char *key, share->path.length= share->normalized_path.length= strlen(path); share->frm_version= FRM_VER_TRUE_VARCHAR; - /* - Temporary tables are not replicated, but we set up these fields - anyway to be able to catch errors. - */ - share->table_map_version= ~(ulonglong)0; share->cached_row_logging_check= -1; /* diff --git a/sql/table.h b/sql/table.h index 5db7e9ac7cb..bddb0731625 100644 --- a/sql/table.h +++ b/sql/table.h @@ -430,7 +430,6 @@ typedef struct st_table_share bool name_lock, replace_with_name_lock; bool waiting_on_cond; /* Protection against free */ ulong table_map_id; /* for row-based replication */ - ulonglong table_map_version; /* Cache for row-based replication table share checks that does not From 209cccf55dd39d0be7eb4635b7c397b36941b825 Mon Sep 17 00:00:00 2001 From: Alfranio Correia Date: Sun, 9 May 2010 23:45:25 +0100 Subject: [PATCH 032/461] BUG#49019 Mixing self-logging eng. and regular eng. does not switch to row in mixed mode Backport of the patch for 5.1-bugteam. --- .../rpl_ndb_mixed_engines_transactions.result | 37 +++++++++++++++++++ .../t/rpl_ndb_mixed_engines_transactions.test | 23 ++++++++++++ sql/sql_base.cc | 10 +++++ 3 files changed, 70 insertions(+) diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result index da60b0bbbbf..e02c3b23cad 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result @@ -341,6 +341,33 @@ ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back SET AUTOCOMMIT = 1; +---- Mixed statements Innodb ---- +BEGIN; +INSERT INTO tndb VALUES (147); +INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1; +Warnings: +Note 1592 Statement may not be safe to log in statement format. +COMMIT; +INSERT INTO tndb VALUES (148); +BEGIN; +INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1; +Warnings: +Note 1592 Statement may not be safe to log in statement format. +INSERT INTO tndb VALUES (149); +COMMIT; +BEGIN; +INSERT INTO tndb VALUES (150); +INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1; +Warnings: +Note 1592 Statement may not be safe to log in statement format. +COMMIT; +INSERT INTO tndb VALUES (151); +BEGIN; +INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1; +Warnings: +Note 1592 Statement may not be safe to log in statement format. +INSERT INTO tndb VALUES (152); +COMMIT; ==== Verify the result ==== SELECT * FROM tmyisam ORDER BY a; a @@ -393,6 +420,8 @@ a 140 142 146 +150 +151 SELECT * FROM tinnodb ORDER BY a; a 1 @@ -420,6 +449,8 @@ a 120 125 127 +147 +148 SELECT * FROM tndb ORDER BY a; a 2 @@ -447,6 +478,12 @@ a 121 123 126 +147 +148 +149 +150 +151 +152 [on slave] Comparing tables master:test.tmyisam and slave:test.tmyisam Comparing tables master:test.tinnodb and slave:test.tinnodb diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test index 14b76722fa6..22ccabe3745 100644 --- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test +++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test @@ -415,6 +415,29 @@ ROLLBACK; SET AUTOCOMMIT = 1; +--echo ---- Mixed statements Innodb ---- + +BEGIN; +INSERT INTO tndb VALUES (147); +INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1; +COMMIT; + +INSERT INTO tndb VALUES (148); +BEGIN; +INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1; +INSERT INTO tndb VALUES (149); +COMMIT; + +BEGIN; +INSERT INTO tndb VALUES (150); +INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1; +COMMIT; + +INSERT INTO tndb VALUES (151); +BEGIN; +INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1; +INSERT INTO tndb VALUES (152); +COMMIT; --echo ==== Verify the result ==== diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 0e70eb93725..9e38a4142eb 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -5183,6 +5183,16 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables) thd->variables.binlog_format)); DBUG_PRINT("info", ("multi_engine: %s", multi_engine ? "TRUE" : "FALSE")); + /* + Reading from a self-logging engine and updating another engine + generates changes that are written to the binary log in the + statement format and may make slaves to diverge. In the mixed + mode, such changes should be written to the binary log in the + row format. + */ + if (multi_engine && + (flags_some_set & HA_HAS_OWN_BINLOGGING)) + thd->lex->set_stmt_unsafe(); int error= 0; if (flags_all_set == 0) From 6170e64f674e84a074020496c8bb3ac6516e71ae Mon Sep 17 00:00:00 2001 From: Jim Winstead Date: Sun, 9 May 2010 20:02:05 -0700 Subject: [PATCH 033/461] Using an initial command with mysql_options(..., MYSQL_INIT_COMMAND, ...) that generated multiple result sets (such as a stored procedure or a multi-statement command) would leave the connection unusable. (Bug #42373) A side-effect of this bug fix is to make MYSQL_INIT_COMMAND settings ignored when connecting from within the server, but none of the existing mechanisms for connecting from within the server use or need to set the initial command. --- sql-common/client.c | 27 +++++++++---- tests/mysql_client_test.c | 82 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 7 deletions(-) diff --git a/sql-common/client.c b/sql-common/client.c index 51bbda3bade..1b7723ce0a5 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -2455,6 +2455,11 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user, goto error; } + /* + Using init_commands is not supported when connecting from within the + server. + */ +#ifndef MYSQL_SERVER if (mysql->options.init_commands) { DYNAMIC_ARRAY *init_commands= mysql->options.init_commands; @@ -2466,18 +2471,26 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user, for (; ptr < end_command; ptr++) { - MYSQL_RES *res; + int status; + if (mysql_real_query(mysql,*ptr, (ulong) strlen(*ptr))) goto error; - if (mysql->fields) - { - if (!(res= cli_use_result(mysql))) - goto error; - mysql_free_result(res); - } + + do { + if (mysql->fields) + { + MYSQL_RES *res; + if (!(res= cli_use_result(mysql))) + goto error; + mysql_free_result(res); + } + if ((status= mysql_next_result(mysql)) > 0) + goto error; + } while (status == 0); } mysql->reconnect=reconnect; } +#endif #ifndef TO_BE_DELETED if (mysql->options.rpl_probe && mysql_rpl_probe(mysql)) diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index b99461ecd06..761582a8bb3 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -18093,6 +18093,87 @@ static void test_bug53371() } + +/** + Bug#42373: libmysql can mess a connection at connect +*/ +static void test_bug42373() +{ + int rc; + MYSQL con; + MYSQL_STMT *stmt; + + DBUG_ENTER("test_bug42373"); + myheader("test_42373"); + + rc= mysql_query(mysql, "DROP PROCEDURE IF EXISTS p1"); + myquery(rc); + + rc= mysql_query(mysql, "CREATE PROCEDURE p1()" + " BEGIN" + " SELECT 1;" + " INSERT INTO t1 VALUES (2);" + "END;"); + myquery(rc); + + rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1"); + myquery(rc); + + rc= mysql_query(mysql, "CREATE TABLE t1 (a INT)"); + myquery(rc); + + /* Try with a stored procedure. */ + DIE_UNLESS(mysql_client_init(&con)); + + mysql_options(&con, MYSQL_INIT_COMMAND, "CALL p1()"); + + DIE_UNLESS(mysql_real_connect(&con, opt_host, opt_user, opt_password, + current_db, opt_port, opt_unix_socket, + CLIENT_MULTI_STATEMENTS|CLIENT_MULTI_RESULTS)); + + stmt= mysql_simple_prepare(&con, "SELECT a FROM t1"); + check_stmt(stmt); + + rc= mysql_stmt_execute(stmt); + check_execute(stmt, rc); + + rc= my_process_stmt_result(stmt); + DIE_UNLESS(rc == 1); + + mysql_stmt_close(stmt); + + /* Now try with a multi-statement. */ + DIE_UNLESS(mysql_client_init(&con)); + + mysql_options(&con, MYSQL_INIT_COMMAND, + "SELECT 3; INSERT INTO t1 VALUES (4)"); + + DIE_UNLESS(mysql_real_connect(&con, opt_host, opt_user, opt_password, + current_db, opt_port, opt_unix_socket, + CLIENT_MULTI_STATEMENTS|CLIENT_MULTI_RESULTS)); + + stmt= mysql_simple_prepare(&con, "SELECT a FROM t1"); + check_stmt(stmt); + + rc= mysql_stmt_execute(stmt); + check_execute(stmt, rc); + + rc= my_process_stmt_result(stmt); + DIE_UNLESS(rc == 2); + + mysql_stmt_close(stmt); + mysql_close(&con); + + rc= mysql_query(mysql, "DROP TABLE t1"); + myquery(rc); + + rc= mysql_query(mysql, "DROP PROCEDURE p1"); + myquery(rc); + + DBUG_VOID_RETURN; +} + + /* Read and parse arguments and MySQL options from my.cnf */ @@ -18416,6 +18497,7 @@ static struct my_tests_st my_tests[]= { #endif { "test_bug41078", test_bug41078 }, { "test_bug44495", test_bug44495 }, + { "test_bug42373", test_bug42373 }, { 0, 0 } }; From 6d0425b18df7468036a1bbf6d781d624a28e2fb3 Mon Sep 17 00:00:00 2001 From: Martin Hansson Date: Mon, 10 May 2010 09:23:23 +0200 Subject: [PATCH 034/461] Bug#50939: Loose Index Scan unduly relies on engine to remember range endpoints The Loose Index Scan optimization keeps track of a sequence of intervals. For the current interval it maintains the current interval's endpoints. But the maximum endpoint was not stored in the SQL layer; rather, it relied on the storage engine to retain this value in-between reads. By coincidence this holds for MyISAM and InnoDB. Not for the partitioning engine, however. Fixed by making the key values iterator (QUICK_RANGE_SELECT) keep track of the current maximum endpoint. This is also more efficient as we save a call through the handler API in case of open-ended intervals. The code to calculate endpoints was extracted into separate methods in QUICK_RANGE_SELECT, and it was possible to get rid of some code duplication as part of fix. --- mysql-test/r/range.result | 44 ++++++++++++++++++ mysql-test/t/range.test | 41 +++++++++++++++++ sql/opt_range.cc | 93 ++++++++++++++------------------------- sql/opt_range.h | 83 +++++++++++++++++++++++++++++++++- 4 files changed, 199 insertions(+), 62 deletions(-) diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result index 64e00521cd2..ad8aec7383a 100644 --- a/mysql-test/r/range.result +++ b/mysql-test/r/range.result @@ -1653,4 +1653,48 @@ a b 0 0 1 1 DROP TABLE t1; +# +# Bug#50939: Loose Index Scan unduly relies on engine to remember range +# endpoints +# +CREATE TABLE t1 ( +a INT, +b INT, +KEY ( a, b ) +) PARTITION BY HASH (a) PARTITIONS 1; +CREATE TABLE t2 ( +a INT, +b INT, +KEY ( a, b ) +); +INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5); +INSERT INTO t1 SELECT a + 5, b + 5 FROM t1; +INSERT INTO t1 SELECT a + 10, b + 10 FROM t1; +INSERT INTO t1 SELECT a + 20, b + 20 FROM t1; +INSERT INTO t1 SELECT a + 40, b + 40 FROM t1; +INSERT INTO t2 SELECT * FROM t1; +# plans should be identical +EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range a a 5 NULL 1 Using where; Using index for group-by +EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 range a a 5 NULL 2 Using where; Using index for group-by +FLUSH status; +SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100) GROUP BY a; +a MAX(b) +10 10 +# Should be no more than 4 reads. +SHOW status LIKE 'handler_read_key'; +Variable_name Value +Handler_read_key 4 +FLUSH status; +SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a; +a MAX(b) +10 10 +# Should be no more than 4 reads. +SHOW status LIKE 'handler_read_key'; +Variable_name Value +Handler_read_key 4 +DROP TABLE t1, t2; End of 5.1 tests diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test index 5d5ad180f1a..2d2a6f75d73 100644 --- a/mysql-test/t/range.test +++ b/mysql-test/t/range.test @@ -1313,4 +1313,45 @@ SELECT * FROM t1 FORCE INDEX (PRIMARY) DROP TABLE t1; +--echo # +--echo # Bug#50939: Loose Index Scan unduly relies on engine to remember range +--echo # endpoints +--echo # +CREATE TABLE t1 ( + a INT, + b INT, + KEY ( a, b ) +) PARTITION BY HASH (a) PARTITIONS 1; + +CREATE TABLE t2 ( + a INT, + b INT, + KEY ( a, b ) +); + +INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5); + +INSERT INTO t1 SELECT a + 5, b + 5 FROM t1; +INSERT INTO t1 SELECT a + 10, b + 10 FROM t1; +INSERT INTO t1 SELECT a + 20, b + 20 FROM t1; +INSERT INTO t1 SELECT a + 40, b + 40 FROM t1; + +INSERT INTO t2 SELECT * FROM t1; + +--echo # plans should be identical +EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a; +EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a; + +FLUSH status; +SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100) GROUP BY a; +--echo # Should be no more than 4 reads. +SHOW status LIKE 'handler_read_key'; + +FLUSH status; +SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a; +--echo # Should be no more than 4 reads. +SHOW status LIKE 'handler_read_key'; + +DROP TABLE t1, t2; + --echo End of 5.1 tests diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 34757a44c2f..5c6cb64c04f 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -8532,8 +8532,6 @@ int QUICK_RANGE_SELECT::get_next() { int result; KEY_MULTI_RANGE *mrange; - key_range *start_key; - key_range *end_key; DBUG_ENTER("QUICK_RANGE_SELECT::get_next"); DBUG_ASSERT(multi_range_length && multi_range && (cur_range >= (QUICK_RANGE**) ranges.buffer) && @@ -8573,26 +8571,9 @@ int QUICK_RANGE_SELECT::get_next() mrange_slot < mrange_end; mrange_slot++) { - start_key= &mrange_slot->start_key; - end_key= &mrange_slot->end_key; last_range= *(cur_range++); - - start_key->key= (const uchar*) last_range->min_key; - start_key->length= last_range->min_length; - start_key->flag= ((last_range->flag & NEAR_MIN) ? HA_READ_AFTER_KEY : - (last_range->flag & EQ_RANGE) ? - HA_READ_KEY_EXACT : HA_READ_KEY_OR_NEXT); - start_key->keypart_map= last_range->min_keypart_map; - end_key->key= (const uchar*) last_range->max_key; - end_key->length= last_range->max_length; - /* - We use HA_READ_AFTER_KEY here because if we are reading on a key - prefix. We want to find all keys with this prefix. - */ - end_key->flag= (last_range->flag & NEAR_MAX ? HA_READ_BEFORE_KEY : - HA_READ_AFTER_KEY); - end_key->keypart_map= last_range->max_keypart_map; - + last_range->make_min_endpoint(&mrange_slot->start_key); + last_range->make_max_endpoint(&mrange_slot->end_key); mrange_slot->range_flag= last_range->flag; } @@ -8616,49 +8597,52 @@ end: /* Get the next record with a different prefix. - SYNOPSIS - QUICK_RANGE_SELECT::get_next_prefix() - prefix_length length of cur_prefix - cur_prefix prefix of a key to be searched for + @param prefix_length length of cur_prefix + @param group_key_parts The number of key parts in the group prefix + @param cur_prefix prefix of a key to be searched for - DESCRIPTION - Each subsequent call to the method retrieves the first record that has a - prefix with length prefix_length different from cur_prefix, such that the - record with the new prefix is within the ranges described by - this->ranges. The record found is stored into the buffer pointed by - this->record. - The method is useful for GROUP-BY queries with range conditions to - discover the prefix of the next group that satisfies the range conditions. + Each subsequent call to the method retrieves the first record that has a + prefix with length prefix_length and which is different from cur_prefix, + such that the record with the new prefix is within the ranges described by + this->ranges. The record found is stored into the buffer pointed by + this->record. The method is useful for GROUP-BY queries with range + conditions to discover the prefix of the next group that satisfies the range + conditions. + + @todo - TODO This method is a modified copy of QUICK_RANGE_SELECT::get_next(), so both methods should be unified into a more general one to reduce code duplication. - RETURN - 0 on success - HA_ERR_END_OF_FILE if returned all keys - other if some error occurred + @retval 0 on success + @retval HA_ERR_END_OF_FILE if returned all keys + @retval other if some error occurred */ int QUICK_RANGE_SELECT::get_next_prefix(uint prefix_length, - key_part_map keypart_map, + uint group_key_parts, uchar *cur_prefix) { DBUG_ENTER("QUICK_RANGE_SELECT::get_next_prefix"); + const key_part_map keypart_map= make_prev_keypart_map(group_key_parts); for (;;) { int result; - key_range start_key, end_key; if (last_range) { /* Read the next record in the same range with prefix after cur_prefix. */ - DBUG_ASSERT(cur_prefix != 0); + DBUG_ASSERT(cur_prefix != NULL); result= file->index_read_map(record, cur_prefix, keypart_map, HA_READ_AFTER_KEY); - if (result || (file->compare_key(file->end_range) <= 0)) + if (result || last_range->max_keypart_map == 0) DBUG_RETURN(result); + + key_range previous_endpoint; + last_range->make_max_endpoint(&previous_endpoint, prefix_length, keypart_map); + if (file->compare_key(&previous_endpoint) <= 0) + DBUG_RETURN(0); } uint count= ranges.elements - (cur_range - (QUICK_RANGE**) ranges.buffer); @@ -8670,21 +8654,9 @@ int QUICK_RANGE_SELECT::get_next_prefix(uint prefix_length, } last_range= *(cur_range++); - start_key.key= (const uchar*) last_range->min_key; - start_key.length= min(last_range->min_length, prefix_length); - start_key.keypart_map= last_range->min_keypart_map & keypart_map; - start_key.flag= ((last_range->flag & NEAR_MIN) ? HA_READ_AFTER_KEY : - (last_range->flag & EQ_RANGE) ? - HA_READ_KEY_EXACT : HA_READ_KEY_OR_NEXT); - end_key.key= (const uchar*) last_range->max_key; - end_key.length= min(last_range->max_length, prefix_length); - end_key.keypart_map= last_range->max_keypart_map & keypart_map; - /* - We use READ_AFTER_KEY here because if we are reading on a key - prefix we want to find all keys with this prefix - */ - end_key.flag= (last_range->flag & NEAR_MAX ? HA_READ_BEFORE_KEY : - HA_READ_AFTER_KEY); + key_range start_key, end_key; + last_range->make_min_endpoint(&start_key, prefix_length, keypart_map); + last_range->make_max_endpoint(&end_key, prefix_length, keypart_map); result= file->read_range_first(last_range->min_keypart_map ? &start_key : 0, last_range->max_keypart_map ? &end_key : 0, @@ -8779,9 +8751,9 @@ bool QUICK_RANGE_SELECT::row_in_ranges() } /* - This is a hack: we inherit from QUICK_SELECT so that we can use the + This is a hack: we inherit from QUICK_RANGE_SELECT so that we can use the get_next() interface, but we have to hold a pointer to the original - QUICK_SELECT because its data are used all over the place. What + QUICK_RANGE_SELECT because its data are used all over the place. What should be done is to factor out the data that is needed into a base class (QUICK_SELECT), and then have two subclasses (_ASC and _DESC) which handle the ranges and implement the get_next() function. But @@ -10903,7 +10875,8 @@ int QUICK_GROUP_MIN_MAX_SELECT::next_prefix() { uchar *cur_prefix= seen_first_key ? group_prefix : NULL; if ((result= quick_prefix_select->get_next_prefix(group_prefix_len, - make_prev_keypart_map(group_key_parts), cur_prefix))) + group_key_parts, + cur_prefix))) DBUG_RETURN(result); seen_first_key= TRUE; } diff --git a/sql/opt_range.h b/sql/opt_range.h index 8d2ba1bb0a6..e7d8297faf8 100644 --- a/sql/opt_range.h +++ b/sql/opt_range.h @@ -65,6 +65,85 @@ class QUICK_RANGE :public Sql_alloc { dummy=0; #endif } + + /** + Initalizes a key_range object for communication with storage engine. + + This function facilitates communication with the Storage Engine API by + translating the minimum endpoint of the interval represented by this + QUICK_RANGE into an index range endpoint specifier for the engine. + + @param Pointer to an uninitialized key_range C struct. + + @param prefix_length The length of the search key prefix to be used for + lookup. + + @param keypart_map A set (bitmap) of keyparts to be used. + */ + void make_min_endpoint(key_range *kr, uint prefix_length, + key_part_map keypart_map) { + make_min_endpoint(kr); + kr->length= min(kr->length, prefix_length); + kr->keypart_map&= keypart_map; + } + + /** + Initalizes a key_range object for communication with storage engine. + + This function facilitates communication with the Storage Engine API by + translating the minimum endpoint of the interval represented by this + QUICK_RANGE into an index range endpoint specifier for the engine. + + @param Pointer to an uninitialized key_range C struct. + */ + void make_min_endpoint(key_range *kr) { + kr->key= (const uchar*)min_key; + kr->length= min_length; + kr->keypart_map= min_keypart_map; + kr->flag= ((flag & NEAR_MIN) ? HA_READ_AFTER_KEY : + (flag & EQ_RANGE) ? HA_READ_KEY_EXACT : HA_READ_KEY_OR_NEXT); + } + + /** + Initalizes a key_range object for communication with storage engine. + + This function facilitates communication with the Storage Engine API by + translating the maximum endpoint of the interval represented by this + QUICK_RANGE into an index range endpoint specifier for the engine. + + @param Pointer to an uninitialized key_range C struct. + + @param prefix_length The length of the search key prefix to be used for + lookup. + + @param keypart_map A set (bitmap) of keyparts to be used. + */ + void make_max_endpoint(key_range *kr, uint prefix_length, + key_part_map keypart_map) { + make_max_endpoint(kr); + kr->length= min(kr->length, prefix_length); + kr->keypart_map&= keypart_map; + } + + /** + Initalizes a key_range object for communication with storage engine. + + This function facilitates communication with the Storage Engine API by + translating the maximum endpoint of the interval represented by this + QUICK_RANGE into an index range endpoint specifier for the engine. + + @param Pointer to an uninitialized key_range C struct. + */ + void make_max_endpoint(key_range *kr) { + kr->key= (const uchar*)max_key; + kr->length= max_length; + kr->keypart_map= max_keypart_map; + /* + We use READ_AFTER_KEY here because if we are reading on a key + prefix we want to find all keys with this prefix + */ + kr->flag= (flag & NEAR_MAX ? HA_READ_BEFORE_KEY : HA_READ_AFTER_KEY); + } }; @@ -331,7 +410,7 @@ public: int reset(void); int get_next(); void range_end(); - int get_next_prefix(uint prefix_length, key_part_map keypart_map, + int get_next_prefix(uint prefix_length, uint group_key_parts, uchar *cur_prefix); bool reverse_sorted() { return 0; } bool unique_key_range(); @@ -611,7 +690,7 @@ private: uchar *record; /* Buffer where the next record is returned. */ uchar *tmp_record; /* Temporary storage for next_min(), next_max(). */ uchar *group_prefix; /* Key prefix consisting of the GROUP fields. */ - uint group_prefix_len; /* Length of the group prefix. */ + const uint group_prefix_len; /* Length of the group prefix. */ uint group_key_parts; /* A number of keyparts in the group prefix */ uchar *last_prefix; /* Prefix of the last group for detecting EOF. */ bool have_min; /* Specify whether we are computing */ From 6b062319d40e724c5d74b2d3dc1120ca761d4eeb Mon Sep 17 00:00:00 2001 From: Marko Makela Date: Mon, 10 May 2010 13:37:52 +0200 Subject: [PATCH 035/461] Add an innodb test case for Bug #49164. --- .../suite/innodb/r/innodb_bug49164.result | 42 +++++++++++++++++ .../suite/innodb/t/innodb_bug49164.test | 47 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 mysql-test/suite/innodb/r/innodb_bug49164.result create mode 100644 mysql-test/suite/innodb/t/innodb_bug49164.test diff --git a/mysql-test/suite/innodb/r/innodb_bug49164.result b/mysql-test/suite/innodb/r/innodb_bug49164.result new file mode 100644 index 00000000000..9456702e1d0 --- /dev/null +++ b/mysql-test/suite/innodb/r/innodb_bug49164.result @@ -0,0 +1,42 @@ +SET tx_isolation = 'READ-COMMITTED'; +CREATE TABLE bug49164 (a INT, b BIGINT, c TINYINT, PRIMARY KEY (a, b)) +ENGINE=InnoDB; +insert into bug49164 values (1,1,1), (2,2,2), (3,3,3); +begin; +update bug49164 set c=7; +select * from bug49164; +a b c +1 1 7 +2 2 7 +3 3 7 +rollback; +select * from bug49164; +a b c +1 1 1 +2 2 2 +3 3 3 +begin; +update bug49164 set c=7; +SET tx_isolation = 'READ-COMMITTED'; +begin; +select * from bug49164; +a b c +1 1 1 +2 2 2 +3 3 3 +commit; +begin; +update bug49164 set c=6 where a=1 and b=1; +rollback; +select * from bug49164; +a b c +1 1 1 +2 2 2 +3 3 3 +commit; +select * from bug49164; +a b c +1 1 6 +2 2 2 +3 3 3 +drop table bug49164; diff --git a/mysql-test/suite/innodb/t/innodb_bug49164.test b/mysql-test/suite/innodb/t/innodb_bug49164.test new file mode 100644 index 00000000000..7f1c9f4ca9c --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_bug49164.test @@ -0,0 +1,47 @@ +-- source include/have_innodb.inc + +# Bug #49164 READ-COMMITTED reports "matched: 0" on compound PK +# a duplicate of +# Bug #52663 Lost update incrementing column value under READ COMMITTED + +connect (con1,localhost,root,,); +connect (con2,localhost,root,,); + +connection con1; +SET tx_isolation = 'READ-COMMITTED'; + +CREATE TABLE bug49164 (a INT, b BIGINT, c TINYINT, PRIMARY KEY (a, b)) +ENGINE=InnoDB; + +insert into bug49164 values (1,1,1), (2,2,2), (3,3,3); + +begin; +update bug49164 set c=7; +select * from bug49164; +rollback; +select * from bug49164; +begin; +update bug49164 set c=7; + +connection con2; + +SET tx_isolation = 'READ-COMMITTED'; +begin; +select * from bug49164; +commit; +begin; +--send +update bug49164 set c=6 where a=1 and b=1; + +connection con1; +rollback; +select * from bug49164; +connection con2; +reap; +commit; +connection con1; +select * from bug49164; +connection default; +disconnect con1; +disconnect con2; +drop table bug49164; From dcdb8f82b3ba4fe2fbdd5ede4995a8d4e8d0bdaa Mon Sep 17 00:00:00 2001 From: Marko Makela Date: Mon, 10 May 2010 13:38:25 +0200 Subject: [PATCH 036/461] Add an innodb_plugin test case for Bug #49164. --- .../innodb_plugin/r/innodb_bug49164.result | 42 +++++++++++++++++ .../innodb_plugin/t/innodb_bug49164.test | 47 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug49164.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug49164.test diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug49164.result b/mysql-test/suite/innodb_plugin/r/innodb_bug49164.result new file mode 100644 index 00000000000..9456702e1d0 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug49164.result @@ -0,0 +1,42 @@ +SET tx_isolation = 'READ-COMMITTED'; +CREATE TABLE bug49164 (a INT, b BIGINT, c TINYINT, PRIMARY KEY (a, b)) +ENGINE=InnoDB; +insert into bug49164 values (1,1,1), (2,2,2), (3,3,3); +begin; +update bug49164 set c=7; +select * from bug49164; +a b c +1 1 7 +2 2 7 +3 3 7 +rollback; +select * from bug49164; +a b c +1 1 1 +2 2 2 +3 3 3 +begin; +update bug49164 set c=7; +SET tx_isolation = 'READ-COMMITTED'; +begin; +select * from bug49164; +a b c +1 1 1 +2 2 2 +3 3 3 +commit; +begin; +update bug49164 set c=6 where a=1 and b=1; +rollback; +select * from bug49164; +a b c +1 1 1 +2 2 2 +3 3 3 +commit; +select * from bug49164; +a b c +1 1 6 +2 2 2 +3 3 3 +drop table bug49164; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug49164.test b/mysql-test/suite/innodb_plugin/t/innodb_bug49164.test new file mode 100644 index 00000000000..a945bc681b6 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug49164.test @@ -0,0 +1,47 @@ +-- source include/have_innodb_plugin.inc + +# Bug #49164 READ-COMMITTED reports "matched: 0" on compound PK +# a duplicate of +# Bug #52663 Lost update incrementing column value under READ COMMITTED + +connect (con1,localhost,root,,); +connect (con2,localhost,root,,); + +connection con1; +SET tx_isolation = 'READ-COMMITTED'; + +CREATE TABLE bug49164 (a INT, b BIGINT, c TINYINT, PRIMARY KEY (a, b)) +ENGINE=InnoDB; + +insert into bug49164 values (1,1,1), (2,2,2), (3,3,3); + +begin; +update bug49164 set c=7; +select * from bug49164; +rollback; +select * from bug49164; +begin; +update bug49164 set c=7; + +connection con2; + +SET tx_isolation = 'READ-COMMITTED'; +begin; +select * from bug49164; +commit; +begin; +--send +update bug49164 set c=6 where a=1 and b=1; + +connection con1; +rollback; +select * from bug49164; +connection con2; +reap; +commit; +connection con1; +select * from bug49164; +connection default; +disconnect con1; +disconnect con2; +drop table bug49164; From 85f8f09c3e6c715e9dab78c4f541e39cb8815e65 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Mon, 10 May 2010 16:24:33 +0300 Subject: [PATCH 037/461] Make dict_index_stat_mutex[] static because it is only used in dict0dict.c --- storage/innodb_plugin/dict/dict0dict.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/innodb_plugin/dict/dict0dict.c b/storage/innodb_plugin/dict/dict0dict.c index 83438231689..8e901a3b70b 100644 --- a/storage/innodb_plugin/dict/dict0dict.c +++ b/storage/innodb_plugin/dict/dict0dict.c @@ -82,7 +82,7 @@ static char dict_ibfk[] = "_ibfk_"; /** array of mutexes protecting dict_index_t::stat_n_diff_key_vals[] */ #define DICT_INDEX_STAT_MUTEX_SIZE 32 -mutex_t dict_index_stat_mutex[DICT_INDEX_STAT_MUTEX_SIZE]; +static mutex_t dict_index_stat_mutex[DICT_INDEX_STAT_MUTEX_SIZE]; /*******************************************************************//** Tries to find column names for the index and sets the col field of the From 5acbc67f6e58496eeb8dcfc34232fdc94a856e3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 11 May 2010 13:45:00 +0300 Subject: [PATCH 038/461] Remove a stray expression. Spotted by Sunny Bains. --- storage/innodb_plugin/page/page0zip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/innodb_plugin/page/page0zip.c b/storage/innodb_plugin/page/page0zip.c index aa5e39ff04a..a64a41ea518 100644 --- a/storage/innodb_plugin/page/page0zip.c +++ b/storage/innodb_plugin/page/page0zip.c @@ -571,7 +571,7 @@ page_zip_dir_encode( /* Traverse the list of stored records in the collation order, starting from the first user record. */ - rec = page + PAGE_NEW_INFIMUM, TRUE; + rec = page + PAGE_NEW_INFIMUM; i = 0; From b7cf210256fbebc458c266d46c767e66cac61369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 11 May 2010 13:49:10 +0300 Subject: [PATCH 039/461] btr_page_split_and_insert(): Add an assertion suggested by Sunny Bains when reviewing Bug #52964. --- storage/innodb_plugin/btr/btr0btr.c | 1 + 1 file changed, 1 insertion(+) diff --git a/storage/innodb_plugin/btr/btr0btr.c b/storage/innodb_plugin/btr/btr0btr.c index 3c24eaac81e..02677e0a71c 100644 --- a/storage/innodb_plugin/btr/btr0btr.c +++ b/storage/innodb_plugin/btr/btr0btr.c @@ -2000,6 +2000,7 @@ func_start: goto insert_empty; } } else if (UNIV_UNLIKELY(insert_left)) { + ut_a(n_iterations > 0); first_rec = page_rec_get_next(page_get_infimum_rec(page)); move_limit = page_rec_get_next(btr_cur_get_rec(cursor)); } else { From 80142dd779c7d45b025417b71fd8bdbffab6840f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 11 May 2010 13:50:12 +0300 Subject: [PATCH 040/461] Do not demand that buf_page_t be fully initialized on 64-bit systems. There may be padding before buf_page_t::zip. (Bug #53307) --- storage/innodb_plugin/buf/buf0lru.c | 10 ++++++++++ storage/innodb_plugin/include/buf0buf.ic | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/storage/innodb_plugin/buf/buf0lru.c b/storage/innodb_plugin/buf/buf0lru.c index 9cfa02ba3ac..1fa7c088297 100644 --- a/storage/innodb_plugin/buf/buf0lru.c +++ b/storage/innodb_plugin/buf/buf0lru.c @@ -1393,7 +1393,12 @@ buf_LRU_free_block( ut_ad(buf_page_in_file(bpage)); ut_ad(bpage->in_LRU_list); ut_ad(!bpage->in_flush_list == !bpage->oldest_modification); +#if UNIV_WORD_SIZE == 4 + /* On 32-bit systems, there is no padding in buf_page_t. On + other systems, Valgrind could complain about uninitialized pad + bytes. */ UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage); +#endif if (!buf_page_can_relocate(bpage)) { @@ -1688,7 +1693,12 @@ buf_LRU_block_remove_hashed_page( ut_a(buf_page_get_io_fix(bpage) == BUF_IO_NONE); ut_a(bpage->buf_fix_count == 0); +#if UNIV_WORD_SIZE == 4 + /* On 32-bit systems, there is no padding in + buf_page_t. On other systems, Valgrind could complain + about uninitialized pad bytes. */ UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage); +#endif buf_LRU_remove_block(bpage); diff --git a/storage/innodb_plugin/include/buf0buf.ic b/storage/innodb_plugin/include/buf0buf.ic index 378c3590181..23db684806c 100644 --- a/storage/innodb_plugin/include/buf0buf.ic +++ b/storage/innodb_plugin/include/buf0buf.ic @@ -931,7 +931,12 @@ buf_page_hash_get( ut_a(buf_page_in_file(bpage)); ut_ad(bpage->in_page_hash); ut_ad(!bpage->in_zip_hash); +#if UNIV_WORD_SIZE == 4 + /* On 32-bit systems, there is no padding in + buf_page_t. On other systems, Valgrind could complain + about uninitialized pad bytes. */ UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage); +#endif } return(bpage); From 703309a3a8dcc5ca8a2830d421d694e5241cd656 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Tue, 11 May 2010 13:58:28 +0300 Subject: [PATCH 041/461] Raise InnoDB Plugin version from 1.0.8 to 1.0.9. 1.0.8 will be released in MySQL 5.1.47, so 1.0.9 will be released in MySQL 5.1.48 --- storage/innodb_plugin/include/univ.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/innodb_plugin/include/univ.i b/storage/innodb_plugin/include/univ.i index 2aa27245d5f..8fb2505a791 100644 --- a/storage/innodb_plugin/include/univ.i +++ b/storage/innodb_plugin/include/univ.i @@ -46,7 +46,7 @@ Created 1/20/1994 Heikki Tuuri #define INNODB_VERSION_MAJOR 1 #define INNODB_VERSION_MINOR 0 -#define INNODB_VERSION_BUGFIX 8 +#define INNODB_VERSION_BUGFIX 9 /* The following is the InnoDB version as shown in SELECT plugin_version FROM information_schema.plugins; From 79e60f0a40d525fd1bdf924b4fef830e2aacb858 Mon Sep 17 00:00:00 2001 From: Martin Hansson Date: Tue, 11 May 2010 16:21:05 +0200 Subject: [PATCH 042/461] Bug#48157: crash in Item_field::used_tables MySQL handles the join syntax "JOIN ... USING( field1, ... )" and natural joins by building the same parse tree as a corresponding join with an "ON t1.field1 = t2.field1 ..." expression would produce. This parse tree was not cleaned up properly in the following scenario. If a thread tries to lock some tables and finds that the tables were dropped and re-created while waiting for the lock, it cleans up column references in the statement by means a per-statement free list. But if the statement was part of a stored procedure, column references on the stored procedure's free list weren't cleaned up and thus contained pointers to freed objects. Fixed by adding a call to clean up the current prepared statement's free list. This is a backport from MySQL 5.1 --- sql/item.h | 7 +++++++ sql/sql_parse.cc | 6 ++++-- sql/sql_update.cc | 3 ++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/sql/item.h b/sql/item.h index 22eb0c08e2d..31d501dc5c3 100644 --- a/sql/item.h +++ b/sql/item.h @@ -470,6 +470,13 @@ public: my_string name; /* Name from select */ /* Original item name (if it was renamed)*/ my_string orig_name; + /** + Intrusive list pointer for free list. If not null, points to the next + Item on some Query_arena's free list. For instance, stored procedures + have their own Query_arena's. + + @see Query_arena::free_list + */ Item *next; uint32 max_length; uint name_length; /* Length of name */ diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 807d6c09a46..d0a4fff442f 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1411,8 +1411,10 @@ end: } - /* This works because items are allocated with sql_alloc() */ - +/** + This works because items are allocated with sql_alloc(). + @note The function also handles null pointers (empty list). +*/ void cleanup_items(Item *item) { DBUG_ENTER("cleanup_items"); diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 35ae0febcec..8d666c771ec 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -908,8 +908,9 @@ reopen_tables: items from 'fields' list, so the cleanup above is necessary to. */ cleanup_items(thd->free_list); - + cleanup_items(thd->stmt_arena->free_list); close_tables_for_reopen(thd, &table_list); + goto reopen_tables; } From 80323e52009ed9db7d014d994c15ce5902f2662d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 11 May 2010 19:58:45 +0300 Subject: [PATCH 043/461] Fix sys_vars.tx_isolation_func.test, which was broken in revno 3432 when making READ UNCOMMITTED lock as little as READ COMMITTED. --- .../suite/sys_vars/r/tx_isolation_func.result | 25 ++++++++++++++++--- .../suite/sys_vars/t/tx_isolation_func.test | 3 --- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/mysql-test/suite/sys_vars/r/tx_isolation_func.result b/mysql-test/suite/sys_vars/r/tx_isolation_func.result index 2242525f14b..6b4c990c71c 100644 --- a/mysql-test/suite/sys_vars/r/tx_isolation_func.result +++ b/mysql-test/suite/sys_vars/r/tx_isolation_func.result @@ -95,10 +95,7 @@ a b 22 10 24 10 INSERT INTO t1 VALUES(23, 23); -ERROR HY000: Lock wait timeout exceeded; try restarting transaction INSERT INTO t1 VALUES(25, 25); -ERROR HY000: Lock wait timeout exceeded; try restarting transaction -Bug: Only even rows are being locked, error 1205 should'nt have occured SELECT * FROM t1; a b 2 10 @@ -109,7 +106,9 @@ a b 18 10 20 10 22 10 +23 23 24 10 +25 25 COMMIT; ** Connection con0 ** COMMIT; @@ -144,7 +143,9 @@ a b 18 10 20 10 22 10 +23 23 24 10 +25 25 INSERT INTO t1 VALUES(5, 5); INSERT INTO t1 VALUES(7, 7); SELECT * FROM t1; @@ -159,7 +160,9 @@ a b 18 10 20 10 22 10 +23 23 24 10 +25 25 COMMIT; ** Connection con0 ** COMMIT; @@ -196,7 +199,9 @@ a b 18 11 20 11 22 11 +23 23 24 11 +25 25 INSERT INTO t1 VALUES(9, 9); ERROR HY000: Lock wait timeout exceeded; try restarting transaction INSERT INTO t1 VALUES(13, 13); @@ -214,7 +219,9 @@ a b 18 11 20 11 22 11 +23 23 24 11 +25 25 COMMIT; ** Connection con0 ** COMMIT; @@ -225,6 +232,8 @@ SELECT * FROM t1 WHERE a IN (2,4,6,8,10,12,14,16,18,20,22,24,26) = 0 FOR UPDATE; a b 5 5 7 7 +23 23 +25 25 UPDATE t1 SET b = 13 WHERE a IN (2,4,6,8,10,12,14,16,18,20,22,24,26) = 0; ** Connection con1 ** START TRANSACTION; @@ -240,7 +249,9 @@ a b 18 12 20 12 22 12 +23 23 24 12 +25 25 INSERT INTO t1 VALUES(9, 9); ERROR HY000: Lock wait timeout exceeded; try restarting transaction INSERT INTO t1 VALUES(13, 13); @@ -258,7 +269,9 @@ a b 18 12 20 12 22 12 +23 23 24 12 +25 25 COMMIT; ** Connection con0 ** COMMIT; @@ -273,7 +286,9 @@ a b 18 12 20 12 22 12 +23 13 24 12 +25 13 UPDATE t1 SET b = 14 WHERE a IN (2,4,6,8) = 0; ** Connection con1 ** START TRANSACTION; @@ -289,7 +304,9 @@ a b 18 12 20 12 22 12 +23 13 24 12 +25 13 INSERT INTO t1 VALUES(9, 9); ERROR HY000: Lock wait timeout exceeded; try restarting transaction INSERT INTO t1 VALUES(13, 13); @@ -307,7 +324,9 @@ a b 18 12 20 12 22 12 +23 13 24 12 +25 13 COMMIT; ** Connection con0 ** COMMIT; diff --git a/mysql-test/suite/sys_vars/t/tx_isolation_func.test b/mysql-test/suite/sys_vars/t/tx_isolation_func.test index 1fd2e323db8..7072de6b086 100644 --- a/mysql-test/suite/sys_vars/t/tx_isolation_func.test +++ b/mysql-test/suite/sys_vars/t/tx_isolation_func.test @@ -134,12 +134,9 @@ START TRANSACTION; SELECT * FROM t1; ---error ER_LOCK_WAIT_TIMEOUT INSERT INTO t1 VALUES(23, 23); ---error ER_LOCK_WAIT_TIMEOUT INSERT INTO t1 VALUES(25, 25); ---echo Bug: Only even rows are being locked, error 1205 should'nt have occured SELECT * FROM t1; From 2c889b9dbce849af72933af437c707f5e463c037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 12 May 2010 08:39:25 +0300 Subject: [PATCH 044/461] row_merge_drop_temp_indexes(): Do not reference freed memory. (Bug #53471) --- storage/innodb_plugin/row/row0merge.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/storage/innodb_plugin/row/row0merge.c b/storage/innodb_plugin/row/row0merge.c index 832d29df710..f3a695071d3 100644 --- a/storage/innodb_plugin/row/row0merge.c +++ b/storage/innodb_plugin/row/row0merge.c @@ -2096,9 +2096,12 @@ row_merge_drop_temp_indexes(void) if (table) { dict_index_t* index; + dict_index_t* next_index; for (index = dict_table_get_first_index(table); - index; index = dict_table_get_next_index(index)) { + index; index = next_index) { + + next_index = dict_table_get_next_index(index); if (*index->name == TEMP_INDEX_PREFIX) { row_merge_drop_index(index, table, trx); From 96853eed5444f6b0f7f1997ed9162a23be6d3fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 12 May 2010 09:09:22 +0300 Subject: [PATCH 045/461] Document recent fixes in ChangeLog. --- storage/innodb_plugin/ChangeLog | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 9b8709c4e8e..36514baa06a 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,19 @@ +2010-05-12 The InnoDB Team + + * row/row0merge.c: + Fix Bug#53471 row_merge_drop_temp_indexes() refers freed memory, SEGVs + +2010-05-11 The InnoDB Team + + * mysql-test/innodb_bug53290.test, mysql-test/innodb_bug53290.result, + include/rem0cmp.h, rem/rem0cmp.c, row/row0merge.c: + Fix Bug#53290 wrong duplicate key error when adding a unique index + via fast alter table + +2010-05-11 The InnoDB Team + * buf/buf0lru.c, include/buf0buf.ic: + Fix Bug#53307 valgrind: warnings in main.partition_innodb_plugin + 2010-05-05 The InnoDB Team * row/row0merge.c: From 29c8c152b26398ce7ad84a9794f229b10ad9d410 Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Wed, 12 May 2010 12:29:02 +0200 Subject: [PATCH 046/461] BUG#50410: rpl_ndb tests should run with binlog_format=row Problem: The rpl_ndb did not set binlog_format explicitly. Since the default is binlog_format=statement, it means that the suite ran with that. ndb does not support binlog_format=statement, and many tests were skipped because they sourced include/have_binlog_format_row_or_mixed.inc Fix: set binlog_format=row explicitly in the configuration file for the rpl_ndb suite. Makefile.am: Removed duplicate run of rpl_ndb suite with binlog_format=row. Now that rpl_ndb is run with binlog_format=row by default, this run that explicitly changes to binlog_format=row is not needed, because it is covered by the following run. mysql-test/suite/rpl_ndb/my.cnf: cluster only supports binlog_format=row. mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result: updated result file mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test: This test is supposed to use binlog_format=STATEMENT on master. It uses innodb on master, so statement format is supported. --- Makefile.am | 4 ++-- mysql-test/suite/rpl_ndb/my.cnf | 4 ++++ mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result | 1 + mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test | 4 +++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 821f7e4fd0f..7953b81fb7b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -147,8 +147,8 @@ test-bt: -if [ -e bin/ndbd -o -e storage/ndb/src/kernel/ndbd ] ; then \ cd mysql-test ; \ MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --comment=ndb+rpl_ndb+ps --force --timer \ - --ps-protocol --mysqld=--binlog-format=row --suite=ndb,rpl_ndb ; \ + @PERL@ ./mysql-test-run.pl --comment=ndb+ps --force --timer \ + --ps-protocol --mysqld=--binlog-format=row --suite=ndb ; \ MTR_BUILD_THREAD=auto \ @PERL@ ./mysql-test-run.pl --comment=ndb --force --timer \ --with-ndbcluster-only ; \ diff --git a/mysql-test/suite/rpl_ndb/my.cnf b/mysql-test/suite/rpl_ndb/my.cnf index 58fec36eedd..426608fc7fa 100644 --- a/mysql-test/suite/rpl_ndb/my.cnf +++ b/mysql-test/suite/rpl_ndb/my.cnf @@ -18,6 +18,8 @@ mysqld= ndbcluster # Turn on bin logging log-bin= master-bin +# Cluster only supports row format +binlog-format= row [mysqld.1.1] @@ -41,6 +43,8 @@ master-connect-retry= 1 log-bin= slave-bin relay-log= slave-relay-bin +# Cluster only supports row format +binlog-format= row init-rpl-role= slave log-slave-updates diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result index 675a69d17a4..5327bfde7e0 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result @@ -4,6 +4,7 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; +SET binlog_format = STATEMENT; *** Test 1 *** diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test index bf7f1eed7b2..7c65e04717a 100644 --- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test +++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test @@ -27,9 +27,11 @@ --disable_query_log --source include/have_ndb.inc --source include/have_innodb.inc ---source include/have_binlog_format_statement.inc --source include/ndb_master-slave.inc --enable_query_log + +# statement format is supported because master uses innodb +SET binlog_format = STATEMENT; let $off_set = 6; let $rpl_format = 'SBR'; --source extra/rpl_tests/rpl_ndb_apply_status.test From bfdae6402c293e863a517b537c23702186fde73f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 12 May 2010 13:42:12 +0300 Subject: [PATCH 047/461] ha_innobase::add_index(): Reset trx->error_state in error handling. (Bug #53591) --- .../innodb_plugin/r/innodb_bug53591.result | 16 ++++++++++++++ .../innodb_plugin/t/innodb_bug53591.test | 22 +++++++++++++++++++ .../innodb_plugin/handler/handler0alter.cc | 2 ++ 3 files changed, 40 insertions(+) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug53591.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug53591.test diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug53591.result b/mysql-test/suite/innodb_plugin/r/innodb_bug53591.result new file mode 100644 index 00000000000..1f05b6d2a57 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug53591.result @@ -0,0 +1,16 @@ +SET GLOBAL innodb_file_format='Barracuda'; +SET GLOBAL innodb_file_per_table=on; +set old_alter_table=0; +CREATE TABLE bug53591(a text charset utf8 not null) +ENGINE=InnoDB KEY_BLOCK_SIZE=1; +ALTER TABLE bug53591 ADD PRIMARY KEY(a(220)); +ERROR HY000: Too big row +SHOW WARNINGS; +Level Code Message +Error 139 Too big row +Error 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs +Error 1030 Got error 139 from storage engine +DROP TABLE bug53591; +SET GLOBAL innodb_file_format=Antelope; +SET GLOBAL innodb_file_format_check=Antelope; +SET GLOBAL innodb_file_per_table=0; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53591.test b/mysql-test/suite/innodb_plugin/t/innodb_bug53591.test new file mode 100644 index 00000000000..760b4630383 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53591.test @@ -0,0 +1,22 @@ +-- source include/have_innodb_plugin.inc + +let $file_format=`select @@innodb_file_format`; +let $file_format_check=`select @@innodb_file_format_check`; +let $file_per_table=`select @@innodb_file_per_table`; + +SET GLOBAL innodb_file_format='Barracuda'; +SET GLOBAL innodb_file_per_table=on; + +set old_alter_table=0; + +CREATE TABLE bug53591(a text charset utf8 not null) +ENGINE=InnoDB KEY_BLOCK_SIZE=1; +-- error 139 +ALTER TABLE bug53591 ADD PRIMARY KEY(a(220)); +SHOW WARNINGS; + +DROP TABLE bug53591; + +EVAL SET GLOBAL innodb_file_format=$file_format; +EVAL SET GLOBAL innodb_file_format_check=$file_format_check; +EVAL SET GLOBAL innodb_file_per_table=$file_per_table; diff --git a/storage/innodb_plugin/handler/handler0alter.cc b/storage/innodb_plugin/handler/handler0alter.cc index e474c318c58..e936bfafa0e 100644 --- a/storage/innodb_plugin/handler/handler0alter.cc +++ b/storage/innodb_plugin/handler/handler0alter.cc @@ -894,6 +894,8 @@ error: prebuilt->trx->error_info = NULL; /* fall through */ default: + trx->error_state = DB_SUCCESS; + if (new_primary) { if (indexed_table != innodb_table) { row_merge_drop_table(trx, indexed_table); From 42a07d5040d21f59d91f427edb2ec304089306df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 12 May 2010 13:46:03 +0300 Subject: [PATCH 048/461] Document the Bug #53591 fix in the ChangeLog. --- storage/innodb_plugin/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 36514baa06a..169f859b8fd 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-05-12 The InnoDB Team + + * handler/handler0alter.cc: + Fix Bug#53591 crash with fast alter table and text/blob prefix + primary key + 2010-05-12 The InnoDB Team * row/row0merge.c: From 330864fcda68a90995194576d4ad1ebec1b955e1 Mon Sep 17 00:00:00 2001 From: Staale Smedseng Date: Wed, 12 May 2010 13:19:12 +0200 Subject: [PATCH 049/461] Bug #49756 Rows_examined is always 0 in the slow query log for update statements Only SELECT statements report any examined rows in the slow log. Slow UPDATE, DELETE and INSERT statements report 0 rows examined, unless the statement has a condition including a SELECT substatement. This patch adds counting of examined rows for the UPDATE and DELETE statements. An INSERT ... VALUES statement will still not report any rows as examined. sql/sql_class.h: Added more docs for THD::examined_row_count. sql/sql_delete.cc: Add incrementing thd->examined_row_count. sql/sql_update.cc: Add incrementing thd->examined_row_count. --- mysql-test/r/log_state.result | 33 ++++++++++++++++++++++++++++++ mysql-test/t/log_state.test | 38 +++++++++++++++++++++++++++++++++++ sql/sql_class.h | 11 ++++++++-- sql/sql_delete.cc | 2 ++ sql/sql_update.cc | 3 +++ 5 files changed, 85 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/log_state.result b/mysql-test/r/log_state.result index 4ce678e37aa..654f9d127d3 100644 --- a/mysql-test/r/log_state.result +++ b/mysql-test/r/log_state.result @@ -308,8 +308,41 @@ SET @@global.general_log = @old_general_log; SET @@global.general_log_file = @old_general_log_file; SET @@global.slow_query_log = @old_slow_query_log; SET @@global.slow_query_log_file = @old_slow_query_log_file; +# +# Bug #49756 Rows_examined is always 0 in the slow query log +# for update statements +# +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = "TABLE"; +SET GLOBAL slow_query_log = ON; +SET GLOBAL long_query_time = 0.001; +TRUNCATE TABLE mysql.slow_log; +CREATE TABLE t1 (a INT); +CREATE TABLE t2 (b INT, PRIMARY KEY (b)); +INSERT INTO t2 VALUES (3),(4); +INSERT INTO t1 VALUES (1+sleep(.01)),(2); +INSERT INTO t1 SELECT b+sleep(.01) from t2; +UPDATE t1 SET a=a+sleep(.01) WHERE a>2; +UPDATE t1 SET a=a+sleep(.01) ORDER BY a DESC; +UPDATE t2 set b=b+sleep(.01) limit 1; +UPDATE t1 SET a=a+sleep(.01) WHERE a in (SELECT b from t2); +DELETE FROM t1 WHERE a=a+sleep(.01) ORDER BY a LIMIT 2; +SELECT rows_examined,sql_text FROM mysql.slow_log; +rows_examined sql_text +0 INSERT INTO t1 VALUES (1+sleep(.01)),(2) +2 INSERT INTO t1 SELECT b+sleep(.01) from t2 +4 UPDATE t1 SET a=a+sleep(.01) WHERE a>2 +8 UPDATE t1 SET a=a+sleep(.01) ORDER BY a DESC +2 UPDATE t2 set b=b+sleep(.01) limit 1 +4 UPDATE t1 SET a=a+sleep(.01) WHERE a in (SELECT b from t2) +6 DELETE FROM t1 WHERE a=a+sleep(.01) ORDER BY a LIMIT 2 +DROP TABLE t1,t2; +TRUNCATE TABLE mysql.slow_log; +# end of bug#49756 End of 5.1 tests # Close connection con1 +SET GLOBAL long_query_time = DEFAULT; +SET GLOBAL log_output = @old_log_output; SET global general_log = @old_general_log; SET global general_log_file = @old_general_log_file; SET global slow_query_log = @old_slow_query_log; diff --git a/mysql-test/t/log_state.test b/mysql-test/t/log_state.test index e40dd1e3491..05e17dc9fa7 100644 --- a/mysql-test/t/log_state.test +++ b/mysql-test/t/log_state.test @@ -362,6 +362,42 @@ if(!$fixed_bug38124) } +########################################################################### + +--echo # +--echo # Bug #49756 Rows_examined is always 0 in the slow query log +--echo # for update statements +--echo # + +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = "TABLE"; +SET GLOBAL slow_query_log = ON; +SET GLOBAL long_query_time = 0.001; + +# clear slow_log of any residual slow queries +TRUNCATE TABLE mysql.slow_log; +CREATE TABLE t1 (a INT); +CREATE TABLE t2 (b INT, PRIMARY KEY (b)); +INSERT INTO t2 VALUES (3),(4); + +connect (con2,localhost,root,,); +INSERT INTO t1 VALUES (1+sleep(.01)),(2); +INSERT INTO t1 SELECT b+sleep(.01) from t2; +UPDATE t1 SET a=a+sleep(.01) WHERE a>2; +UPDATE t1 SET a=a+sleep(.01) ORDER BY a DESC; +UPDATE t2 set b=b+sleep(.01) limit 1; +UPDATE t1 SET a=a+sleep(.01) WHERE a in (SELECT b from t2); +DELETE FROM t1 WHERE a=a+sleep(.01) ORDER BY a LIMIT 2; + +SELECT rows_examined,sql_text FROM mysql.slow_log; +disconnect con2; +connection default; +DROP TABLE t1,t2; +TRUNCATE TABLE mysql.slow_log; + +--echo # end of bug#49756 + + --echo End of 5.1 tests --enable_ps_protocol @@ -376,6 +412,8 @@ disconnect con1; connection default; # Reset global system variables to initial values if forgotten somewhere above. +SET GLOBAL long_query_time = DEFAULT; +SET GLOBAL log_output = @old_log_output; SET global general_log = @old_general_log; SET global general_log_file = @old_general_log_file; SET global slow_query_log = @old_slow_query_log; diff --git a/sql/sql_class.h b/sql/sql_class.h index 4d0552c5b9d..bd3cf8bc401 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1716,8 +1716,15 @@ public: */ ha_rows sent_row_count; - /* - number of rows we read, sent or not, including in create_sort_index() + /** + Number of rows read and/or evaluated for a statement. Used for + slow log reporting. + + An examined row is defined as a row that is read and/or evaluated + according to a statement condition, including in + create_sort_index(). Rows may be counted more than once, e.g., a + statement including ORDER BY could possibly evaluate the row in + filesort() before reading it for e.g. update. */ ha_rows examined_row_count; diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 7e91a37257b..cc29b6f1b6b 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -248,6 +248,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, free_underlaid_joins(thd, &thd->lex->select_lex); DBUG_RETURN(TRUE); } + thd->examined_row_count+= examined_rows; /* Filesort has already found and selected the rows we want to delete, so we don't need the where clause @@ -304,6 +305,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, while (!(error=info.read_record(&info)) && !thd->killed && ! thd->is_error()) { + thd->examined_row_count++; // thd->is_error() is tested to disallow delete row on error if (!(select && select->skip_record())&& ! thd->is_error() ) { diff --git a/sql/sql_update.cc b/sql/sql_update.cc index d8141deba63..69f3a29e923 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -425,6 +425,7 @@ int mysql_update(THD *thd, { goto err; } + thd->examined_row_count+= examined_rows; /* Filesort has already found and selected the rows we want to update, so we don't need the where clause @@ -471,6 +472,7 @@ int mysql_update(THD *thd, while (!(error=info.read_record(&info)) && !thd->killed) { + thd->examined_row_count++; if (!(select && select->skip_record())) { if (table->file->was_semi_consistent_read()) @@ -577,6 +579,7 @@ int mysql_update(THD *thd, while (!(error=info.read_record(&info)) && !thd->killed) { + thd->examined_row_count++; if (!(select && select->skip_record())) { if (table->file->was_semi_consistent_read()) From feb03a82f22349bdef2c931cf712eb4ac90046b4 Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Wed, 12 May 2010 20:10:33 +0400 Subject: [PATCH 050/461] Fix for bug#52051: Aggregate functions incorrectly returns NULL from outer join query Problem: optimising MIN/MAX() queries without GROUP BY clause by replacing the aggregate expression with a constant, we may set it to NULL disregarding the fact that there may be outer joins involved. Fix: don't replace MIN/MAX() with NULL if there're outer joins. Note: the fix itself is just - if (!count) + if (!count && !outer_tables) set to NULL The rest of the patch eliminates repeated code to improve speed and for easy maintenance of the code. mysql-test/r/group_by.result: Fix for bug#52051: Aggregate functions incorrectly returns NULL from outer join query - test result. mysql-test/t/group_by.test: Fix for bug#52051: Aggregate functions incorrectly returns NULL from outer join query - test case. sql/opt_sum.cc: Fix for bug#52051: Aggregate functions incorrectly returns NULL from outer join query - optimising MIN/MAX() queries without GROUP BY clause by replacing them with a constant, take into account that there're may be outer joins involved. - repeated code for MIN/MAX optimization in the opt_sum_query() eliminated by introducing new functions that read MIN/MAX values using index and combining MIN/MAX cases to one. --- mysql-test/r/group_by.result | 20 +++ mysql-test/t/group_by.test | 15 ++ sql/opt_sum.cc | 296 ++++++++++++++++------------------- 3 files changed, 170 insertions(+), 161 deletions(-) diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result index 90503300065..645dd460735 100644 --- a/mysql-test/r/group_by.result +++ b/mysql-test/r/group_by.result @@ -1790,4 +1790,24 @@ aa b COUNT( b) 1 10 1 DROP TABLE t1, t2; # +# Bug#52051: Aggregate functions incorrectly returns NULL from outer +# join query +# +CREATE TABLE t1 (a INT PRIMARY KEY); +CREATE TABLE t2 (a INT PRIMARY KEY); +INSERT INTO t2 VALUES (1), (2); +EXPLAIN SELECT MIN(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away +SELECT MIN(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a; +MIN(t2.a) +1 +EXPLAIN SELECT MAX(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away +SELECT MAX(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a; +MAX(t2.a) +2 +DROP TABLE t1, t2; +# # End of 5.1 tests diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test index e6ea5ecc7f6..c5b27ee1a62 100644 --- a/mysql-test/t/group_by.test +++ b/mysql-test/t/group_by.test @@ -1205,6 +1205,21 @@ SELECT (SELECT t2.a FROM t2 WHERE t2.a = t1.a) aa, b, COUNT( b) DROP TABLE t1, t2; + +--echo # +--echo # Bug#52051: Aggregate functions incorrectly returns NULL from outer +--echo # join query +--echo # +CREATE TABLE t1 (a INT PRIMARY KEY); +CREATE TABLE t2 (a INT PRIMARY KEY); +INSERT INTO t2 VALUES (1), (2); +EXPLAIN SELECT MIN(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a; +SELECT MIN(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a; +EXPLAIN SELECT MAX(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a; +SELECT MAX(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a; +DROP TABLE t1, t2; + + --echo # --echo # End of 5.1 tests diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index 8a3fe6c3ae8..666485fcfa2 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -88,6 +88,123 @@ static ulonglong get_exact_record_count(TABLE_LIST *tables) } +/** + Use index to read MIN(field) value. + + @param table Table object + @param ref Reference to the structure where we store the key value + @item_field Field used in MIN() + @range_fl Whether range endpoint is strict less than + @prefix_len Length of common key part for the range + + @retval + 0 No errors + HA_ERR_... Otherwise +*/ + +static int get_index_min_value(TABLE *table, TABLE_REF *ref, + Item_field *item_field, uint range_fl, + uint prefix_len) +{ + int error; + + if (!ref->key_length) + error= table->file->index_first(table->record[0]); + else + { + /* + Use index to replace MIN/MAX functions with their values + according to the following rules: + + 1) Insert the minimum non-null values where the WHERE clause still + matches, or + 2) a NULL value if there are only NULL values for key_part_k. + 3) Fail, producing a row of nulls + + Implementation: Read the smallest value using the search key. If + the interval is open, read the next value after the search + key. If read fails, and we're looking for a MIN() value for a + nullable column, test if there is an exact match for the key. + */ + if (!(range_fl & NEAR_MIN)) + /* + Closed interval: Either The MIN argument is non-nullable, or + we have a >= predicate for the MIN argument. + */ + error= table->file->index_read_map(table->record[0], + ref->key_buff, + make_prev_keypart_map(ref->key_parts), + HA_READ_KEY_OR_NEXT); + else + { + /* + Open interval: There are two cases: + 1) We have only MIN() and the argument column is nullable, or + 2) there is a > predicate on it, nullability is irrelevant. + We need to scan the next bigger record first. + */ + error= table->file->index_read_map(table->record[0], + ref->key_buff, + make_prev_keypart_map(ref->key_parts), + HA_READ_AFTER_KEY); + /* + If the found record is outside the group formed by the search + prefix, or there is no such record at all, check if all + records in that group have NULL in the MIN argument + column. If that is the case return that NULL. + + Check if case 1 from above holds. If it does, we should read + the skipped tuple. + */ + if (item_field->field->real_maybe_null() && + ref->key_buff[prefix_len] == 1 && + /* + Last keypart (i.e. the argument to MIN) is set to NULL by + find_key_for_maxmin only if all other keyparts are bound + to constants in a conjunction of equalities. Hence, we + can detect this by checking only if the last keypart is + NULL. + */ + (error == HA_ERR_KEY_NOT_FOUND || + key_cmp_if_same(table, ref->key_buff, ref->key, prefix_len))) + { + DBUG_ASSERT(item_field->field->real_maybe_null()); + error= table->file->index_read_map(table->record[0], + ref->key_buff, + make_prev_keypart_map(ref->key_parts), + HA_READ_KEY_EXACT); + } + } + } + return error; +} + + +/** + Use index to read MAX(field) value. + + @param table Table object + @param ref Reference to the structure where we store the key value + @range_fl Whether range endpoint is strict greater than + + @retval + 0 No errors + HA_ERR_... Otherwise +*/ + +static int get_index_max_value(TABLE *table, TABLE_REF *ref, uint range_fl) +{ + return (ref->key_length ? + table->file->index_read_map(table->record[0], ref->key_buff, + make_prev_keypart_map(ref->key_parts), + range_fl & NEAR_MAX ? + HA_READ_BEFORE_KEY : + HA_READ_PREFIX_LAST_OR_PREV) : + table->file->index_last(table->record[0])); +} + + + /** Substitutes constants for some COUNT(), MIN() and MAX() functions. @@ -220,9 +337,11 @@ int opt_sum_query(TABLE_LIST *tables, List &all_fields,COND *conds) const_result= 0; break; case Item_sum::MIN_FUNC: + case Item_sum::MAX_FUNC: { + int is_max= test(item_sum->sum_func() == Item_sum::MAX_FUNC); /* - If MIN(expr) is the first part of a key or if all previous + If MIN/MAX(expr) is the first part of a key or if all previous parts of the key is found in the COND, then we can use indexes to find the key. */ @@ -241,89 +360,26 @@ int opt_sum_query(TABLE_LIST *tables, List &all_fields,COND *conds) Look for a partial key that can be used for optimization. If we succeed, ref.key_length will contain the length of this key, while prefix_len will contain the length of - the beginning of this key without field used in MIN(). + the beginning of this key without field used in MIN/MAX(). Type of range for the key part for this field will be returned in range_fl. */ if (table->file->inited || (outer_tables & table->map) || - !find_key_for_maxmin(0, &ref, item_field->field, conds, + !find_key_for_maxmin(is_max, &ref, item_field->field, conds, &range_fl, &prefix_len)) { const_result= 0; break; } - error= table->file->ha_index_init((uint) ref.key, 1); + table->file->ha_index_init((uint) ref.key, 1); - if (!ref.key_length) - error= table->file->index_first(table->record[0]); - else - { - /* - Use index to replace MIN/MAX functions with their values - according to the following rules: - - 1) Insert the minimum non-null values where the WHERE clause still - matches, or - 2) a NULL value if there are only NULL values for key_part_k. - 3) Fail, producing a row of nulls + error= is_max ? + get_index_max_value(table, &ref, range_fl) : + get_index_min_value(table, &ref, item_field, range_fl, + prefix_len); - Implementation: Read the smallest value using the search key. If - the interval is open, read the next value after the search - key. If read fails, and we're looking for a MIN() value for a - nullable column, test if there is an exact match for the key. - */ - if (!(range_fl & NEAR_MIN)) - /* - Closed interval: Either The MIN argument is non-nullable, or - we have a >= predicate for the MIN argument. - */ - error= table->file->index_read_map(table->record[0], - ref.key_buff, - make_prev_keypart_map(ref.key_parts), - HA_READ_KEY_OR_NEXT); - else - { - /* - Open interval: There are two cases: - 1) We have only MIN() and the argument column is nullable, or - 2) there is a > predicate on it, nullability is irrelevant. - We need to scan the next bigger record first. - */ - error= table->file->index_read_map(table->record[0], - ref.key_buff, - make_prev_keypart_map(ref.key_parts), - HA_READ_AFTER_KEY); - /* - If the found record is outside the group formed by the search - prefix, or there is no such record at all, check if all - records in that group have NULL in the MIN argument - column. If that is the case return that NULL. - - Check if case 1 from above holds. If it does, we should read - the skipped tuple. - */ - if (item_field->field->real_maybe_null() && - ref.key_buff[prefix_len] == 1 && - /* - Last keypart (i.e. the argument to MIN) is set to NULL by - find_key_for_maxmin only if all other keyparts are bound - to constants in a conjunction of equalities. Hence, we - can detect this by checking only if the last keypart is - NULL. - */ - (error == HA_ERR_KEY_NOT_FOUND || - key_cmp_if_same(table, ref.key_buff, ref.key, prefix_len))) - { - DBUG_ASSERT(item_field->field->real_maybe_null()); - error= table->file->index_read_map(table->record[0], - ref.key_buff, - make_prev_keypart_map(ref.key_parts), - HA_READ_KEY_EXACT); - } - } - } /* Verify that the read tuple indeed matches the search key */ - if (!error && reckey_in_range(0, &ref, item_field->field, + if (!error && reckey_in_range(is_max, &ref, item_field->field, conds, range_fl, prefix_len)) error= HA_ERR_KEY_NOT_FOUND; table->set_keyread(FALSE); @@ -352,98 +408,16 @@ int opt_sum_query(TABLE_LIST *tables, List &all_fields,COND *conds) const_result= 0; break; } - if (!count) - { - /* If count == 0, then we know that is_exact_count == TRUE. */ - ((Item_sum_min*) item_sum)->clear(); /* Set to NULL. */ - } - else - ((Item_sum_min*) item_sum)->reset(); /* Set to the constant value. */ - ((Item_sum_min*) item_sum)->make_const(); - recalc_const_item= 1; - break; - } - case Item_sum::MAX_FUNC: - { /* - If MAX(expr) is the first part of a key or if all previous - parts of the key is found in the COND, then we can use - indexes to find the key. + If count == 0 (so is_exact_count == TRUE) and + there're no outer joins, set to NULL, + otherwise set to the constant value. */ - Item *expr=item_sum->get_arg(0); - if (expr->real_item()->type() == Item::FIELD_ITEM) - { - uchar key_buff[MAX_KEY_LENGTH]; - TABLE_REF ref; - uint range_fl, prefix_len; - - ref.key_buff= key_buff; - Item_field *item_field= (Item_field*) (expr->real_item()); - TABLE *table= item_field->field->table; - - /* - Look for a partial key that can be used for optimization. - If we succeed, ref.key_length will contain the length of - this key, while prefix_len will contain the length of - the beginning of this key without field used in MAX(). - Type of range for the key part for this field will be - returned in range_fl. - */ - if (table->file->inited || (outer_tables & table->map) || - !find_key_for_maxmin(1, &ref, item_field->field, conds, - &range_fl, &prefix_len)) - { - const_result= 0; - break; - } - error= table->file->ha_index_init((uint) ref.key, 1); - - if (!ref.key_length) - error= table->file->index_last(table->record[0]); - else - error= table->file->index_read_map(table->record[0], key_buff, - make_prev_keypart_map(ref.key_parts), - range_fl & NEAR_MAX ? - HA_READ_BEFORE_KEY : - HA_READ_PREFIX_LAST_OR_PREV); - if (!error && reckey_in_range(1, &ref, item_field->field, - conds, range_fl, prefix_len)) - error= HA_ERR_KEY_NOT_FOUND; - table->set_keyread(FALSE); - table->file->ha_index_end(); - if (error) - { - if (error == HA_ERR_KEY_NOT_FOUND || error == HA_ERR_END_OF_FILE) - return HA_ERR_KEY_NOT_FOUND; // No rows matching WHERE - /* HA_ERR_LOCK_DEADLOCK or some other error */ - table->file->print_error(error, MYF(0)); - table->in_use->fatal_error(); - return(error); - } - removed_tables|= table->map; - } - else if (!expr->const_item() || !is_exact_count) - { - /* - The optimization is not applicable in both cases: - (a) 'expr' is a non-constant expression. Then we can't - replace 'expr' by a constant. - (b) 'expr' is a costant. According to ANSI, MIN/MAX must return - NULL if the query does not return any rows. Thus, if we are not - able to determine if the query returns any rows, we can't apply - the optimization and replace MIN/MAX with a constant. - */ - const_result= 0; - break; - } - if (!count) - { - /* If count != 1, then we know that is_exact_count == TRUE. */ - ((Item_sum_max*) item_sum)->clear(); /* Set to NULL. */ - } + if (!count && !outer_tables) + item_sum->clear(); else - ((Item_sum_max*) item_sum)->reset(); /* Set to the constant value. */ - ((Item_sum_max*) item_sum)->make_const(); + item_sum->reset(); + item_sum->make_const(); recalc_const_item= 1; break; } From fc11ce658f35c8d07f929b50a54a6fd278608688 Mon Sep 17 00:00:00 2001 From: Luis Soares Date: Thu, 13 May 2010 16:40:31 +0100 Subject: [PATCH 051/461] BUG#53621: check_testcase fails for rpl_do_grant in mysql-5.1-bugteam MTR sporadically reported that rpl_do_grant does not clean up after itself. We fix this by backporting BUG 50984 fix. This deploys missing synchronization between master and slave. Additionally, it also fixes the check_testcase for rpl_tmp_table_and_DDL. --- mysql-test/suite/rpl/r/rpl_do_grant.result | 10 +++++++--- mysql-test/suite/rpl/t/rpl_do_grant.test | 18 ++++++++++++++---- .../suite/rpl/t/rpl_tmp_table_and_DDL.test | 1 + 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_do_grant.result b/mysql-test/suite/rpl/r/rpl_do_grant.result index 4d8cfe3d8b8..1cea2cfa9ad 100644 --- a/mysql-test/suite/rpl/r/rpl_do_grant.result +++ b/mysql-test/suite/rpl/r/rpl_do_grant.result @@ -89,6 +89,7 @@ show grants for rpl_do_grant2@localhost; ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost' show grants for rpl_do_grant2@localhost; ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost' +call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396"); DROP DATABASE IF EXISTS bug42217_db; CREATE DATABASE bug42217_db; GRANT CREATE ROUTINE ON bug42217_db.* TO 'create_rout_db'@'localhost' @@ -166,9 +167,12 @@ DROP FUNCTION upgrade_del_func; DROP FUNCTION upgrade_alter_func; DROP DATABASE bug42217_db; DROP USER 'create_rout_db'@'localhost'; -call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396"); -USE mtr; -call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396"); +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; ######## BUG#49119 ####### ### i) test case from the 'how to repeat section' stop slave; diff --git a/mysql-test/suite/rpl/t/rpl_do_grant.test b/mysql-test/suite/rpl/t/rpl_do_grant.test index 88120aa3512..fb8ea35e869 100644 --- a/mysql-test/suite/rpl/t/rpl_do_grant.test +++ b/mysql-test/suite/rpl/t/rpl_do_grant.test @@ -120,6 +120,9 @@ show grants for rpl_do_grant2@localhost; # BUG42217 mysql.procs_priv does not get replicated ##################################################### connection master; +call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396"); +sync_slave_with_master; +connection master; --disable_warnings DROP DATABASE IF EXISTS bug42217_db; @@ -209,12 +212,19 @@ USE bug42217_db; DROP FUNCTION upgrade_del_func; DROP FUNCTION upgrade_alter_func; DROP DATABASE bug42217_db; +-- sync_slave_with_master +-- connection master + +# user was already dropped in the slave before +# so no need to wait for the slave to replicate +# this statement (if it did and we later synced +# the slave it would end up in an error anyway) DROP USER 'create_rout_db'@'localhost'; -call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396"); -connection slave; -USE mtr; -call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396"); +# finish entire clean up (remove binlogs) +# so that we leave a pristine environment for the +# following tests +-- source include/master-slave-reset.inc # BUG#49119: Master crashes when executing 'REVOKE ... ON # {PROCEDURE|FUNCTION} FROM ...' diff --git a/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test b/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test index 56924a2efe9..b3efb578b68 100644 --- a/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test +++ b/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test @@ -10,4 +10,5 @@ source include/have_binlog_format_row.inc; LET $ENGINE_TYPE= MyISAM; source extra/rpl_tests/rpl_tmp_table_and_DDL.test; +sync_slave_with_master; From 162ab29157201ca075fccd405bb23f2626a11a9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Fri, 14 May 2010 13:51:26 +0300 Subject: [PATCH 052/461] Remove unused code. --- storage/innobase/srv/srv0start.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/storage/innobase/srv/srv0start.c b/storage/innobase/srv/srv0start.c index a7950473a17..9d057110d11 100644 --- a/storage/innobase/srv/srv0start.c +++ b/storage/innobase/srv/srv0start.c @@ -102,20 +102,6 @@ static char* srv_monitor_file_name; #define SRV_MAX_N_PENDING_SYNC_IOS 100 -/* Avoid warnings when using purify */ - -#ifdef HAVE_purify -static int inno_bcmp(register const char *s1, register const char *s2, - register uint len) -{ - while ((len-- != 0) && (*s1++ == *s2++)) - ; - - return(len + 1); -} -#define memcmp(A,B,C) inno_bcmp((A),(B),(C)) -#endif - static char* srv_parse_megabytes( From 9cbb009b2ea4bffbf450d1b540d04387fbe9865b Mon Sep 17 00:00:00 2001 From: Gleb Shchepa Date: Fri, 14 May 2010 15:36:27 +0400 Subject: [PATCH 053/461] Bug #53450: Crash / assertion "virtual int ha_myisam::index_first(uchar*)") at assert.c:81 Single-table DELETE crash/assertion similar to single-table UPDATE bug 14272. Same resolution as for the bug 14272: Don't run index scan when we should use quick select. This could cause failures because there are table handlers (like federated) that support quick select scanning but do not support index scanning. mysql-test/r/delete.result: Test case for bug #53450. mysql-test/t/delete.test: Test case for bug #53450. sql/sql_delete.cc: Bug #53450: Crash / assertion "virtual int ha_myisam::index_first(uchar*)") at assert.c:81 The mysql_delete function has been modified to not to use init_read_record_idx instead of init_read_record for the quick select. --- mysql-test/r/delete.result | 9 +++++++++ mysql-test/t/delete.test | 12 ++++++++++++ sql/sql_delete.cc | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/delete.result b/mysql-test/r/delete.result index 77b2071494d..36025cbfb35 100644 --- a/mysql-test/r/delete.result +++ b/mysql-test/r/delete.result @@ -349,4 +349,13 @@ END | DELETE IGNORE FROM t1; ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. DROP TABLE t1; +# +# Bug #53450: Crash/assertion +# "virtual int ha_myisam::index_first(uchar*)") at assert.c:81 +# +CREATE TABLE t1 (a INT, b INT, c INT, +INDEX(a), INDEX(b), INDEX(c)); +INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9); +DELETE FROM t1 WHERE a = 10 OR b = 20 ORDER BY c LIMIT 1; +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/t/delete.test b/mysql-test/t/delete.test index 7bbc470137a..5a0e86568f3 100644 --- a/mysql-test/t/delete.test +++ b/mysql-test/t/delete.test @@ -374,5 +374,17 @@ DELETE IGNORE FROM t1; DROP TABLE t1; +--echo # +--echo # Bug #53450: Crash/assertion +--echo # "virtual int ha_myisam::index_first(uchar*)") at assert.c:81 +--echo # + +CREATE TABLE t1 (a INT, b INT, c INT, + INDEX(a), INDEX(b), INDEX(c)); +INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9); + +DELETE FROM t1 WHERE a = 10 OR b = 20 ORDER BY c LIMIT 1; + +DROP TABLE t1; --echo End of 5.1 tests diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index cc29b6f1b6b..07421ca55a6 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -266,7 +266,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, free_underlaid_joins(thd, select_lex); DBUG_RETURN(TRUE); } - if (usable_index==MAX_KEY) + if (usable_index==MAX_KEY || (select && select->quick)) init_read_record(&info, thd, table, select, 1, 1, FALSE); else init_read_record_idx(&info, thd, table, 1, usable_index); From c3c2279cbd8427f29c3e884336b154ddf0a803c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Fri, 14 May 2010 16:02:28 +0300 Subject: [PATCH 054/461] Make the InnoDB FOREIGN KEY parser understand multi-statements. (Bug #48024) Also make InnoDB thinks that /*/ only starts a comment. (Bug #53644). struct trx_struct: Add mysql_query_len. ha_innodb.cc: Use trx_query_string() instead of trx_query() and initialize trx->mysql_query_len. INNOBASE_COPY_STMT(thd, trx): New macro, to initialize trx->mysql_query_str and trx->mysql_query_len. dict_strip_comments(): Add and observe the parameter sql_length. Treat /*/ as the start of a comment. dict_create_foreign_constraints(), row_table_add_foreign_constraints(): Add the parameter sql_length. --- .../suite/innodb/r/innodb_bug48024.result | 10 ++++ .../suite/innodb/t/innodb_bug48024.test | 20 ++++++++ storage/innobase/dict/dict0dict.c | 48 +++++++++++-------- storage/innobase/handler/ha_innodb.cc | 25 +++++++--- storage/innobase/handler/ha_innodb.h | 2 +- storage/innobase/include/dict0dict.h | 1 + storage/innobase/include/row0mysql.h | 1 + storage/innobase/include/trx0trx.h | 2 + storage/innobase/row/row0mysql.c | 5 +- storage/innobase/trx/trx0trx.c | 3 ++ 10 files changed, 88 insertions(+), 29 deletions(-) create mode 100644 mysql-test/suite/innodb/r/innodb_bug48024.result create mode 100644 mysql-test/suite/innodb/t/innodb_bug48024.test diff --git a/mysql-test/suite/innodb/r/innodb_bug48024.result b/mysql-test/suite/innodb/r/innodb_bug48024.result new file mode 100644 index 00000000000..611923d2796 --- /dev/null +++ b/mysql-test/suite/innodb/r/innodb_bug48024.result @@ -0,0 +1,10 @@ +CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB; +CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB; +ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/ +ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b); +DROP TABLE bug48024,bug48024_b; +CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB; +CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB; +ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/ +ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b)| +DROP TABLE bug48024,bug48024_b; diff --git a/mysql-test/suite/innodb/t/innodb_bug48024.test b/mysql-test/suite/innodb/t/innodb_bug48024.test new file mode 100644 index 00000000000..00d76beb89d --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_bug48024.test @@ -0,0 +1,20 @@ +# Bug #48024 Innodb doesn't work with multi-statements + +--source include/have_innodb.inc + +CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB; +CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB; +# Bug #53644 InnoDB thinks that /*/ starts and ends a comment +ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/ +ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b); + +DROP TABLE bug48024,bug48024_b; + +delimiter |; +CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB; +CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB; +ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/ +ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b)| +delimiter ;| + +DROP TABLE bug48024,bug48024_b; diff --git a/storage/innobase/dict/dict0dict.c b/storage/innobase/dict/dict0dict.c index b8251a99105..d3b277d2d7a 100644 --- a/storage/innobase/dict/dict0dict.c +++ b/storage/innobase/dict/dict0dict.c @@ -2586,25 +2586,28 @@ dict_strip_comments( /* out, own: SQL string stripped from comments; the caller must free this with mem_free()! */ - const char* sql_string) /* in: SQL string */ + const char* sql_string, /* in: SQL string */ + size_t sql_length) /* in: length of sql_string */ { char* str; const char* sptr; + const char* eptr = sql_string + sql_length; char* ptr; /* unclosed quote character (0 if none) */ char quote = 0; - str = mem_alloc(strlen(sql_string) + 1); + str = mem_alloc(sql_length + 1); sptr = sql_string; ptr = str; for (;;) { scan_more: - if (*sptr == '\0') { + if (sptr >= eptr || *sptr == '\0') { +end_of_string: *ptr = '\0'; - ut_a(ptr <= str + strlen(sql_string)); + ut_a(ptr <= str + sql_length); return(str); } @@ -2623,30 +2626,35 @@ scan_more: || (sptr[0] == '-' && sptr[1] == '-' && sptr[2] == ' ')) { for (;;) { + if (++sptr >= eptr) { + goto end_of_string; + } + /* In Unix a newline is 0x0A while in Windows it is 0x0D followed by 0x0A */ - if (*sptr == (char)0x0A - || *sptr == (char)0x0D - || *sptr == '\0') { - + switch (*sptr) { + case (char) 0X0A: + case (char) 0x0D: + case '\0': goto scan_more; } - - sptr++; } } else if (!quote && *sptr == '/' && *(sptr + 1) == '*') { + sptr += 2; for (;;) { - if (*sptr == '*' && *(sptr + 1) == '/') { - - sptr += 2; - - goto scan_more; + if (sptr >= eptr) { + goto end_of_string; } - if (*sptr == '\0') { - + switch (*sptr) { + case '\0': goto scan_more; + case '*': + if (sptr[1] == '/') { + sptr += 2; + goto scan_more; + } } sptr++; @@ -3348,6 +3356,7 @@ dict_create_foreign_constraints( name before it: test.table2; the default database id the database of parameter name */ + size_t sql_length, /* in: length of sql_string */ const char* name, /* in: table full name in the normalized form database_name/table_name */ @@ -3362,7 +3371,7 @@ dict_create_foreign_constraints( ut_a(trx); ut_a(trx->mysql_thd); - str = dict_strip_comments(sql_string); + str = dict_strip_comments(sql_string, sql_length); heap = mem_heap_create(10000); err = dict_create_foreign_constraints_low( @@ -3411,7 +3420,8 @@ dict_foreign_parse_drop_constraints( *constraints_to_drop = mem_heap_alloc(heap, 1000 * sizeof(char*)); - str = dict_strip_comments(*(trx->mysql_query_str)); + str = dict_strip_comments(*trx->mysql_query_str, + *trx->mysql_query_len); ptr = str; ut_ad(mutex_own(&(dict_sys->mutex))); diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index ebf01fbc296..f2a6c52ce7b 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -1140,6 +1140,15 @@ innobase_next_autoinc( return(next_value); } +/** Copy the current SQL statement. +* @param[in] thd MySQL client connection +* @param[in/out] trx InnoDB transaction */ +#define INNOBASE_COPY_STMT(thd, trx) do { \ + LEX_STRING* stmt = thd_query_string(thd); \ + (trx)->mysql_query_str = &stmt->str; \ + (trx)->mysql_query_len = &stmt->length; \ +} while (0) + /************************************************************************* Gets the InnoDB transaction handle for a MySQL handler object, creates an InnoDB transaction struct if the corresponding MySQL thread struct still @@ -1160,7 +1169,7 @@ check_trx_exists( trx = trx_allocate_for_mysql(); trx->mysql_thd = thd; - trx->mysql_query_str = thd_query(thd); + INNOBASE_COPY_STMT(thd, trx); /* Update the info whether we should skip XA steps that eat CPU time */ @@ -5578,7 +5587,7 @@ ha_innobase::create( trx = trx_allocate_for_mysql(); trx->mysql_thd = thd; - trx->mysql_query_str = thd_query(thd); + INNOBASE_COPY_STMT(thd, trx); if (thd_test_options(thd, OPTION_NO_FOREIGN_KEY_CHECKS)) { trx->check_foreigns = FALSE; @@ -5674,8 +5683,10 @@ ha_innobase::create( } if (*trx->mysql_query_str) { - error = row_table_add_foreign_constraints(trx, - *trx->mysql_query_str, norm_name, + error = row_table_add_foreign_constraints( + trx, + *trx->mysql_query_str, *trx->mysql_query_len, + norm_name, create_info->options & HA_LEX_CREATE_TMP_TABLE); error = convert_error_code_to_mysql(error, NULL); @@ -5866,7 +5877,7 @@ ha_innobase::delete_table( trx = trx_allocate_for_mysql(); trx->mysql_thd = thd; - trx->mysql_query_str = thd_query(thd); + INNOBASE_COPY_STMT(thd, trx); if (thd_test_options(thd, OPTION_NO_FOREIGN_KEY_CHECKS)) { trx->check_foreigns = FALSE; @@ -5955,7 +5966,7 @@ innobase_drop_database( #endif trx = trx_allocate_for_mysql(); trx->mysql_thd = thd; - trx->mysql_query_str = thd_query(thd); + INNOBASE_COPY_STMT(thd, trx); if (thd_test_options(thd, OPTION_NO_FOREIGN_KEY_CHECKS)) { trx->check_foreigns = FALSE; @@ -6025,7 +6036,7 @@ ha_innobase::rename_table( trx = trx_allocate_for_mysql(); trx->mysql_thd = thd; - trx->mysql_query_str = thd_query(thd); + INNOBASE_COPY_STMT(thd, trx); if (thd_test_options(thd, OPTION_NO_FOREIGN_KEY_CHECKS)) { trx->check_foreigns = FALSE; diff --git a/storage/innobase/handler/ha_innodb.h b/storage/innobase/handler/ha_innodb.h index 5b3df16875a..eb9199b8955 100644 --- a/storage/innobase/handler/ha_innodb.h +++ b/storage/innobase/handler/ha_innodb.h @@ -210,7 +210,7 @@ the definitions are bracketed with #ifdef INNODB_COMPATIBILITY_HOOKS */ extern "C" { struct charset_info_st *thd_charset(MYSQL_THD thd); -char **thd_query(MYSQL_THD thd); +LEX_STRING *thd_query_string(MYSQL_THD thd); /** Get the file name of the MySQL binlog. * @return the name of the binlog file diff --git a/storage/innobase/include/dict0dict.h b/storage/innobase/include/dict0dict.h index 7d5ff09c7a6..e76f23d0767 100644 --- a/storage/innobase/include/dict0dict.h +++ b/storage/innobase/include/dict0dict.h @@ -309,6 +309,7 @@ dict_create_foreign_constraints( name before it: test.table2; the default database id the database of parameter name */ + size_t sql_length, /* in: length of sql_string */ const char* name, /* in: table full name in the normalized form database_name/table_name */ diff --git a/storage/innobase/include/row0mysql.h b/storage/innobase/include/row0mysql.h index 5430190fa51..40fcdbb9548 100644 --- a/storage/innobase/include/row0mysql.h +++ b/storage/innobase/include/row0mysql.h @@ -366,6 +366,7 @@ row_table_add_foreign_constraints( FOREIGN KEY (a, b) REFERENCES table2(c, d), table2 can be written also with the database name before it: test.table2 */ + size_t sql_length, /* in: length of sql_string */ const char* name, /* in: table full name in the normalized form database_name/table_name */ diff --git a/storage/innobase/include/trx0trx.h b/storage/innobase/include/trx0trx.h index cdbf1970715..97a47d9f46e 100644 --- a/storage/innobase/include/trx0trx.h +++ b/storage/innobase/include/trx0trx.h @@ -444,6 +444,8 @@ struct trx_struct{ char** mysql_query_str;/* pointer to the field in mysqld_thd which contains the pointer to the current SQL query string */ + size_t* mysql_query_len;/* pointer to the length of the + current SQL query string */ const char* mysql_log_file_name; /* if MySQL binlog is used, this field contains a pointer to the latest file diff --git a/storage/innobase/row/row0mysql.c b/storage/innobase/row/row0mysql.c index a0e0ee99775..20fb69499a1 100644 --- a/storage/innobase/row/row0mysql.c +++ b/storage/innobase/row/row0mysql.c @@ -2103,6 +2103,7 @@ row_table_add_foreign_constraints( FOREIGN KEY (a, b) REFERENCES table2(c, d), table2 can be written also with the database name before it: test.table2 */ + size_t sql_length, /* in: length of sql_string */ const char* name, /* in: table full name in the normalized form database_name/table_name */ @@ -2124,8 +2125,8 @@ row_table_add_foreign_constraints( trx->dict_operation = TRUE; - err = dict_create_foreign_constraints(trx, sql_string, name, - reject_fks); + err = dict_create_foreign_constraints(trx, sql_string, sql_length, + name, reject_fks); if (err == DB_SUCCESS) { /* Check that also referencing constraints are ok */ diff --git a/storage/innobase/trx/trx0trx.c b/storage/innobase/trx/trx0trx.c index fae479feddc..545226a5994 100644 --- a/storage/innobase/trx/trx0trx.c +++ b/storage/innobase/trx/trx0trx.c @@ -131,6 +131,8 @@ trx_create( trx->mysql_thd = NULL; trx->mysql_query_str = NULL; + trx->mysql_query_len = NULL; + trx->active_trans = 0; trx->duplicates = 0; @@ -936,6 +938,7 @@ trx_commit_off_kernel( trx->undo_no = ut_dulint_zero; trx->last_sql_stat_start.least_undo_no = ut_dulint_zero; trx->mysql_query_str = NULL; + trx->mysql_query_len = NULL; ut_ad(UT_LIST_GET_LEN(trx->wait_thrs) == 0); ut_ad(UT_LIST_GET_LEN(trx->trx_locks) == 0); From 54f59fb55ee1c88d2a47222c3dfc3511e575a6fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Fri, 14 May 2010 16:08:15 +0300 Subject: [PATCH 055/461] Make the InnoDB FOREIGN KEY parser understand multi-statements. (Bug #48024) Also make InnoDB thinks that /*/ only starts a comment. (Bug #53644). This fixes the bugs in the InnoDB Plugin. ha_innodb.h: Use trx_query_string() instead of trx_query() when available (MySQL 5.1.42 or later). innobase_get_stmt(): New function, to retrieve the currently running SQL statement. struct trx_struct: Remove mysql_query_str. Use innobase_get_stmt() instead. dict_strip_comments(): Add and observe the parameter sql_length. Treat /*/ as the start of a comment. dict_create_foreign_constraints(), row_table_add_foreign_constraints(): Add the parameter sql_length. --- .../innodb_plugin/r/innodb_bug48024.result | 10 ++++ .../innodb_plugin/t/innodb_bug48024.test | 20 ++++++++ storage/innodb_plugin/dict/dict0dict.c | 51 ++++++++++++------- storage/innodb_plugin/handler/ha_innodb.cc | 35 +++++++++++-- storage/innodb_plugin/handler/ha_innodb.h | 4 ++ storage/innodb_plugin/include/dict0dict.h | 1 + storage/innodb_plugin/include/ha_prototypes.h | 12 ++++- storage/innodb_plugin/include/row0mysql.h | 1 + storage/innodb_plugin/include/trx0trx.h | 3 -- storage/innodb_plugin/row/row0mysql.c | 5 +- storage/innodb_plugin/trx/trx0i_s.c | 40 +++++++-------- storage/innodb_plugin/trx/trx0trx.c | 2 - 12 files changed, 131 insertions(+), 53 deletions(-) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug48024.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug48024.test diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug48024.result b/mysql-test/suite/innodb_plugin/r/innodb_bug48024.result new file mode 100644 index 00000000000..611923d2796 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug48024.result @@ -0,0 +1,10 @@ +CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB; +CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB; +ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/ +ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b); +DROP TABLE bug48024,bug48024_b; +CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB; +CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB; +ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/ +ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b)| +DROP TABLE bug48024,bug48024_b; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug48024.test b/mysql-test/suite/innodb_plugin/t/innodb_bug48024.test new file mode 100644 index 00000000000..3bcfe74eda0 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug48024.test @@ -0,0 +1,20 @@ +# Bug #48024 Innodb doesn't work with multi-statements + +--source include/have_innodb_plugin.inc + +CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB; +CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB; +# Bug #53644 InnoDB thinks that /*/ starts and ends a comment +ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/ +ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b); + +DROP TABLE bug48024,bug48024_b; + +delimiter |; +CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB; +CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB; +ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/ +ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b)| +delimiter ;| + +DROP TABLE bug48024,bug48024_b; diff --git a/storage/innodb_plugin/dict/dict0dict.c b/storage/innodb_plugin/dict/dict0dict.c index 8e901a3b70b..61f70c72720 100644 --- a/storage/innodb_plugin/dict/dict0dict.c +++ b/storage/innodb_plugin/dict/dict0dict.c @@ -3008,25 +3008,28 @@ static char* dict_strip_comments( /*================*/ - const char* sql_string) /*!< in: SQL string */ + const char* sql_string, /*!< in: SQL string */ + size_t sql_length) /*!< in: length of sql_string */ { char* str; const char* sptr; + const char* eptr = sql_string + sql_length; char* ptr; /* unclosed quote character (0 if none) */ char quote = 0; - str = mem_alloc(strlen(sql_string) + 1); + str = mem_alloc(sql_length + 1); sptr = sql_string; ptr = str; for (;;) { scan_more: - if (*sptr == '\0') { + if (sptr >= eptr || *sptr == '\0') { +end_of_string: *ptr = '\0'; - ut_a(ptr <= str + strlen(sql_string)); + ut_a(ptr <= str + sql_length); return(str); } @@ -3045,30 +3048,35 @@ scan_more: || (sptr[0] == '-' && sptr[1] == '-' && sptr[2] == ' ')) { for (;;) { + if (++sptr >= eptr) { + goto end_of_string; + } + /* In Unix a newline is 0x0A while in Windows it is 0x0D followed by 0x0A */ - if (*sptr == (char)0x0A - || *sptr == (char)0x0D - || *sptr == '\0') { - + switch (*sptr) { + case (char) 0X0A: + case (char) 0x0D: + case '\0': goto scan_more; } - - sptr++; } } else if (!quote && *sptr == '/' && *(sptr + 1) == '*') { + sptr += 2; for (;;) { - if (*sptr == '*' && *(sptr + 1) == '/') { - - sptr += 2; - - goto scan_more; + if (sptr >= eptr) { + goto end_of_string; } - if (*sptr == '\0') { - + switch (*sptr) { + case '\0': goto scan_more; + case '*': + if (sptr[1] == '/') { + sptr += 2; + goto scan_more; + } } sptr++; @@ -3749,6 +3757,7 @@ dict_create_foreign_constraints( name before it: test.table2; the default database id the database of parameter name */ + size_t sql_length, /*!< in: length of sql_string */ const char* name, /*!< in: table full name in the normalized form database_name/table_name */ @@ -3763,7 +3772,7 @@ dict_create_foreign_constraints( ut_a(trx); ut_a(trx->mysql_thd); - str = dict_strip_comments(sql_string); + str = dict_strip_comments(sql_string, sql_length); heap = mem_heap_create(10000); err = dict_create_foreign_constraints_low( @@ -3796,6 +3805,7 @@ dict_foreign_parse_drop_constraints( dict_foreign_t* foreign; ibool success; char* str; + size_t len; const char* ptr; const char* id; FILE* ef = dict_foreign_err_file; @@ -3810,7 +3820,10 @@ dict_foreign_parse_drop_constraints( *constraints_to_drop = mem_heap_alloc(heap, 1000 * sizeof(char*)); - str = dict_strip_comments(*(trx->mysql_query_str)); + ptr = innobase_get_stmt(trx->mysql_thd, &len); + + str = dict_strip_comments(ptr, len); + ptr = str; ut_ad(mutex_own(&(dict_sys->mutex))); diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index 0a2340d0f67..bd0618b7424 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -1004,6 +1004,29 @@ innobase_get_charset( return(thd_charset((THD*) mysql_thd)); } +/**********************************************************************//** +Determines the current SQL statement. +@return SQL statement string */ +extern "C" UNIV_INTERN +const char* +innobase_get_stmt( +/*==============*/ + void* mysql_thd, /*!< in: MySQL thread handle */ + size_t* length) /*!< out: length of the SQL statement */ +{ +#if MYSQL_VERSION_ID >= 50142 + LEX_STRING* stmt; + + stmt = thd_query_string((THD*) mysql_thd); + *length = stmt->length; + return(stmt->str); +#else + const char* stmt_str = thd_query((THD*) mysql_thd); + *length = strlen(stmt_str); + return(stmt_str); +#endif +} + #if defined (__WIN__) && defined (MYSQL_DYNAMIC_PLUGIN) extern MYSQL_PLUGIN_IMPORT MY_TMPDIR mysql_tmpdir_list; /*******************************************************************//** @@ -1314,7 +1337,6 @@ innobase_trx_allocate( trx = trx_allocate_for_mysql(); trx->mysql_thd = thd; - trx->mysql_query_str = thd_query(thd); innobase_trx_init(thd, trx); @@ -6433,6 +6455,8 @@ ha_innobase::create( /* Cache the value of innodb_file_format, in case it is modified by another thread while the table is being created. */ const ulint file_format = srv_file_format; + const char* stmt; + size_t stmt_len; DBUG_ENTER("ha_innobase::create"); @@ -6709,9 +6733,11 @@ ha_innobase::create( } } - if (*trx->mysql_query_str) { - error = row_table_add_foreign_constraints(trx, - *trx->mysql_query_str, norm_name, + stmt = innobase_get_stmt(thd, &stmt_len); + + if (stmt) { + error = row_table_add_foreign_constraints( + trx, stmt, stmt_len, norm_name, create_info->options & HA_LEX_CREATE_TMP_TABLE); error = convert_error_code_to_mysql(error, flags, NULL); @@ -6996,7 +7022,6 @@ innobase_drop_database( /* In the Windows plugin, thd = current_thd is always NULL */ trx = trx_allocate_for_mysql(); trx->mysql_thd = NULL; - trx->mysql_query_str = NULL; #else trx = innobase_trx_allocate(thd); #endif diff --git a/storage/innodb_plugin/handler/ha_innodb.h b/storage/innodb_plugin/handler/ha_innodb.h index 8a3e1ccff82..9789e4ba639 100644 --- a/storage/innodb_plugin/handler/ha_innodb.h +++ b/storage/innodb_plugin/handler/ha_innodb.h @@ -231,7 +231,11 @@ the definitions are bracketed with #ifdef INNODB_COMPATIBILITY_HOOKS */ extern "C" { struct charset_info_st *thd_charset(MYSQL_THD thd); +#if MYSQL_VERSION_ID >= 50142 +LEX_STRING *thd_query_string(MYSQL_THD thd); +#else char **thd_query(MYSQL_THD thd); +#endif /** Get the file name of the MySQL binlog. * @return the name of the binlog file diff --git a/storage/innodb_plugin/include/dict0dict.h b/storage/innodb_plugin/include/dict0dict.h index 79dcbb30de2..3a1bee4cd89 100644 --- a/storage/innodb_plugin/include/dict0dict.h +++ b/storage/innodb_plugin/include/dict0dict.h @@ -352,6 +352,7 @@ dict_create_foreign_constraints( name before it: test.table2; the default database id the database of parameter name */ + size_t sql_length, /*!< in: length of sql_string */ const char* name, /*!< in: table full name in the normalized form database_name/table_name */ diff --git a/storage/innodb_plugin/include/ha_prototypes.h b/storage/innodb_plugin/include/ha_prototypes.h index b737a00b3dc..e897a233a6a 100644 --- a/storage/innodb_plugin/include/ha_prototypes.h +++ b/storage/innodb_plugin/include/ha_prototypes.h @@ -215,11 +215,21 @@ innobase_casedn_str( /**********************************************************************//** Determines the connection character set. @return connection character set */ +UNIV_INTERN struct charset_info_st* innobase_get_charset( /*=================*/ void* mysql_thd); /*!< in: MySQL thread handle */ - +/**********************************************************************//** +Determines the current SQL statement. +@return SQL statement string */ +UNIV_INTERN +const char* +innobase_get_stmt( +/*==============*/ + void* mysql_thd, /*!< in: MySQL thread handle */ + size_t* length) /*!< out: length of the SQL statement */ + __attribute__((nonnull)); /******************************************************************//** This function is used to find the storage length in bytes of the first n characters for prefix indexes using a multibyte character set. The function diff --git a/storage/innodb_plugin/include/row0mysql.h b/storage/innodb_plugin/include/row0mysql.h index d2a8734c61f..bf9cda1ba80 100644 --- a/storage/innodb_plugin/include/row0mysql.h +++ b/storage/innodb_plugin/include/row0mysql.h @@ -403,6 +403,7 @@ row_table_add_foreign_constraints( FOREIGN KEY (a, b) REFERENCES table2(c, d), table2 can be written also with the database name before it: test.table2 */ + size_t sql_length, /*!< in: length of sql_string */ const char* name, /*!< in: table full name in the normalized form database_name/table_name */ diff --git a/storage/innodb_plugin/include/trx0trx.h b/storage/innodb_plugin/include/trx0trx.h index 6872fb463c0..abd175d365b 100644 --- a/storage/innodb_plugin/include/trx0trx.h +++ b/storage/innodb_plugin/include/trx0trx.h @@ -560,9 +560,6 @@ struct trx_struct{ /*------------------------------*/ void* mysql_thd; /*!< MySQL thread handle corresponding to this trx, or NULL */ - char** mysql_query_str;/* pointer to the field in mysqld_thd - which contains the pointer to the - current SQL query string */ const char* mysql_log_file_name; /* if MySQL binlog is used, this field contains a pointer to the latest file diff --git a/storage/innodb_plugin/row/row0mysql.c b/storage/innodb_plugin/row/row0mysql.c index 24abf8067f2..ff3491a4f31 100644 --- a/storage/innodb_plugin/row/row0mysql.c +++ b/storage/innodb_plugin/row/row0mysql.c @@ -2059,6 +2059,7 @@ row_table_add_foreign_constraints( FOREIGN KEY (a, b) REFERENCES table2(c, d), table2 can be written also with the database name before it: test.table2 */ + size_t sql_length, /*!< in: length of sql_string */ const char* name, /*!< in: table full name in the normalized form database_name/table_name */ @@ -2080,8 +2081,8 @@ row_table_add_foreign_constraints( trx_set_dict_operation(trx, TRX_DICT_OP_TABLE); - err = dict_create_foreign_constraints(trx, sql_string, name, - reject_fks); + err = dict_create_foreign_constraints(trx, sql_string, sql_length, + name, reject_fks); if (err == DB_SUCCESS) { /* Check that also referencing constraints are ok */ err = dict_load_foreigns(name, TRUE); diff --git a/storage/innodb_plugin/trx/trx0i_s.c b/storage/innodb_plugin/trx/trx0i_s.c index c160eb2942a..5bc8302d0c0 100644 --- a/storage/innodb_plugin/trx/trx0i_s.c +++ b/storage/innodb_plugin/trx/trx0i_s.c @@ -429,6 +429,9 @@ fill_trx_row( which to copy volatile strings */ { + const char* stmt; + size_t stmt_len; + row->trx_id = trx_get_id(trx); row->trx_started = (ib_time_t) trx->start_time; row->trx_state = trx_get_que_state_str(trx); @@ -449,38 +452,33 @@ fill_trx_row( row->trx_weight = (ullint) ut_conv_dulint_to_longlong(TRX_WEIGHT(trx)); - if (trx->mysql_thd != NULL) { - row->trx_mysql_thread_id - = thd_get_thread_id(trx->mysql_thd); - } else { + if (trx->mysql_thd == NULL) { /* For internal transactions e.g., purge and transactions being recovered at startup there is no associated MySQL thread data structure. */ row->trx_mysql_thread_id = 0; + row->trx_query = NULL; + return(TRUE); } - if (trx->mysql_query_str != NULL && *trx->mysql_query_str != NULL) { + row->trx_mysql_thread_id = thd_get_thread_id(trx->mysql_thd); + stmt = innobase_get_stmt(trx->mysql_thd, &stmt_len); - if (strlen(*trx->mysql_query_str) - > TRX_I_S_TRX_QUERY_MAX_LEN) { + if (stmt != NULL) { - char query[TRX_I_S_TRX_QUERY_MAX_LEN + 1]; + char query[TRX_I_S_TRX_QUERY_MAX_LEN + 1]; - memcpy(query, *trx->mysql_query_str, - TRX_I_S_TRX_QUERY_MAX_LEN); - query[TRX_I_S_TRX_QUERY_MAX_LEN] = '\0'; - - row->trx_query = ha_storage_put_memlim( - cache->storage, query, - TRX_I_S_TRX_QUERY_MAX_LEN + 1, - MAX_ALLOWED_FOR_STORAGE(cache)); - } else { - - row->trx_query = ha_storage_put_str_memlim( - cache->storage, *trx->mysql_query_str, - MAX_ALLOWED_FOR_STORAGE(cache)); + if (stmt_len > TRX_I_S_TRX_QUERY_MAX_LEN) { + stmt_len = TRX_I_S_TRX_QUERY_MAX_LEN; } + memcpy(query, stmt, stmt_len); + query[stmt_len] = '\0'; + + row->trx_query = ha_storage_put_memlim( + cache->storage, stmt, stmt_len + 1, + MAX_ALLOWED_FOR_STORAGE(cache)); + if (row->trx_query == NULL) { return(FALSE); diff --git a/storage/innodb_plugin/trx/trx0trx.c b/storage/innodb_plugin/trx/trx0trx.c index 6ef7e62e6ae..9722bb59a5e 100644 --- a/storage/innodb_plugin/trx/trx0trx.c +++ b/storage/innodb_plugin/trx/trx0trx.c @@ -119,7 +119,6 @@ trx_create( trx->table_id = ut_dulint_zero; trx->mysql_thd = NULL; - trx->mysql_query_str = NULL; trx->active_trans = 0; trx->duplicates = 0; @@ -940,7 +939,6 @@ trx_commit_off_kernel( trx->rseg = NULL; trx->undo_no = ut_dulint_zero; trx->last_sql_stat_start.least_undo_no = ut_dulint_zero; - trx->mysql_query_str = NULL; ut_ad(UT_LIST_GET_LEN(trx->wait_thrs) == 0); ut_ad(UT_LIST_GET_LEN(trx->trx_locks) == 0); From d32bf00e21b72f1abf1f5dcb58ae8ee64b4a1d35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Fri, 14 May 2010 16:10:50 +0300 Subject: [PATCH 056/461] Document Bug #48024 and Bug #53644 in the ChangeLog --- storage/innodb_plugin/ChangeLog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 169f859b8fd..a05e1ebc716 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,11 @@ +2010-05-14 The InnoDB Team + * mysql-test/innodb_bug48024.test, mysql-test/innodb_bug48024.result, + dict/dict0dict.c, handler/ha_innodb.cc, handler/ha_innodb.h, + include/dict0dict.h, include/ha_prototypes.h, include/row0mysql.h, + include/trx0trx.h, row/row0mysql.c, trx/trx0i_s.c, trx/trx0trx.c: + Fix Bug#48024 Innodb doesn't work with multi-statements + Fix Bug#53644 InnoDB thinks that /*/ starts and ends a comment + 2010-05-12 The InnoDB Team * handler/handler0alter.cc: From cf7bac11ecda6899aff0cb5fd66b6002997bce41 Mon Sep 17 00:00:00 2001 From: Alfranio Correia Date: Sun, 16 May 2010 12:45:21 +0100 Subject: [PATCH 057/461] BUG#50410: rpl_ndb tests should run with binlog_format=row Post-fix: Updated a test case after the patch for BUG#50410, because the patch makes ndb to run in the row format and as such unsafe warning messages are not printed out. --- .../rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result | 8 -------- 1 file changed, 8 deletions(-) diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result index e02c3b23cad..7caa88a16a1 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result @@ -345,27 +345,19 @@ SET AUTOCOMMIT = 1; BEGIN; INSERT INTO tndb VALUES (147); INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1; -Warnings: -Note 1592 Statement may not be safe to log in statement format. COMMIT; INSERT INTO tndb VALUES (148); BEGIN; INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1; -Warnings: -Note 1592 Statement may not be safe to log in statement format. INSERT INTO tndb VALUES (149); COMMIT; BEGIN; INSERT INTO tndb VALUES (150); INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1; -Warnings: -Note 1592 Statement may not be safe to log in statement format. COMMIT; INSERT INTO tndb VALUES (151); BEGIN; INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1; -Warnings: -Note 1592 Statement may not be safe to log in statement format. INSERT INTO tndb VALUES (152); COMMIT; ==== Verify the result ==== From 3404d83083264050d7bf8b0f70c0267b55fb3e41 Mon Sep 17 00:00:00 2001 From: Alfranio Correia Date: Sun, 16 May 2010 15:37:44 +0100 Subject: [PATCH 058/461] BUG#49019 Mixing self-logging eng. and regular eng. does not switch to row in mixed mode Post-push fix after backporting the patch to 5.1-bugteam: 1 - changed the name of some variables to be equivalent to pe. 2 - fixed that patch to mark a statement as unsafe when both a self-logging eng. and regular eng. are accessed and one of them is updated. --- sql/sql_base.cc | 90 ++++++++++++++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 34 deletions(-) diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 65649fc8921..55d4ab0c20f 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -5154,63 +5154,75 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables) set with all the capabilities bits set and one with no capabilities bits set. */ - handler::Table_flags flags_some_set= 0; - handler::Table_flags flags_all_set= + handler::Table_flags flags_write_some_set= 0; + handler::Table_flags flags_access_some_set= 0; + handler::Table_flags flags_write_all_set= HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE; - my_bool multi_engine= FALSE; - void* prev_ht= NULL; + /* + If different types of engines are about to be updated. + For example: Innodb and Falcon; Innodb and MyIsam. + */ + my_bool multi_write_engine= FALSE; + void* prev_write_ht= NULL; + + /* + If different types of engines are about to be accessed + and any of them is about to be updated. For example: + Innodb and Falcon; Innodb and MyIsam. + */ + my_bool multi_access_engine= FALSE; + void* prev_access_ht= NULL; for (TABLE_LIST *table= tables; table; table= table->next_global) { if (table->placeholder()) continue; if (table->table->s->table_category == TABLE_CATEGORY_PERFORMANCE) thd->lex->set_stmt_unsafe(); + ulonglong const flags= table->table->file->ha_table_flags(); if (table->lock_type >= TL_WRITE_ALLOW_WRITE) { - ulonglong const flags= table->table->file->ha_table_flags(); DBUG_PRINT("info", ("table: %s; ha_table_flags: %s%s", table->table_name, FLAGSTR(flags, HA_BINLOG_STMT_CAPABLE), FLAGSTR(flags, HA_BINLOG_ROW_CAPABLE))); - if (prev_ht && prev_ht != table->table->file->ht) - multi_engine= TRUE; - prev_ht= table->table->file->ht; - flags_all_set &= flags; - flags_some_set |= flags; + if (prev_write_ht && prev_write_ht != table->table->file->ht) + multi_write_engine= TRUE; + prev_write_ht= table->table->file->ht; + flags_write_all_set &= flags; + flags_write_some_set |= flags; } + if (prev_access_ht && prev_access_ht != table->table->file->ht) + multi_access_engine= TRUE; + prev_access_ht= table->table->file->ht; + flags_access_some_set |= flags; } - DBUG_PRINT("info", ("flags_all_set: %s%s", - FLAGSTR(flags_all_set, HA_BINLOG_STMT_CAPABLE), - FLAGSTR(flags_all_set, HA_BINLOG_ROW_CAPABLE))); - DBUG_PRINT("info", ("flags_some_set: %s%s", - FLAGSTR(flags_some_set, HA_BINLOG_STMT_CAPABLE), - FLAGSTR(flags_some_set, HA_BINLOG_ROW_CAPABLE))); + DBUG_PRINT("info", ("flags_write_all_set: %s%s", + FLAGSTR(flags_write_all_set, HA_BINLOG_STMT_CAPABLE), + FLAGSTR(flags_write_all_set, HA_BINLOG_ROW_CAPABLE))); + DBUG_PRINT("info", ("flags_write_some_set: %s%s", + FLAGSTR(flags_write_some_set, HA_BINLOG_STMT_CAPABLE), + FLAGSTR(flags_write_some_set, HA_BINLOG_ROW_CAPABLE))); + DBUG_PRINT("info", ("flags_access_some_set: %s%s", + FLAGSTR(flags_access_some_set, HA_BINLOG_STMT_CAPABLE), + FLAGSTR(flags_access_some_set, HA_BINLOG_ROW_CAPABLE))); + DBUG_PRINT("info", ("multi_write_engine: %s", + multi_write_engine ? "TRUE" : "FALSE")); + DBUG_PRINT("info", ("multi_access_engine: %s", + multi_access_engine ? "TRUE" : "FALSE")); DBUG_PRINT("info", ("thd->variables.binlog_format: %ld", thd->variables.binlog_format)); - DBUG_PRINT("info", ("multi_engine: %s", - multi_engine ? "TRUE" : "FALSE")); - /* - Reading from a self-logging engine and updating another engine - generates changes that are written to the binary log in the - statement format and may make slaves to diverge. In the mixed - mode, such changes should be written to the binary log in the - row format. - */ - if (multi_engine && - (flags_some_set & HA_HAS_OWN_BINLOGGING)) - thd->lex->set_stmt_unsafe(); int error= 0; - if (flags_all_set == 0) + if (flags_write_all_set == 0) { my_error((error= ER_BINLOG_LOGGING_IMPOSSIBLE), MYF(0), "Statement cannot be logged to the binary log in" " row-based nor statement-based format"); } else if (thd->variables.binlog_format == BINLOG_FORMAT_STMT && - (flags_all_set & HA_BINLOG_STMT_CAPABLE) == 0) + (flags_write_all_set & HA_BINLOG_STMT_CAPABLE) == 0) { my_error((error= ER_BINLOG_LOGGING_IMPOSSIBLE), MYF(0), "Statement-based format required for this statement," @@ -5218,7 +5230,7 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables) } else if ((thd->variables.binlog_format == BINLOG_FORMAT_ROW || thd->lex->is_stmt_unsafe()) && - (flags_all_set & HA_BINLOG_ROW_CAPABLE) == 0) + (flags_write_all_set & HA_BINLOG_ROW_CAPABLE) == 0) { my_error((error= ER_BINLOG_LOGGING_IMPOSSIBLE), MYF(0), "Row-based format required for this statement," @@ -5231,8 +5243,8 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables) statement cannot be logged atomically, so we generate an error rather than allowing the binlog to become corrupt. */ - if (multi_engine && - (flags_some_set & HA_HAS_OWN_BINLOGGING)) + if (multi_write_engine && + (flags_write_some_set & HA_HAS_OWN_BINLOGGING)) { error= ER_BINLOG_LOGGING_IMPOSSIBLE; my_error(error, MYF(0), @@ -5240,6 +5252,16 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables) " than one engine involved and at least one engine" " is self-logging"); } + /* + Reading from a self-logging engine and updating another engine + generates changes that are written to the binary log in the + statement format and may make slaves to diverge. In the mixed + mode, such changes should be written to the binary log in the + row format. + */ + else if (multi_access_engine && + (flags_access_some_set & HA_HAS_OWN_BINLOGGING)) + thd->lex->set_stmt_unsafe(); DBUG_PRINT("info", ("error: %d", error)); @@ -5259,7 +5281,7 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables) here. */ if (thd->lex->is_stmt_unsafe() || - (flags_all_set & HA_BINLOG_STMT_CAPABLE) == 0) + (flags_write_all_set & HA_BINLOG_STMT_CAPABLE) == 0) { thd->set_current_stmt_binlog_row_based_if_mixed(); } From 36be33b0ad829732b76d87f6d618546014fd96de Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Tue, 18 May 2010 13:28:21 +0500 Subject: [PATCH 059/461] Bug#48729 SELECT ... FROM INFORMATION_SCHEMA.ROUTINES causes memory to grow Analysis showed that in case of accessing I_S table ROUTINES we perform unnecessary allocations with get_field() function for every processed row that in their turn causes significant memory growth. the fix is to avoid use of get_field(). sql/sql_show.cc: Functions store_schema_proc() are changed to avoid use of get_field() function. --- sql/sql_show.cc | 74 ++++++++++++++++++++++++------------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 0afad764fac..61a414dcb6f 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -4182,24 +4182,37 @@ int fill_schema_coll_charset_app(THD *thd, TABLE_LIST *tables, COND *cond) } +static inline void copy_field_as_string(Field *to_field, Field *from_field) +{ + char buff[MAX_FIELD_WIDTH]; + String tmp_str(buff, sizeof(buff), system_charset_info); + from_field->val_str(&tmp_str); + to_field->store(tmp_str.ptr(), tmp_str.length(), system_charset_info); +} + + bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table, const char *wild, bool full_access, const char *sp_user) { - String tmp_string; - String sp_db, sp_name, definer; MYSQL_TIME time; LEX *lex= thd->lex; CHARSET_INFO *cs= system_charset_info; - get_field(thd->mem_root, proc_table->field[0], &sp_db); - get_field(thd->mem_root, proc_table->field[1], &sp_name); - get_field(thd->mem_root, proc_table->field[11], &definer); + char sp_db_buff[NAME_LEN + 1], sp_name_buff[NAME_LEN + 1], + definer_buff[USERNAME_LENGTH + HOSTNAME_LENGTH + 2]; + String sp_db(sp_db_buff, sizeof(sp_db_buff), cs); + String sp_name(sp_name_buff, sizeof(sp_name_buff), cs); + String definer(definer_buff, sizeof(definer_buff), cs); + + proc_table->field[0]->val_str(&sp_db); + proc_table->field[1]->val_str(&sp_name); + proc_table->field[11]->val_str(&definer); + if (!full_access) - full_access= !strcmp(sp_user, definer.ptr()); - if (!full_access && check_some_routine_access(thd, sp_db.ptr(), - sp_name.ptr(), - proc_table->field[2]-> - val_int() == - TYPE_ENUM_PROCEDURE)) + full_access= !strcmp(sp_user, definer.c_ptr_safe()); + if (!full_access && + check_some_routine_access(thd, sp_db.c_ptr_safe(), sp_name.c_ptr_safe(), + proc_table->field[2]->val_int() == + TYPE_ENUM_PROCEDURE)) return 0; if ((lex->sql_command == SQLCOM_SHOW_STATUS_PROC && @@ -4209,55 +4222,42 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table, (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) { restore_record(table, s->default_values); - if (!wild || !wild[0] || !wild_compare(sp_name.ptr(), wild, 0)) + if (!wild || !wild[0] || !wild_compare(sp_name.c_ptr_safe(), wild, 0)) { int enum_idx= (int) proc_table->field[5]->val_int(); table->field[3]->store(sp_name.ptr(), sp_name.length(), cs); - get_field(thd->mem_root, proc_table->field[3], &tmp_string); - table->field[0]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[0], proc_table->field[3]); table->field[2]->store(sp_db.ptr(), sp_db.length(), cs); - get_field(thd->mem_root, proc_table->field[2], &tmp_string); - table->field[4]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[4], proc_table->field[2]); if (proc_table->field[2]->val_int() == TYPE_ENUM_FUNCTION) { - get_field(thd->mem_root, proc_table->field[9], &tmp_string); - table->field[5]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[5], proc_table->field[9]); table->field[5]->set_notnull(); } if (full_access) { - get_field(thd->mem_root, proc_table->field[19], &tmp_string); - table->field[7]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[7], proc_table->field[19]); table->field[7]->set_notnull(); } table->field[6]->store(STRING_WITH_LEN("SQL"), cs); table->field[10]->store(STRING_WITH_LEN("SQL"), cs); - get_field(thd->mem_root, proc_table->field[6], &tmp_string); - table->field[11]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[11], proc_table->field[6]); table->field[12]->store(sp_data_access_name[enum_idx].str, sp_data_access_name[enum_idx].length , cs); - get_field(thd->mem_root, proc_table->field[7], &tmp_string); - table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[14], proc_table->field[7]); + bzero((char *)&time, sizeof(time)); ((Field_timestamp *) proc_table->field[12])->get_time(&time); table->field[15]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); bzero((char *)&time, sizeof(time)); ((Field_timestamp *) proc_table->field[13])->get_time(&time); table->field[16]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); - get_field(thd->mem_root, proc_table->field[14], &tmp_string); - table->field[17]->store(tmp_string.ptr(), tmp_string.length(), cs); - get_field(thd->mem_root, proc_table->field[15], &tmp_string); - table->field[18]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[17], proc_table->field[14]); + copy_field_as_string(table->field[18], proc_table->field[15]); table->field[19]->store(definer.ptr(), definer.length(), cs); - - get_field(thd->mem_root, proc_table->field[16], &tmp_string); - table->field[20]->store(tmp_string.ptr(), tmp_string.length(), cs); - - get_field(thd->mem_root, proc_table->field[17], &tmp_string); - table->field[21]->store(tmp_string.ptr(), tmp_string.length(), cs); - - get_field(thd->mem_root, proc_table->field[18], &tmp_string); - table->field[22]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[20], proc_table->field[16]); + copy_field_as_string(table->field[21], proc_table->field[17]); + copy_field_as_string(table->field[22], proc_table->field[18]); return schema_table_store_record(thd, table); } From 4ff217a4584428943eddadb23719dfaa82db1c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 18 May 2010 16:06:58 +0300 Subject: [PATCH 060/461] Work around Bug #53750 in innodb_bug48024.test --- mysql-test/suite/innodb_plugin/t/innodb_bug48024.test | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug48024.test b/mysql-test/suite/innodb_plugin/t/innodb_bug48024.test index 3bcfe74eda0..fea3adf9216 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb_bug48024.test +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug48024.test @@ -10,6 +10,8 @@ ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b); DROP TABLE bug48024,bug48024_b; +# Work around Bug #53750 (failure in mysql-test-run --ps-protocol) +-- disable_ps_protocol delimiter |; CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB; CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB; From a1250799afb6e162388392a36a69af66f6e0af54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 19 May 2010 10:56:13 +0300 Subject: [PATCH 061/461] Work around Bug #53750 in innodb.innodb_bug48024 --- mysql-test/suite/innodb/t/innodb_bug48024.test | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/suite/innodb/t/innodb_bug48024.test b/mysql-test/suite/innodb/t/innodb_bug48024.test index 00d76beb89d..db828aa1cda 100644 --- a/mysql-test/suite/innodb/t/innodb_bug48024.test +++ b/mysql-test/suite/innodb/t/innodb_bug48024.test @@ -10,6 +10,8 @@ ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b); DROP TABLE bug48024,bug48024_b; +# Work around Bug #53750 (failure in mysql-test-run --ps-protocol) +-- disable_ps_protocol delimiter |; CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB; CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB; From 72541c6b0d9d8258fc0ca936d454bc042ad28e58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 19 May 2010 10:58:43 +0300 Subject: [PATCH 062/461] Add Valgrind checks to compressed BLOB access. --- storage/innodb_plugin/btr/btr0cur.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/storage/innodb_plugin/btr/btr0cur.c b/storage/innodb_plugin/btr/btr0cur.c index 0e603fdca8f..6270aa6a727 100644 --- a/storage/innodb_plugin/btr/btr0cur.c +++ b/storage/innodb_plugin/btr/btr0cur.c @@ -3871,6 +3871,8 @@ btr_store_big_rec_extern_fields( field_ref += local_len; } extern_len = big_rec_vec->fields[i].len; + UNIV_MEM_ASSERT_RW(big_rec_vec->fields[i].data, + extern_len); ut_a(extern_len > 0); @@ -4507,6 +4509,7 @@ btr_copy_blob_prefix( mtr_commit(&mtr); if (page_no == FIL_NULL || copy_len != part_len) { + UNIV_MEM_ASSERT_RW(buf, copied_len); return(copied_len); } @@ -4690,6 +4693,7 @@ btr_copy_externally_stored_field_prefix_low( space_id, page_no, offset); inflateEnd(&d_stream); mem_heap_free(heap); + UNIV_MEM_ASSERT_RW(buf, d_stream.total_out); return(d_stream.total_out); } else { return(btr_copy_blob_prefix(buf, len, space_id, From b8df3227dac23612c622bbc552911a863dcda8b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 19 May 2010 11:01:52 +0300 Subject: [PATCH 063/461] Silence some more bogus Valgrind warnings on non-32-bit systems. (Bug #53307) --- storage/innodb_plugin/buf/buf0buddy.c | 5 +++++ storage/innodb_plugin/buf/buf0buf.c | 5 +++++ storage/innodb_plugin/buf/buf0lru.c | 7 ++++++- storage/innodb_plugin/page/page0zip.c | 5 +++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/storage/innodb_plugin/buf/buf0buddy.c b/storage/innodb_plugin/buf/buf0buddy.c index 66d802f8a36..07753cb8a60 100644 --- a/storage/innodb_plugin/buf/buf0buddy.c +++ b/storage/innodb_plugin/buf/buf0buddy.c @@ -495,7 +495,12 @@ success: mutex_exit(mutex); } else if (i == buf_buddy_get_slot(sizeof(buf_page_t))) { /* This must be a buf_page_t object. */ +#if UNIV_WORD_SIZE == 4 + /* On 32-bit systems, there is no padding in + buf_page_t. On other systems, Valgrind could complain + about uninitialized pad bytes. */ UNIV_MEM_ASSERT_RW(src, size); +#endif if (buf_buddy_relocate_block(src, dst)) { goto success; diff --git a/storage/innodb_plugin/buf/buf0buf.c b/storage/innodb_plugin/buf/buf0buf.c index f299c2df969..bc5e9814099 100644 --- a/storage/innodb_plugin/buf/buf0buf.c +++ b/storage/innodb_plugin/buf/buf0buf.c @@ -2280,7 +2280,12 @@ wait_until_unfixed: ut_ad(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE); mutex_enter(&block->mutex); +#if UNIV_WORD_SIZE == 4 + /* On 32-bit systems, there is no padding in buf_page_t. On + other systems, Valgrind could complain about uninitialized pad + bytes. */ UNIV_MEM_ASSERT_RW(&block->page, sizeof block->page); +#endif buf_block_buf_fix_inc(block, file, line); diff --git a/storage/innodb_plugin/buf/buf0lru.c b/storage/innodb_plugin/buf/buf0lru.c index 1fa7c088297..ac5eea649cb 100644 --- a/storage/innodb_plugin/buf/buf0lru.c +++ b/storage/innodb_plugin/buf/buf0lru.c @@ -1494,8 +1494,13 @@ alloc: ut_ad(prev_b->in_LRU_list); ut_ad(buf_page_in_file(prev_b)); +#if UNIV_WORD_SIZE == 4 + /* On 32-bit systems, there is no + padding in buf_page_t. On other + systems, Valgrind could complain about + uninitialized pad bytes. */ UNIV_MEM_ASSERT_RW(prev_b, sizeof *prev_b); - +#endif UT_LIST_INSERT_AFTER(LRU, buf_pool->LRU, prev_b, b); diff --git a/storage/innodb_plugin/page/page0zip.c b/storage/innodb_plugin/page/page0zip.c index a64a41ea518..8d9632a3548 100644 --- a/storage/innodb_plugin/page/page0zip.c +++ b/storage/innodb_plugin/page/page0zip.c @@ -3117,8 +3117,13 @@ page_zip_validate_low( temp_page_zip in a debugger when running valgrind --db-attach. */ VALGRIND_GET_VBITS(page, temp_page, UNIV_PAGE_SIZE); UNIV_MEM_ASSERT_RW(page, UNIV_PAGE_SIZE); +# if UNIV_WORD_SIZE == 4 VALGRIND_GET_VBITS(page_zip, &temp_page_zip, sizeof temp_page_zip); + /* On 32-bit systems, there is no padding in page_zip_des_t. + On other systems, Valgrind could complain about uninitialized + pad bytes. */ UNIV_MEM_ASSERT_RW(page_zip, sizeof *page_zip); +# endif VALGRIND_GET_VBITS(page_zip->data, temp_page, page_zip_get_size(page_zip)); UNIV_MEM_ASSERT_RW(page_zip->data, page_zip_get_size(page_zip)); From 627074a6a4514fc1bd7937190f4b5ea0440e596f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 19 May 2010 11:07:43 +0300 Subject: [PATCH 064/461] Make UNIV_DEBUG Valgrind friendly. Use | instead of +, and mask out the dont-care bits in debug assertions. --- storage/innodb_plugin/include/mach0data.ic | 23 ++++++++++------------ 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/storage/innodb_plugin/include/mach0data.ic b/storage/innodb_plugin/include/mach0data.ic index ef20356bd31..96d2417ac81 100644 --- a/storage/innodb_plugin/include/mach0data.ic +++ b/storage/innodb_plugin/include/mach0data.ic @@ -36,7 +36,7 @@ mach_write_to_1( ulint n) /*!< in: ulint integer to be stored, >= 0, < 256 */ { ut_ad(b); - ut_ad(n <= 0xFFUL); + ut_ad((n | 0xFFUL) <= 0xFFUL); b[0] = (byte)n; } @@ -65,7 +65,7 @@ mach_write_to_2( ulint n) /*!< in: ulint integer to be stored */ { ut_ad(b); - ut_ad(n <= 0xFFFFUL); + ut_ad((n | 0xFFFFUL) <= 0xFFFFUL); b[0] = (byte)(n >> 8); b[1] = (byte)(n); @@ -81,10 +81,7 @@ mach_read_from_2( /*=============*/ const byte* b) /*!< in: pointer to 2 bytes */ { - ut_ad(b); - return( ((ulint)(b[0]) << 8) - + (ulint)(b[1]) - ); + return(((ulint)(b[0]) << 8) | (ulint)(b[1])); } /********************************************************//** @@ -129,7 +126,7 @@ mach_write_to_3( ulint n) /*!< in: ulint integer to be stored */ { ut_ad(b); - ut_ad(n <= 0xFFFFFFUL); + ut_ad((n | 0xFFFFFFUL) <= 0xFFFFFFUL); b[0] = (byte)(n >> 16); b[1] = (byte)(n >> 8); @@ -148,8 +145,8 @@ mach_read_from_3( { ut_ad(b); return( ((ulint)(b[0]) << 16) - + ((ulint)(b[1]) << 8) - + (ulint)(b[2]) + | ((ulint)(b[1]) << 8) + | (ulint)(b[2]) ); } @@ -183,9 +180,9 @@ mach_read_from_4( { ut_ad(b); return( ((ulint)(b[0]) << 24) - + ((ulint)(b[1]) << 16) - + ((ulint)(b[2]) << 8) - + (ulint)(b[3]) + | ((ulint)(b[1]) << 16) + | ((ulint)(b[2]) << 8) + | (ulint)(b[3]) ); } @@ -721,7 +718,7 @@ mach_read_from_2_little_endian( /*===========================*/ const byte* buf) /*!< in: from where to read */ { - return((ulint)(*buf) + ((ulint)(*(buf + 1))) * 256); + return((ulint)(buf[0]) | ((ulint)(buf[1]) << 8)); } /*********************************************************//** From 3564a2643f49e3b4a75f2c6af9cf697971d2aa4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 19 May 2010 11:16:18 +0300 Subject: [PATCH 065/461] Make UNIV_DEBUG Valgrind friendly in the built-in InnoDB. Use | instead of +, and mask out the dont-care bits in debug assertions. --- storage/innobase/include/mach0data.ic | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/storage/innobase/include/mach0data.ic b/storage/innobase/include/mach0data.ic index dc7918c287b..fceb8017121 100644 --- a/storage/innobase/include/mach0data.ic +++ b/storage/innobase/include/mach0data.ic @@ -19,7 +19,7 @@ mach_write_to_1( ulint n) /* in: ulint integer to be stored, >= 0, < 256 */ { ut_ad(b); - ut_ad(n <= 0xFFUL); + ut_ad((n | 0xFFUL) <= 0xFFUL); b[0] = (byte)n; } @@ -48,7 +48,7 @@ mach_write_to_2( ulint n) /* in: ulint integer to be stored */ { ut_ad(b); - ut_ad(n <= 0xFFFFUL); + ut_ad((n | 0xFFFFUL) <= 0xFFFFUL); b[0] = (byte)(n >> 8); b[1] = (byte)(n); @@ -64,10 +64,7 @@ mach_read_from_2( /* out: ulint integer */ byte* b) /* in: pointer to 2 bytes */ { - ut_ad(b); - return( ((ulint)(b[0]) << 8) - + (ulint)(b[1]) - ); + return(((ulint)(b[0]) << 8) | (ulint)(b[1])); } /************************************************************ @@ -112,7 +109,7 @@ mach_write_to_3( ulint n) /* in: ulint integer to be stored */ { ut_ad(b); - ut_ad(n <= 0xFFFFFFUL); + ut_ad((n | 0xFFFFFFUL) <= 0xFFFFFFUL); b[0] = (byte)(n >> 16); b[1] = (byte)(n >> 8); @@ -131,8 +128,8 @@ mach_read_from_3( { ut_ad(b); return( ((ulint)(b[0]) << 16) - + ((ulint)(b[1]) << 8) - + (ulint)(b[2]) + | ((ulint)(b[1]) << 8) + | (ulint)(b[2]) ); } @@ -166,9 +163,9 @@ mach_read_from_4( { ut_ad(b); return( ((ulint)(b[0]) << 24) - + ((ulint)(b[1]) << 16) - + ((ulint)(b[2]) << 8) - + (ulint)(b[3]) + | ((ulint)(b[1]) << 16) + | ((ulint)(b[2]) << 8) + | (ulint)(b[3]) ); } @@ -670,7 +667,7 @@ mach_read_from_2_little_endian( /* out: unsigned long int */ byte* buf) /* in: from where to read */ { - return((ulint)(*buf) + ((ulint)(*(buf + 1))) * 256); + return((ulint)(buf[0]) | ((ulint)(buf[1]) << 8)); } /************************************************************* From 5539f5ccf6f71e102a44b484165655c3ceb8ea9d Mon Sep 17 00:00:00 2001 From: Tor Didriksen Date: Wed, 19 May 2010 11:18:59 +0200 Subject: [PATCH 066/461] Backport from next-mr-bugfixing of tor.didriksen@sun.com-20100106140051-3j2iuag63eltsr2e Bug #50087 Interval arithmetic for Event_queue_element is not portable. Subtraction of two unsigned months yielded a (very large) positive value. Conversion of this to a signed value was not necessarily well defined. Solution: do the subtraction on signed values. mysql-test/r/events_scheduling.result: Add test case. mysql-test/t/events_scheduling.test: Add test case. sql/event_data_objects.cc: Convert month to signed before doing the subtraction. --- mysql-test/r/events_scheduling.result | 19 +++++++++++++++++++ mysql-test/t/events_scheduling.test | 26 ++++++++++++++++++++++++++ sql/event_data_objects.cc | 5 +++-- 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/events_scheduling.result b/mysql-test/r/events_scheduling.result index 7dfd10a53f8..262caea3d7f 100644 --- a/mysql-test/r/events_scheduling.result +++ b/mysql-test/r/events_scheduling.result @@ -82,5 +82,24 @@ DROP TABLE table_1; DROP TABLE table_2; DROP TABLE table_3; DROP TABLE table_4; + +Bug #50087 Interval arithmetic for Event_queue_element is not portable. + +CREATE TABLE t1(a int); +CREATE EVENT e1 ON SCHEDULE EVERY 1 MONTH +STARTS NOW() - INTERVAL 1 MONTH +ENDS NOW() + INTERVAL 2 MONTH +ON COMPLETION PRESERVE +DO +INSERT INTO t1 VALUES (1); +CREATE EVENT e2 ON SCHEDULE EVERY 1 MONTH +STARTS NOW() +ENDS NOW() + INTERVAL 11 MONTH +ON COMPLETION PRESERVE +DO +INSERT INTO t1 VALUES (1); +DROP TABLE t1; +DROP EVENT e1; +DROP EVENT e2; DROP DATABASE events_test; SET GLOBAL event_scheduler=@event_scheduler; diff --git a/mysql-test/t/events_scheduling.test b/mysql-test/t/events_scheduling.test index 041a2def490..5f16f8bea6a 100644 --- a/mysql-test/t/events_scheduling.test +++ b/mysql-test/t/events_scheduling.test @@ -108,6 +108,32 @@ DROP TABLE table_1; DROP TABLE table_2; DROP TABLE table_3; DROP TABLE table_4; + +-- echo +-- echo Bug #50087 Interval arithmetic for Event_queue_element is not portable. +-- echo + +CREATE TABLE t1(a int); + +CREATE EVENT e1 ON SCHEDULE EVERY 1 MONTH +STARTS NOW() - INTERVAL 1 MONTH +ENDS NOW() + INTERVAL 2 MONTH +ON COMPLETION PRESERVE +DO + INSERT INTO t1 VALUES (1); + +CREATE EVENT e2 ON SCHEDULE EVERY 1 MONTH +STARTS NOW() +ENDS NOW() + INTERVAL 11 MONTH +ON COMPLETION PRESERVE +DO + INSERT INTO t1 VALUES (1); + +DROP TABLE t1; +DROP EVENT e1; +DROP EVENT e2; + + DROP DATABASE events_test; SET GLOBAL event_scheduler=@event_scheduler; diff --git a/sql/event_data_objects.cc b/sql/event_data_objects.cc index 92e237a17b7..0218092c4c7 100644 --- a/sql/event_data_objects.cc +++ b/sql/event_data_objects.cc @@ -834,8 +834,9 @@ bool get_next_time(const Time_zone *time_zone, my_time_t *next, } else { - long diff_months= (long) (local_now.year - local_start.year)*12 + - (local_now.month - local_start.month); + long diff_months= ((long) local_now.year - (long) local_start.year)*12 + + ((long) local_now.month - (long) local_start.month); + /* Unlike for seconds above, the formula below returns the interval that, when added to the local_start, will give the time in the From 3f8bde448c6b97f073576e1283224c3058320dea Mon Sep 17 00:00:00 2001 From: Alfranio Correia Date: Wed, 19 May 2010 18:01:12 +0100 Subject: [PATCH 067/461] BUG#53560 CREATE TEMP./DROP TEMP. are not binglogged correctly after a failed statement This patch fixes two problems described as follows: 1 - If there is an on-going transaction and a temporary table is created or dropped, any failed statement that follows the "create" or "drop commands" triggers a rollback and by consequence the slave will go out sync because the binary log will have a wrong sequence of events. To fix the problem, we changed the expression that evaluates when the cache should be flushed after either the rollback of a statment or transaction. 2 - When a "CREATE TEMPORARY TABLE SELECT * FROM" was executed the OPTION_KEEP_LOG was not set into the thd->options. For that reason, if the transaction had updated only transactional engines and was rolled back at the end (.e.g due to a deadlock) the changes were not written to the binary log, including the creation of the temporary table. To fix the problem, we have set the OPTION_KEEP_LOG into the thd->options when a "CREATE TEMPORARY TABLE SELECT * FROM" is executed. sql/log.cc: Reorganized the code based on the following functions: - bool ending_trans(const THD* thd, const bool all); - bool trans_has_updated_non_trans_table(const THD* thd); - bool trans_has_no_stmt_committed(const THD* thd, const bool all); - bool stmt_has_updated_non_trans_table(const THD* thd); sql/log.h: Added functions to organize the code in log.cc. sql/log_event.cc: Removed the OPTION_KEEP_LOG since it must be used only when creating and dropping temporary tables. sql/log_event_old.cc: Removed the OPTION_KEEP_LOG since it must be used only when creating and dropping temporary tables. sql/sql_parse.cc: When a "CREATE TEMPORARY TABLE SELECT * FROM" was executed the OPTION_KEEP_LOG was not set into the thd->options. To fix the problem, we have set the OPTION_KEEP_LOG into the thd->options when a "CREATE TEMPORARY TABLE SELECT * FROM" is executed. --- .../r/binlog_stm_mix_innodb_myisam.result | 3 + .../suite/rpl/r/rpl_temporary_errors.result | 57 ++++++++++ .../suite/rpl/t/rpl_temporary_errors.test | 40 +++++++ sql/log.cc | 106 +++++++++++++----- sql/log.h | 5 + sql/log_event.cc | 6 - sql/log_event_old.cc | 10 -- sql/sql_parse.cc | 4 + 8 files changed, 190 insertions(+), 41 deletions(-) diff --git a/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result index b3f9baed2dd..a26fcc1dc1a 100644 --- a/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result +++ b/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result @@ -364,6 +364,9 @@ master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (10,10) master-bin.000001 # Query # # BEGIN master-bin.000001 # Query # # use `test`; INSERT INTO t2 values (100,100) master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO t2 values (101,101) +master-bin.000001 # Query # # ROLLBACK master-bin.000001 # Query # # use `test`; DROP TABLE t1,t2 reset master; create table t1 (a int) engine=innodb; diff --git a/mysql-test/suite/rpl/r/rpl_temporary_errors.result b/mysql-test/suite/rpl/r/rpl_temporary_errors.result index d14380a6369..2bd1b691901 100644 --- a/mysql-test/suite/rpl/r/rpl_temporary_errors.result +++ b/mysql-test/suite/rpl/r/rpl_temporary_errors.result @@ -81,4 +81,61 @@ Last_SQL_Errno 0 Last_SQL_Error DROP TABLE t1; **** On Master **** +SET SQL_LOG_BIN= 0; DROP TABLE t1; +SET SQL_LOG_BIN= 1; +SET SESSION BINLOG_FORMAT=MIXED; +CREATE TABLE t_myisam (id INT, PRIMARY KEY (id)) engine= MyIsam; +INSERT INTO t_myisam (id) VALUES(1); +CREATE TABLE t_innodb (id INT) engine= Innodb; +INSERT INTO t_innodb (id) VALUES(1); +BEGIN; +INSERT INTO t_innodb(id) VALUES(2); +INSERT INTO t_myisam(id) VALUES(3); +CREATE TEMPORARY TABLE x (id INT); +INSERT INTO t_myisam(id) VALUES(4),(1); +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' +INSERT INTO t_innodb(id) VALUES(5); +COMMIT; +SELECT * FROM t_innodb; +id +1 +2 +5 +SELECT * FROM t_myisam; +id +1 +3 +4 +SELECT * FROM t_innodb; +id +1 +2 +5 +SELECT * FROM t_myisam; +id +1 +3 +4 +BEGIN; +CREATE TEMPORARY TABLE tmp2 SELECT * FROM t_innodb; +INSERT INTO t_innodb(id) VALUES(1); +INSERT INTO t_innodb(id) VALUES(1); +ROLLBACK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(2) +master-bin.000001 # Query # # use `test`; INSERT INTO t_myisam(id) VALUES(3) +master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE x (id INT) +master-bin.000001 # Query # # use `test`; INSERT INTO t_myisam(id) VALUES(4),(1) +master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(5) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tmp2 SELECT * FROM t_innodb +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(1) +master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(1) +master-bin.000001 # Query # # ROLLBACK +DROP TABLE t_myisam, t_innodb; diff --git a/mysql-test/suite/rpl/t/rpl_temporary_errors.test b/mysql-test/suite/rpl/t/rpl_temporary_errors.test index 3b373e00a62..4bc374cdca7 100644 --- a/mysql-test/suite/rpl/t/rpl_temporary_errors.test +++ b/mysql-test/suite/rpl/t/rpl_temporary_errors.test @@ -1,4 +1,5 @@ source include/master-slave.inc; +source include/have_innodb.inc; call mtr.add_suppression("Deadlock found"); @@ -30,4 +31,43 @@ DROP TABLE t1; --echo **** On Master **** connection master; +SET SQL_LOG_BIN= 0; DROP TABLE t1; +SET SQL_LOG_BIN= 1; + +# BUG#Bug #53259 Unsafe statement binlogged in statement format w/MyIsam temp tables +# +SET SESSION BINLOG_FORMAT=MIXED; +CREATE TABLE t_myisam (id INT, PRIMARY KEY (id)) engine= MyIsam; +INSERT INTO t_myisam (id) VALUES(1); +CREATE TABLE t_innodb (id INT) engine= Innodb; +INSERT INTO t_innodb (id) VALUES(1); + +let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1); +BEGIN; +INSERT INTO t_innodb(id) VALUES(2); +INSERT INTO t_myisam(id) VALUES(3); +CREATE TEMPORARY TABLE x (id INT); +--error 1062 +INSERT INTO t_myisam(id) VALUES(4),(1); +INSERT INTO t_innodb(id) VALUES(5); +COMMIT; + +SELECT * FROM t_innodb; +SELECT * FROM t_myisam; + +--sync_slave_with_master + +SELECT * FROM t_innodb; +SELECT * FROM t_myisam; + +--connection master + +BEGIN; +CREATE TEMPORARY TABLE tmp2 SELECT * FROM t_innodb; +INSERT INTO t_innodb(id) VALUES(1); +INSERT INTO t_innodb(id) VALUES(1); +ROLLBACK; +source include/show_binlog_events.inc; + +DROP TABLE t_myisam, t_innodb; diff --git a/sql/log.cc b/sql/log.cc index 7d820b48c43..79a6b4d6cb0 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1510,27 +1510,23 @@ static int binlog_commit(handlerton *hton, THD *thd, bool all) } /* - We commit the transaction if: + We flush the cache if: - - We are not in a transaction and committing a statement, or - - - We are in a transaction and a full transaction is committed + - we are committing a transaction; + - and no statement was committed before and just non-transactional + tables were updated. Otherwise, we accumulate the statement */ - ulonglong const in_transaction= - thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN); DBUG_PRINT("debug", - ("all: %d, empty: %s, in_transaction: %s, all.modified_non_trans_table: %s, stmt.modified_non_trans_table: %s", + ("all: %d, empty: %s, all.modified_non_trans_table: %s, stmt.modified_non_trans_table: %s", all, YESNO(trx_data->empty()), - YESNO(in_transaction), YESNO(thd->transaction.all.modified_non_trans_table), YESNO(thd->transaction.stmt.modified_non_trans_table))); - if (!in_transaction || all || - (!all && !trx_data->at_least_one_stmt_committed && - !stmt_has_updated_trans_table(thd) && - thd->transaction.stmt.modified_non_trans_table)) + if (ending_trans(thd, all) || + (trans_has_no_stmt_committed(thd, all) && + !stmt_has_updated_trans_table(thd) && stmt_has_updated_non_trans_table(thd))) { Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"), TRUE, TRUE, 0); error= binlog_end_trans(thd, trx_data, &qev, all); @@ -1593,7 +1589,7 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all) On the other hand, if a statement is transactional, we just safely roll it back. */ - if ((thd->transaction.stmt.modified_non_trans_table || + if ((stmt_has_updated_non_trans_table(thd) || (thd->options & OPTION_KEEP_LOG)) && mysql_bin_log.check_write_error(thd)) trx_data->set_incident(); @@ -1603,19 +1599,18 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all) { /* We flush the cache with a rollback, wrapped in a beging/rollback if: - . aborting a transaction that modified a non-transactional table; + . aborting a transaction that modified a non-transactional table or + the OPTION_KEEP_LOG is activate. . aborting a statement that modified both transactional and non-transactional tables but which is not in the boundaries of any transaction or there was no early change; - . the OPTION_KEEP_LOG is activate. */ - if ((all && thd->transaction.all.modified_non_trans_table) || - (!all && thd->transaction.stmt.modified_non_trans_table && - !(thd->options & (OPTION_BEGIN | OPTION_NOT_AUTOCOMMIT))) || - (!all && thd->transaction.stmt.modified_non_trans_table && - !trx_data->at_least_one_stmt_committed && - thd->current_stmt_binlog_row_based) || - ((thd->options & OPTION_KEEP_LOG))) + if ((ending_trans(thd, all) && + (trans_has_updated_non_trans_table(thd) || + (thd->options & OPTION_KEEP_LOG))) || + (trans_has_no_stmt_committed(thd, all) && + stmt_has_updated_non_trans_table(thd) && + thd->current_stmt_binlog_row_based)) { Query_log_event qev(thd, STRING_WITH_LEN("ROLLBACK"), TRUE, TRUE, 0); error= binlog_end_trans(thd, trx_data, &qev, all); @@ -1624,8 +1619,8 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all) Otherwise, we simply truncate the cache as there is no change on non-transactional tables as follows. */ - else if ((all && !thd->transaction.all.modified_non_trans_table) || - (!all && !thd->transaction.stmt.modified_non_trans_table)) + else if (ending_trans(thd, all) || + (!(thd->options & OPTION_KEEP_LOG) && !stmt_has_updated_non_trans_table(thd))) error= binlog_end_trans(thd, trx_data, 0, all); } if (!all) @@ -1721,7 +1716,7 @@ static int binlog_savepoint_rollback(handlerton *hton, THD *thd, void *sv) non-transactional table. Otherwise, truncate the binlog cache starting from the SAVEPOINT command. */ - if (unlikely(thd->transaction.all.modified_non_trans_table || + if (unlikely(trans_has_updated_non_trans_table(thd) || (thd->options & OPTION_KEEP_LOG))) { String log_query; @@ -3934,6 +3929,67 @@ bool MYSQL_BIN_LOG::is_query_in_union(THD *thd, query_id_t query_id_param) query_id_param >= thd->binlog_evt_union.first_query_id); } +/** + This function checks if a transaction, either a multi-statement + or a single statement transaction is about to commit or not. + + @param thd The client thread that executed the current statement. + @param all Committing a transaction (i.e. TRUE) or a statement + (i.e. FALSE). + @return + @c true if committing a transaction, otherwise @c false. +*/ +bool ending_trans(const THD* thd, const bool all) +{ + return (all || (!all && !(thd->options & + (OPTION_BEGIN | OPTION_NOT_AUTOCOMMIT)))); +} + +/** + This function checks if a non-transactional table was updated by + the current transaction. + + @param thd The client thread that executed the current statement. + @return + @c true if a non-transactional table was updated, @c false + otherwise. +*/ +bool trans_has_updated_non_trans_table(const THD* thd) +{ + return (thd->transaction.all.modified_non_trans_table || + thd->transaction.stmt.modified_non_trans_table); +} + +/** + This function checks if any statement was committed and cached. + + @param thd The client thread that executed the current statement. + @param all Committing a transaction (i.e. TRUE) or a statement + (i.e. FALSE). + @return + @c true if at a statement was committed and cached, @c false + otherwise. +*/ +bool trans_has_no_stmt_committed(const THD* thd, bool all) +{ + binlog_trx_data *const trx_data= + (binlog_trx_data*) thd_get_ha_data(thd, binlog_hton); + + return (!all && !trx_data->at_least_one_stmt_committed); +} + +/** + This function checks if a non-transactional table was updated by the + current statement. + + @param thd The client thread that executed the current statement. + @return + @c true if a non-transactional table was updated, @c false otherwise. +*/ +bool stmt_has_updated_non_trans_table(const THD* thd) +{ + return (thd->transaction.stmt.modified_non_trans_table); +} /* These functions are placed in this file since they need access to diff --git a/sql/log.h b/sql/log.h index 5af51e14d80..8d3880d9171 100644 --- a/sql/log.h +++ b/sql/log.h @@ -20,6 +20,11 @@ class Relay_log_info; class Format_description_log_event; +bool ending_trans(const THD* thd, const bool all); +bool trans_has_updated_non_trans_table(const THD* thd); +bool trans_has_no_stmt_committed(const THD* thd, const bool all); +bool stmt_has_updated_non_trans_table(const THD* thd); + /* Transaction Coordinator log - a base abstract class for two different implementations diff --git a/sql/log_event.cc b/sql/log_event.cc index a8e227fa99b..617d1188984 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -7544,12 +7544,6 @@ int Rows_log_event::do_apply_event(Relay_log_info const *rli) clear_all_errors(thd, const_cast(rli)); error= 0; } - - if (!cache_stmt) - { - DBUG_PRINT("info", ("Marked that we need to keep log")); - thd->options|= OPTION_KEEP_LOG; - } } // if (table) /* diff --git a/sql/log_event_old.cc b/sql/log_event_old.cc index df162761b35..be389acafe8 100644 --- a/sql/log_event_old.cc +++ b/sql/log_event_old.cc @@ -229,11 +229,6 @@ Old_rows_log_event::do_apply_event(Old_rows_log_event *ev, const Relay_log_info DBUG_EXECUTE_IF("STOP_SLAVE_after_first_Rows_event", const_cast(rli)->abort_slave= 1;); error= do_after_row_operations(table, error); - if (!ev->cache_stmt) - { - DBUG_PRINT("info", ("Marked that we need to keep log")); - ev_thd->options|= OPTION_KEEP_LOG; - } } /* @@ -1755,11 +1750,6 @@ int Old_rows_log_event::do_apply_event(Relay_log_info const *rli) DBUG_EXECUTE_IF("STOP_SLAVE_after_first_Rows_event", const_cast(rli)->abort_slave= 1;); error= do_after_row_operations(rli, error); - if (!cache_stmt) - { - DBUG_PRINT("info", ("Marked that we need to keep log")); - thd->options|= OPTION_KEEP_LOG; - } } // if (table) /* diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 93d80164ffb..98e7f187fc4 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2713,6 +2713,10 @@ mysql_execute_command(THD *thd) } } + /* So that CREATE TEMPORARY TABLE gets to binlog at commit/rollback */ + if (create_info.options & HA_LEX_CREATE_TMP_TABLE) + thd->options|= OPTION_KEEP_LOG; + /* select_create is currently not re-execution friendly and needs to be created for every execution of a PS/SP. From b8af4ab216ea6efd433ebdd2da4911978bd22d88 Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Thu, 20 May 2010 10:31:03 +0400 Subject: [PATCH 068/461] Bug#52884 mysql-test-run does not work with --debug option Server crashes on 64bit linux with 'double free or corruption' message, on 32bit mysql-test-run silently fails on bootstrap stage. The problem is that FreeState() is called twice for init_settings struct in _db_end_ function. The fix is to remove superfluous FreeState() call. Additional fix: fixed discrepancy of result file when debug & valgrind options are enabled for MTR. dbug/dbug.c: The problem is that FreeState() is called twice for init_settings struct in _db_end_ function. The fix is to remove superfluous FreeState() call. mysql-test/r/variables_debug.result: fixed discrepancy of result file when debug & valgrind options are enabled for MTR. mysql-test/t/variables_debug.test: fixed discrepancy of result file when debug & valgrind options are enabled for MTR. sql/set_var.cc: fixed discrepancy of result file when debug & valgrind options are enabled for MTR. --- dbug/dbug.c | 3 --- mysql-test/r/variables_debug.result | 2 ++ mysql-test/t/variables_debug.test | 3 +++ sql/set_var.cc | 9 +++++++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/dbug/dbug.c b/dbug/dbug.c index 30ad6c2c6d1..8fa5ed9af6b 100644 --- a/dbug/dbug.c +++ b/dbug/dbug.c @@ -1517,10 +1517,7 @@ void _db_end_() while ((discard= cs->stack)) { if (discard == &init_settings) - { - FreeState (cs, discard, 0); break; - } cs->stack= discard->next; FreeState(cs, discard, 1); } diff --git a/mysql-test/r/variables_debug.result b/mysql-test/r/variables_debug.result index 85eaf34b033..d578fa957fc 100644 --- a/mysql-test/r/variables_debug.result +++ b/mysql-test/r/variables_debug.result @@ -1,3 +1,4 @@ +SET @old_debug = @@GLOBAL.debug; set debug= 'T'; select @@debug; @@debug @@ -22,4 +23,5 @@ SET GLOBAL debug=''; SELECT @@global.debug; @@global.debug +SET GLOBAL debug=@old_debug; End of 5.1 tests diff --git a/mysql-test/t/variables_debug.test b/mysql-test/t/variables_debug.test index 8f2bde7ae42..12f5d2e6ca5 100644 --- a/mysql-test/t/variables_debug.test +++ b/mysql-test/t/variables_debug.test @@ -1,5 +1,7 @@ --source include/have_debug.inc +SET @old_debug = @@GLOBAL.debug; + # # Bug#34678 @@debug variable's incremental mode # @@ -21,5 +23,6 @@ SELECT @@global.debug; SET GLOBAL debug=''; SELECT @@global.debug; +SET GLOBAL debug=@old_debug; --echo End of 5.1 tests diff --git a/sql/set_var.cc b/sql/set_var.cc index f7d9d9df42e..8f0ad93ba43 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -4239,10 +4239,15 @@ bool sys_var_thd_dbug::check(THD *thd, set_var *var) bool sys_var_thd_dbug::update(THD *thd, set_var *var) { + char buf[256]; + String str(buf, sizeof(buf), system_charset_info), *res; + + res= var->value->val_str(&str); + if (var->type == OPT_GLOBAL) - DBUG_SET_INITIAL(var ? var->value->str_value.c_ptr() : ""); + DBUG_SET_INITIAL(res ? res->c_ptr() : ""); else - DBUG_SET(var ? var->value->str_value.c_ptr() : ""); + DBUG_SET(res ? res->c_ptr() : ""); return 0; } From 094a1f1e58c09a1df922aeff942712c2c8be9914 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Thu, 20 May 2010 10:39:02 +0300 Subject: [PATCH 069/461] Merge from mysql-trunk-innodb into mysql-5.1-innodb/storage/innobase: ------------------------------------------------------------ revno: 3094 revision-id: vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh parent: vasil.dimov@oracle.com-20100512173700-byf8xntxjur1hqov committer: Vasil Dimov branch nick: mysql-trunk-innodb timestamp: Thu 2010-05-13 10:46:52 +0300 message: Followup to Bug#51920, fix binlog.binlog_killed This is a followup to the fix of Bug#51920 Innodb connections in row lock wait ignore KILL until lock wait timeout in that fix (rb://279) the behavior was changed to honor when a trx is interrupted during lock wait, but the returned error code was still "lock wait timeout" when it should be "interrupted". This change fixes the non-deterministically failing test binlog.binlog_killed, that failed like this: binlog.binlog_killed 'stmt' [ fail ] Test ended at 2010-05-12 11:39:08 CURRENT_TEST: binlog.binlog_killed mysqltest: At line 208: query 'reap' failed with wrong errno 1205: 'Lock wait timeout exceeded; try restarting transaction', instead of 0... Approved by: Sunny Bains (rb://344) ------------------------------------------------------------ This merge is non-trivial since it has to introduce the DB_INTERRUPTED error code. Also revert vasil.dimov@oracle.com-20100408165555-9rpjh24o0sa9ad5y which adjusted the binlog.binlog_killed test to the new (wrong) behavior --- mysql-test/suite/binlog/t/binlog_killed.test | 2 +- storage/innobase/handler/ha_innodb.cc | 4 ++++ storage/innobase/include/db0err.h | 3 +++ storage/innobase/row/row0mysql.c | 1 + storage/innobase/srv/srv0srv.c | 10 +++++++--- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/mysql-test/suite/binlog/t/binlog_killed.test b/mysql-test/suite/binlog/t/binlog_killed.test index ce6d344af32..e2db326129d 100644 --- a/mysql-test/suite/binlog/t/binlog_killed.test +++ b/mysql-test/suite/binlog/t/binlog_killed.test @@ -202,7 +202,7 @@ eval kill query $ID; rollback; connection con2; ---error 0,ER_QUERY_INTERRUPTED,ER_LOCK_WAIT_TIMEOUT +--error 0,ER_QUERY_INTERRUPTED reap; # todo 1,2 above rollback; diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index f2a6c52ce7b..cf7ec4d6e6f 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -759,6 +759,10 @@ convert_error_code_to_mysql( } else if (error == DB_UNSUPPORTED) { return(HA_ERR_UNSUPPORTED); + } else if (error == DB_INTERRUPTED) { + + my_error(ER_QUERY_INTERRUPTED, MYF(0)); + return(-1); } else { return(-1); // Unknown error } diff --git a/storage/innobase/include/db0err.h b/storage/innobase/include/db0err.h index ed7ce151718..b1461689d38 100644 --- a/storage/innobase/include/db0err.h +++ b/storage/innobase/include/db0err.h @@ -69,6 +69,9 @@ Created 5/24/1996 Heikki Tuuri a feature that it can't recoginize or work with e.g., FT indexes created by a later version of the engine. */ +#define DB_INTERRUPTED 49 /* the query has been interrupted with + "KILL QUERY N;" */ + /* The following are partial failure codes */ #define DB_FAIL 1000 #define DB_OVERFLOW 1001 diff --git a/storage/innobase/row/row0mysql.c b/storage/innobase/row/row0mysql.c index 20fb69499a1..b4ce31575c7 100644 --- a/storage/innobase/row/row0mysql.c +++ b/storage/innobase/row/row0mysql.c @@ -483,6 +483,7 @@ handle_new_error: } else if (err == DB_ROW_IS_REFERENCED || err == DB_NO_REFERENCED_ROW || err == DB_CANNOT_ADD_CONSTRAINT + || err == DB_INTERRUPTED || err == DB_TOO_MANY_CONCURRENT_TRXS) { if (savept) { /* Roll back the latest, possibly incomplete diff --git a/storage/innobase/srv/srv0srv.c b/storage/innobase/srv/srv0srv.c index a2eed3f171c..5b1184fb416 100644 --- a/storage/innobase/srv/srv0srv.c +++ b/storage/innobase/srv/srv0srv.c @@ -1554,12 +1554,16 @@ srv_suspend_mysql_thread( mutex_exit(&kernel_mutex); - if (trx_is_interrupted(trx) - || (srv_lock_wait_timeout < 100000000 - && wait_time > (double)srv_lock_wait_timeout)) { + if (srv_lock_wait_timeout < 100000000 + && wait_time > (double)srv_lock_wait_timeout) { trx->error_state = DB_LOCK_WAIT_TIMEOUT; } + + if (trx_is_interrupted(trx)) { + + trx->error_state = DB_INTERRUPTED; + } #else /* UNIV_HOTBACKUP */ /* This function depends on MySQL code that is not included in InnoDB Hot Backup builds. Besides, this function should never From 56586334f123a86237d0921667493acfaaf9996f Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Thu, 20 May 2010 10:50:07 +0300 Subject: [PATCH 070/461] Merge from mysql-trunk-innodb into mysql-5.1-innodb/storage/innodb_plugin: ------------------------------------------------------------ revno: 3094 revision-id: vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh parent: vasil.dimov@oracle.com-20100512173700-byf8xntxjur1hqov committer: Vasil Dimov branch nick: mysql-trunk-innodb timestamp: Thu 2010-05-13 10:46:52 +0300 message: Followup to Bug#51920, fix binlog.binlog_killed This is a followup to the fix of Bug#51920 Innodb connections in row lock wait ignore KILL until lock wait timeout in that fix (rb://279) the behavior was changed to honor when a trx is interrupted during lock wait, but the returned error code was still "lock wait timeout" when it should be "interrupted". This change fixes the non-deterministically failing test binlog.binlog_killed, that failed like this: binlog.binlog_killed 'stmt' [ fail ] Test ended at 2010-05-12 11:39:08 CURRENT_TEST: binlog.binlog_killed mysqltest: At line 208: query 'reap' failed with wrong errno 1205: 'Lock wait timeout exceeded; try restarting transaction', instead of 0... Approved by: Sunny Bains (rb://344) ------------------------------------------------------------ --- storage/innodb_plugin/row/row0mysql.c | 1 + storage/innodb_plugin/srv/srv0srv.c | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/storage/innodb_plugin/row/row0mysql.c b/storage/innodb_plugin/row/row0mysql.c index ff3491a4f31..9592de88346 100644 --- a/storage/innodb_plugin/row/row0mysql.c +++ b/storage/innodb_plugin/row/row0mysql.c @@ -522,6 +522,7 @@ handle_new_error: case DB_CANNOT_ADD_CONSTRAINT: case DB_TOO_MANY_CONCURRENT_TRXS: case DB_OUT_OF_FILE_SPACE: + case DB_INTERRUPTED: if (savept) { /* Roll back the latest, possibly incomplete insertion or update */ diff --git a/storage/innodb_plugin/srv/srv0srv.c b/storage/innodb_plugin/srv/srv0srv.c index 63c355cea32..f7e7e351bdc 100644 --- a/storage/innodb_plugin/srv/srv0srv.c +++ b/storage/innodb_plugin/srv/srv0srv.c @@ -1609,12 +1609,16 @@ srv_suspend_mysql_thread( innodb_lock_wait_timeout, because trx->mysql_thd == NULL. */ lock_wait_timeout = thd_lock_wait_timeout(trx->mysql_thd); - if (trx_is_interrupted(trx) - || (lock_wait_timeout < 100000000 - && wait_time > (double) lock_wait_timeout)) { + if (lock_wait_timeout < 100000000 + && wait_time > (double) lock_wait_timeout) { trx->error_state = DB_LOCK_WAIT_TIMEOUT; } + + if (trx_is_interrupted(trx)) { + + trx->error_state = DB_INTERRUPTED; + } } /********************************************************************//** From 98406ba452be5fc8b0ee53cf69812342af1c9ffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 20 May 2010 13:40:42 +0300 Subject: [PATCH 071/461] Bug#53593: Add some instrumentation to improve Valgrind sensitivity BUILD/*: Add valgrind_configs=--with-valgrind. BUILD/*: Remove -USAFEMALLOC from valgrind_flags. configure.in: Add AC_ARG_WITH(valgrind) and HAVE_VALGRIND. include/my_sys.h: Define a number of MEM_ wrappers for VALGRIND_ functions. include/my_sys.h: Make TRASH do MEM_UNDEFINED(). include/m_string.h: Remove unused macro bzero_if_purify(A,B). _mymalloc(): Declare MEM_UNDEFINED() on the allocated memory. _myfree(): Declare MEM_NOACCESS() on the freed memory. storage/innobase/include/univ.i: Enable UNIV_DEBUG_VALGRIND based on HAVE_VALGRIND rather than HAVE_purify. Possible things to do: * In my_global.h, remove the defined(HAVE_purify) condition from the _WIN32 uint3korr(). * In my_global.h *int*korr(), use | instead of + in order to keep the Valgrind V bits accurate * Consider replacing HAVE_purify with HAVE_VALGRIND * Use VALGRIND_CREATE_BLOCK, VALGRIND_DISCARD in mem_root and similar places --- BUILD/SETUP.sh | 6 +++++- BUILD/build_mccge.sh | 3 ++- BUILD/compile-amd64-valgrind-max | 2 +- BUILD/compile-pentium-icc-valgrind-max | 2 +- BUILD/compile-pentium-valgrind-max | 2 +- BUILD/compile-pentium-valgrind-max-no-ndb | 2 +- BUILD/compile-pentium64-valgrind-max | 2 +- configure.in | 11 +++++++++++ include/m_string.h | 3 --- include/my_sys.h | 17 +++++++++++++++-- mysys/safemalloc.c | 5 +++++ storage/innobase/include/univ.i | 4 ++-- storage/innodb_plugin/include/univ.i | 4 ++-- 13 files changed, 47 insertions(+), 16 deletions(-) diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh index 3655d3eae67..0bc16f120e5 100755 --- a/BUILD/SETUP.sh +++ b/BUILD/SETUP.sh @@ -119,8 +119,12 @@ fi # Set flags for various build configurations. # Used in -valgrind builds -valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify " +# Override -DFORCE_INIT_OF_VARS from debug_cflags. It enables the macro +# LINT_INIT(), which is only useful for silencing spurious warnings +# of static analysis tools. We want LINT_INIT() to be a no-op in Valgrind. +valgrind_flags="-UFORCE_INIT_OF_VARS -DHAVE_purify " valgrind_flags="$valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max" +valgrind_configs="--with-valgrind" # # Used in -debug builds debug_cflags="-DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS " diff --git a/BUILD/build_mccge.sh b/BUILD/build_mccge.sh index fc0f8181692..43ca117fb78 100755 --- a/BUILD/build_mccge.sh +++ b/BUILD/build_mccge.sh @@ -938,9 +938,10 @@ set_up_ccache() set_valgrind_flags() { if test "x$valgrind_flag" = "xyes" ; then - loc_valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify " + loc_valgrind_flags="-UFORCE_INIT_OF_VARS -DHAVE_purify " loc_valgrind_flags="$loc_valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max" compiler_flags="$compiler_flags $loc_valgrind_flags" + with_flags="$with_flags --with-valgrind" fi } diff --git a/BUILD/compile-amd64-valgrind-max b/BUILD/compile-amd64-valgrind-max index 962d0f17b04..fb8dce38df3 100755 --- a/BUILD/compile-amd64-valgrind-max +++ b/BUILD/compile-amd64-valgrind-max @@ -4,7 +4,7 @@ path=`dirname $0` . "$path/SETUP.sh" extra_flags="$amd64_cflags $debug_cflags $valgrind_flags" -extra_configs="$amd64_configs $debug_configs $max_configs" +extra_configs="$amd64_configs $debug_configs $valgrind_configs $max_configs" . "$path/FINISH.sh" diff --git a/BUILD/compile-pentium-icc-valgrind-max b/BUILD/compile-pentium-icc-valgrind-max index 58acf892f5a..0babf9ee881 100755 --- a/BUILD/compile-pentium-icc-valgrind-max +++ b/BUILD/compile-pentium-icc-valgrind-max @@ -29,6 +29,6 @@ extra_flags="$pentium_cflags $debug_cflags $valgrind_flags" c_warnings="-Wall -Wcheck -wd161,444,279,810,981,1292,1469,1572" cxx_warnings="$c_warnings -wd869,874" base_cxxflags="-fno-exceptions -fno-rtti" -extra_configs="$pentium_configs $debug_configs" +extra_configs="$pentium_configs $debug_configs $valgrind_configs" . "$path/FINISH.sh" diff --git a/BUILD/compile-pentium-valgrind-max b/BUILD/compile-pentium-valgrind-max index 09cc162d2be..8ef47bfbc17 100755 --- a/BUILD/compile-pentium-valgrind-max +++ b/BUILD/compile-pentium-valgrind-max @@ -4,7 +4,7 @@ path=`dirname $0` . "$path/SETUP.sh" extra_flags="$pentium_cflags $debug_cflags $valgrind_flags" -extra_configs="$pentium_configs $debug_configs $max_configs" +extra_configs="$pentium_configs $debug_configs $valgrind_configs $max_configs" . "$path/FINISH.sh" diff --git a/BUILD/compile-pentium-valgrind-max-no-ndb b/BUILD/compile-pentium-valgrind-max-no-ndb index 66f6ae08a7f..f480f83ebf7 100755 --- a/BUILD/compile-pentium-valgrind-max-no-ndb +++ b/BUILD/compile-pentium-valgrind-max-no-ndb @@ -4,7 +4,7 @@ path=`dirname $0` . "$path/SETUP.sh" extra_flags="$pentium_cflags $debug_cflags $valgrind_flags" -extra_configs="$pentium_configs $debug_configs $max_no_ndb_configs" +extra_configs="$pentium_configs $debug_configs $valgrind_configs $max_no_ndb_configs" . "$path/FINISH.sh" diff --git a/BUILD/compile-pentium64-valgrind-max b/BUILD/compile-pentium64-valgrind-max index fa476cbb50a..eb3d20c874d 100755 --- a/BUILD/compile-pentium64-valgrind-max +++ b/BUILD/compile-pentium64-valgrind-max @@ -4,7 +4,7 @@ path=`dirname $0` . "$path/SETUP.sh" extra_flags="$pentium64_cflags $debug_cflags $valgrind_flags" -extra_configs="$pentium_configs $debug_configs $max_configs" +extra_configs="$pentium_configs $debug_configs $valgrind_configs $max_configs" . "$path/FINISH.sh" diff --git a/configure.in b/configure.in index 53852f46981..a2a3a6196fc 100644 --- a/configure.in +++ b/configure.in @@ -1729,6 +1729,17 @@ else CXXFLAGS="$OPTIMIZE_CXXFLAGS $CXXFLAGS" fi +AC_ARG_WITH([valgrind], + [AS_HELP_STRING([--with-valgrind], + [Valgrind instrumentation @<:@default=no@:>@])], + [], [with_valgrind=no]) + +if test "$with_valgrind" != "no" +then + AC_CHECK_HEADERS([valgrind/valgrind.h valgrind/memcheck.h], + [AC_DEFINE([HAVE_VALGRIND], [1], [Define for Valgrind support])]) +fi + # Debug Sync Facility. NOTE: depends on 'with_debug'. Must be behind it. AC_MSG_CHECKING(if Debug Sync Facility should be enabled.) AC_ARG_ENABLE(debug_sync, diff --git a/include/m_string.h b/include/m_string.h index a25675f2638..b2a1d9ff2f4 100644 --- a/include/m_string.h +++ b/include/m_string.h @@ -127,9 +127,6 @@ extern size_t bcmp(const uchar *s1,const uchar *s2,size_t len); extern size_t my_bcmp(const uchar *s1,const uchar *s2,size_t len); #undef bcmp #define bcmp(A,B,C) my_bcmp((A),(B),(C)) -#define bzero_if_purify(A,B) bzero(A,B) -#else -#define bzero_if_purify(A,B) #endif /* HAVE_purify */ #ifndef bmove512 diff --git a/include/my_sys.h b/include/my_sys.h index 59b44307b6f..4b26cbee8cd 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -25,6 +25,19 @@ typedef struct my_aio_result { } my_aio_result; #endif +#ifdef HAVE_VALGRIND +# include +# define MEM_UNDEFINED(a,len) VALGRIND_MAKE_MEM_UNDEFINED(a,len) +# define MEM_NOACCESS(a,len) VALGRIND_MAKE_MEM_NOACCESS(a,len) +# define MEM_CHECK_ADDRESSABLE(a,len) VALGRIND_CHECK_MEM_IS_ADDRESSABLE(a,len) +# define MEM_CHECK_DEFINED(a,len) VALGRIND_CHECK_MEM_IS_DEFINED(a,len) +#else /* HAVE_VALGRIND */ +# define MEM_UNDEFINED(a,len) ((void) 0) +# define MEM_NOACCESS(a,len) ((void) 0) +# define MEM_CHECK_ADDRESSABLE(a,len) ((void) 0) +# define MEM_CHECK_DEFINED(a,len) ((void) 0) +#endif /* HAVE_VALGRIND */ + #ifndef THREAD extern int NEAR my_errno; /* Last error in mysys */ #else @@ -141,7 +154,7 @@ extern int NEAR my_errno; /* Last error in mysys */ #define my_memdup(A,B,C) _my_memdup((A),(B), __FILE__,__LINE__,C) #define my_strdup(A,C) _my_strdup((A), __FILE__,__LINE__,C) #define my_strndup(A,B,C) _my_strndup((A),(B),__FILE__,__LINE__,C) -#define TRASH(A,B) bfill(A, B, 0x8F) +#define TRASH(A,B) do { bfill(A, B, 0x8F); MEM_UNDEFINED(A, B); } while (0) #define QUICK_SAFEMALLOC sf_malloc_quick=1 #define NORMAL_SAFEMALLOC sf_malloc_quick=0 extern uint sf_malloc_prehunc,sf_malloc_endhunc,sf_malloc_quick; @@ -169,7 +182,7 @@ extern char *my_strndup(const char *from, size_t length, #define CALLER_INFO_PROTO /* nothing */ #define CALLER_INFO /* nothing */ #define ORIG_CALLER_INFO /* nothing */ -#define TRASH(A,B) /* nothing */ +#define TRASH(A,B) do{MEM_CHECK_ADDRESSABLE(A,B);MEM_UNDEFINED(A,B);} while (0) #endif #if defined(ENABLED_DEBUG_SYNC) diff --git a/mysys/safemalloc.c b/mysys/safemalloc.c index c484f1d4c54..1235cb5ddd8 100644 --- a/mysys/safemalloc.c +++ b/mysys/safemalloc.c @@ -190,9 +190,12 @@ void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags) sf_malloc_count++; pthread_mutex_unlock(&THR_LOCK_malloc); + MEM_CHECK_ADDRESSABLE(data, size); /* Set the memory to the aribtrary wierd value */ if ((MyFlags & MY_ZEROFILL) || !sf_malloc_quick) bfill(data, size, (char) (MyFlags & MY_ZEROFILL ? 0 : ALLOC_VAL)); + if (!(MyFlags & MY_ZEROFILL)) + MEM_UNDEFINED(data, size); /* Return a pointer to the real data */ DBUG_PRINT("exit",("ptr: %p", data)); if (sf_min_adress > data) @@ -309,7 +312,9 @@ void _myfree(void *ptr, const char *filename, uint lineno, myf myflags) if (!sf_malloc_quick) bfill(ptr, irem->datasize, (pchar) FREE_VAL); #endif + MEM_NOACCESS(ptr, irem->datasize); *((uint32*) ((char*) ptr- sizeof(uint32)))= ~MAGICKEY; + MEM_NOACCESS((char*) ptr - sizeof(uint32), sizeof(uint32)); /* Actually free the memory */ free((char*) irem); DBUG_VOID_RETURN; diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i index ecf754762ad..97d022d284e 100644 --- a/storage/innobase/include/univ.i +++ b/storage/innobase/include/univ.i @@ -82,9 +82,9 @@ memory is read outside the allocated blocks. */ /* Make a non-inline debug version */ -#ifdef HAVE_purify +#if defined HAVE_VALGRIND # define UNIV_DEBUG_VALGRIND -#endif /* HAVE_purify */ +#endif /* HAVE_VALGRIND */ #if 0 #define UNIV_DEBUG_VALGRIND /* Enable extra Valgrind instrumentation */ diff --git a/storage/innodb_plugin/include/univ.i b/storage/innodb_plugin/include/univ.i index 8fb2505a791..018fd157a25 100644 --- a/storage/innodb_plugin/include/univ.i +++ b/storage/innodb_plugin/include/univ.i @@ -165,9 +165,9 @@ command. Not tested on Windows. */ #define UNIV_COMPILE_TEST_FUNCS */ -#ifdef HAVE_purify +#if defined HAVE_VALGRIND # define UNIV_DEBUG_VALGRIND -#endif /* HAVE_purify */ +#endif /* HAVE_VALGRIND */ #if 0 #define UNIV_DEBUG_VALGRIND /* Enable extra Valgrind instrumentation */ From a426d6f9a857ae939675b37cbc6856ae30a2e162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 20 May 2010 16:07:34 +0300 Subject: [PATCH 072/461] buf_LRU_free_block(): Correct an error in the comment. --- storage/innodb_plugin/buf/buf0lru.c | 2 +- storage/innodb_plugin/include/buf0lru.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/storage/innodb_plugin/buf/buf0lru.c b/storage/innodb_plugin/buf/buf0lru.c index ac5eea649cb..78d8d348e2a 100644 --- a/storage/innodb_plugin/buf/buf0lru.c +++ b/storage/innodb_plugin/buf/buf0lru.c @@ -1364,7 +1364,7 @@ buf_LRU_make_block_old( Try to free a block. If bpage is a descriptor of a compressed-only page, the descriptor object will be freed as well. -NOTE: If this function returns BUF_LRU_FREED, it will not temporarily +NOTE: If this function returns BUF_LRU_FREED, it will temporarily release buf_pool_mutex. Furthermore, the page frame will no longer be accessible via bpage. diff --git a/storage/innodb_plugin/include/buf0lru.h b/storage/innodb_plugin/include/buf0lru.h index 009430af35b..5a9cfd059f3 100644 --- a/storage/innodb_plugin/include/buf0lru.h +++ b/storage/innodb_plugin/include/buf0lru.h @@ -96,7 +96,7 @@ buf_LRU_insert_zip_clean( Try to free a block. If bpage is a descriptor of a compressed-only page, the descriptor object will be freed as well. -NOTE: If this function returns BUF_LRU_FREED, it will not temporarily +NOTE: If this function returns BUF_LRU_FREED, it will temporarily release buf_pool_mutex. Furthermore, the page frame will no longer be accessible via bpage. From 09438406cb773c4f8e1d3e6b243c39ea5ab7f6bc Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Thu, 20 May 2010 16:27:35 +0300 Subject: [PATCH 073/461] Disable main.ps_3innodb for valgrind tests since it results in known failures, that are described in Bug#38999 valgrind warnings for update statement in function compare_record() At the time I am adding this the failures are: main.ps_3innodb [ fail ] Found warnings/errors in server log file! Test ended at 2010-05-20 01:17:34 line ==31559== Thread 11: ==31559== Conditional jump or move depends on uninitialised value(s) ==31559== at 0x75C5BD: compare_record(st_table*) (sql_update.cc:35) ==31559== by 0x744732: write_record(THD*, st_table*, st_copy_info*) (sql_insert.cc:1486) ==31559== by 0x74A0D7: mysql_insert(THD*, TABLE_LIST*, List&, List >&, List&, List&, enum_duplicates, bool) (sql_insert.cc:835) ==31559== by 0x6A79B4: mysql_execute_command(THD*) (sql_parse.cc:3198) ==31559== by 0x754998: Prepared_statement::execute(String*, bool) (sql_prepare.cc:3583) ==31559== by 0x754C4F: Prepared_statement::execute_loop(String*, bool, unsigned char*, unsigned char*) (sql_prepare.cc:3258) ==31559== by 0x754F33: mysql_sql_stmt_execute(THD*) (sql_prepare.cc:2529) ==31559== by 0x6A5028: mysql_execute_command(THD*) (sql_parse.cc:2272) ==31559== by 0x6ADAE8: mysql_parse(THD*, char const*, unsigned, char const**) (sql_parse.cc:5986) ==31559== by 0x6AF3A4: dispatch_command(enum_server_command, THD*, char*, unsigned) (sql_parse.cc:1233) ==31559== by 0x6B0800: do_command(THD*) (sql_parse.cc:874) ==31559== by 0x69CB46: handle_one_connection (sql_connect.cc:1134) ==31559== by 0x33EDA062F6: start_thread (in /lib64/libpthread-2.5.so) ==31559== by 0x33ECED1B6C: clone (in /lib64/libc-2.5.so) ==31559== Conditional jump or move depends on uninitialised value(s) ==31559== at 0x75C5D0: compare_record(st_table*) (sql_update.cc:35) ==31559== by 0x744732: write_record(THD*, st_table*, st_copy_info*) (sql_insert.cc:1486) ==31559== by 0x74A0D7: mysql_insert(THD*, TABLE_LIST*, List&, List >&, List&, List&, enum_duplicates, bool) (sql_insert.cc:835) ==31559== by 0x6A79B4: mysql_execute_command(THD*) (sql_parse.cc:3198) ==31559== by 0x754998: Prepared_statement::execute(String*, bool) (sql_prepare.cc:3583) ==31559== by 0x754C4F: Prepared_statement::execute_loop(String*, bool, unsigned char*, unsigned char*) (sql_prepare.cc:3258) ==31559== by 0x754F33: mysql_sql_stmt_execute(THD*) (sql_prepare.cc:2529) ==31559== by 0x6A5028: mysql_execute_command(THD*) (sql_parse.cc:2272) ==31559== by 0x6ADAE8: mysql_parse(THD*, char const*, unsigned, char const**) (sql_parse.cc:5986) ==31559== by 0x6AF3A4: dispatch_command(enum_server_command, THD*, char*, unsigned) (sql_parse.cc:1233) ==31559== by 0x6B0800: do_command(THD*) (sql_parse.cc:874) ==31559== by 0x69CB46: handle_one_connection (sql_connect.cc:1134) ==31559== by 0x33EDA062F6: start_thread (in /lib64/libpthread-2.5.so) ==31559== by 0x33ECED1B6C: clone (in /lib64/libc-2.5.so) ^ Found warnings in /export/home4/pb2/test/sb_3-1827397-1274300957.87/mysql-5.1.48-linux-x86_64-test/mysql-test/var-n_mix/log/mysqld.1.err --- mysql-test/t/ps_3innodb.test | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mysql-test/t/ps_3innodb.test b/mysql-test/t/ps_3innodb.test index e25a8b1f469..10d2e7a9ae5 100644 --- a/mysql-test/t/ps_3innodb.test +++ b/mysql-test/t/ps_3innodb.test @@ -8,6 +8,10 @@ # NOTE: PLEASE SEE ps_1general.test (bottom) # BEFORE ADDING NEW TEST CASES HERE !!! +# See Bug#38999 valgrind warnings for update statement in function +# compare_record() +-- source include/not_valgrind.inc + use test; -- source include/have_innodb.inc From 37b02cd7d99278aec20e793c79ed105e99b2f7e7 Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Thu, 20 May 2010 17:38:01 +0200 Subject: [PATCH 074/461] BUG#52987: mysqldump fails if umask=0077 Problem: The test case mysqldump reads a file that must be world-readable. The test did not force the file to be world-readable, so if the tree was branched with a umask of 0077, the test would fail. Fix: chmod the file. mysql-test/t/mysqldump.test: Added chmod so that the file is guaranteed to be world-readable. --- mysql-test/t/mysqldump.test | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index 0bf9916dcd5..9246d488dd8 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -1983,6 +1983,7 @@ drop table if exists `load`; create table `load` (a varchar(255)); --copy_file std_data/words.dat $MYSQLTEST_VARDIR/tmp/load.txt +--chmod 0644 $MYSQLTEST_VARDIR/tmp/load.txt --exec $MYSQL_IMPORT --ignore test $MYSQLTEST_VARDIR/tmp/load.txt From c2ebb0ac882feadedd0bbca71277fd2de66aa957 Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Fri, 21 May 2010 15:23:48 +0400 Subject: [PATCH 075/461] Bug #42064: low memory crash when importing hex strings, in Item_hex_string::Item_hex_string The status of memory allocation in the Lex_input_stream (called from the Parser_state constructor) was not checked which led to a parser crash in case of the out-of-memory error. The solution is to introduce new init() member function in Parser_state and Lex_input_stream so that status of memory allocation can be returned to the caller. mysql-test/r/error_simulation.result: Added a test case for bug #42064. mysql-test/t/error_simulation.test: Added a test case for bug #42064. mysys/my_alloc.c: Added error injection code for the regression test. mysys/my_malloc.c: Added error injection code for the regression test. mysys/safemalloc.c: Added error injection code for the regression test. sql/event_data_objects.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/mysqld.cc: Added error injection code for the regression test. sql/sp.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/sql_lex.cc: Moved memory allocation from constructor to the separate init() member function. Added error injection code for the regression test. sql/sql_lex.h: Moved memory allocation from constructor to the separate init() member function. sql/sql_parse.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/sql_partition.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/sql_prepare.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/sql_trigger.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/sql_view.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures.. sql/thr_malloc.cc: Added error injection code for the regression test. --- mysql-test/r/error_simulation.result | 9 +++++ mysql-test/t/error_simulation.test | 14 +++++++ mysys/my_alloc.c | 16 ++++++++ mysys/my_malloc.c | 12 +++++- mysys/safemalloc.c | 7 ++++ sql/event_data_objects.cc | 5 ++- sql/mysqld.cc | 7 ++++ sql/sp.cc | 7 +++- sql/sql_lex.cc | 56 ++++++++++++---------------- sql/sql_lex.h | 48 ++++++++++++++++++++++-- sql/sql_parse.cc | 30 +++++++++------ sql/sql_partition.cc | 4 +- sql/sql_prepare.cc | 15 +++++--- sql/sql_trigger.cc | 6 +-- sql/sql_view.cc | 7 ++-- sql/thr_malloc.cc | 8 +++- 16 files changed, 186 insertions(+), 65 deletions(-) diff --git a/mysql-test/r/error_simulation.result b/mysql-test/r/error_simulation.result index 27e51a33112..fc58687cc86 100644 --- a/mysql-test/r/error_simulation.result +++ b/mysql-test/r/error_simulation.result @@ -39,5 +39,14 @@ a 2 DROP TABLE t1; # +# Bug#42064: low memory crash when importing hex strings, in Item_hex_string::Item_hex_string +# +CREATE TABLE t1(a BLOB); +SET SESSION debug="+d,bug42064_simulate_oom"; +INSERT INTO t1 VALUES(""); +Got one of the listed errors +SET SESSION debug=DEFAULT; +DROP TABLE t1; +# # End of 5.1 tests # diff --git a/mysql-test/t/error_simulation.test b/mysql-test/t/error_simulation.test index 7cd16a6bc5a..7a48a2e3231 100644 --- a/mysql-test/t/error_simulation.test +++ b/mysql-test/t/error_simulation.test @@ -46,6 +46,20 @@ SELECT * FROM t1; DROP TABLE t1; +--echo # +--echo # Bug#42064: low memory crash when importing hex strings, in Item_hex_string::Item_hex_string +--echo # + +CREATE TABLE t1(a BLOB); + +SET SESSION debug="+d,bug42064_simulate_oom"; +# May fail with either ER_OUT_OF_RESOURCES or EE_OUTOFMEMORY +--error ER_OUT_OF_RESOURCES, 5 +INSERT INTO t1 VALUES(""); +SET SESSION debug=DEFAULT; + +DROP TABLE t1; + --echo # --echo # End of 5.1 tests --echo # diff --git a/mysys/my_alloc.c b/mysys/my_alloc.c index 2607ea57d08..dd27dcda41e 100644 --- a/mysys/my_alloc.c +++ b/mysys/my_alloc.c @@ -154,6 +154,14 @@ void *alloc_root(MEM_ROOT *mem_root, size_t length) DBUG_ASSERT(alloc_root_inited(mem_root)); + DBUG_EXECUTE_IF("simulate_out_of_memory", + { + if (mem_root->error_handler) + (*mem_root->error_handler)(); + DBUG_SET("-d,simulate_out_of_memory"); + DBUG_RETURN((void*) 0); /* purecov: inspected */ + }); + length+=ALIGN_SIZE(sizeof(USED_MEM)); if (!(next = (USED_MEM*) my_malloc(length,MYF(MY_WME)))) { @@ -176,6 +184,14 @@ void *alloc_root(MEM_ROOT *mem_root, size_t length) DBUG_PRINT("enter",("root: 0x%lx", (long) mem_root)); DBUG_ASSERT(alloc_root_inited(mem_root)); + DBUG_EXECUTE_IF("simulate_out_of_memory", + { + /* Avoid reusing an already allocated block */ + if (mem_root->error_handler) + (*mem_root->error_handler)(); + DBUG_SET("-d,simulate_out_of_memory"); + DBUG_RETURN((void*) 0); /* purecov: inspected */ + }); length= ALIGN_SIZE(length); if ((*(prev= &mem_root->free)) != NULL) { diff --git a/mysys/my_malloc.c b/mysys/my_malloc.c index 12793ad451b..13d2375eb99 100644 --- a/mysys/my_malloc.c +++ b/mysys/my_malloc.c @@ -31,13 +31,23 @@ void *my_malloc(size_t size, myf my_flags) if (!size) size=1; /* Safety */ - if ((point = (char*)malloc(size)) == NULL) + + point= (char *) malloc(size); + DBUG_EXECUTE_IF("simulate_out_of_memory", + { + free(point); + point= NULL; + }); + + if (point == NULL) { my_errno=errno; if (my_flags & MY_FAE) error_handler_hook=fatal_error_handler_hook; if (my_flags & (MY_FAE+MY_WME)) my_error(EE_OUTOFMEMORY, MYF(ME_BELL+ME_WAITTANG+ME_NOREFRESH),size); + DBUG_EXECUTE_IF("simulate_out_of_memory", + DBUG_SET("-d,simulate_out_of_memory");); if (my_flags & MY_FAE) exit(1); } diff --git a/mysys/safemalloc.c b/mysys/safemalloc.c index c484f1d4c54..938ecd9dde8 100644 --- a/mysys/safemalloc.c +++ b/mysys/safemalloc.c @@ -139,6 +139,11 @@ void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags) size + /* size requested */ 4 + /* overrun mark */ sf_malloc_endhunc); + DBUG_EXECUTE_IF("simulate_out_of_memory", + { + free(irem); + irem= NULL; + }); } /* Check if there isn't anymore memory avaiable */ if (!irem) @@ -159,6 +164,8 @@ void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags) } DBUG_PRINT("error",("Out of memory, in use: %ld at line %d, '%s'", sf_malloc_max_memory,lineno, filename)); + DBUG_EXECUTE_IF("simulate_out_of_memory", + DBUG_SET("-d,simulate_out_of_memory");); if (MyFlags & MY_FAE) exit(1); DBUG_RETURN ((void*) 0); diff --git a/sql/event_data_objects.cc b/sql/event_data_objects.cc index 92e237a17b7..c010ca2309a 100644 --- a/sql/event_data_objects.cc +++ b/sql/event_data_objects.cc @@ -1433,7 +1433,10 @@ Event_job_data::execute(THD *thd, bool drop) thd->set_query(sp_sql.c_ptr_safe(), sp_sql.length()); { - Parser_state parser_state(thd, thd->query(), thd->query_length()); + Parser_state parser_state; + if (parser_state.init(thd, thd->query(), thd->query_length())) + goto end; + lex_start(thd); if (parse_sql(thd, & parser_state, creation_ctx)) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 3664f46995f..d6ee840455e 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2933,6 +2933,9 @@ int my_message_sql(uint error, const char *str, myf MyFlags) DBUG_RETURN(0); } + /* When simulating OOM, skip writing to error log to avoid mtr errors */ + DBUG_EXECUTE_IF("simulate_out_of_memory", DBUG_RETURN(0);); + if (!thd->no_warnings_for_error && !(MyFlags & ME_NO_WARNING_FOR_ERROR)) { @@ -2945,6 +2948,10 @@ int my_message_sql(uint error, const char *str, myf MyFlags) thd->no_warnings_for_error= FALSE; } } + + /* When simulating OOM, skip writing to error log to avoid mtr errors */ + DBUG_EXECUTE_IF("simulate_out_of_memory", DBUG_RETURN(0);); + if (!thd || MyFlags & ME_NOREFRESH) sql_print_error("%s: %s",my_progname,str); /* purecov: inspected */ DBUG_RETURN(0); diff --git a/sql/sp.cc b/sql/sp.cc index ef69edb96c6..0eb652d5b16 100644 --- a/sql/sp.cc +++ b/sql/sp.cc @@ -782,7 +782,12 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, thd->spcont= NULL; { - Parser_state parser_state(thd, defstr.c_ptr(), defstr.length()); + Parser_state parser_state; + if (parser_state.init(thd, defstr.c_ptr(), defstr.length())) + { + ret= SP_INTERNAL_ERROR; + goto end; + } lex_start(thd); diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index a3776f59241..35a5e2aeefc 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -110,39 +110,31 @@ st_parsing_options::reset() allows_derived= TRUE; } -Lex_input_stream::Lex_input_stream(THD *thd, - const char* buffer, - unsigned int length) -: m_thd(thd), - yylineno(1), - yytoklen(0), - yylval(NULL), - m_ptr(buffer), - m_tok_start(NULL), - m_tok_end(NULL), - m_end_of_query(buffer + length), - m_tok_start_prev(NULL), - m_buf(buffer), - m_buf_length(length), - m_echo(TRUE), - m_cpp_tok_start(NULL), - m_cpp_tok_start_prev(NULL), - m_cpp_tok_end(NULL), - m_body_utf8(NULL), - m_cpp_utf8_processed_ptr(NULL), - next_state(MY_LEX_START), - found_semicolon(NULL), - ignore_space(test(thd->variables.sql_mode & MODE_IGNORE_SPACE)), - stmt_prepare_mode(FALSE), - in_comment(NO_COMMENT), - m_underscore_cs(NULL) -{ - m_cpp_buf= (char*) thd->alloc(length + 1); - m_cpp_ptr= m_cpp_buf; -} -Lex_input_stream::~Lex_input_stream() -{} +bool Lex_input_stream::init(THD *thd, const char *buff, unsigned int length) +{ + DBUG_EXECUTE_IF("bug42064_simulate_oom", + DBUG_SET("+d,simulate_out_of_memory");); + + m_cpp_buf= (char*) thd->alloc(length + 1); + + DBUG_EXECUTE_IF("bug42064_simulate_oom", + DBUG_SET("-d,bug42064_simulate_oom");); + + if (m_cpp_buf == NULL) + return FALSE; + + m_cpp_ptr= m_cpp_buf; + m_thd= thd; + m_ptr= buff; + m_end_of_query= buff + length; + m_buf= buff; + m_buf_length= length; + ignore_space= test(thd->variables.sql_mode & MODE_IGNORE_SPACE); + + return FALSE; + } + /** The operation is called from the parser in order to diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 54eefa22a59..184d24ee5b6 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -1147,9 +1147,38 @@ enum enum_comment_state class Lex_input_stream { public: - Lex_input_stream(THD *thd, const char* buff, unsigned int length); - ~Lex_input_stream(); + Lex_input_stream() : + yylineno(1), + yytoklen(0), + yylval(NULL), + m_tok_start(NULL), + m_tok_end(NULL), + m_tok_start_prev(NULL), + m_echo(TRUE), + m_cpp_tok_start(NULL), + m_cpp_tok_start_prev(NULL), + m_cpp_tok_end(NULL), + m_body_utf8(NULL), + m_cpp_utf8_processed_ptr(NULL), + next_state(MY_LEX_START), + found_semicolon(NULL), + stmt_prepare_mode(FALSE), + in_comment(NO_COMMENT), + m_underscore_cs(NULL) + { + } + ~Lex_input_stream() + { + } + + /** + Object initializer. Must be called before usage. + + @retval FALSE OK + @retval TRUE Error + */ + bool init(THD *thd, const char *buff, unsigned int length); /** Set the echo mode. @@ -1930,10 +1959,21 @@ public: class Parser_state { public: - Parser_state(THD *thd, const char* buff, unsigned int length) - : m_lip(thd, buff, length), m_yacc() + Parser_state() + : m_yacc() {} + /** + Object initializer. Must be called before usage. + + @retval FALSE OK + @retval TRUE Error + */ + bool init(THD *thd, const char *buff, unsigned int length) + { + return m_lip.init(thd, buff, length); + } + ~Parser_state() {} diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 93d80164ffb..89ab16294c4 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5944,10 +5944,15 @@ void mysql_parse(THD *thd, const char *inBuf, uint length, sp_cache_flush_obsolete(&thd->sp_proc_cache); sp_cache_flush_obsolete(&thd->sp_func_cache); - Parser_state parser_state(thd, inBuf, length); - - bool err= parse_sql(thd, & parser_state, NULL); - *found_semicolon= parser_state.m_lip.found_semicolon; + Parser_state parser_state; + bool err; + if (!(err= parser_state.init(thd, inBuf, length))) + { + err= parse_sql(thd, & parser_state, NULL); + *found_semicolon= parser_state.m_lip.found_semicolon; + } + else + *found_semicolon= NULL; if (!err) { @@ -6033,14 +6038,17 @@ bool mysql_test_parse_for_slave(THD *thd, char *inBuf, uint length) bool error= 0; DBUG_ENTER("mysql_test_parse_for_slave"); - Parser_state parser_state(thd, inBuf, length); - lex_start(thd); - mysql_reset_thd_for_next_command(thd); + Parser_state parser_state; + if (!(error= parser_state.init(thd, inBuf, length))) + { + lex_start(thd); + mysql_reset_thd_for_next_command(thd); - if (!parse_sql(thd, & parser_state, NULL) && - all_tables_not_ok(thd,(TABLE_LIST*) lex->select_lex.table_list.first)) - error= 1; /* Ignore question */ - thd->end_statement(); + if (!parse_sql(thd, & parser_state, NULL) && + all_tables_not_ok(thd,(TABLE_LIST*) lex->select_lex.table_list.first)) + error= 1; /* Ignore question */ + thd->end_statement(); + } thd->cleanup_after_query(); DBUG_RETURN(error); } diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 679d23b49ad..122ae661046 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -3892,7 +3892,9 @@ bool mysql_unpack_partition(THD *thd, thd->lex= &lex; thd->variables.character_set_client= system_charset_info; - Parser_state parser_state(thd, part_buf, part_info_len); + Parser_state parser_state; + if (parser_state.init(thd, part_buf, part_info_len)) + goto end; lex_start(thd); *work_part_info_used= false; diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 5979f2ca17e..a928942bd88 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -3034,13 +3034,16 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len) old_stmt_arena= thd->stmt_arena; thd->stmt_arena= this; - Parser_state parser_state(thd, thd->query(), thd->query_length()); - parser_state.m_lip.stmt_prepare_mode= TRUE; - lex_start(thd); + Parser_state parser_state; + if (!parser_state.init(thd, thd->query(), thd->query_length())) + { + parser_state.m_lip.stmt_prepare_mode= TRUE; + lex_start(thd); - error= parse_sql(thd, & parser_state, NULL) || - thd->is_error() || - init_param_array(this); + error= parse_sql(thd, & parser_state, NULL) || + thd->is_error() || + init_param_array(this); + } lex->set_trg_event_type_for_tables(); diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index aafb25013f6..84cb45fe104 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -1297,9 +1297,9 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, thd->variables.sql_mode= (ulong)*trg_sql_mode; - Parser_state parser_state(thd, - trg_create_str->str, - trg_create_str->length); + Parser_state parser_state; + if (parser_state.init(thd, trg_create_str->str, trg_create_str->length)) + goto err_with_lex_cleanup; Trigger_creation_ctx *creation_ctx= Trigger_creation_ctx::create(thd, diff --git a/sql/sql_view.cc b/sql/sql_view.cc index 5ec80dfb621..340409aa42f 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -1190,9 +1190,10 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table, char old_db_buf[NAME_LEN+1]; LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) }; bool dbchanged; - Parser_state parser_state(thd, - table->select_stmt.str, - table->select_stmt.length); + Parser_state parser_state; + if (parser_state.init(thd, table->select_stmt.str, + table->select_stmt.length)) + goto err; /* Use view db name as thread default database, in order to ensure diff --git a/sql/thr_malloc.cc b/sql/thr_malloc.cc index 0764fe8be33..1fbab74554f 100644 --- a/sql/thr_malloc.cc +++ b/sql/thr_malloc.cc @@ -21,8 +21,6 @@ extern "C" { void sql_alloc_error_handler(void) { - sql_print_error("%s", ER(ER_OUT_OF_RESOURCES)); - THD *thd= current_thd; if (thd) { @@ -49,6 +47,12 @@ extern "C" { ER(ER_OUT_OF_RESOURCES)); } } + + /* Skip writing to the error log to avoid mtr complaints */ + DBUG_EXECUTE_IF("simulate_out_of_memory", return;); + + sql_print_error("%s", ER(ER_OUT_OF_RESOURCES)); + } } From d72a4710aaad2f1e76ac20d50793f13f941ef899 Mon Sep 17 00:00:00 2001 From: Gleb Shchepa Date: Fri, 21 May 2010 22:47:32 +0400 Subject: [PATCH 076/461] Bug #53804: serious flaws in the alter database .. upgrade data directory name command The check_db_name function has been modified to validate tails of #mysql50#-prefixed database names for compliance with MySQL 5.0 database name encoding rules (the check_table_name function call has been reused). mysql-test/r/renamedb.result: Updated test case. mysql-test/r/upgrade.result: Test case for bug #53804. mysql-test/t/renamedb.test: Updated test case. mysql-test/t/upgrade.test: Test case for bug #53804. sql/mysql_priv.h: Bug #53804: serious flaws in the alter database .. upgrade data directory name command The check_mysql50_prefix has been added. sql/sql_table.cc: Bug #53804: serious flaws in the alter database .. upgrade data directory name command - The check_mysql50_prefix has been added. - The check_n_cut_mysql50_prefix function has been refactored to share code with new check_mysql50_prefix function. sql/table.cc: Bug #53804: serious flaws in the alter database .. upgrade data directory name command The check_db_name function has been modified to validate tails of #mysql50#-prefixed database names for compliance with MySQL 5.0 database name encoding rules. --- mysql-test/r/renamedb.result | 2 +- mysql-test/r/upgrade.result | 28 ++++++++++++++++++++++++++++ mysql-test/t/renamedb.test | 2 +- mysql-test/t/upgrade.test | 34 ++++++++++++++++++++++++++++++++++ sql/mysql_priv.h | 1 + sql/sql_table.cc | 23 ++++++++++++++++++++--- sql/table.cc | 34 ++++++++++------------------------ 7 files changed, 95 insertions(+), 29 deletions(-) diff --git a/mysql-test/r/renamedb.result b/mysql-test/r/renamedb.result index ff8f89592fc..e77aca0d0b7 100644 --- a/mysql-test/r/renamedb.result +++ b/mysql-test/r/renamedb.result @@ -7,6 +7,6 @@ ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and n ALTER DATABASE `#mysql51#not-yet` UPGRADE DATA DIRECTORY NAME; ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and name ALTER DATABASE `#mysql50#` UPGRADE DATA DIRECTORY NAME; -ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and name +ERROR 42000: Incorrect database name '#mysql50#' ALTER DATABASE `#mysql50#upgrade-me` UPGRADE DATA DIRECTORY NAME; ERROR 42000: Unknown database '#mysql50#upgrade-me' diff --git a/mysql-test/r/upgrade.result b/mysql-test/r/upgrade.result index 034242079b1..da2f55b5bb1 100644 --- a/mysql-test/r/upgrade.result +++ b/mysql-test/r/upgrade.result @@ -112,3 +112,31 @@ select * from `a-b-c`.v1; f1 drop database `a-b-c`; use test; +# End of 5.0 tests +# +# Bug #53804: serious flaws in the alter database .. upgrade data +# directory name command +# +ALTER DATABASE `#mysql50#:` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Unknown database '#mysql50#:' +ALTER DATABASE `#mysql50#.` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#.' +ALTER DATABASE `#mysql50#../` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#../' +ALTER DATABASE `#mysql50#../..` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#../..' +ALTER DATABASE `#mysql50#../../` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#../../' +ALTER DATABASE `#mysql50#./blablabla` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#./blablabla' +ALTER DATABASE `#mysql50#../blablabla` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#../blablabla' +ALTER DATABASE `#mysql50#/` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#/' +ALTER DATABASE `#mysql50#/.` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#/.' +USE `#mysql50#.`; +ERROR 42000: Incorrect database name '#mysql50#.' +USE `#mysql50#../blablabla`; +ERROR 42000: Incorrect database name '#mysql50#../blablabla' +# End of 5.1 tests diff --git a/mysql-test/t/renamedb.test b/mysql-test/t/renamedb.test index 84315090b7a..71d0c127058 100644 --- a/mysql-test/t/renamedb.test +++ b/mysql-test/t/renamedb.test @@ -44,7 +44,7 @@ ALTER DATABASE `#mysql41#not-supported` UPGRADE DATA DIRECTORY NAME; --error ER_WRONG_USAGE ALTER DATABASE `#mysql51#not-yet` UPGRADE DATA DIRECTORY NAME; ---error ER_WRONG_USAGE +--error ER_WRONG_DB_NAME ALTER DATABASE `#mysql50#` UPGRADE DATA DIRECTORY NAME; --error ER_BAD_DB_ERROR diff --git a/mysql-test/t/upgrade.test b/mysql-test/t/upgrade.test index e390e8a1253..a7b9a1531ff 100644 --- a/mysql-test/t/upgrade.test +++ b/mysql-test/t/upgrade.test @@ -137,3 +137,37 @@ select * from `a-b-c`.v1; --enable_ps_protocol drop database `a-b-c`; use test; + +--echo # End of 5.0 tests + +--echo # +--echo # Bug #53804: serious flaws in the alter database .. upgrade data +--echo # directory name command +--echo # + +--error ER_BAD_DB_ERROR +ALTER DATABASE `#mysql50#:` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#.` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#../` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#../..` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#../../` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#./blablabla` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#../blablabla` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#/` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#/.` UPGRADE DATA DIRECTORY NAME; + +--error ER_WRONG_DB_NAME +USE `#mysql50#.`; +--error ER_WRONG_DB_NAME +USE `#mysql50#../blablabla`; + +--echo # End of 5.1 tests + diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 57875089cd8..f61565fe6e7 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -2293,6 +2293,7 @@ uint explain_filename(THD* thd, const char *from, char *to, uint to_length, uint filename_to_tablename(const char *from, char *to, uint to_length); uint tablename_to_filename(const char *from, char *to, uint to_length); uint check_n_cut_mysql50_prefix(const char *from, char *to, uint to_length); +bool check_mysql50_prefix(const char *name); #endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */ #ifdef MYSQL_SERVER uint build_table_filename(char *buff, size_t bufflen, const char *db, diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 2a2daacf724..9727ec43084 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -391,6 +391,25 @@ uint filename_to_tablename(const char *from, char *to, uint to_length) } +/** + Check if given string begins with "#mysql50#" prefix + + @param name string to check cut + + @retval + FALSE no prefix found + @retval + TRUE prefix found +*/ + +bool check_mysql50_prefix(const char *name) +{ + return (name[0] == '#' && + !strncmp(name, MYSQL50_TABLE_NAME_PREFIX, + MYSQL50_TABLE_NAME_PREFIX_LENGTH)); +} + + /** Check if given string begins with "#mysql50#" prefix, cut it if so. @@ -406,9 +425,7 @@ uint filename_to_tablename(const char *from, char *to, uint to_length) uint check_n_cut_mysql50_prefix(const char *from, char *to, uint to_length) { - if (from[0] == '#' && - !strncmp(from, MYSQL50_TABLE_NAME_PREFIX, - MYSQL50_TABLE_NAME_PREFIX_LENGTH)) + if (check_mysql50_prefix(from)) return (uint) (strmake(to, from + MYSQL50_TABLE_NAME_PREFIX_LENGTH, to_length - 1) - to); return 0; diff --git a/sql/table.cc b/sql/table.cc index bd6251b5743..8b97dd36170 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -2689,44 +2689,30 @@ bool check_db_name(LEX_STRING *org_name) { char *name= org_name->str; uint name_length= org_name->length; + bool check_for_path_chars; if (!name_length || name_length > NAME_LEN) return 1; + if ((check_for_path_chars= check_mysql50_prefix(name))) + { + name+= MYSQL50_TABLE_NAME_PREFIX_LENGTH; + name_length-= MYSQL50_TABLE_NAME_PREFIX_LENGTH; + } + if (lower_case_table_names && name != any_db) my_casedn_str(files_charset_info, name); -#if defined(USE_MB) && defined(USE_MB_IDENT) - if (use_mb(system_charset_info)) - { - name_length= 0; - bool last_char_is_space= TRUE; - char *end= name + org_name->length; - while (name < end) - { - int len; - last_char_is_space= my_isspace(system_charset_info, *name); - len= my_ismbchar(system_charset_info, name, end); - if (!len) - len= 1; - name+= len; - name_length++; - } - return (last_char_is_space || name_length > NAME_CHAR_LEN); - } - else -#endif - return ((org_name->str[org_name->length - 1] != ' ') || - (name_length > NAME_CHAR_LEN)); /* purecov: inspected */ + return check_table_name(name, name_length, check_for_path_chars); } + /* Allow anything as a table name, as long as it doesn't contain an ' ' at the end returns 1 on error */ - bool check_table_name(const char *name, uint length, bool check_for_path_chars) { uint name_length= 0; // name length in symbols @@ -2754,10 +2740,10 @@ bool check_table_name(const char *name, uint length, bool check_for_path_chars) continue; } } +#endif if (check_for_path_chars && (*name == '/' || *name == '\\' || *name == '~' || *name == FN_EXTCHAR)) return 1; -#endif name++; name_length++; } From d4fd7bb95eb04e53ad2505b6733928da591190c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 24 May 2010 14:04:39 +0300 Subject: [PATCH 077/461] Bug#53578: assert on invalid page access, in fil_io() Store the max_space_id in the data dictionary header in order to avoid space_id reuse. DICT_HDR_MIX_ID: Renamed to DICT_HDR_MAX_SPACE_ID, DICT_HDR_MIX_ID_LOW. dict_hdr_get_new_id(): Return table_id, index_id, space_id or a subset of them. fil_system_t: Add ibool space_id_reuse_warned. fil_create_new_single_table_tablespace(): Get the space_id from the caller. fil_space_create(): Issue a warning if the fil_system->max_assigned_id is exceeded. fil_assign_new_space_id(): Return TRUE/FALSE and take a pointer to the space_id as a parameter. Make the function public. fil_init(): Initialize all fil_system fields by mem_zalloc(). Remove explicit initializations of certain fields to 0 or NULL. --- storage/innodb_plugin/dict/dict0boot.c | 46 ++++++--- storage/innodb_plugin/dict/dict0crea.c | 14 ++- storage/innodb_plugin/fil/fil0fil.c | 117 +++++++++++----------- storage/innodb_plugin/include/dict0boot.h | 12 ++- storage/innodb_plugin/include/fil0fil.h | 14 ++- storage/innodb_plugin/row/row0mysql.c | 11 +- 6 files changed, 124 insertions(+), 90 deletions(-) diff --git a/storage/innodb_plugin/dict/dict0boot.c b/storage/innodb_plugin/dict/dict0boot.c index 45d57b8c619..e63c1dc94b9 100644 --- a/storage/innodb_plugin/dict/dict0boot.c +++ b/storage/innodb_plugin/dict/dict0boot.c @@ -62,32 +62,47 @@ dict_hdr_get( } /**********************************************************************//** -Returns a new table, index, or tree id. -@return the new id */ +Returns a new table, index, or space id. */ UNIV_INTERN -dulint +void dict_hdr_get_new_id( /*================*/ - ulint type) /*!< in: DICT_HDR_ROW_ID, ... */ + dulint* table_id, /*!< out: table id (not assigned if NULL) */ + dulint* index_id, /*!< out: index id (not assigned if NULL) */ + ulint* space_id) /*!< out: space id (not assigned if NULL) */ { dict_hdr_t* dict_hdr; dulint id; mtr_t mtr; - ut_ad((type == DICT_HDR_TABLE_ID) || (type == DICT_HDR_INDEX_ID)); - mtr_start(&mtr); dict_hdr = dict_hdr_get(&mtr); - id = mtr_read_dulint(dict_hdr + type, &mtr); - id = ut_dulint_add(id, 1); + if (table_id) { + id = mtr_read_dulint(dict_hdr + DICT_HDR_TABLE_ID, &mtr); + id = ut_dulint_add(id, 1); + mlog_write_dulint(dict_hdr + DICT_HDR_TABLE_ID, id, &mtr); + *table_id = id; + } - mlog_write_dulint(dict_hdr + type, id, &mtr); + if (index_id) { + id = mtr_read_dulint(dict_hdr + DICT_HDR_INDEX_ID, &mtr); + id = ut_dulint_add(id, 1); + mlog_write_dulint(dict_hdr + DICT_HDR_INDEX_ID, id, &mtr); + *index_id = id; + } + + if (space_id) { + *space_id = mtr_read_ulint(dict_hdr + DICT_HDR_MAX_SPACE_ID, + MLOG_4BYTES, &mtr); + if (fil_assign_new_space_id(space_id)) { + mlog_write_ulint(dict_hdr + DICT_HDR_MAX_SPACE_ID, + *space_id, MLOG_4BYTES, &mtr); + } + } mtr_commit(&mtr); - - return(id); } /**********************************************************************//** @@ -151,9 +166,12 @@ dict_hdr_create( mlog_write_dulint(dict_header + DICT_HDR_INDEX_ID, ut_dulint_create(0, DICT_HDR_FIRST_ID), mtr); - /* Obsolete, but we must initialize it to 0 anyway. */ - mlog_write_dulint(dict_header + DICT_HDR_MIX_ID, - ut_dulint_create(0, DICT_HDR_FIRST_ID), mtr); + mlog_write_ulint(dict_header + DICT_HDR_MAX_SPACE_ID, + 0, MLOG_4BYTES, mtr); + + /* Obsolete, but we must initialize it anyway. */ + mlog_write_ulint(dict_header + DICT_HDR_MIX_ID_LOW, + DICT_HDR_FIRST_ID, MLOG_4BYTES, mtr); /* Create the B-tree roots for the clustered indexes of the basic system tables */ diff --git a/storage/innodb_plugin/dict/dict0crea.c b/storage/innodb_plugin/dict/dict0crea.c index 653bff4bef6..f185371bfca 100644 --- a/storage/innodb_plugin/dict/dict0crea.c +++ b/storage/innodb_plugin/dict/dict0crea.c @@ -239,16 +239,22 @@ dict_build_table_def_step( const char* path_or_name; ibool is_path; mtr_t mtr; + ulint space = 0; ut_ad(mutex_own(&(dict_sys->mutex))); table = node->table; - table->id = dict_hdr_get_new_id(DICT_HDR_TABLE_ID); + dict_hdr_get_new_id(&table->id, NULL, + srv_file_per_table ? &space : NULL); thr_get_trx(thr)->table_id = table->id; if (srv_file_per_table) { + if (UNIV_UNLIKELY(space == ULINT_UNDEFINED)) { + return(DB_ERROR); + } + /* We create a new single-table tablespace for the table. We initially let it be 4 pages: - page 0 is the fsp header and an extent descriptor page, @@ -257,8 +263,6 @@ dict_build_table_def_step( - page 3 will contain the root of the clustered index of the table we create here. */ - ulint space = 0; /* reset to zero for the call below */ - if (table->dir_path_of_temp_table) { /* We place tables created with CREATE TEMPORARY TABLE in the tmp dir of mysqld server */ @@ -276,7 +280,7 @@ dict_build_table_def_step( flags = table->flags & ~(~0 << DICT_TF_BITS); error = fil_create_new_single_table_tablespace( - &space, path_or_name, is_path, + space, path_or_name, is_path, flags == DICT_TF_COMPACT ? 0 : flags, FIL_IBD_FILE_INITIAL_SIZE); table->space = (unsigned int) space; @@ -561,7 +565,7 @@ dict_build_index_def_step( ut_ad((UT_LIST_GET_LEN(table->indexes) > 0) || dict_index_is_clust(index)); - index->id = dict_hdr_get_new_id(DICT_HDR_INDEX_ID); + dict_hdr_get_new_id(NULL, &index->id, NULL); /* Inherit the space id from the table; we store all indexes of a table in the same tablespace */ diff --git a/storage/innodb_plugin/fil/fil0fil.c b/storage/innodb_plugin/fil/fil0fil.c index 963e306c00c..af85e14f226 100644 --- a/storage/innodb_plugin/fil/fil0fil.c +++ b/storage/innodb_plugin/fil/fil0fil.c @@ -279,6 +279,10 @@ struct fil_system_struct { request */ UT_LIST_BASE_NODE_T(fil_space_t) space_list; /*!< list of all file spaces */ + ibool space_id_reuse_warned; + /* !< TRUE if fil_space_create() + has issued a warning about + potential space_id reuse */ }; /** The tablespace memory cache. This variable is NULL before the module is @@ -1193,7 +1197,19 @@ try_again: space->tablespace_version = fil_system->tablespace_version; space->mark = FALSE; - if (purpose == FIL_TABLESPACE && id > fil_system->max_assigned_id) { + if (UNIV_LIKELY(purpose == FIL_TABLESPACE) + && UNIV_UNLIKELY(id > fil_system->max_assigned_id)) { + if (!fil_system->space_id_reuse_warned) { + fil_system->space_id_reuse_warned = TRUE; + + ut_print_timestamp(stderr); + fprintf(stderr, + " InnoDB: Warning: allocated tablespace %lu," + " old maximum was %lu\n", + (ulong) id, + (ulong) fil_system->max_assigned_id); + } + fil_system->max_assigned_id = id; } @@ -1231,19 +1247,25 @@ try_again: Assigns a new space id for a new single-table tablespace. This works simply by incrementing the global counter. If 4 billion id's is not enough, we may need to recycle id's. -@return new tablespace id; ULINT_UNDEFINED if could not assign an id */ -static -ulint -fil_assign_new_space_id(void) -/*=========================*/ +@return TRUE if assigned, FALSE if not */ +UNIV_INTERN +ibool +fil_assign_new_space_id( +/*====================*/ + ulint* space_id) /*!< in/out: space id */ { - ulint id; + ulint id; + ibool success; mutex_enter(&fil_system->mutex); - fil_system->max_assigned_id++; + id = *space_id; - id = fil_system->max_assigned_id; + if (id < fil_system->max_assigned_id) { + id = fil_system->max_assigned_id; + } + + id++; if (id > (SRV_LOG_SPACE_FIRST_ID / 2) && (id % 1000000UL == 0)) { ut_print_timestamp(stderr); @@ -1259,7 +1281,11 @@ fil_assign_new_space_id(void) (ulong) SRV_LOG_SPACE_FIRST_ID); } - if (id >= SRV_LOG_SPACE_FIRST_ID) { + success = (id < SRV_LOG_SPACE_FIRST_ID); + + if (success) { + *space_id = fil_system->max_assigned_id = id; + } else { ut_print_timestamp(stderr); fprintf(stderr, "InnoDB: You have run out of single-table" @@ -1269,14 +1295,12 @@ fil_assign_new_space_id(void) " have to dump all your tables and\n" "InnoDB: recreate the whole InnoDB installation.\n", (ulong) id); - fil_system->max_assigned_id--; - - id = ULINT_UNDEFINED; + *space_id = ULINT_UNDEFINED; } mutex_exit(&fil_system->mutex); - return(id); + return(success); } /*******************************************************************//** @@ -1512,7 +1536,7 @@ fil_init( ut_a(hash_size > 0); ut_a(max_n_open > 0); - fil_system = mem_alloc(sizeof(fil_system_t)); + fil_system = mem_zalloc(sizeof(fil_system_t)); mutex_create(&fil_system->mutex, SYNC_ANY_LATCH); @@ -1521,16 +1545,7 @@ fil_init( UT_LIST_INIT(fil_system->LRU); - fil_system->n_open = 0; fil_system->max_n_open = max_n_open; - - fil_system->modification_counter = 0; - fil_system->max_assigned_id = 0; - - fil_system->tablespace_version = 0; - - UT_LIST_INIT(fil_system->unflushed_spaces); - UT_LIST_INIT(fil_system->space_list); } /*******************************************************************//** @@ -2115,7 +2130,7 @@ fil_op_log_parse_or_replay( fil_create_directory_for_tablename(name); if (fil_create_new_single_table_tablespace( - &space_id, name, FALSE, flags, + space_id, name, FALSE, flags, FIL_IBD_FILE_INITIAL_SIZE) != DB_SUCCESS) { ut_error; } @@ -2562,9 +2577,7 @@ UNIV_INTERN ulint fil_create_new_single_table_tablespace( /*===================================*/ - ulint* space_id, /*!< in/out: space id; if this is != 0, - then this is an input parameter, - otherwise output */ + ulint space_id, /*!< in: space id */ const char* tablename, /*!< in: the table name in the usual databasename/tablename format of InnoDB, or a dir path to a temp @@ -2584,6 +2597,8 @@ fil_create_new_single_table_tablespace( ibool success; char* path; + ut_a(space_id > 0); + ut_a(space_id < SRV_LOG_SPACE_FIRST_ID); ut_a(size >= FIL_IBD_FILE_INITIAL_SIZE); /* The tablespace flags (FSP_SPACE_FLAGS) should be 0 for ROW_FORMAT=COMPACT @@ -2640,38 +2655,21 @@ fil_create_new_single_table_tablespace( return(DB_ERROR); } - buf2 = ut_malloc(3 * UNIV_PAGE_SIZE); - /* Align the memory for file i/o if we might have O_DIRECT set */ - page = ut_align(buf2, UNIV_PAGE_SIZE); - ret = os_file_set_size(path, file, size * UNIV_PAGE_SIZE, 0); if (!ret) { - ut_free(buf2); - os_file_close(file); - os_file_delete(path); - - mem_free(path); - return(DB_OUT_OF_FILE_SPACE); - } - - if (*space_id == 0) { - *space_id = fil_assign_new_space_id(); - } - - /* printf("Creating tablespace %s id %lu\n", path, *space_id); */ - - if (*space_id == ULINT_UNDEFINED) { - ut_free(buf2); + err = DB_OUT_OF_FILE_SPACE; error_exit: os_file_close(file); error_exit2: os_file_delete(path); mem_free(path); - return(DB_ERROR); + return(err); } + /* printf("Creating tablespace %s id %lu\n", path, space_id); */ + /* We have to write the space id to the file immediately and flush the file to disk. This is because in crash recovery we must be aware what tablespaces exist and what are their space id's, so that we can apply @@ -2681,10 +2679,14 @@ error_exit2: with zeros from the call of os_file_set_size(), until a buffer pool flush would write to it. */ + buf2 = ut_malloc(3 * UNIV_PAGE_SIZE); + /* Align the memory for file i/o if we might have O_DIRECT set */ + page = ut_align(buf2, UNIV_PAGE_SIZE); + memset(page, '\0', UNIV_PAGE_SIZE); - fsp_header_init_fields(page, *space_id, flags); - mach_write_to_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, *space_id); + fsp_header_init_fields(page, space_id, flags); + mach_write_to_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, space_id); if (!(flags & DICT_TF_ZSSIZE_MASK)) { buf_flush_init_for_writing(page, NULL, 0); @@ -2715,6 +2717,7 @@ error_exit2: " to tablespace ", stderr); ut_print_filename(stderr, path); putc('\n', stderr); + err = DB_ERROR; goto error_exit; } @@ -2724,22 +2727,20 @@ error_exit2: fputs("InnoDB: Error: file flush of tablespace ", stderr); ut_print_filename(stderr, path); fputs(" failed\n", stderr); + err = DB_ERROR; goto error_exit; } os_file_close(file); - if (*space_id == ULINT_UNDEFINED) { - goto error_exit2; - } - - success = fil_space_create(path, *space_id, flags, FIL_TABLESPACE); + success = fil_space_create(path, space_id, flags, FIL_TABLESPACE); if (!success) { + err = DB_ERROR; goto error_exit2; } - fil_node_create(path, size, *space_id, FALSE); + fil_node_create(path, size, space_id, FALSE); #ifndef UNIV_HOTBACKUP { @@ -2750,7 +2751,7 @@ error_exit2: fil_op_write_log(flags ? MLOG_FILE_CREATE2 : MLOG_FILE_CREATE, - *space_id, + space_id, is_temp ? MLOG_FILE_FLAG_TEMP : 0, flags, tablename, NULL, &mtr); diff --git a/storage/innodb_plugin/include/dict0boot.h b/storage/innodb_plugin/include/dict0boot.h index 1a13bd1503a..148b5cbe250 100644 --- a/storage/innodb_plugin/include/dict0boot.h +++ b/storage/innodb_plugin/include/dict0boot.h @@ -46,13 +46,14 @@ dict_hdr_get( /*=========*/ mtr_t* mtr); /*!< in: mtr */ /**********************************************************************//** -Returns a new row, table, index, or tree id. -@return the new id */ +Returns a new table, index, or space id. */ UNIV_INTERN -dulint +void dict_hdr_get_new_id( /*================*/ - ulint type); /*!< in: DICT_HDR_ROW_ID, ... */ + dulint* table_id, /*!< out: table id (not assigned if NULL) */ + dulint* index_id, /*!< out: index id (not assigned if NULL) */ + ulint* space_id); /*!< out: space id (not assigned if NULL) */ /**********************************************************************//** Returns a new row id. @return the new id */ @@ -119,7 +120,8 @@ dict_create(void); #define DICT_HDR_ROW_ID 0 /* The latest assigned row id */ #define DICT_HDR_TABLE_ID 8 /* The latest assigned table id */ #define DICT_HDR_INDEX_ID 16 /* The latest assigned index id */ -#define DICT_HDR_MIX_ID 24 /* Obsolete, always 0. */ +#define DICT_HDR_MAX_SPACE_ID 24 /* The latest assigned space id, or 0*/ +#define DICT_HDR_MIX_ID_LOW 28 /* Obsolete,always DICT_HDR_FIRST_ID */ #define DICT_HDR_TABLES 32 /* Root of the table index tree */ #define DICT_HDR_TABLE_IDS 36 /* Root of the table index tree */ #define DICT_HDR_COLUMNS 40 /* Root of the column index tree */ diff --git a/storage/innodb_plugin/include/fil0fil.h b/storage/innodb_plugin/include/fil0fil.h index de8ef9e9687..10c3ff025ac 100644 --- a/storage/innodb_plugin/include/fil0fil.h +++ b/storage/innodb_plugin/include/fil0fil.h @@ -225,6 +225,16 @@ fil_space_create( 0 for uncompressed tablespaces */ ulint purpose);/*!< in: FIL_TABLESPACE, or FIL_LOG if log */ /*******************************************************************//** +Assigns a new space id for a new single-table tablespace. This works simply by +incrementing the global counter. If 4 billion id's is not enough, we may need +to recycle id's. +@return TRUE if assigned, FALSE if not */ +UNIV_INTERN +ibool +fil_assign_new_space_id( +/*====================*/ + ulint* space_id); /*!< in/out: space id */ +/*******************************************************************//** Returns the size of the space in pages. The tablespace must be cached in the memory cache. @return space size, 0 if space not found */ @@ -427,9 +437,7 @@ UNIV_INTERN ulint fil_create_new_single_table_tablespace( /*===================================*/ - ulint* space_id, /*!< in/out: space id; if this is != 0, - then this is an input parameter, - otherwise output */ + ulint space_id, /*!< in: space id */ const char* tablename, /*!< in: the table name in the usual databasename/tablename format of InnoDB, or a dir path to a temp diff --git a/storage/innodb_plugin/row/row0mysql.c b/storage/innodb_plugin/row/row0mysql.c index 9592de88346..a98dd8d2900 100644 --- a/storage/innodb_plugin/row/row0mysql.c +++ b/storage/innodb_plugin/row/row0mysql.c @@ -2427,7 +2427,7 @@ row_discard_tablespace_for_mysql( goto funct_exit; } - new_id = dict_hdr_get_new_id(DICT_HDR_TABLE_ID); + dict_hdr_get_new_id(&new_id, NULL, NULL); /* Remove all locks except the table-level S and X locks. */ lock_remove_all_on_table(table, FALSE); @@ -2789,10 +2789,11 @@ row_truncate_table_for_mysql( dict_index_t* index; - space = 0; + dict_hdr_get_new_id(NULL, NULL, &space); - if (fil_create_new_single_table_tablespace( - &space, table->name, FALSE, flags, + if (space == ULINT_UNDEFINED + || fil_create_new_single_table_tablespace( + space, table->name, FALSE, flags, FIL_IBD_FILE_INITIAL_SIZE) != DB_SUCCESS) { ut_print_timestamp(stderr); fprintf(stderr, @@ -2897,7 +2898,7 @@ next_rec: mem_heap_free(heap); - new_id = dict_hdr_get_new_id(DICT_HDR_TABLE_ID); + dict_hdr_get_new_id(&new_id, NULL, NULL); info = pars_info_create(); From 2dcd1ac65ada96c9f7e51334a3b6ba8c856c92c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 24 May 2010 14:43:49 +0300 Subject: [PATCH 078/461] Document the Bug #53578 fix. --- storage/innodb_plugin/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index a05e1ebc716..8b5a9bf2d7e 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-05-24 The InnoDB Team + + * dict/dict0boot.c, dict/dict0crea.c, fil/fil0fil.c, + include/dict0boot.h, include/fil0fil.h, row/row0mysql.c: + Fix Bug#53578: assert on invalid page access, in fil_io() + 2010-05-14 The InnoDB Team * mysql-test/innodb_bug48024.test, mysql-test/innodb_bug48024.result, dict/dict0dict.c, handler/ha_innodb.cc, handler/ha_innodb.h, From 7e80f1c5dc5e834117d85d6d71aab598d193a6e9 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 24 May 2010 21:54:08 +0800 Subject: [PATCH 079/461] Bug #49741 test files contain explicit references to bin/relay-log positions Some of the test cases reference to binlog position and these position numbers are written into result explicitly. It is difficult to maintain if log event format changes. There are a couple of cases explicit position number appears, we handle them in different ways A. 'CHANGE MASTER ...' with MASTER_LOG_POS or/and RELAY_LOG_POS options Use --replace_result to mask them. B. 'SHOW BINLOG EVENT ...' Replaced by show_binlog_events.inc or wait_for_binlog_event.inc. show_binlog_events.inc file's function is enhanced by given $binlog_file and $binlog_limit. C. 'SHOW SLAVE STATUS', 'show_slave_status.inc' and 'show_slave_status2.inc' For the test cases just care a few items in the result of 'SHOW SLAVE STATUS', only the items related to each test case are showed. 'show_slave_status.inc' is rebuild, only the given items in $status_items will be showed. 'check_slave_is_running.inc' and 'check_slave_no_error.inc' and 'check_slave_param.inc' are auxiliary files helping to show running status and error information easily. mysql-test/extra/binlog_tests/binlog.test: It only cares whether current binlog file index is changed, so it is ok with 'show_master_status.inc' instead of 'show mater status'. mysql-test/extra/binlog_tests/blackhole.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/extra/rpl_tests/rpl_deadlock.test: Use 'check_slave_is_running.inc' instead of 'show_slave_status2.inc'. mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test: Use 'check_slave_is_running.inc' instead of 'show slave status' statement. mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test: Use 'wait_for_slave_sql_error.inc' and 'ait_for_slave_sql_error_and_skip.inc' instead of 'show slave status'. mysql-test/extra/rpl_tests/rpl_flsh_tbls.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test: It is need now to give a error number, so use 'wait_for_slave_io_to_stop.inc' instead of 'wait_for_slave_io_error.inc'. mysql-test/extra/rpl_tests/rpl_insert_delayed.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/extra/rpl_tests/rpl_log.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. se 'check_slave_is_running.inc' instead of 'show slave status' statement. mysql-test/extra/rpl_tests/rpl_max_relay_size.test: se 'check_slave_is_running.inc' instead of 'show slave status' statement. mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/extra/rpl_tests/rpl_reset_slave.test: Use 'show_slave_status.inc' instead of 'show_slave_status2.inc' statement. Use 'check_slave_no_error.inc' to simplify the check that there is no error. mysql-test/extra/rpl_tests/rpl_row_basic.test: Use 'check_slave_is_running.inc' to verify that Slave threads are running well. Use 'wait_for_slave_sql_error.inc' to wait the given sql thread error happening. mysql-test/extra/rpl_tests/rpl_row_tabledefs.test: Use 'show_slave_error_status_and_skip.inc' instead of 'show slave status'. mysql-test/include/check_slave_is_running.inc: To make sure both sql and io thread are running well. If not, the test will be aborted. mysql-test/include/check_slave_no_error.inc: To make sure both sql and io thread have no error. If not, the test will be aborted. mysql-test/include/get_relay_log_pos.inc: According to the position of a log event in master binlog file, find the peer position of a log event in relay log file. mysql-test/include/rpl_stmt_seq.inc: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/include/show_binlog_events.inc: Add two options $binlog_file and $binlog_limit for showing binlog events from different binlog files or/and given different limits on position or row number. mysql-test/include/show_rpl_debug_info.inc: Add 'SELECT NOW()' in the debug information. mysql-test/include/show_slave_status.inc: It's more clean and tidy Only the given columns of slave status are printed. mysql-test/include/test_fieldsize.inc: Use 'wait_for_slave_sql_error.inc' to wait the given sql thread error happening. There is no need to print the result of 'show slave stutus'. mysql-test/include/wait_for_binlog_event.inc: Use show_rpl_debug_info.inc instead of 'SHOW BINLOG EVENTS'. mysql-test/include/wait_for_slave_io_error.inc: Add $slave_io_errno and $show_slave_io_error, it waits only a given error. mysql-test/include/wait_for_slave_param.inc: Use die instead of exit. mysql-test/include/wait_for_slave_sql_error.inc: Add $slave_sql_errno and $show_slave_sql_error, it waits only a given error. mysql-test/include/wait_for_status_var.inc: Use die instead of exit. mysql-test/r/flush_block_commit_notembedded.result: It checks whether somethings are binlogged, so we using 'show_binlog_event.inc' instead of 'show master status'. mysql-test/r/multi_update.result: It checks whether somethings are binlogged, so we using 'show_binlog_event.inc' instead of 'show master status'. mysql-test/suite/binlog/r/binlog_innodb.result: It checks whether somethings are binlogged, so we using 'show_binlog_event.inc' instead of 'show master status'. mysql-test/suite/binlog/r/binlog_row_binlog.result: Position in the result of 'show master status' is replaced by '#'. mysql-test/suite/binlog/r/binlog_stm_binlog.result: Position in the result of 'show master status' is replaced by '#'. mysql-test/suite/binlog/t/binlog_innodb.test: It checks whether somethings are binlogged, so we use 'show_binlog_event.inc' instead of 'show master status'. mysql-test/suite/binlog/t/binlog_stm_binlog.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/bugs/r/rpl_bug36391.result: Position in the result of 'show master status' is replaced by '#'. mysql-test/suite/bugs/t/rpl_bug12691.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/bugs/t/rpl_bug36391.test: 'show master status' is replaced by 'show_master_status.inc'. Position in the result of 'show master status' is replaced by '#'. mysql-test/suite/engines/funcs/r/rpl_000015.result: It checks whether somethings are binlogged, so we using 'show_binlog_event.inc' instead of 'show master status'. mysql-test/suite/engines/funcs/t/rpl_000015.test: Use 'check_slave_is_running.inc' to verify that Slave threads are running well. mysql-test/suite/engines/funcs/t/rpl_REDIRECT.test: Use 'query_vertical SHOW SLAVE STATUS' instead of 'show slave status'. There is no status columns in the result file, for no slave exists on master's server. mysql-test/suite/engines/funcs/t/rpl_change_master.test: This test just care whether Read_Master_Log_Pos is equal to Exec_Master_Log_Pos after 'CHANGE MASTER ..'. So 'show slave status' is removed and just check the value of Read_Master_Log_Pos and Exec_Master_Log_Pos. mysql-test/suite/engines/funcs/t/rpl_empty_master_crash.test: We doesn't really need the statement. mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test: Just show Relay_Log_File, running status and error informations. Use 'check_slave_is_running.inc' to verify that Slave threads are running well. mysql-test/suite/engines/funcs/t/rpl_loaddata_s.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/engines/funcs/t/rpl_log_pos.test: Mask the explicit positions in the result file. Use 'check_slave_no_error.inc' to simplify the check that there is no error. Use 'wait_for_slave_sql_error.inc' to wait the given sql thread error happening. There is no need to print the result of 'show slave stutus'. mysql-test/suite/engines/funcs/t/rpl_rbr_to_sbr.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/engines/funcs/t/rpl_row_drop.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/engines/funcs/t/rpl_row_inexist_tbl.test: Use 'wait_for_slave_sql_error.inc' to wait the given sql thread error happening. There is no need to print the result of 'show slave stutus'. mysql-test/suite/engines/funcs/t/rpl_row_until.test: Use 'check_slave_param.inc' to check whether SQL Thread stop at a right position, and use binlog position variables instead of explicit number in the 'CHANGE MASTER' statements. Mask the explicit binary log positions in the result file. mysql-test/suite/engines/funcs/t/rpl_server_id1.test: Use 'wait_for_slave_sql_error.inc' to wait the given sql thread error happening. There is no need to print the result of 'show slave stutus'. Use 'check_slave_no_error.inc' to simplify the check that there is no error. mysql-test/suite/engines/funcs/t/rpl_server_id2.test: It doesn't really need in this test. mysql-test/suite/engines/funcs/t/rpl_slave_status.test: Use 'wait_for_slave_sql_error.inc' to wait the given sql thread error happening. There is no need to print the result of 'show slave stutus'. mysql-test/suite/engines/funcs/t/rpl_switch_stm_row_mixed.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/manual/t/rpl_replication_delay.test: Use 'show_slave_status.inc' instead of 'show slave status'. mysql-test/suite/parts/t/rpl_partition.test: Use 'check_slave_is_running.inc' instead of 'show slave status' statement. mysql-test/suite/rpl/include/rpl_mixed_ddl.inc: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/rpl/include/rpl_mixed_dml.inc: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/rpl/t/rpl_000015.test: Use 'show_slave_status.inc' instead of 'show_slave_status2.inc'. mysql-test/suite/rpl/t/rpl_binlog_grant.test: Use 'wait_for_binlog_event.inc' instead of 'show binlog events' statement. mysql-test/suite/rpl/t/rpl_bug33931.test: Use 'wait_for_slave_sql_error.inc' to wait the given sql thread error happening. There is no need to print the result of 'show slave stutus'. mysql-test/suite/rpl/t/rpl_change_master.test: This test just care whether Read_Master_Log_Pos is equal to Exec_Master_Log_Pos after 'CHANGE MASTER ..'. So 'show slave status' is removed and just check the value of Read_Master_Log_Pos and Exec_Master_Log_Pos. mysql-test/suite/rpl/t/rpl_critical_errors.test: Use 'wait_for_slave_sql_error.inc' to wait the given sql thread error happening. There is no need to print the result of 'show slave stutus'. mysql-test/suite/rpl/t/rpl_dual_pos_advance.test: Mask the explicit position numbers in result file. It is restricted running on SBR, for it want to binlog 'set @a=1' statement. mysql-test/suite/rpl/t/rpl_empty_master_crash.test: It doesn't need in this test. mysql-test/suite/rpl/t/rpl_flushlog_loop.test: UUse 'check_slave_is_running.inc' and 'show_slave_status.inc' instead of 'show slave status' statement. mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test: Use 'wait_for_slave_io_error.inc' to wait the given io thread error happening. mysql-test/suite/rpl/t/rpl_grant.test: It doesn't need in this test. mysql-test/suite/rpl/t/rpl_incident.test: Use 'check_slave_is_running.inc' instead of 'show slave status' statement. mysql-test/suite/rpl/t/rpl_known_bugs_detection.test: Use 'wait_for_slave_sql_error.inc' to wait the given sql thread error happening. There is no need to print the result of 'show slave stutus'. mysql-test/suite/rpl/t/rpl_loaddata_fatal.test: Use 'wait_for_slave_sql_error_and_skip.inc' to wait the given sql thread error happening and then skip the event. There is no need to print the result of 'show slave stutus'. mysql-test/suite/rpl/t/rpl_log_pos.test: Use 'wait_for_slave_io_error.inc' to wait the given io thread error happening. There is no need to print the result of 'show slave status'. mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/rpl/t/rpl_replicate_do.test: Use 'show_slave_status.inc' instead of 'show slave status'. mysql-test/suite/rpl/t/rpl_rotate_logs.test: Use 'show_slave_status.inc' instead of 'show_slave_status2.inc'. mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/rpl/t/rpl_row_create_table.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/rpl/t/rpl_row_drop.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/rpl/t/rpl_row_until.test: Use 'check_slave_param.inc' to check whether SQL Thread stop at a right position, and use binlog position variables instead of explicit number in the 'CHANGE MASTER' statements. mysql-test/suite/rpl/t/rpl_skip_error.test: Use 'check_slave_is_running.inc' instead of 'show slave status' statement. mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test: Use 'wait_for_slave_sql_error.inc' to wait the given sql thread error happening. There is no need to print the result of 'show slave status'. mysql-test/suite/rpl/t/rpl_slave_skip.test: Use 'check_slave_param.inc' to check whether SQL Thread stop at a right position, and mask the explicit position number in the 'CHANGE MASTER' statements. mysql-test/suite/rpl/t/rpl_sp.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/suite/rpl/t/rpl_ssl.test: Use 'show_slave_status.inc' instead of 'show slave status'. mysql-test/suite/rpl/t/rpl_ssl1.test: Use 'show_slave_status.inc' instead of 'show slave status'. mysql-test/suite/rpl/t/rpl_stm_until.test: Use 'check_slave_param.inc' to check whether SQL Thread stop at a right position, and use binlog position variables instead of explicit number in the 'CHANGE MASTER' statements. mysql-test/suite/rpl/t/rpl_temporary_errors.test: Use 'check_slave_is_running.inc' instead of 'show slave status' statement. mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test: Use 'wait_for_slave_sql_error.inc' to wait the given sql thread error happening. There is no need to print the result of 'show slave status'. mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test: Use 'check_slave_is_running.inc' instead of 'show slave status' statement. mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test: Use 'check_slave_is_running.inc' instead of 'show slave status' statement. mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test: Use 'check_slave_is_running.inc' instead of 'show slave status' statement. mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test: Mask master_log_pos and master_log_file mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test: Use 'check_slave_is_running.inc' instead of 'show slave status' statement. mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/t/alter_table-big.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/t/create-big.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/t/ctype_cp932_binlog_stm.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. mysql-test/t/flush_block_commit_notembedded.test: It checks whether somethings are binlogged, so we using 'show_binlog_event.inc' instead of 'show master status'. mysql-test/t/multi_update.test: It checks whether somethings are binlogged, so we using 'wait_binlog_event.inc' instead of 'show master status'. mysql-test/t/sp_trans_log.test: Use 'show_binlog_events.inc' instead of 'show binlog events' statement. --- mysql-test/extra/binlog_tests/binlog.test | 25 +- mysql-test/extra/binlog_tests/blackhole.test | 26 +- mysql-test/extra/rpl_tests/rpl_deadlock.test | 7 +- .../extra/rpl_tests/rpl_extraMaster_Col.test | 67 +- .../extra/rpl_tests/rpl_extraSlave_Col.test | 104 +- mysql-test/extra/rpl_tests/rpl_flsh_tbls.test | 12 +- .../rpl_get_master_version_and_clock.test | 2 +- .../extra/rpl_tests/rpl_insert_delayed.test | 17 +- mysql-test/extra/rpl_tests/rpl_log.test | 57 +- .../extra/rpl_tests/rpl_max_relay_size.test | 19 +- .../extra/rpl_tests/rpl_ndb_apply_status.test | 38 +- .../extra/rpl_tests/rpl_reset_slave.test | 59 +- mysql-test/extra/rpl_tests/rpl_row_basic.test | 32 +- .../extra/rpl_tests/rpl_row_tabledefs.test | 38 +- mysql-test/include/check_slave_is_running.inc | 18 + mysql-test/include/check_slave_no_error.inc | 17 + mysql-test/include/check_slave_param.inc | 16 + mysql-test/include/get_relay_log_pos.inc | 70 + mysql-test/include/rpl_stmt_seq.inc | 30 +- mysql-test/include/show_binlog_events.inc | 41 +- mysql-test/include/show_rpl_debug_info.inc | 2 + mysql-test/include/show_slave_status.inc | 25 +- mysql-test/include/show_slave_status2.inc | 8 - mysql-test/include/test_fieldsize.inc | 7 +- mysql-test/include/wait_for_binlog_event.inc | 2 +- .../include/wait_for_slave_io_error.inc | 47 +- mysql-test/include/wait_for_slave_param.inc | 2 +- .../include/wait_for_slave_sql_error.inc | 17 +- .../wait_for_slave_sql_error_and_skip.inc | 27 +- mysql-test/include/wait_for_status_var.inc | 4 +- .../include/wait_until_count_sessions.inc | 1 + mysql-test/r/alter_table-big.result | 32 +- mysql-test/r/create-big.result | 54 +- mysql-test/r/ctype_cp932_binlog_stm.result | 12 +- .../r/flush_block_commit_notembedded.result | 10 +- mysql-test/r/multi_update.result | 6 - mysql-test/r/sp_trans_log.result | 12 +- .../suite/binlog/r/binlog_innodb.result | 12 +- .../suite/binlog/r/binlog_row_binlog.result | 2069 ++++++++--------- .../suite/binlog/r/binlog_stm_binlog.result | 1068 +++++---- .../binlog/r/binlog_stm_blackhole.result | 12 +- mysql-test/suite/binlog/t/binlog_innodb.test | 6 +- .../suite/binlog/t/binlog_stm_binlog.test | 3 +- mysql-test/suite/bugs/r/rpl_bug12691.result | 9 +- mysql-test/suite/bugs/r/rpl_bug36391.result | 3 +- mysql-test/suite/bugs/t/rpl_bug12691.test | 4 +- mysql-test/suite/bugs/t/rpl_bug36391.test | 4 +- .../suite/engines/funcs/r/rpl_000015.result | 143 +- .../suite/engines/funcs/r/rpl_REDIRECT.result | 3 +- .../engines/funcs/r/rpl_change_master.result | 6 - .../funcs/r/rpl_empty_master_crash.result | 2 - .../engines/funcs/r/rpl_flushlog_loop.result | 41 +- .../engines/funcs/r/rpl_loaddata_s.result | 2 +- .../suite/engines/funcs/r/rpl_log_pos.result | 28 +- .../engines/funcs/r/rpl_rbr_to_sbr.result | 51 +- .../suite/engines/funcs/r/rpl_row_drop.result | 9 +- .../funcs/r/rpl_row_inexist_tbl.result | 40 +- .../funcs/r/rpl_row_max_relay_size.result | 239 +- .../funcs/r/rpl_row_reset_slave.result | 185 +- .../engines/funcs/r/rpl_row_until.result | 188 +- .../engines/funcs/r/rpl_server_id1.result | 4 +- .../engines/funcs/r/rpl_server_id2.result | 3 - .../engines/funcs/r/rpl_slave_status.result | 39 - .../funcs/r/rpl_stm_max_relay_size.result | 239 +- .../funcs/r/rpl_stm_reset_slave.result | 185 +- .../funcs/r/rpl_switch_stm_row_mixed.result | 4 +- .../suite/engines/funcs/t/rpl_000015.test | 26 +- .../suite/engines/funcs/t/rpl_REDIRECT.test | 12 +- .../engines/funcs/t/rpl_change_master.test | 25 +- .../funcs/t/rpl_empty_master_crash.test | 3 - .../engines/funcs/t/rpl_flushlog_loop.test | 7 +- .../suite/engines/funcs/t/rpl_loaddata_s.test | 4 +- .../suite/engines/funcs/t/rpl_log_pos.test | 45 +- .../suite/engines/funcs/t/rpl_rbr_to_sbr.test | 16 +- .../suite/engines/funcs/t/rpl_row_drop.test | 5 +- .../engines/funcs/t/rpl_row_inexist_tbl.test | 10 +- .../suite/engines/funcs/t/rpl_row_until.test | 49 +- .../suite/engines/funcs/t/rpl_server_id1.test | 9 +- .../suite/engines/funcs/t/rpl_server_id2.test | 3 - .../engines/funcs/t/rpl_slave_status.test | 12 +- .../funcs/t/rpl_switch_stm_row_mixed.test | 8 +- .../manual/r/rpl_replication_delay.result | 117 +- .../suite/manual/t/rpl_replication_delay.test | 16 +- .../ndb_team/r/rpl_ndb_extraColMaster.result | 612 +---- .../ndb_team/r/rpl_ndb_mix_innodb.result | 22 +- mysql-test/suite/parts/r/rpl_partition.result | 40 +- mysql-test/suite/parts/t/rpl_partition.test | 4 +- .../suite/rpl/include/rpl_mixed_ddl.inc | 4 +- .../suite/rpl/include/rpl_mixed_dml.inc | 5 +- mysql-test/suite/rpl/r/rpl_000015.result | 141 -- .../suite/rpl/r/rpl_binlog_grant.result | 24 - mysql-test/suite/rpl/r/rpl_bug33931.result | 40 +- .../suite/rpl/r/rpl_change_master.result | 80 +- .../suite/rpl/r/rpl_deadlock_innodb.result | 122 +- .../suite/rpl/r/rpl_dual_pos_advance.result | 14 +- .../suite/rpl/r/rpl_empty_master_crash.result | 1 - .../suite/rpl/r/rpl_extraCol_innodb.result | 395 +--- .../suite/rpl/r/rpl_extraCol_myisam.result | 395 +--- .../rpl/r/rpl_extraColmaster_innodb.result | 906 +------- .../rpl/r/rpl_extraColmaster_myisam.result | 906 +------- .../rpl/r/rpl_filter_tables_not_exist.result | 32 +- .../suite/rpl/r/rpl_flushlog_loop.result | 44 +- .../r/rpl_get_master_version_and_clock.result | 3 +- mysql-test/suite/rpl/r/rpl_grant.result | 39 - mysql-test/suite/rpl/r/rpl_incident.result | 80 +- .../suite/rpl/r/rpl_innodb_mixed_ddl.result | 39 +- .../suite/rpl/r/rpl_innodb_mixed_dml.result | 527 +++-- .../rpl/r/rpl_known_bugs_detection.result | 84 +- .../suite/rpl/r/rpl_loaddata_fatal.result | 82 +- mysql-test/suite/rpl/r/rpl_log_pos.result | 86 +- mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result | 69 +- .../suite/rpl/r/rpl_replicate_do.result | 38 - mysql-test/suite/rpl/r/rpl_rotate_logs.result | 114 +- .../suite/rpl/r/rpl_row_basic_11bugs.result | 13 +- .../suite/rpl/r/rpl_row_basic_2myisam.result | 12 +- .../suite/rpl/r/rpl_row_basic_3innodb.result | 12 +- mysql-test/suite/rpl/r/rpl_row_colSize.result | 520 +---- .../suite/rpl/r/rpl_row_create_table.result | 151 +- mysql-test/suite/rpl/r/rpl_row_drop.result | 9 +- .../suite/rpl/r/rpl_row_flsh_tbls.result | 8 +- mysql-test/suite/rpl/r/rpl_row_log.result | 138 +- .../suite/rpl/r/rpl_row_log_innodb.result | 138 +- .../suite/rpl/r/rpl_row_max_relay_size.result | 239 +- .../suite/rpl/r/rpl_row_reset_slave.result | 185 +- .../rpl/r/rpl_row_tabledefs_2myisam.result | 215 +- .../rpl/r/rpl_row_tabledefs_3innodb.result | 215 +- mysql-test/suite/rpl/r/rpl_row_until.result | 166 +- mysql-test/suite/rpl/r/rpl_skip_error.result | 80 +- .../r/rpl_slave_load_remove_tmpfile.result | 39 - mysql-test/suite/rpl/r/rpl_slave_skip.result | 82 +- mysql-test/suite/rpl/r/rpl_sp.result | 178 +- mysql-test/suite/rpl/r/rpl_ssl.result | 74 +- mysql-test/suite/rpl/r/rpl_ssl1.result | 111 +- .../suite/rpl/r/rpl_stm_flsh_tbls.result | 8 +- .../suite/rpl/r/rpl_stm_insert_delayed.result | 22 +- mysql-test/suite/rpl/r/rpl_stm_log.result | 110 +- .../suite/rpl/r/rpl_stm_max_relay_size.result | 239 +- .../suite/rpl/r/rpl_stm_reset_slave.result | 185 +- mysql-test/suite/rpl/r/rpl_stm_until.result | 174 +- .../suite/rpl/r/rpl_temporary_errors.result | 40 +- mysql-test/suite/rpl/t/rpl_000015-slave.opt | 1 - mysql-test/suite/rpl/t/rpl_000015.cnf | 2 - mysql-test/suite/rpl/t/rpl_000015.test | 40 - mysql-test/suite/rpl/t/rpl_binlog_grant.test | 10 +- mysql-test/suite/rpl/t/rpl_bug33931.test | 7 +- mysql-test/suite/rpl/t/rpl_change_master.test | 22 +- .../suite/rpl/t/rpl_critical_errors.test | 12 +- .../suite/rpl/t/rpl_dual_pos_advance.test | 54 +- .../suite/rpl/t/rpl_empty_master_crash.test | 2 - .../rpl/t/rpl_filter_tables_not_exist.test | 2 +- mysql-test/suite/rpl/t/rpl_flushlog_loop.test | 26 +- .../t/rpl_get_master_version_and_clock.test | 10 +- mysql-test/suite/rpl/t/rpl_grant.test | 2 - mysql-test/suite/rpl/t/rpl_incident.test | 9 +- .../suite/rpl/t/rpl_known_bugs_detection.test | 14 +- .../suite/rpl/t/rpl_loaddata_fatal.test | 10 +- mysql-test/suite/rpl/t/rpl_log_pos.test | 11 +- mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test | 14 +- mysql-test/suite/rpl/t/rpl_replicate_do.test | 6 +- mysql-test/suite/rpl/t/rpl_rotate_logs.test | 10 +- .../suite/rpl/t/rpl_row_basic_11bugs.test | 4 +- .../suite/rpl/t/rpl_row_create_table.test | 32 +- mysql-test/suite/rpl/t/rpl_row_drop.test | 5 +- mysql-test/suite/rpl/t/rpl_row_until.test | 41 +- mysql-test/suite/rpl/t/rpl_skip_error.test | 4 +- .../rpl/t/rpl_slave_load_remove_tmpfile.test | 9 +- mysql-test/suite/rpl/t/rpl_slave_skip.test | 19 +- mysql-test/suite/rpl/t/rpl_sp.test | 4 +- mysql-test/suite/rpl/t/rpl_ssl.test | 11 +- mysql-test/suite/rpl/t/rpl_ssl1.test | 17 +- mysql-test/suite/rpl/t/rpl_stm_until.test | 42 +- .../suite/rpl/t/rpl_temporary_errors.test | 2 +- .../suite/rpl_ndb/r/rpl_ndb_basic.result | 40 +- .../suite/rpl_ndb/r/rpl_ndb_circular.result | 80 +- .../rpl_ndb/r/rpl_ndb_circular_simplex.result | 80 +- .../suite/rpl_ndb/r/rpl_ndb_extraCol.result | 395 +--- .../suite/rpl_ndb/r/rpl_ndb_idempotent.result | 11 +- mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result | 162 +- .../suite/rpl_ndb/r/rpl_ndb_multi.result | 4 +- .../suite/rpl_ndb/r/rpl_ndb_stm_innodb.result | 22 +- .../suite/rpl_ndb/r/rpl_ndb_sync.result | 40 +- .../suite/rpl_ndb/r/rpl_row_basic_7ndb.result | 12 +- .../suite/rpl_ndb/r/rpl_truncate_7ndb.result | 70 +- mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test | 9 +- .../suite/rpl_ndb/t/rpl_ndb_circular.test | 16 +- .../rpl_ndb/t/rpl_ndb_circular_simplex.test | 12 +- .../suite/rpl_ndb/t/rpl_ndb_idempotent.test | 14 +- mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test | 2 +- mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test | 6 +- .../suite/rpl_ndb/t/rpl_truncate_7ndb.test | 9 +- mysql-test/t/alter_table-big.test | 8 +- mysql-test/t/create-big.test | 12 +- mysql-test/t/ctype_cp932_binlog_stm.test | 3 +- .../t/flush_block_commit_notembedded.test | 4 +- mysql-test/t/multi_update.test | 6 +- mysql-test/t/sp_trans_log.test | 4 +- 196 files changed, 3690 insertions(+), 12027 deletions(-) create mode 100644 mysql-test/include/check_slave_is_running.inc create mode 100644 mysql-test/include/check_slave_no_error.inc create mode 100644 mysql-test/include/check_slave_param.inc create mode 100644 mysql-test/include/get_relay_log_pos.inc delete mode 100644 mysql-test/include/show_slave_status2.inc delete mode 100644 mysql-test/suite/rpl/r/rpl_000015.result delete mode 100644 mysql-test/suite/rpl/t/rpl_000015-slave.opt delete mode 100644 mysql-test/suite/rpl/t/rpl_000015.cnf delete mode 100644 mysql-test/suite/rpl/t/rpl_000015.test diff --git a/mysql-test/extra/binlog_tests/binlog.test b/mysql-test/extra/binlog_tests/binlog.test index b819996acb0..7f48341077e 100644 --- a/mysql-test/extra/binlog_tests/binlog.test +++ b/mysql-test/extra/binlog_tests/binlog.test @@ -41,13 +41,10 @@ while ($1) --enable_query_log commit; drop table t1; ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\// -show binlog events in 'master-bin.000001' from 106; ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\// -show binlog events in 'master-bin.000002' from 106; - +--source include/show_binlog_events.inc +--let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1) +--source include/show_binlog_events.inc +--let $binlog_file= # # Bug#22540 - Incorrect value in column End_log_pos of @@ -77,8 +74,7 @@ insert into t1 values (2); insert into t1 values (3); commit; drop table t1; ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ -show binlog events from 0; +--source include/show_binlog_events.inc # now show that nothing breaks if we need to read from the cache more # than once, resulting in split event-headers @@ -100,8 +96,7 @@ while ($1) commit; enable_query_log; ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ -show binlog events from 0; +--source include/show_binlog_events.inc drop table t1; @@ -122,8 +117,7 @@ set @b= 14632475938453979136; execute stmt using @a, @b; deallocate prepare stmt; drop table t1; ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ -show binlog events from 0; +--source include/show_binlog_events.inc # @@ -249,14 +243,15 @@ reset master; drop table if exists t3; --enable_warnings create table t3 (a int(11) NOT NULL AUTO_INCREMENT, b text, PRIMARY KEY (a) ) engine=innodb; -show master status; +source include/show_master_status.inc; let $it=4; while ($it) { insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); dec $it; } -show master status /* must show new binlog index after rotating */; +# must show new binlog index after rotating; +source include/show_master_status.inc; drop table t3; --echo # diff --git a/mysql-test/extra/binlog_tests/blackhole.test b/mysql-test/extra/binlog_tests/blackhole.test index 14c15a58e18..da63a7a8619 100644 --- a/mysql-test/extra/binlog_tests/blackhole.test +++ b/mysql-test/extra/binlog_tests/blackhole.test @@ -125,12 +125,7 @@ select * from t1; select * from t2; select * from t3; -let $VERSION=`select version()`; ---replace_result $VERSION VERSION ---replace_column 2 # 4 # 5 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ ---replace_regex /file_id=[0-9]+/file_id=#/ -show binlog events; +--source include/show_binlog_events.inc drop table t1,t2,t3; @@ -168,18 +163,21 @@ set autocommit=0; start transaction; insert into t1 values(1); commit; + +let $master_log_pos_1= query_get_value(SHOW MASTER STATUS, Position, 1); + start transaction; insert into t1 values(2); rollback; + +let $master_log_pos_2= query_get_value(SHOW MASTER STATUS, Position, 1); +if (`SELECT $master_log_pos_2 <> $master_log_pos_1`) +{ + echo $master_log_pos_1 $master_log_pos_2; + die Rollbacked transaction has been binlogged; +} + set autocommit=1; - -let $VERSION=`select version()`; ---replace_result $VERSION VERSION ---replace_column 2 # 4 # 5 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ ---replace_regex /file_id=[0-9]+/file_id=#/ -show binlog events; - drop table if exists t1; # diff --git a/mysql-test/extra/rpl_tests/rpl_deadlock.test b/mysql-test/extra/rpl_tests/rpl_deadlock.test index 1b331cc948b..607348ae97b 100644 --- a/mysql-test/extra/rpl_tests/rpl_deadlock.test +++ b/mysql-test/extra/rpl_tests/rpl_deadlock.test @@ -61,7 +61,7 @@ sync_with_master; SELECT * FROM t1; SELECT * FROM t3; # Check that no error is reported ---source include/show_slave_status2.inc +source include/check_slave_is_running.inc; --echo # 2) Test lock wait timeout @@ -89,7 +89,7 @@ sync_with_master; SELECT * FROM t1; SELECT * FROM t3; # Check that no error is reported ---source include/show_slave_status2.inc +source include/check_slave_is_running.inc; --echo # 3) Test lock wait timeout and purged relay log @@ -103,6 +103,7 @@ SET global max_relay_log_size=0; --source include/stop_slave.inc DELETE FROM t2; # Set slave position to the BEGIN log event +--replace_result $master_pos_begin MASTER_POS_BEGIN eval CHANGE MASTER TO MASTER_LOG_POS=$master_pos_begin; BEGIN; # Hold lock @@ -119,7 +120,7 @@ sync_with_master; SELECT * FROM t1; SELECT * FROM t3; # Check that no error is reported ---source include/show_slave_status2.inc +source include/check_slave_is_running.inc; --echo # Clean up diff --git a/mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test b/mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test index c426ac1fae8..16c4bc8e2da 100644 --- a/mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test +++ b/mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test @@ -146,12 +146,7 @@ SELECT COUNT(*) FROM t1; --echo SELECT * FROM t1 ORDER BY f3 LIMIT 20; ---echo ---echo * Show Slave Status * ---echo ---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # ---query_vertical show slave status; ---echo +--source include/check_slave_is_running.inc ### Altering table def scenario --echo @@ -431,16 +426,14 @@ connection master; delete from t4; delete from t31; ---echo ---echo ** Check slave status ** ---echo #connection slave; sync_slave_with_master; select * from t31; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # ---query_vertical show slave status; +--echo +--echo ** Check slave status ** +--echo +--source include/check_slave_is_running.inc #### Clean Up #### @@ -493,16 +486,15 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT), --echo --echo ******************************************** ---echo *** Expect slave to fail with Error 1523 *** +--echo *** Expect slave to fail with Error 1535 *** --echo ******************************************** --echo connection slave; -source include/wait_for_slave_sql_to_stop.inc; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF +--let $slave_sql_errno= 1535 +--let $slave_skip_counter= 2 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc --echo --echo *** Drop t10 *** @@ -550,16 +542,15 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT), --echo --echo ******************************************** ---echo *** Expect slave to fail with Error 1523 *** +--echo *** Expect slave to fail with Error 1535 *** --echo ******************************************** --echo connection slave; -source include/wait_for_slave_sql_to_stop.inc; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF +--let $slave_sql_errno= 1535 +--let $slave_skip_counter= 2 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc --echo --echo *** Drop t11 *** @@ -697,10 +688,10 @@ SELECT c1,c3,hex(c4),c5,c6 FROM t14 ORDER BY c1; # Remove below once fixed #*************************** connection slave; -source include/wait_for_slave_sql_to_stop.inc; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS +# 1091 = ER_CANT_DROP_FIELD_OR_KEY +--let $slave_sql_errno= 1091 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc #*************************** STOP SLAVE; @@ -763,10 +754,10 @@ SELECT c1,hex(c4),c5,c6,c7,c2 FROM t15 ORDER BY c1; --echo ******************************************** --echo connection slave; -source include/wait_for_slave_sql_to_stop.inc; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS +# 1054 = ER_BAD_FIELD_ERROR +--let $slave_sql_errno= 1054 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc STOP SLAVE; RESET SLAVE; @@ -840,10 +831,10 @@ SELECT c1,hex(c4),c5,c6,c7 FROM t16 ORDER BY c1; --echo ***************** --echo connection slave; -source include/wait_for_slave_sql_to_stop.inc; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS +# 1072 = ER_KEY_COLUMN_DOES_NOT_EXITS +--let $slave_sql_errno= 1072 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc STOP SLAVE; RESET SLAVE; diff --git a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test index 46168d6b97a..0317aa79891 100644 --- a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test +++ b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test @@ -96,10 +96,9 @@ SELECT * FROM t2 ORDER BY a; --echo *** Start Slave *** connection slave; START SLAVE; -source include/wait_for_slave_sql_to_stop.inc; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS +--let $slave_sql_errno= 1535 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc STOP SLAVE; RESET SLAVE; SELECT * FROM t2 ORDER BY a; @@ -149,12 +148,10 @@ INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TEST --echo *** Expect slave to fail with Error 1522 *** --echo ******************************************** connection slave; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--let $slave_sql_errno= 1535 +--let $slave_skip_counter= 2 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc --echo *** Drop t3 *** connection master; @@ -194,12 +191,10 @@ INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'), --echo *** Expect slave to fail with Error 1522 *** --echo ******************************************** connection slave; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--let $slave_sql_errno= 1535 +--let $slave_skip_counter= 2 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc --echo *** Drop t4 *** connection master; @@ -239,12 +234,10 @@ INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098), --echo *** Expect slave to fail with Error 1522 *** --echo ******************************************** connection slave; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--let $slave_sql_errno= 1535 +--let $slave_skip_counter= 2 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc --echo *** Drop t5 *** connection master; @@ -285,10 +278,9 @@ INSERT INTO t6 () VALUES(1,'Kyle',200.23,1), --echo *** Expect slave to fail with Error 1522 *** --echo ******************************************** connection slave; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS +--let $slave_sql_errno= 1535 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3; #START SLAVE; @@ -387,12 +379,10 @@ INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ### Uncomment once bug is fixed #connection slave; -#wait_for_slave_to_stop; -#--replace_result $MASTER_MYPORT MASTER_PORT -#--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # -#--query_vertical SHOW SLAVE STATUS -#SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -#START SLAVE; +#--let $slave_sql_errno= SOMETHING +#--let $slave_skip_counter= 2 +#--let $show_slave_sql_error= 1 +#--source include/wait_for_slave_sql_error_and_skip.inc --echo *** Drop t8 *** connection master; @@ -451,12 +441,10 @@ if (`SELECT $engine_type != 'NDB'`) # todo: fix Bug #43992 slave sql thread can't tune own sql_mode ... # and add/restore waiting for stop test - #--source include/wait_for_slave_sql_to_stop.inc - #--replace_result $MASTER_MYPORT MASTER_PORT - #--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # - #--query_vertical SHOW SLAVE STATUS - #SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; - #START SLAVE; + #--let $slave_sql_errno= SOMETHING + #--let $slave_skip_counter= 2 + #--let $show_slave_sql_error= 1 + #--source include/wait_for_slave_sql_error_and_skip.inc } #--echo *** Drop t9 *** @@ -494,12 +482,10 @@ INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); --echo *** Expect slave to fail with Error 1522 *** --echo ******************************************** connection slave; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--let $slave_sql_errno= 1535 +--let $slave_skip_counter= 2 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc --echo *** Drop t10 *** connection master; @@ -538,12 +524,10 @@ INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); --echo *** Expect slave to fail with Error 1522 *** --echo ******************************************** connection slave; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--let $slave_sql_errno= 1535 +--let $slave_skip_counter= 2 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc --echo *** Drop t11 *** connection master; @@ -810,12 +794,10 @@ ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5; --echo *** Expect slave to fail with Error 1060 *** --echo ******************************************** connection slave; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; -START SLAVE; +--let $slave_sql_errno= 1060 +--let $slave_skip_counter= 1 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc --echo *** Try to insert in master **** connection master; @@ -921,12 +903,10 @@ INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX'); --echo *** Expect slave to fail with Error 1522 *** --echo ******************************************** connection slave; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--let $slave_sql_errno= 1535 +--let $slave_skip_counter= 2 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc --echo ** DROP table t17 *** connection master; diff --git a/mysql-test/extra/rpl_tests/rpl_flsh_tbls.test b/mysql-test/extra/rpl_tests/rpl_flsh_tbls.test index 0baf49c9fac..0a1a4503975 100644 --- a/mysql-test/extra/rpl_tests/rpl_flsh_tbls.test +++ b/mysql-test/extra/rpl_tests/rpl_flsh_tbls.test @@ -20,19 +20,15 @@ rename table t1 to t5, t2 to t1; # first don't write it to the binlog, to test the NO_WRITE_TO_BINLOG keyword. flush no_write_to_binlog tables; # Check that it's not in the binlog. ---replace_result $SERVER_VERSION SERVER_VERSION ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ -eval SHOW BINLOG EVENTS FROM $rename_event_pos ; +let $binlog_start= $rename_event_pos; +source include/show_binlog_events.inc; # Check that the master is not confused. select * from t3; # This FLUSH should go into the binlog to not confuse the slave. flush tables; # Check that it's in the binlog. ---replace_result $SERVER_VERSION SERVER_VERSION ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ -eval SHOW BINLOG EVENTS FROM $rename_event_pos ; +let $wait_binlog_event= flush tables; +source include/wait_for_binlog_event.inc; sync_slave_with_master; # Check that the slave is not confused. diff --git a/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test b/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test index c392686454d..6e750d57c56 100644 --- a/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test +++ b/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test @@ -68,7 +68,7 @@ eval SET DEBUG_SYNC=$debug_sync_action; # Show slave last IO errno connection slave; -source include/wait_for_slave_io_error.inc; +source include/wait_for_slave_io_to_stop.inc; let $last_io_errno= query_get_value("show slave status", Last_IO_Errno, 1); --echo Check network error happened here if (`SELECT '$last_io_errno' = '2013' || # CR_SERVER_LOST diff --git a/mysql-test/extra/rpl_tests/rpl_insert_delayed.test b/mysql-test/extra/rpl_tests/rpl_insert_delayed.test index e492903afad..e2762eab8df 100644 --- a/mysql-test/extra/rpl_tests/rpl_insert_delayed.test +++ b/mysql-test/extra/rpl_tests/rpl_insert_delayed.test @@ -90,7 +90,7 @@ connection master; # Bug #29571: INSERT DELAYED IGNORE written to binary log on the master but # on the slave # -if (`SELECT @@global.binlog_format != 'ROW'`) +if ($binlog_format_statement) { #flush the logs before the test connection slave; @@ -103,22 +103,23 @@ CREATE TABLE t1(a int, UNIQUE(a)); INSERT DELAYED IGNORE INTO t1 VALUES(1); INSERT DELAYED IGNORE INTO t1 VALUES(1); flush table t1; # to wait for INSERT DELAYED to be done - -if (`SELECT @@global.binlog_format != 'ROW'`) +if ($binlog_format_statement) { #must show two INSERT DELAYED - --replace_column 1 x 2 x 3 x 4 x 5 x - show binlog events in 'master-bin.000002' LIMIT 2,2; + --let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1) + --let $binlog_limit= 1,2 + --source include/show_binlog_events.inc } select * from t1; sync_slave_with_master; echo On slave; -if (`SELECT @@global.binlog_format != 'ROW'`) +if ($binlog_format_statement) { #must show two INSERT DELAYED - --replace_column 1 x 2 x 3 x 4 x 5 x - show binlog events in 'slave-bin.000002' LIMIT 2,2; + --let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1) + --let $binlog_limit= 1,2 + --source include/show_binlog_events.inc } select * from t1; diff --git a/mysql-test/extra/rpl_tests/rpl_log.test b/mysql-test/extra/rpl_tests/rpl_log.test index e4ebfd68761..e714d84a51b 100644 --- a/mysql-test/extra/rpl_tests/rpl_log.test +++ b/mysql-test/extra/rpl_tests/rpl_log.test @@ -11,11 +11,9 @@ # (otherwise RESET MASTER may come too early). sync_slave_with_master; source include/stop_slave.inc; ---source include/wait_for_slave_to_stop.inc reset master; reset slave; -start slave; ---source include/wait_for_slave_to_start.inc +source include/start_slave.inc; let $VERSION=`select version()`; @@ -31,19 +29,17 @@ eval create table t1 (word char(20) not null)ENGINE=$engine_type; --replace_result $LOAD_FILE LOAD_FILE eval load data infile '$LOAD_FILE' into table t1 ignore 1 lines; select count(*) from t1; ---replace_result $VERSION VERSION ---replace_column 2 # 5 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ -show binlog events; ---replace_column 2 # 5 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ -show binlog events from 106 limit 1; ---replace_column 2 # 5 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ -show binlog events from 106 limit 2; ---replace_column 2 # 5 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ -show binlog events from 106 limit 2,1; +source include/show_binlog_events.inc; + +let $binlog_limit= 1; +source include/show_binlog_events.inc; + +let $binlog_limit= 2; +source include/show_binlog_events.inc; + +let $binlog_limit= 2,1; +source include/show_binlog_events.inc; +let $binlog_limit=; flush logs; # We need an extra update before doing save_master_pos. @@ -84,27 +80,24 @@ connection master; eval create table t2 (n int)ENGINE=$engine_type; insert into t2 values (1); source include/show_binlog_events.inc; ---replace_result $VERSION VERSION ---replace_regex /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /infile '.+'/infile 'words.dat'/ ---replace_column 2 # 5 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ -show binlog events in 'master-bin.000002'; + +let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1); +source include/show_binlog_events.inc; + --replace_column 2 # show binary logs; sync_slave_with_master; ---source include/wait_for_slave_to_start.inc --replace_column 2 # show binary logs; ---replace_result $MASTER_MYPORT MASTER_PORT $VERSION VERSION ---replace_column 2 # 5 # ---replace_regex /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /INFILE '.+'/INFILE 'words.dat'/ ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ -show binlog events in 'slave-bin.000001' from 4; ---replace_result $MASTER_MYPORT MASTER_PORT $VERSION VERSION ---replace_column 2 # 5 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ -show binlog events in 'slave-bin.000002' from 4; -source include/show_slave_status.inc; + +let $binlog_file=; +source include/show_binlog_events.inc; + +let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1); +source include/show_binlog_events.inc; +let $binlog_file=; + +source include/check_slave_is_running.inc; # Need to recode the following diff --git a/mysql-test/extra/rpl_tests/rpl_max_relay_size.test b/mysql-test/extra/rpl_tests/rpl_max_relay_size.test index 5b546bbd891..8415522ec92 100644 --- a/mysql-test/extra/rpl_tests/rpl_max_relay_size.test +++ b/mysql-test/extra/rpl_tests/rpl_max_relay_size.test @@ -43,7 +43,7 @@ set global max_relay_log_size=8192-1; # mapped to 4096 select @@global.max_relay_log_size; start slave; sync_with_master; -source include/show_slave_status2.inc; +--source include/check_slave_is_running.inc --echo # --echo # Test 2 @@ -55,7 +55,7 @@ set global max_relay_log_size=(5*4096); query_vertical select @@global.max_relay_log_size; start slave; sync_with_master; -source include/show_slave_status2.inc; +--source include/check_slave_is_running.inc --echo # --echo # Test 3: max_relay_log_size = 0 @@ -67,7 +67,7 @@ set global max_relay_log_size=0; query_vertical select @@global.max_relay_log_size; start slave; sync_with_master; -source include/show_slave_status2.inc; +--source include/check_slave_is_running.inc --echo # --echo # Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions @@ -78,7 +78,6 @@ reset slave; # test of relay log rotation when the slave is stopped # (to make sure it does not crash). flush logs; -source include/show_slave_status2.inc; --echo # --echo # Test 5 @@ -93,10 +92,8 @@ flush logs; # log we just closed. But a trick to achieve this is do an update on the master. connection master; create table t1 (a int); -save_master_pos; -connection slave; -sync_with_master; -source include/show_slave_status2.inc; +sync_slave_with_master; +--source include/check_slave_is_running.inc --echo # --echo # Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated @@ -105,10 +102,8 @@ source include/show_slave_status2.inc; flush logs; connection master; drop table t1; -save_master_pos; -connection slave; -sync_with_master; -source include/show_slave_status2.inc; +sync_slave_with_master; +--source include/check_slave_is_running.inc connection master; # test that the absence of relay logs does not make a master crash diff --git a/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test b/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test index 4677f6da25d..3de1d42c34f 100644 --- a/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test +++ b/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test @@ -56,24 +56,23 @@ connection master; --echo # since insert is done with transactional engine, expect a BEGIN --echo # at --echo ---replace_result $start_pos ---replace_column 5 # ---eval show binlog events from $start_pos limit 1 +--let $binlog_start= $start_pos +--let $binlog_limit= 1 +--source include/show_binlog_events.inc --echo --echo # Now the insert, one step after --echo ---replace_result $start_pos ---replace_column 2 # 5 # ---eval show binlog events from $start_pos limit 1,1 +--let $binlog_start= $start_pos +--let $binlog_limit= 1,1 +--source include/show_binlog_events.inc --echo --echo # and the COMMIT should be at --echo ---replace_result $start_pos $end_pos ---replace_column 2 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ ---eval show binlog events from $start_pos limit 2,1 +--let $binlog_start= $start_pos +--let $binlog_limit= 2,1 +--source include/show_binlog_events.inc --echo @@ -89,18 +88,17 @@ commit; --source include/select_ndb_apply_status.inc connection master; ---replace_result $start_pos ---replace_column 5 # ---eval show binlog events from $start_pos limit 1 +--let $binlog_start= $start_pos +--let $binlog_limit= 1 +--source include/show_binlog_events.inc --echo ---replace_result $start_pos ---replace_column 2 # 4 # 5 # ---eval show binlog events from $start_pos limit 1,2 +--let $binlog_start= $start_pos +--let $binlog_limit= 1,2 +--source include/show_binlog_events.inc --echo ---replace_result $start_pos $end_pos ---replace_column 2 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ ---eval show binlog events from $start_pos limit 3,1 +--let $binlog_start= $start_pos +--let $binlog_limit= 3,1 +--source include/show_binlog_events.inc --echo diff --git a/mysql-test/extra/rpl_tests/rpl_reset_slave.test b/mysql-test/extra/rpl_tests/rpl_reset_slave.test index 1f88c792fce..5c7d33d519e 100644 --- a/mysql-test/extra/rpl_tests/rpl_reset_slave.test +++ b/mysql-test/extra/rpl_tests/rpl_reset_slave.test @@ -9,36 +9,32 @@ # RESET SLAVE. -- source include/master-slave.inc -connection master; -save_master_pos; -connection slave; -sync_with_master; -source include/show_slave_status2.inc; +sync_slave_with_master; +let $status_items= Master_User, Master_Host; +source include/show_slave_status.inc; -stop slave; +source include/stop_slave.inc; change master to master_user='test'; -source include/show_slave_status2.inc; +source include/show_slave_status.inc; reset slave; -source include/show_slave_status2.inc; +source include/show_slave_status.inc; -start slave; +source include/start_slave.inc; sync_with_master; -source include/show_slave_status2.inc; +source include/show_slave_status.inc; # test of crash with temp tables & RESET SLAVE # (test to see if RESET SLAVE clears temp tables in memory and disk) -stop slave; +source include/stop_slave.inc; reset slave; -start slave; +source include/start_slave.inc; connection master; create temporary table t1 (a int); -save_master_pos; -connection slave; -sync_with_master; -stop slave; +sync_slave_with_master; +source include/stop_slave.inc; reset slave; -start slave; +source include/start_slave.inc; sync_with_master; show status like 'slave_open_temp_tables'; @@ -47,10 +43,9 @@ show status like 'slave_open_temp_tables'; # # clearing the status -stop slave; +source include/stop_slave.inc; reset slave; -let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1); -echo *** errno must be zero: $last_io_errno ***; +source include/check_slave_no_error.inc; # # verifying start slave resets Last_IO_Error and Last_IO_Errno. @@ -58,19 +53,13 @@ echo *** errno must be zero: $last_io_errno ***; change master to master_user='impossible_user_name'; start slave; +let $slave_io_errno= 1045; source include/wait_for_slave_io_error.inc; -let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1); ---disable_query_log -eval SELECT $last_io_errno > 0 as ONE; ---enable_query_log source include/stop_slave.inc; change master to master_user='root'; source include/start_slave.inc; -let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1); -let $last_io_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Error, 1); ---echo *** last errno must be zero: $last_io_errno *** ---echo *** last error must be blank: $last_io_error *** +source include/check_slave_no_error.inc; # # verifying reset slave resets Last_{IO,SQL}_Err{or,no} @@ -79,19 +68,9 @@ let $last_io_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Error, 1); source include/stop_slave.inc; change master to master_user='impossible_user_name'; start slave; +let $slave_io_errno= 1045; source include/wait_for_slave_io_error.inc; -let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1); ---disable_query_log -eval SELECT $last_io_errno > 0 as ONE; ---enable_query_log source include/stop_slave.inc; reset slave; -let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1); -let $last_io_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Error, 1); -let $last_sql_errno= query_get_value(SHOW SLAVE STATUS, Last_SQL_Errno, 1); -let $last_sql_error= query_get_value(SHOW SLAVE STATUS, Last_SQL_Error, 1); ---echo *** io last errno must be zero: $last_io_errno *** ---echo *** io last error must be blank: $last_io_error *** ---echo *** sql last errno must be zero: $last_sql_errno *** ---echo *** sql last error must be blank: $last_sql_error *** +source include/check_slave_no_error.inc; diff --git a/mysql-test/extra/rpl_tests/rpl_row_basic.test b/mysql-test/extra/rpl_tests/rpl_row_basic.test index 0ba27c69a55..84f7b79e733 100644 --- a/mysql-test/extra/rpl_tests/rpl_row_basic.test +++ b/mysql-test/extra/rpl_tests/rpl_row_basic.test @@ -259,10 +259,7 @@ DELETE FROM t1; query_vertical SELECT COUNT(*) FROM t1 ORDER BY c1,c2; sync_slave_with_master; set @@global.slave_exec_mode= default; -let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1); -disable_query_log; -eval SELECT "$last_error" AS Last_SQL_Error; -enable_query_log; +source include/check_slave_is_running.inc; query_vertical SELECT COUNT(*) FROM t1 ORDER BY c1,c2; # BUG#37076: TIMESTAMP/DATETIME values are not replicated correctly @@ -376,11 +373,10 @@ INSERT INTO t3 VALUES (1, "", 1); INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2); connection slave; -source include/wait_for_slave_sql_to_stop.inc; -let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1); -disable_query_log; -eval SELECT "$last_error" AS Last_SQL_Error; -enable_query_log; +# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF +--let $slave_sql_errno= 1535 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc connection master; RESET MASTER; connection slave; @@ -405,11 +401,10 @@ INSERT INTO t5 VALUES (1, "", 1); INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2); connection slave; -source include/wait_for_slave_sql_to_stop.inc; -let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1); -disable_query_log; -eval SELECT "$last_error" AS Last_SQL_Error; -enable_query_log; +# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF +--let $slave_sql_errno= 1535 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc connection master; RESET MASTER; connection slave; @@ -424,11 +419,10 @@ INSERT INTO t6 VALUES (1, "", 1); INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2); connection slave; -source include/wait_for_slave_sql_to_stop.inc; -let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1); -disable_query_log; -eval SELECT "$last_error" AS Last_SQL_Error; -enable_query_log; +# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF +--let $slave_sql_errno= 1535 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc connection master; RESET MASTER; connection slave; diff --git a/mysql-test/extra/rpl_tests/rpl_row_tabledefs.test b/mysql-test/extra/rpl_tests/rpl_row_tabledefs.test index 083088f12ff..ee6205c79d8 100644 --- a/mysql-test/extra/rpl_tests/rpl_row_tabledefs.test +++ b/mysql-test/extra/rpl_tests/rpl_row_tabledefs.test @@ -138,9 +138,7 @@ SELECT * FROM t2; sync_slave_with_master; --echo **** On Slave **** SELECT * FROM t2; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 20 22 # 23 # 33 # 35 36 38 ---query_vertical SHOW SLAVE STATUS +--source include/check_slave_is_running.inc connection master; INSERT INTO t9 VALUES (4); @@ -149,12 +147,10 @@ sync_slave_with_master; connection master; INSERT INTO t4 VALUES (4); connection slave; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 20 22 # 23 # 33 # 35 36 38 ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--let $slave_skip_counter= 2 +--let $slave_sql_errno= 1535 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc connection master; INSERT INTO t9 VALUES (5); @@ -163,12 +159,10 @@ sync_slave_with_master; connection master; INSERT INTO t5 VALUES (5,10,25); connection slave; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 20 22 # 23 # 33 # 35 36 38 ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--let $slave_skip_counter= 2 +--let $slave_sql_errno= 1535 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc connection master; INSERT INTO t9 VALUES (6); @@ -177,19 +171,15 @@ sync_slave_with_master; connection master; INSERT INTO t6 VALUES (6,12,36); connection slave; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 20 22 # 23 # 33 # 35 36 38 ---query_vertical SHOW SLAVE STATUS -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--let $slave_skip_counter= 2 +--let $slave_sql_errno= 1535 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error_and_skip.inc connection master; INSERT INTO t9 VALUES (6); sync_slave_with_master; ---replace_result $SLAVE_MYPORT SLAVE_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 20 22 # 23 # 33 # 35 36 38 ---query_vertical SHOW SLAVE STATUS +--source include/check_slave_is_running.inc # Testing some tables extra field that can be null and cannot be null # (but have default values) diff --git a/mysql-test/include/check_slave_is_running.inc b/mysql-test/include/check_slave_is_running.inc new file mode 100644 index 00000000000..5fbbe0d684c --- /dev/null +++ b/mysql-test/include/check_slave_is_running.inc @@ -0,0 +1,18 @@ +# ==== Purpose ==== +# +# Assert that the slave threads are running and don't have any errors. +# +# ==== Usage ==== +# +# --source include/check_slave_running.inc + +--echo Checking that both slave threads are running. + +--let $slave_sql_running = query_get_value(SHOW SLAVE STATUS, Slave_SQL_Running, 1) +--let $slave_io_running = query_get_value(SHOW SLAVE STATUS, Slave_IO_Running, 1) + +if (`SELECT '$slave_sql_running' != 'Yes' OR '$slave_io_running' != 'Yes'`) { + --echo Slave not running: Slave_SQL_Running = $slave_sql_running Slave_IO_Running = $slave_io_running + --source include/show_rpl_debug_info.inc + --die Expected slave to be running, but it was not running. +} diff --git a/mysql-test/include/check_slave_no_error.inc b/mysql-test/include/check_slave_no_error.inc new file mode 100644 index 00000000000..371db5ed6a0 --- /dev/null +++ b/mysql-test/include/check_slave_no_error.inc @@ -0,0 +1,17 @@ +# ==== Purpose ==== +# +# Assert that Slave_SQL_Error and Slave_IO_Error are empty. +# +# ==== Usage ==== +# +# --let $slave_param= Exec_Master_Log_Pos +# --let $slave_param_value= 4711 +# --source include/check_slave_running.inc + +--let $slave_param= Last_SQL_Errno +--let $slave_param_value= 0 +--source include/check_slave_param.inc + +--let $slave_param= Last_IO_Errno +--let $slave_param_value= 0 +--source include/check_slave_param.inc diff --git a/mysql-test/include/check_slave_param.inc b/mysql-test/include/check_slave_param.inc new file mode 100644 index 00000000000..d82c26851ea --- /dev/null +++ b/mysql-test/include/check_slave_param.inc @@ -0,0 +1,16 @@ +# ==== Purpose ==== +# +# Assert that a given column in SHOW SLAVE STATUS has a given value. +# +# ==== Usage ==== +# +# --let $slave_param= Exec_Master_Log_Pos +# --let $slave_param_value= 4711 +# --source include/check_slave_param.inc + +--let $_param_value= query_get_value(SHOW SLAVE STATUS, $slave_param, 1) +if (`SELECT '$_param_value' != '$slave_param_value'`) { + --echo Wrong value for $slave_param. Expected '$slave_param_value', got '$_param_value' + --source include/show_rpl_debug_info.inc + --die Wrong value for slave parameter +} diff --git a/mysql-test/include/get_relay_log_pos.inc b/mysql-test/include/get_relay_log_pos.inc new file mode 100644 index 00000000000..7ce36fd3c50 --- /dev/null +++ b/mysql-test/include/get_relay_log_pos.inc @@ -0,0 +1,70 @@ +# For a given event which is at position $master_log_pos in the the master's +# binary log, returns its position in the slave's relay log file +# $relay_log_file. +# The position is stored in the variable $relay_log_pos. + +# Usage: +# let $relay_log_file= 'relay-log-bin.000001'; +# let $master_log_pos= 106; +# source include/get_relay_log_pos.inc; +# # at this point, get_relay_log_pos.inc sets $relay_log_pos. echo position +# # in $relay_log_file: $relay_log_pos. + +if (`SELECT '$relay_log_file' = ''`) +{ + --die 'variable $relay_log_file is null' +} + +if (`SELECT '$master_log_pos' = ''`) +{ + --die 'variable $master_log_pos is null' +} + +let $MYSQLD_DATADIR= `select @@datadir`; +let $_suffix= `SELECT UUID()`; +let $_tmp_file= $MYSQLTEST_VARDIR/tmp/mysqlbinlog.$_suffix; +--exec $MYSQL_BINLOG $MYSQLD_DATADIR/$relay_log_file > $_tmp_file + +# All queries in this file should not be logged. +--disable_query_log + +--disable_warnings +DROP TEMPORARY TABLE IF EXISTS mysqlbinlog_events; +DROP TEMPORARY TABLE IF EXISTS events_at; +DROP TEMPORARY TABLE IF EXISTS events_pos; +CREATE TEMPORARY TABLE mysqlbinlog_events(c1 INT AUTO_INCREMENT KEY, c2 varchar(256)); + +# Event position is in the comments output by mysqlbinlog, we load this +# comments into the table +# '# at 106' +# '# .... end_log_pos 46' +eval LOAD DATA LOCAL INFILE '$_tmp_file' INTO TABLE mysqlbinlog_events + LINES STARTING BY '#' (c2) SET c1 = NULL; +--enable_warnings + +# Event pos in relay log file is inserted into table events_at +CREATE TEMPORARY TABLE events_at(c1 INT AUTO_INCREMENT KEY, c2 varchar(256)) + SELECT c2 FROM mysqlbinlog_events WHERE c2 LIKE ' at%' ORDER BY c1; + +# Event pos in master log file is inserted into table events_pos +CREATE TEMPORARY TABLE events_pos(c1 INT AUTO_INCREMENT KEY, c2 varchar(256)) + SELECT c2 FROM mysqlbinlog_events WHERE c2 LIKE '% end_log_pos %' ORDER BY c1; + +# events_at events_pos +# c1------c2-------------------------- c1------c2------------------------ +# 1 ev1's begin pos in relay log 1 ev1's end pos in master log +# 2 ev2's begin pos in relay log 2 ev2's end pos in master log +# 3 ev3's begin pos in relay log 3 ev3's end pos in master log +# events always keep the same sequence. +# Because event[N]'s end pos is equal to event[N+1]'s begin pos we want to +# find event's end pos in relay log, we can find the right relay_log_pos +# using the relationship that 'events_pos.c1 = events_at.c1 + 1' +# +# There is a fault that we can't get the relay log position of the last event, +# as it is not output by mysqlbinlog +let $relay_log_pos= `SELECT SUBSTRING(a.c2, 5) + FROM events_at a, events_pos b + WHERE a.c1=b.c1+1 and b.c2 LIKE '% $master_log_pos%'`; +DROP TEMPORARY TABLE mysqlbinlog_events, events_at, events_pos; +--remove_file $_tmp_file +--enable_query_log diff --git a/mysql-test/include/rpl_stmt_seq.inc b/mysql-test/include/rpl_stmt_seq.inc index 6c944dc4729..08f6e44aba0 100644 --- a/mysql-test/include/rpl_stmt_seq.inc +++ b/mysql-test/include/rpl_stmt_seq.inc @@ -80,9 +80,8 @@ eval INSERT INTO t1 SET f1= $MAX + 1; SELECT MAX(f1) FROM t1; if ($show_binlog) { ---replace_result $VERSION VERSION ---replace_column 2 # 5 # -eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s'; + --let $binlog_file= master-bin.$_log_num_s + --source include/show_binlog_events.inc } sync_slave_with_master; @@ -93,9 +92,8 @@ connection slave; SELECT MAX(f1) FROM t1; if ($show_binlog) { ---replace_result $VERSION VERSION ---replace_column 2 # 5 # -eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s'; + --let $binlog_file= slave-bin.$_log_num_s + --source include/show_binlog_events.inc } ############################################################### @@ -111,9 +109,8 @@ let $my_stmt= ERROR: YOU FORGOT TO FILL IN THE STATEMENT; SELECT MAX(f1) FROM t1; if ($show_binlog) { ---replace_result $VERSION VERSION ---replace_column 2 # 5 # -eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s'; + --let $binlog_file= master-bin.$_log_num_s + --source include/show_binlog_events.inc } sync_slave_with_master; @@ -124,9 +121,8 @@ connection slave; SELECT MAX(f1) FROM t1; if ($show_binlog) { ---replace_result $VERSION VERSION ---replace_column 2 # 5 # -eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s'; + --let $binlog_file= slave-bin.$_log_num_s + --source include/show_binlog_events.inc } ############################################################### @@ -150,9 +146,8 @@ eval SELECT CONCAT(CONCAT('TEST-INFO: MASTER: The INSERT is ', --enable_query_log if ($show_binlog) { ---replace_result $VERSION VERSION ---replace_column 2 # 5 # -eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s'; + --let $binlog_file= master-bin.$_log_num_s + --source include/show_binlog_events.inc } sync_slave_with_master; @@ -171,9 +166,8 @@ eval SELECT CONCAT(CONCAT('TEST-INFO: SLAVE: The INSERT is ', --enable_query_log if ($show_binlog) { ---replace_result $VERSION VERSION ---replace_column 2 # 5 # -eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s'; + --let $binlog_file= slave-bin.$_log_num_s + --source include/show_binlog_events.inc } ############################################################### diff --git a/mysql-test/include/show_binlog_events.inc b/mysql-test/include/show_binlog_events.inc index 68f913a16a3..8649f31ad9f 100644 --- a/mysql-test/include/show_binlog_events.inc +++ b/mysql-test/include/show_binlog_events.inc @@ -1,10 +1,45 @@ -# $binlog_start can be set by caller or take a default value +############################################################################## +# Show binary log events +# +# Useage: +# let $binlog_file= master-bin.000002; +# let $binlog_start= 106; +# let $binlog_limit= 1, 3; +# source include/show_binlog_events.inc; +# +# It shows the first binary log file if $binlog_file is not given. +# +# It shows events from the end position of the description event if +# $binlog_start is not given. +# +# It shows all of the events if $binlog_limit is not given. +# $binlog_format has the same semantic with 'LIMIT' option. +# +############################################################################## if (!$binlog_start) { - let $binlog_start=106; + # If $binlog_start is not set, we will set it as the second event's position. + # The first event(Description Event) is always ignored. For description + # event's length might be changed because of adding new events, 'SHOW BINLOG + # EVENTS LIMIT 1' is used to get the right value. + --let $binlog_start= query_get_value(SHOW BINLOG EVENTS LIMIT 1, End_log_pos, 1) } + +--let $_statement=show binlog events +if (`SELECT '$binlog_file' <> ''`) +{ + --let $_statement= $_statement in '$binlog_file' +} + +--let $_statement= $_statement from $binlog_start + +if (`SELECT '$binlog_limit' <> ''`) +{ + --let $_statement= $_statement limit $binlog_limit +} + --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $binlog_start --replace_column 2 # 4 # 5 # --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ ---eval show binlog events from $binlog_start +--eval $_statement diff --git a/mysql-test/include/show_rpl_debug_info.inc b/mysql-test/include/show_rpl_debug_info.inc index 252d63f1bf4..148d11f3b02 100644 --- a/mysql-test/include/show_rpl_debug_info.inc +++ b/mysql-test/include/show_rpl_debug_info.inc @@ -36,6 +36,7 @@ let $_con= $CURRENT_CONNECTION; --echo --echo [on $_con] --echo +SELECT NOW(); --echo **** SHOW SLAVE STATUS on $_con **** query_vertical SHOW SLAVE STATUS; --echo @@ -70,6 +71,7 @@ if (`SELECT '$_master_con' != ''`) --echo [on $_master_con] connection $_master_con; --echo + SELECT NOW(); --echo **** SHOW MASTER STATUS on $_master_con **** query_vertical SHOW MASTER STATUS; --echo diff --git a/mysql-test/include/show_slave_status.inc b/mysql-test/include/show_slave_status.inc index b315b9e45ca..d66c068e19b 100644 --- a/mysql-test/include/show_slave_status.inc +++ b/mysql-test/include/show_slave_status.inc @@ -1,6 +1,25 @@ # Include file to show the slave status, masking out some information # that varies depending on where the test is executed. ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 8 # 9 # 16 # 23 # 33 # 35 # 36 # -query_vertical SHOW SLAVE STATUS; +--let $_items=$status_items +if (`SELECT "XX$status_items" = "XX"`) +{ + --die 'Variable status_items is NULL' +} + +--disable_query_log +--vertical_results + +while (`SELECT "XX$_items" <> "XX"`) +{ + --let $_name= `SELECT SUBSTRING_INDEX('$_items', ',', 1)` + --let $_items= `SELECT LTRIM(SUBSTRING('$_items', LENGTH('$_name') + 2))` + + --let $_value= query_get_value(SHOW SLAVE STATUS, $_name, 1) + + --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR + --eval SELECT "$_value" AS $_name +} + +--horizontal_results +--enable_query_log diff --git a/mysql-test/include/show_slave_status2.inc b/mysql-test/include/show_slave_status2.inc deleted file mode 100644 index 9c4e14c62c2..00000000000 --- a/mysql-test/include/show_slave_status2.inc +++ /dev/null @@ -1,8 +0,0 @@ -# Include file to show the slave status, masking out some information -# that varies depending on where the test is executed. - -# masked out log positions - ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # -query_vertical SHOW SLAVE STATUS; diff --git a/mysql-test/include/test_fieldsize.inc b/mysql-test/include/test_fieldsize.inc index 606bc63779d..57dba4d1cc0 100644 --- a/mysql-test/include/test_fieldsize.inc +++ b/mysql-test/include/test_fieldsize.inc @@ -22,10 +22,9 @@ eval $test_insert; connection slave; START SLAVE; ---source include/wait_for_slave_sql_to_stop.inc ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 # ---query_vertical SHOW SLAVE STATUS +--let $slave_sql_errno= 1535 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc # The following should be 0 SELECT COUNT(*) FROM t1; diff --git a/mysql-test/include/wait_for_binlog_event.inc b/mysql-test/include/wait_for_binlog_event.inc index 2a57c191413..7a55c8c2182 100644 --- a/mysql-test/include/wait_for_binlog_event.inc +++ b/mysql-test/include/wait_for_binlog_event.inc @@ -18,7 +18,7 @@ while (`SELECT INSTR("$_last_event","$wait_binlog_event") = 0`) dec $_loop_count; if (!$_loop_count) { - SHOW BINLOG EVENTS; + --source include/show_rpl_debug_info.inc --die ERROR: failed while waiting for $wait_binlog_event in binlog } real_sleep 0.1; diff --git a/mysql-test/include/wait_for_slave_io_error.inc b/mysql-test/include/wait_for_slave_io_error.inc index 094406e02b2..101df69730c 100644 --- a/mysql-test/include/wait_for_slave_io_error.inc +++ b/mysql-test/include/wait_for_slave_io_error.inc @@ -1,23 +1,48 @@ # ==== Purpose ==== # # Waits until the IO thread of the current connection has got an -# error, or until a timeout is reached. +# error, or until a timeout is reached. Also waits until the IO +# thread has completely stopped. # # ==== Usage ==== # # source include/wait_for_slave_io_error.inc; # -# Parameters to this macro are $slave_timeout and -# $slave_keep_connection. See wait_for_slave_param.inc for -# descriptions. +# Parameters: +# +# $slave_io_errno +# The expected IO error number. This is required. +# (After BUG#41956 has been fixed, this will be required to be a +# symbolic name instead of a number.) +# +# $show_slave_io_error +# If set, will print the error to the query log. +# +# $slave_timeout +# See wait_for_slave_param.inc for description. +# +# $master_connection +# See wait_for_slave_param.inc for description. -let $old_slave_param_comparison= $slave_param_comparison; +if (`SELECT '$slave_io_errno' = ''`) { + --die !!!ERROR IN TEST: you must set \$slave_io_errno before sourcing wait_for_slave_io_error.inc +} -let $slave_param= Last_IO_Errno; -let $slave_param_comparison= !=; -let $slave_param_value= 0; -let $slave_error_message= Failed while waiting for slave to produce an error in its sql thread; +let $slave_param= Slave_IO_Running; +let $slave_param_value= No; +let $slave_error_message= Failed while waiting for slave to stop the IO thread (expecting error in the IO thread); source include/wait_for_slave_param.inc; -let $slave_error_message= ; -let $slave_param_comparison= $old_slave_param_comparison; +let $_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1); +if (`SELECT '$_error' != '$slave_io_errno'`) { + --echo **** Slave stopped with wrong error code: $_error (expected $slave_io_errno) **** + source include/show_rpl_debug_info.inc; + --echo **** Slave stopped with wrong error code: $_error (expected $slave_io_errno) **** + --die Slave stopped with wrong error code +} + +if ($show_slave_io_error) +{ + let $error= query_get_value("SHOW SLAVE STATUS", Last_IO_Error, 1); + echo Last_IO_Error = $error; +} diff --git a/mysql-test/include/wait_for_slave_param.inc b/mysql-test/include/wait_for_slave_param.inc index 82e57922913..ef864f9245e 100644 --- a/mysql-test/include/wait_for_slave_param.inc +++ b/mysql-test/include/wait_for_slave_param.inc @@ -78,5 +78,5 @@ if (!$_slave_timeout_counter) --echo Current connection is '$CURRENT_CONNECTION' echo Note: the following output may have changed since the failure was detected; source include/show_rpl_debug_info.inc; - exit; + die; } diff --git a/mysql-test/include/wait_for_slave_sql_error.inc b/mysql-test/include/wait_for_slave_sql_error.inc index ad1d7a9e639..aab04036eea 100644 --- a/mysql-test/include/wait_for_slave_sql_error.inc +++ b/mysql-test/include/wait_for_slave_sql_error.inc @@ -14,6 +14,9 @@ # The expected SQL error number. This is required. # (After BUG#41956 has been fixed, this will be required to be a # symbolic name instead of a number.) +# +# $show_slave_sql_error +# If set, will print the error to the query log. # # $slave_timeout # See wait_for_slave_param.inc for description. @@ -22,8 +25,7 @@ # See wait_for_slave_param.inc for description. if (`SELECT '$slave_sql_errno' = ''`) { - --echo !!!ERROR IN TEST: you must set \$slave_sql_errno before sourcing wait_fro_slave_sql_error.inc - exit; + --die !!!ERROR IN TEST: you must set \$slave_sql_errno before sourcing wait_for_slave_sql_error.inc } let $slave_param= Slave_SQL_Running; @@ -33,7 +35,14 @@ source include/wait_for_slave_param.inc; let $_error= query_get_value(SHOW SLAVE STATUS, Last_SQL_Errno, 1); if (`SELECT '$_error' != '$slave_sql_errno'`) { - --echo Slave stopped with wrong error code: $_error (expected $slave_sql_errno) + --echo **** Slave stopped with wrong error code: $_error (expected $slave_sql_errno) **** source include/show_rpl_debug_info.inc; - exit; + --echo **** Slave stopped with wrong error code: $_error (expected $slave_sql_errno) **** + --die Slave stopped with wrong error code +} + +if ($show_slave_sql_error) +{ + let $error= query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1); + echo Last_SQL_Error = $error; } diff --git a/mysql-test/include/wait_for_slave_sql_error_and_skip.inc b/mysql-test/include/wait_for_slave_sql_error_and_skip.inc index 247de3a41a1..11c02c0b490 100644 --- a/mysql-test/include/wait_for_slave_sql_error_and_skip.inc +++ b/mysql-test/include/wait_for_slave_sql_error_and_skip.inc @@ -22,17 +22,30 @@ # # $master_connection # See wait_for_slave_param.inc for description. +# +# $slave_skip_counter +# If set, skip this number of events. If not set, skip one event. +# +# $not_switch_connection If set, don't switch to slave and don't switch back +# master. +# echo --source include/wait_for_slave_sql_error_and_skip.inc; -connection slave; -source include/wait_for_slave_sql_error.inc; -if ($show_sql_error) +if (!$not_switch_connection) { - let $error= query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1); - echo Last_SQL_Error = $error; + connection slave; } +source include/wait_for_slave_sql_error.inc; # skip the erroneous statement -set global sql_slave_skip_counter=1; +if ($slave_skip_counter) { + eval SET GLOBAL SQL_SLAVE_SKIP_COUNTER= $slave_skip_counter; +} +if (!$slave_skip_counter) { + SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; +} source include/start_slave.inc; -connection master; +if (!$not_switch_connection) +{ + connection master; +} diff --git a/mysql-test/include/wait_for_status_var.inc b/mysql-test/include/wait_for_status_var.inc index 4c168da7f1a..8b644c2c3c5 100644 --- a/mysql-test/include/wait_for_status_var.inc +++ b/mysql-test/include/wait_for_status_var.inc @@ -35,7 +35,7 @@ if (`SELECT STRCMP('$status_type', '') * STRCMP(UPPER('$status_type'), 'SESSION') * STRCMP(UPPER('$status_type'), 'GLOBAL')`) { --echo **** ERROR: Unknown type of variable status_type: allowed values are: SESSION or GLOBAL **** - exit; + die; } let $_status_timeout_counter= $status_timeout; @@ -60,7 +60,7 @@ while (`SELECT NOT('$_show_status_value' $_status_var_comparsion '$status_var_va --echo **** Showing STATUS, PROCESSLIST **** eval SHOW $status_type STATUS LIKE '$status_var'; SHOW PROCESSLIST; - exit; + die; } dec $_status_timeout_counter; sleep 0.1; diff --git a/mysql-test/include/wait_until_count_sessions.inc b/mysql-test/include/wait_until_count_sessions.inc index de4f0eeb652..26b0d8f2633 100644 --- a/mysql-test/include/wait_until_count_sessions.inc +++ b/mysql-test/include/wait_until_count_sessions.inc @@ -122,5 +122,6 @@ if (!$success) --echo # Timeout in wait_until_count_sessions.inc --echo # Number of sessions expected: <= $count_sessions found: $current_sessions SHOW PROCESSLIST; + --die Timeout in wait_until_count_sessions.inc } diff --git a/mysql-test/r/alter_table-big.result b/mysql-test/r/alter_table-big.result index 9761754a02f..d6b936bd5d7 100644 --- a/mysql-test/r/alter_table-big.result +++ b/mysql-test/r/alter_table-big.result @@ -12,11 +12,11 @@ alter table t1 enable keys;; insert into t2 values (1); insert into t1 values (1, 1, 1); set session debug="-d,sleep_alter_enable_indexes"; -show binlog events in 'master-bin.000001' from 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; insert into t2 values (1) -master-bin.000001 # Query 1 # use `test`; alter table t1 enable keys -master-bin.000001 # Query 1 # use `test`; insert into t1 values (1, 1, 1) +master-bin.000001 # Query # # use `test`; insert into t2 values (1) +master-bin.000001 # Query # # use `test`; alter table t1 enable keys +master-bin.000001 # Query # # use `test`; insert into t1 values (1, 1, 1) drop tables t1, t2; End of 5.0 tests drop table if exists t1, t2, t3; @@ -41,17 +41,17 @@ alter table t2 change c vc varchar(100) default 'Test2', rename to t1;; rename table t1 to t3; drop table t3; set session debug="-d,sleep_alter_before_main_binlog"; -show binlog events in 'master-bin.000001' from 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; alter table t1 change i c char(10) default 'Test1' -master-bin.000001 # Query 1 # use `test`; insert into t1 values () -master-bin.000001 # Query 1 # use `test`; alter table t1 change c vc varchar(100) default 'Test2' -master-bin.000001 # Query 1 # use `test`; rename table t1 to t2 -master-bin.000001 # Query 1 # use `test`; drop table t2 -master-bin.000001 # Query 1 # use `test`; create table t1 (i int) -master-bin.000001 # Query 1 # use `test`; alter table t1 change i c char(10) default 'Test3', rename to t2 -master-bin.000001 # Query 1 # use `test`; insert into t2 values () -master-bin.000001 # Query 1 # use `test`; alter table t2 change c vc varchar(100) default 'Test2', rename to t1 -master-bin.000001 # Query 1 # use `test`; rename table t1 to t3 -master-bin.000001 # Query 1 # use `test`; drop table t3 +master-bin.000001 # Query # # use `test`; alter table t1 change i c char(10) default 'Test1' +master-bin.000001 # Query # # use `test`; insert into t1 values () +master-bin.000001 # Query # # use `test`; alter table t1 change c vc varchar(100) default 'Test2' +master-bin.000001 # Query # # use `test`; rename table t1 to t2 +master-bin.000001 # Query # # use `test`; drop table t2 +master-bin.000001 # Query # # use `test`; create table t1 (i int) +master-bin.000001 # Query # # use `test`; alter table t1 change i c char(10) default 'Test3', rename to t2 +master-bin.000001 # Query # # use `test`; insert into t2 values () +master-bin.000001 # Query # # use `test`; alter table t2 change c vc varchar(100) default 'Test2', rename to t1 +master-bin.000001 # Query # # use `test`; rename table t1 to t3 +master-bin.000001 # Query # # use `test`; drop table t3 End of 5.1 tests diff --git a/mysql-test/r/create-big.result b/mysql-test/r/create-big.result index eb57bf59084..d062b59a008 100644 --- a/mysql-test/r/create-big.result +++ b/mysql-test/r/create-big.result @@ -175,12 +175,12 @@ t2 CREATE TABLE `t2` ( `i` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t2; -show binlog events in 'master-bin.000001' from 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; insert into t1 values (1) -master-bin.000001 # Query 1 # use `test`; create table t2 like t1 -master-bin.000001 # Query 1 # use `test`; drop table t1 -master-bin.000001 # Query 1 # use `test`; drop table t2 +master-bin.000001 # Query # # use `test`; insert into t1 values (1) +master-bin.000001 # Query # # use `test`; create table t2 like t1 +master-bin.000001 # Query # # use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; drop table t2 create table t1 (i int); set session debug="-d,sleep_create_like_before_check_if_exists:+d,sleep_create_like_before_copy"; create table t2 like t1;; @@ -197,11 +197,11 @@ reset master; create table t2 like t1;; drop table t1; drop table t2; -show binlog events in 'master-bin.000001' from 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t2 like t1 -master-bin.000001 # Query 1 # use `test`; drop table t1 -master-bin.000001 # Query 1 # use `test`; drop table t2 +master-bin.000001 # Query # # use `test`; create table t2 like t1 +master-bin.000001 # Query # # use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; drop table t2 create table t1 (i int); set session debug="-d,sleep_create_like_before_copy:+d,sleep_create_like_before_ha_create"; reset master; @@ -213,16 +213,16 @@ drop table t2; create table t2 like t1;; drop table t1; drop table t2; -show binlog events in 'master-bin.000001' from 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t2 like t1 -master-bin.000001 # Query 1 # use `test`; insert into t2 values (1) -master-bin.000001 # Query 1 # use `test`; drop table t2 -master-bin.000001 # Query 1 # use `test`; create table t2 like t1 -master-bin.000001 # Query 1 # use `test`; drop table t2 -master-bin.000001 # Query 1 # use `test`; create table t2 like t1 -master-bin.000001 # Query 1 # use `test`; drop table t1 -master-bin.000001 # Query 1 # use `test`; drop table t2 +master-bin.000001 # Query # # use `test`; create table t2 like t1 +master-bin.000001 # Query # # use `test`; insert into t2 values (1) +master-bin.000001 # Query # # use `test`; drop table t2 +master-bin.000001 # Query # # use `test`; create table t2 like t1 +master-bin.000001 # Query # # use `test`; drop table t2 +master-bin.000001 # Query # # use `test`; create table t2 like t1 +master-bin.000001 # Query # # use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; drop table t2 create table t1 (i int); set session debug="-d,sleep_create_like_before_ha_create:+d,sleep_create_like_before_binlogging"; reset master; @@ -234,14 +234,14 @@ drop table t2; create table t2 like t1;; drop table t1; drop table t2; -show binlog events in 'master-bin.000001' from 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t2 like t1 -master-bin.000001 # Query 1 # use `test`; insert into t2 values (1) -master-bin.000001 # Query 1 # use `test`; drop table t2 -master-bin.000001 # Query 1 # use `test`; create table t2 like t1 -master-bin.000001 # Query 1 # use `test`; drop table t2 -master-bin.000001 # Query 1 # use `test`; create table t2 like t1 -master-bin.000001 # Query 1 # use `test`; drop table t1 -master-bin.000001 # Query 1 # use `test`; drop table t2 +master-bin.000001 # Query # # use `test`; create table t2 like t1 +master-bin.000001 # Query # # use `test`; insert into t2 values (1) +master-bin.000001 # Query # # use `test`; drop table t2 +master-bin.000001 # Query # # use `test`; create table t2 like t1 +master-bin.000001 # Query # # use `test`; drop table t2 +master-bin.000001 # Query # # use `test`; create table t2 like t1 +master-bin.000001 # Query # # use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; drop table t2 set session debug="-d,sleep_create_like_before_binlogging"; diff --git a/mysql-test/r/ctype_cp932_binlog_stm.result b/mysql-test/r/ctype_cp932_binlog_stm.result index 044885d1ea7..8854a835e25 100644 --- a/mysql-test/r/ctype_cp932_binlog_stm.result +++ b/mysql-test/r/ctype_cp932_binlog_stm.result @@ -29,20 +29,20 @@ HEX(s1) HEX(s2) d 466F6F2773206120426172 ED40ED41ED42 47.93 DROP PROCEDURE bug18293| DROP TABLE t4| -SHOW BINLOG EVENTS FROM 370| +show binlog events from | Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 370 Query 1 536 use `test`; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1, +master-bin.000001 # Query # # use `test`; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1, s2 CHAR(50) CHARACTER SET cp932, d DECIMAL(10,2)) -master-bin.000001 536 Query 1 785 use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `bug18293`(IN ins1 CHAR(50), +master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `bug18293`(IN ins1 CHAR(50), IN ins2 CHAR(50) CHARACTER SET cp932, IN ind DECIMAL(10,2)) BEGIN INSERT INTO t4 VALUES (ins1, ins2, ind); END -master-bin.000001 785 Query 1 1049 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172 COLLATE 'latin1_swedish_ci'), NAME_CONST('ins2',_cp932 0xED40ED41ED42 COLLATE 'cp932_japanese_ci'), NAME_CONST('ind',47.93)) -master-bin.000001 1049 Query 1 1138 use `test`; DROP PROCEDURE bug18293 -master-bin.000001 1138 Query 1 1217 use `test`; DROP TABLE t4 +master-bin.000001 # Query # # use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172 COLLATE 'latin1_swedish_ci'), NAME_CONST('ins2',_cp932 0xED40ED41ED42 COLLATE 'cp932_japanese_ci'), NAME_CONST('ind',47.93)) +master-bin.000001 # Query # # use `test`; DROP PROCEDURE bug18293 +master-bin.000001 # Query # # use `test`; DROP TABLE t4 End of 5.0 tests SHOW BINLOG EVENTS FROM 365; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error diff --git a/mysql-test/r/flush_block_commit_notembedded.result b/mysql-test/r/flush_block_commit_notembedded.result index c7fd7a11877..a81b1ce1e3a 100644 --- a/mysql-test/r/flush_block_commit_notembedded.result +++ b/mysql-test/r/flush_block_commit_notembedded.result @@ -7,15 +7,13 @@ SET AUTOCOMMIT=0; INSERT t1 VALUES (1); # Switch to connection con2 FLUSH TABLES WITH READ LOCK; -SHOW MASTER STATUS; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 106 +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info # Switch to connection con1 COMMIT; # Switch to connection con2 -SHOW MASTER STATUS; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 106 +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info UNLOCK TABLES; # Switch to connection con1 DROP TABLE t1; diff --git a/mysql-test/r/multi_update.result b/mysql-test/r/multi_update.result index 04bf7720c43..ae72f416c79 100644 --- a/mysql-test/r/multi_update.result +++ b/mysql-test/r/multi_update.result @@ -602,9 +602,6 @@ select * from t2 /* must be (3,1), (4,4) */; a b 3 1 4 4 -show master status /* there must be the UPDATE query event */; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 206 delete from t1; delete from t2; insert into t1 values (1,2),(3,4),(4,4); @@ -612,9 +609,6 @@ insert into t2 values (1,2),(3,4),(4,4); reset master; UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a; ERROR 23000: Duplicate entry '4' for key 'PRIMARY' -show master status /* there must be the UPDATE query event */; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 221 drop table t1, t2; set @@session.binlog_format= @sav_binlog_format; drop table if exists t1, t2, t3; diff --git a/mysql-test/r/sp_trans_log.result b/mysql-test/r/sp_trans_log.result index 7a6173b89e2..7b7d05617ab 100644 --- a/mysql-test/r/sp_trans_log.result +++ b/mysql-test/r/sp_trans_log.result @@ -14,13 +14,13 @@ end| reset master| insert into t2 values (bug23333(),1)| ERROR 23000: Duplicate entry '1' for key 'PRIMARY' -show binlog events from 106 /* with fixes for #23333 will show there is the query */| +show binlog events from | Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # # -master-bin.000001 # Table_map 1 # # -master-bin.000001 # Table_map 1 # # -master-bin.000001 # Write_rows 1 # # -master-bin.000001 # Query 1 # # +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t2) +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # ROLLBACK select count(*),@a from t1 /* must be 1,1 */| count(*) @a 1 1 diff --git a/mysql-test/suite/binlog/r/binlog_innodb.result b/mysql-test/suite/binlog/r/binlog_innodb.result index 1922897f631..881d8d2719e 100644 --- a/mysql-test/suite/binlog/r/binlog_innodb.result +++ b/mysql-test/suite/binlog/r/binlog_innodb.result @@ -156,9 +156,9 @@ select * from t2 /* must be (3,1), (4,4) */; a b 1 1 4 4 -show master status /* there must no UPDATE in binlog */; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 106 +# There must no UPDATE in binlog; +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info delete from t1; delete from t2; insert into t1 values (1,2),(3,4),(4,4); @@ -166,8 +166,8 @@ insert into t2 values (1,2),(3,4),(4,4); reset master; UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a; ERROR 23000: Duplicate entry '4' for key 'PRIMARY' -show master status /* there must be no UPDATE query event */; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 106 +# There must be no UPDATE query event; +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info drop table t1, t2; End of tests diff --git a/mysql-test/suite/binlog/r/binlog_row_binlog.result b/mysql-test/suite/binlog/r/binlog_row_binlog.result index 4d32a4f4739..d612e7adde1 100644 --- a/mysql-test/suite/binlog/r/binlog_row_binlog.result +++ b/mysql-test/suite/binlog/r/binlog_row_binlog.result @@ -26,215 +26,215 @@ create table t1 (n int) engine=innodb; begin; commit; drop table t1; -show binlog events in 'master-bin.000001' from 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1 (n int) engine=innodb -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Xid 1 # COMMIT /* xid= */ -master-bin.000001 # Rotate 1 # master-bin.000002;pos=4 -show binlog events in 'master-bin.000002' from 106; +master-bin.000001 # Query # # use `test`; create table t1 (n int) engine=innodb +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Rotate # # master-bin.000002;pos=4 +show binlog events in 'master-bin.000002' from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000002 # Query 1 # use `test`; drop table t1 +master-bin.000002 # Query # # use `test`; drop table t1 set @ac = @@autocommit; set autocommit= 0; reset master; @@ -245,830 +245,828 @@ insert into t1 values (2); insert into t1 values (3); commit; drop table t1; -show binlog events from 0; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 -master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb -master-bin.000001 205 Query 1 273 BEGIN -master-bin.000001 273 Table_map 1 314 table_id: # (test.t1) -master-bin.000001 314 Write_rows 1 348 table_id: # flags: STMT_END_F -master-bin.000001 348 Table_map 1 389 table_id: # (test.t1) -master-bin.000001 389 Write_rows 1 423 table_id: # flags: STMT_END_F -master-bin.000001 423 Table_map 1 464 table_id: # (test.t1) -master-bin.000001 464 Write_rows 1 498 table_id: # flags: STMT_END_F -master-bin.000001 498 Xid 1 525 COMMIT /* XID */ -master-bin.000001 525 Query 1 601 use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; create table t1(n int) engine=innodb +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; drop table t1 set @bcs = @@binlog_cache_size; set global binlog_cache_size=4096; reset master; create table t1 (a int) engine=innodb; -show binlog events from 0; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 -master-bin.000001 106 Query 1 206 use `test`; create table t1 (a int) engine=innodb -master-bin.000001 206 Query 1 274 BEGIN -master-bin.000001 274 Table_map 1 315 table_id: # (test.t1) -master-bin.000001 315 Write_rows 1 349 table_id: # flags: STMT_END_F -master-bin.000001 349 Table_map 1 390 table_id: # (test.t1) -master-bin.000001 390 Write_rows 1 424 table_id: # flags: STMT_END_F -master-bin.000001 424 Table_map 1 465 table_id: # (test.t1) -master-bin.000001 465 Write_rows 1 499 table_id: # flags: STMT_END_F -master-bin.000001 499 Table_map 1 540 table_id: # (test.t1) -master-bin.000001 540 Write_rows 1 574 table_id: # flags: STMT_END_F -master-bin.000001 574 Table_map 1 615 table_id: # (test.t1) -master-bin.000001 615 Write_rows 1 649 table_id: # flags: STMT_END_F -master-bin.000001 649 Table_map 1 690 table_id: # (test.t1) -master-bin.000001 690 Write_rows 1 724 table_id: # flags: STMT_END_F -master-bin.000001 724 Table_map 1 765 table_id: # (test.t1) -master-bin.000001 765 Write_rows 1 799 table_id: # flags: STMT_END_F -master-bin.000001 799 Table_map 1 840 table_id: # (test.t1) -master-bin.000001 840 Write_rows 1 874 table_id: # flags: STMT_END_F -master-bin.000001 874 Table_map 1 915 table_id: # (test.t1) -master-bin.000001 915 Write_rows 1 949 table_id: # flags: STMT_END_F -master-bin.000001 949 Table_map 1 990 table_id: # (test.t1) -master-bin.000001 990 Write_rows 1 1024 table_id: # flags: STMT_END_F -master-bin.000001 1024 Table_map 1 1065 table_id: # (test.t1) -master-bin.000001 1065 Write_rows 1 1099 table_id: # flags: STMT_END_F -master-bin.000001 1099 Table_map 1 1140 table_id: # (test.t1) -master-bin.000001 1140 Write_rows 1 1174 table_id: # flags: STMT_END_F -master-bin.000001 1174 Table_map 1 1215 table_id: # (test.t1) -master-bin.000001 1215 Write_rows 1 1249 table_id: # flags: STMT_END_F -master-bin.000001 1249 Table_map 1 1290 table_id: # (test.t1) -master-bin.000001 1290 Write_rows 1 1324 table_id: # flags: STMT_END_F -master-bin.000001 1324 Table_map 1 1365 table_id: # (test.t1) -master-bin.000001 1365 Write_rows 1 1399 table_id: # flags: STMT_END_F -master-bin.000001 1399 Table_map 1 1440 table_id: # (test.t1) -master-bin.000001 1440 Write_rows 1 1474 table_id: # flags: STMT_END_F -master-bin.000001 1474 Table_map 1 1515 table_id: # (test.t1) -master-bin.000001 1515 Write_rows 1 1549 table_id: # flags: STMT_END_F -master-bin.000001 1549 Table_map 1 1590 table_id: # (test.t1) -master-bin.000001 1590 Write_rows 1 1624 table_id: # flags: STMT_END_F -master-bin.000001 1624 Table_map 1 1665 table_id: # (test.t1) -master-bin.000001 1665 Write_rows 1 1699 table_id: # flags: STMT_END_F -master-bin.000001 1699 Table_map 1 1740 table_id: # (test.t1) -master-bin.000001 1740 Write_rows 1 1774 table_id: # flags: STMT_END_F -master-bin.000001 1774 Table_map 1 1815 table_id: # (test.t1) -master-bin.000001 1815 Write_rows 1 1849 table_id: # flags: STMT_END_F -master-bin.000001 1849 Table_map 1 1890 table_id: # (test.t1) -master-bin.000001 1890 Write_rows 1 1924 table_id: # flags: STMT_END_F -master-bin.000001 1924 Table_map 1 1965 table_id: # (test.t1) -master-bin.000001 1965 Write_rows 1 1999 table_id: # flags: STMT_END_F -master-bin.000001 1999 Table_map 1 2040 table_id: # (test.t1) -master-bin.000001 2040 Write_rows 1 2074 table_id: # flags: STMT_END_F -master-bin.000001 2074 Table_map 1 2115 table_id: # (test.t1) -master-bin.000001 2115 Write_rows 1 2149 table_id: # flags: STMT_END_F -master-bin.000001 2149 Table_map 1 2190 table_id: # (test.t1) -master-bin.000001 2190 Write_rows 1 2224 table_id: # flags: STMT_END_F -master-bin.000001 2224 Table_map 1 2265 table_id: # (test.t1) -master-bin.000001 2265 Write_rows 1 2299 table_id: # flags: STMT_END_F -master-bin.000001 2299 Table_map 1 2340 table_id: # (test.t1) -master-bin.000001 2340 Write_rows 1 2374 table_id: # flags: STMT_END_F -master-bin.000001 2374 Table_map 1 2415 table_id: # (test.t1) -master-bin.000001 2415 Write_rows 1 2449 table_id: # flags: STMT_END_F -master-bin.000001 2449 Table_map 1 2490 table_id: # (test.t1) -master-bin.000001 2490 Write_rows 1 2524 table_id: # flags: STMT_END_F -master-bin.000001 2524 Table_map 1 2565 table_id: # (test.t1) -master-bin.000001 2565 Write_rows 1 2599 table_id: # flags: STMT_END_F -master-bin.000001 2599 Table_map 1 2640 table_id: # (test.t1) -master-bin.000001 2640 Write_rows 1 2674 table_id: # flags: STMT_END_F -master-bin.000001 2674 Table_map 1 2715 table_id: # (test.t1) -master-bin.000001 2715 Write_rows 1 2749 table_id: # flags: STMT_END_F -master-bin.000001 2749 Table_map 1 2790 table_id: # (test.t1) -master-bin.000001 2790 Write_rows 1 2824 table_id: # flags: STMT_END_F -master-bin.000001 2824 Table_map 1 2865 table_id: # (test.t1) -master-bin.000001 2865 Write_rows 1 2899 table_id: # flags: STMT_END_F -master-bin.000001 2899 Table_map 1 2940 table_id: # (test.t1) -master-bin.000001 2940 Write_rows 1 2974 table_id: # flags: STMT_END_F -master-bin.000001 2974 Table_map 1 3015 table_id: # (test.t1) -master-bin.000001 3015 Write_rows 1 3049 table_id: # flags: STMT_END_F -master-bin.000001 3049 Table_map 1 3090 table_id: # (test.t1) -master-bin.000001 3090 Write_rows 1 3124 table_id: # flags: STMT_END_F -master-bin.000001 3124 Table_map 1 3165 table_id: # (test.t1) -master-bin.000001 3165 Write_rows 1 3199 table_id: # flags: STMT_END_F -master-bin.000001 3199 Table_map 1 3240 table_id: # (test.t1) -master-bin.000001 3240 Write_rows 1 3274 table_id: # flags: STMT_END_F -master-bin.000001 3274 Table_map 1 3315 table_id: # (test.t1) -master-bin.000001 3315 Write_rows 1 3349 table_id: # flags: STMT_END_F -master-bin.000001 3349 Table_map 1 3390 table_id: # (test.t1) -master-bin.000001 3390 Write_rows 1 3424 table_id: # flags: STMT_END_F -master-bin.000001 3424 Table_map 1 3465 table_id: # (test.t1) -master-bin.000001 3465 Write_rows 1 3499 table_id: # flags: STMT_END_F -master-bin.000001 3499 Table_map 1 3540 table_id: # (test.t1) -master-bin.000001 3540 Write_rows 1 3574 table_id: # flags: STMT_END_F -master-bin.000001 3574 Table_map 1 3615 table_id: # (test.t1) -master-bin.000001 3615 Write_rows 1 3649 table_id: # flags: STMT_END_F -master-bin.000001 3649 Table_map 1 3690 table_id: # (test.t1) -master-bin.000001 3690 Write_rows 1 3724 table_id: # flags: STMT_END_F -master-bin.000001 3724 Table_map 1 3765 table_id: # (test.t1) -master-bin.000001 3765 Write_rows 1 3799 table_id: # flags: STMT_END_F -master-bin.000001 3799 Table_map 1 3840 table_id: # (test.t1) -master-bin.000001 3840 Write_rows 1 3874 table_id: # flags: STMT_END_F -master-bin.000001 3874 Table_map 1 3915 table_id: # (test.t1) -master-bin.000001 3915 Write_rows 1 3949 table_id: # flags: STMT_END_F -master-bin.000001 3949 Table_map 1 3990 table_id: # (test.t1) -master-bin.000001 3990 Write_rows 1 4024 table_id: # flags: STMT_END_F -master-bin.000001 4024 Table_map 1 4065 table_id: # (test.t1) -master-bin.000001 4065 Write_rows 1 4099 table_id: # flags: STMT_END_F -master-bin.000001 4099 Table_map 1 4140 table_id: # (test.t1) -master-bin.000001 4140 Write_rows 1 4174 table_id: # flags: STMT_END_F -master-bin.000001 4174 Table_map 1 4215 table_id: # (test.t1) -master-bin.000001 4215 Write_rows 1 4249 table_id: # flags: STMT_END_F -master-bin.000001 4249 Table_map 1 4290 table_id: # (test.t1) -master-bin.000001 4290 Write_rows 1 4324 table_id: # flags: STMT_END_F -master-bin.000001 4324 Table_map 1 4365 table_id: # (test.t1) -master-bin.000001 4365 Write_rows 1 4399 table_id: # flags: STMT_END_F -master-bin.000001 4399 Table_map 1 4440 table_id: # (test.t1) -master-bin.000001 4440 Write_rows 1 4474 table_id: # flags: STMT_END_F -master-bin.000001 4474 Table_map 1 4515 table_id: # (test.t1) -master-bin.000001 4515 Write_rows 1 4549 table_id: # flags: STMT_END_F -master-bin.000001 4549 Table_map 1 4590 table_id: # (test.t1) -master-bin.000001 4590 Write_rows 1 4624 table_id: # flags: STMT_END_F -master-bin.000001 4624 Table_map 1 4665 table_id: # (test.t1) -master-bin.000001 4665 Write_rows 1 4699 table_id: # flags: STMT_END_F -master-bin.000001 4699 Table_map 1 4740 table_id: # (test.t1) -master-bin.000001 4740 Write_rows 1 4774 table_id: # flags: STMT_END_F -master-bin.000001 4774 Table_map 1 4815 table_id: # (test.t1) -master-bin.000001 4815 Write_rows 1 4849 table_id: # flags: STMT_END_F -master-bin.000001 4849 Table_map 1 4890 table_id: # (test.t1) -master-bin.000001 4890 Write_rows 1 4924 table_id: # flags: STMT_END_F -master-bin.000001 4924 Table_map 1 4965 table_id: # (test.t1) -master-bin.000001 4965 Write_rows 1 4999 table_id: # flags: STMT_END_F -master-bin.000001 4999 Table_map 1 5040 table_id: # (test.t1) -master-bin.000001 5040 Write_rows 1 5074 table_id: # flags: STMT_END_F -master-bin.000001 5074 Table_map 1 5115 table_id: # (test.t1) -master-bin.000001 5115 Write_rows 1 5149 table_id: # flags: STMT_END_F -master-bin.000001 5149 Table_map 1 5190 table_id: # (test.t1) -master-bin.000001 5190 Write_rows 1 5224 table_id: # flags: STMT_END_F -master-bin.000001 5224 Table_map 1 5265 table_id: # (test.t1) -master-bin.000001 5265 Write_rows 1 5299 table_id: # flags: STMT_END_F -master-bin.000001 5299 Table_map 1 5340 table_id: # (test.t1) -master-bin.000001 5340 Write_rows 1 5374 table_id: # flags: STMT_END_F -master-bin.000001 5374 Table_map 1 5415 table_id: # (test.t1) -master-bin.000001 5415 Write_rows 1 5449 table_id: # flags: STMT_END_F -master-bin.000001 5449 Table_map 1 5490 table_id: # (test.t1) -master-bin.000001 5490 Write_rows 1 5524 table_id: # flags: STMT_END_F -master-bin.000001 5524 Table_map 1 5565 table_id: # (test.t1) -master-bin.000001 5565 Write_rows 1 5599 table_id: # flags: STMT_END_F -master-bin.000001 5599 Table_map 1 5640 table_id: # (test.t1) -master-bin.000001 5640 Write_rows 1 5674 table_id: # flags: STMT_END_F -master-bin.000001 5674 Table_map 1 5715 table_id: # (test.t1) -master-bin.000001 5715 Write_rows 1 5749 table_id: # flags: STMT_END_F -master-bin.000001 5749 Table_map 1 5790 table_id: # (test.t1) -master-bin.000001 5790 Write_rows 1 5824 table_id: # flags: STMT_END_F -master-bin.000001 5824 Table_map 1 5865 table_id: # (test.t1) -master-bin.000001 5865 Write_rows 1 5899 table_id: # flags: STMT_END_F -master-bin.000001 5899 Table_map 1 5940 table_id: # (test.t1) -master-bin.000001 5940 Write_rows 1 5974 table_id: # flags: STMT_END_F -master-bin.000001 5974 Table_map 1 6015 table_id: # (test.t1) -master-bin.000001 6015 Write_rows 1 6049 table_id: # flags: STMT_END_F -master-bin.000001 6049 Table_map 1 6090 table_id: # (test.t1) -master-bin.000001 6090 Write_rows 1 6124 table_id: # flags: STMT_END_F -master-bin.000001 6124 Table_map 1 6165 table_id: # (test.t1) -master-bin.000001 6165 Write_rows 1 6199 table_id: # flags: STMT_END_F -master-bin.000001 6199 Table_map 1 6240 table_id: # (test.t1) -master-bin.000001 6240 Write_rows 1 6274 table_id: # flags: STMT_END_F -master-bin.000001 6274 Table_map 1 6315 table_id: # (test.t1) -master-bin.000001 6315 Write_rows 1 6349 table_id: # flags: STMT_END_F -master-bin.000001 6349 Table_map 1 6390 table_id: # (test.t1) -master-bin.000001 6390 Write_rows 1 6424 table_id: # flags: STMT_END_F -master-bin.000001 6424 Table_map 1 6465 table_id: # (test.t1) -master-bin.000001 6465 Write_rows 1 6499 table_id: # flags: STMT_END_F -master-bin.000001 6499 Table_map 1 6540 table_id: # (test.t1) -master-bin.000001 6540 Write_rows 1 6574 table_id: # flags: STMT_END_F -master-bin.000001 6574 Table_map 1 6615 table_id: # (test.t1) -master-bin.000001 6615 Write_rows 1 6649 table_id: # flags: STMT_END_F -master-bin.000001 6649 Table_map 1 6690 table_id: # (test.t1) -master-bin.000001 6690 Write_rows 1 6724 table_id: # flags: STMT_END_F -master-bin.000001 6724 Table_map 1 6765 table_id: # (test.t1) -master-bin.000001 6765 Write_rows 1 6799 table_id: # flags: STMT_END_F -master-bin.000001 6799 Table_map 1 6840 table_id: # (test.t1) -master-bin.000001 6840 Write_rows 1 6874 table_id: # flags: STMT_END_F -master-bin.000001 6874 Table_map 1 6915 table_id: # (test.t1) -master-bin.000001 6915 Write_rows 1 6949 table_id: # flags: STMT_END_F -master-bin.000001 6949 Table_map 1 6990 table_id: # (test.t1) -master-bin.000001 6990 Write_rows 1 7024 table_id: # flags: STMT_END_F -master-bin.000001 7024 Table_map 1 7065 table_id: # (test.t1) -master-bin.000001 7065 Write_rows 1 7099 table_id: # flags: STMT_END_F -master-bin.000001 7099 Table_map 1 7140 table_id: # (test.t1) -master-bin.000001 7140 Write_rows 1 7174 table_id: # flags: STMT_END_F -master-bin.000001 7174 Table_map 1 7215 table_id: # (test.t1) -master-bin.000001 7215 Write_rows 1 7249 table_id: # flags: STMT_END_F -master-bin.000001 7249 Table_map 1 7290 table_id: # (test.t1) -master-bin.000001 7290 Write_rows 1 7324 table_id: # flags: STMT_END_F -master-bin.000001 7324 Table_map 1 7365 table_id: # (test.t1) -master-bin.000001 7365 Write_rows 1 7399 table_id: # flags: STMT_END_F -master-bin.000001 7399 Table_map 1 7440 table_id: # (test.t1) -master-bin.000001 7440 Write_rows 1 7474 table_id: # flags: STMT_END_F -master-bin.000001 7474 Table_map 1 7515 table_id: # (test.t1) -master-bin.000001 7515 Write_rows 1 7549 table_id: # flags: STMT_END_F -master-bin.000001 7549 Table_map 1 7590 table_id: # (test.t1) -master-bin.000001 7590 Write_rows 1 7624 table_id: # flags: STMT_END_F -master-bin.000001 7624 Table_map 1 7665 table_id: # (test.t1) -master-bin.000001 7665 Write_rows 1 7699 table_id: # flags: STMT_END_F -master-bin.000001 7699 Table_map 1 7740 table_id: # (test.t1) -master-bin.000001 7740 Write_rows 1 7774 table_id: # flags: STMT_END_F -master-bin.000001 7774 Table_map 1 7815 table_id: # (test.t1) -master-bin.000001 7815 Write_rows 1 7849 table_id: # flags: STMT_END_F -master-bin.000001 7849 Table_map 1 7890 table_id: # (test.t1) -master-bin.000001 7890 Write_rows 1 7924 table_id: # flags: STMT_END_F -master-bin.000001 7924 Table_map 1 7965 table_id: # (test.t1) -master-bin.000001 7965 Write_rows 1 7999 table_id: # flags: STMT_END_F -master-bin.000001 7999 Table_map 1 8040 table_id: # (test.t1) -master-bin.000001 8040 Write_rows 1 8074 table_id: # flags: STMT_END_F -master-bin.000001 8074 Table_map 1 8115 table_id: # (test.t1) -master-bin.000001 8115 Write_rows 1 8149 table_id: # flags: STMT_END_F -master-bin.000001 8149 Table_map 1 8190 table_id: # (test.t1) -master-bin.000001 8190 Write_rows 1 8224 table_id: # flags: STMT_END_F -master-bin.000001 8224 Table_map 1 8265 table_id: # (test.t1) -master-bin.000001 8265 Write_rows 1 8299 table_id: # flags: STMT_END_F -master-bin.000001 8299 Table_map 1 8340 table_id: # (test.t1) -master-bin.000001 8340 Write_rows 1 8374 table_id: # flags: STMT_END_F -master-bin.000001 8374 Table_map 1 8415 table_id: # (test.t1) -master-bin.000001 8415 Write_rows 1 8449 table_id: # flags: STMT_END_F -master-bin.000001 8449 Table_map 1 8490 table_id: # (test.t1) -master-bin.000001 8490 Write_rows 1 8524 table_id: # flags: STMT_END_F -master-bin.000001 8524 Table_map 1 8565 table_id: # (test.t1) -master-bin.000001 8565 Write_rows 1 8599 table_id: # flags: STMT_END_F -master-bin.000001 8599 Table_map 1 8640 table_id: # (test.t1) -master-bin.000001 8640 Write_rows 1 8674 table_id: # flags: STMT_END_F -master-bin.000001 8674 Table_map 1 8715 table_id: # (test.t1) -master-bin.000001 8715 Write_rows 1 8749 table_id: # flags: STMT_END_F -master-bin.000001 8749 Table_map 1 8790 table_id: # (test.t1) -master-bin.000001 8790 Write_rows 1 8824 table_id: # flags: STMT_END_F -master-bin.000001 8824 Table_map 1 8865 table_id: # (test.t1) -master-bin.000001 8865 Write_rows 1 8899 table_id: # flags: STMT_END_F -master-bin.000001 8899 Table_map 1 8940 table_id: # (test.t1) -master-bin.000001 8940 Write_rows 1 8974 table_id: # flags: STMT_END_F -master-bin.000001 8974 Table_map 1 9015 table_id: # (test.t1) -master-bin.000001 9015 Write_rows 1 9049 table_id: # flags: STMT_END_F -master-bin.000001 9049 Table_map 1 9090 table_id: # (test.t1) -master-bin.000001 9090 Write_rows 1 9124 table_id: # flags: STMT_END_F -master-bin.000001 9124 Table_map 1 9165 table_id: # (test.t1) -master-bin.000001 9165 Write_rows 1 9199 table_id: # flags: STMT_END_F -master-bin.000001 9199 Table_map 1 9240 table_id: # (test.t1) -master-bin.000001 9240 Write_rows 1 9274 table_id: # flags: STMT_END_F -master-bin.000001 9274 Table_map 1 9315 table_id: # (test.t1) -master-bin.000001 9315 Write_rows 1 9349 table_id: # flags: STMT_END_F -master-bin.000001 9349 Table_map 1 9390 table_id: # (test.t1) -master-bin.000001 9390 Write_rows 1 9424 table_id: # flags: STMT_END_F -master-bin.000001 9424 Table_map 1 9465 table_id: # (test.t1) -master-bin.000001 9465 Write_rows 1 9499 table_id: # flags: STMT_END_F -master-bin.000001 9499 Table_map 1 9540 table_id: # (test.t1) -master-bin.000001 9540 Write_rows 1 9574 table_id: # flags: STMT_END_F -master-bin.000001 9574 Table_map 1 9615 table_id: # (test.t1) -master-bin.000001 9615 Write_rows 1 9649 table_id: # flags: STMT_END_F -master-bin.000001 9649 Table_map 1 9690 table_id: # (test.t1) -master-bin.000001 9690 Write_rows 1 9724 table_id: # flags: STMT_END_F -master-bin.000001 9724 Table_map 1 9765 table_id: # (test.t1) -master-bin.000001 9765 Write_rows 1 9799 table_id: # flags: STMT_END_F -master-bin.000001 9799 Table_map 1 9840 table_id: # (test.t1) -master-bin.000001 9840 Write_rows 1 9874 table_id: # flags: STMT_END_F -master-bin.000001 9874 Table_map 1 9915 table_id: # (test.t1) -master-bin.000001 9915 Write_rows 1 9949 table_id: # flags: STMT_END_F -master-bin.000001 9949 Table_map 1 9990 table_id: # (test.t1) -master-bin.000001 9990 Write_rows 1 10024 table_id: # flags: STMT_END_F -master-bin.000001 10024 Table_map 1 10065 table_id: # (test.t1) -master-bin.000001 10065 Write_rows 1 10099 table_id: # flags: STMT_END_F -master-bin.000001 10099 Table_map 1 10140 table_id: # (test.t1) -master-bin.000001 10140 Write_rows 1 10174 table_id: # flags: STMT_END_F -master-bin.000001 10174 Table_map 1 10215 table_id: # (test.t1) -master-bin.000001 10215 Write_rows 1 10249 table_id: # flags: STMT_END_F -master-bin.000001 10249 Table_map 1 10290 table_id: # (test.t1) -master-bin.000001 10290 Write_rows 1 10324 table_id: # flags: STMT_END_F -master-bin.000001 10324 Table_map 1 10365 table_id: # (test.t1) -master-bin.000001 10365 Write_rows 1 10399 table_id: # flags: STMT_END_F -master-bin.000001 10399 Table_map 1 10440 table_id: # (test.t1) -master-bin.000001 10440 Write_rows 1 10474 table_id: # flags: STMT_END_F -master-bin.000001 10474 Table_map 1 10515 table_id: # (test.t1) -master-bin.000001 10515 Write_rows 1 10549 table_id: # flags: STMT_END_F -master-bin.000001 10549 Table_map 1 10590 table_id: # (test.t1) -master-bin.000001 10590 Write_rows 1 10624 table_id: # flags: STMT_END_F -master-bin.000001 10624 Table_map 1 10665 table_id: # (test.t1) -master-bin.000001 10665 Write_rows 1 10699 table_id: # flags: STMT_END_F -master-bin.000001 10699 Table_map 1 10740 table_id: # (test.t1) -master-bin.000001 10740 Write_rows 1 10774 table_id: # flags: STMT_END_F -master-bin.000001 10774 Table_map 1 10815 table_id: # (test.t1) -master-bin.000001 10815 Write_rows 1 10849 table_id: # flags: STMT_END_F -master-bin.000001 10849 Table_map 1 10890 table_id: # (test.t1) -master-bin.000001 10890 Write_rows 1 10924 table_id: # flags: STMT_END_F -master-bin.000001 10924 Table_map 1 10965 table_id: # (test.t1) -master-bin.000001 10965 Write_rows 1 10999 table_id: # flags: STMT_END_F -master-bin.000001 10999 Table_map 1 11040 table_id: # (test.t1) -master-bin.000001 11040 Write_rows 1 11074 table_id: # flags: STMT_END_F -master-bin.000001 11074 Table_map 1 11115 table_id: # (test.t1) -master-bin.000001 11115 Write_rows 1 11149 table_id: # flags: STMT_END_F -master-bin.000001 11149 Table_map 1 11190 table_id: # (test.t1) -master-bin.000001 11190 Write_rows 1 11224 table_id: # flags: STMT_END_F -master-bin.000001 11224 Table_map 1 11265 table_id: # (test.t1) -master-bin.000001 11265 Write_rows 1 11299 table_id: # flags: STMT_END_F -master-bin.000001 11299 Table_map 1 11340 table_id: # (test.t1) -master-bin.000001 11340 Write_rows 1 11374 table_id: # flags: STMT_END_F -master-bin.000001 11374 Table_map 1 11415 table_id: # (test.t1) -master-bin.000001 11415 Write_rows 1 11449 table_id: # flags: STMT_END_F -master-bin.000001 11449 Table_map 1 11490 table_id: # (test.t1) -master-bin.000001 11490 Write_rows 1 11524 table_id: # flags: STMT_END_F -master-bin.000001 11524 Table_map 1 11565 table_id: # (test.t1) -master-bin.000001 11565 Write_rows 1 11599 table_id: # flags: STMT_END_F -master-bin.000001 11599 Table_map 1 11640 table_id: # (test.t1) -master-bin.000001 11640 Write_rows 1 11674 table_id: # flags: STMT_END_F -master-bin.000001 11674 Table_map 1 11715 table_id: # (test.t1) -master-bin.000001 11715 Write_rows 1 11749 table_id: # flags: STMT_END_F -master-bin.000001 11749 Table_map 1 11790 table_id: # (test.t1) -master-bin.000001 11790 Write_rows 1 11824 table_id: # flags: STMT_END_F -master-bin.000001 11824 Table_map 1 11865 table_id: # (test.t1) -master-bin.000001 11865 Write_rows 1 11899 table_id: # flags: STMT_END_F -master-bin.000001 11899 Table_map 1 11940 table_id: # (test.t1) -master-bin.000001 11940 Write_rows 1 11974 table_id: # flags: STMT_END_F -master-bin.000001 11974 Table_map 1 12015 table_id: # (test.t1) -master-bin.000001 12015 Write_rows 1 12049 table_id: # flags: STMT_END_F -master-bin.000001 12049 Table_map 1 12090 table_id: # (test.t1) -master-bin.000001 12090 Write_rows 1 12124 table_id: # flags: STMT_END_F -master-bin.000001 12124 Table_map 1 12165 table_id: # (test.t1) -master-bin.000001 12165 Write_rows 1 12199 table_id: # flags: STMT_END_F -master-bin.000001 12199 Table_map 1 12240 table_id: # (test.t1) -master-bin.000001 12240 Write_rows 1 12274 table_id: # flags: STMT_END_F -master-bin.000001 12274 Table_map 1 12315 table_id: # (test.t1) -master-bin.000001 12315 Write_rows 1 12349 table_id: # flags: STMT_END_F -master-bin.000001 12349 Table_map 1 12390 table_id: # (test.t1) -master-bin.000001 12390 Write_rows 1 12424 table_id: # flags: STMT_END_F -master-bin.000001 12424 Table_map 1 12465 table_id: # (test.t1) -master-bin.000001 12465 Write_rows 1 12499 table_id: # flags: STMT_END_F -master-bin.000001 12499 Table_map 1 12540 table_id: # (test.t1) -master-bin.000001 12540 Write_rows 1 12574 table_id: # flags: STMT_END_F -master-bin.000001 12574 Table_map 1 12615 table_id: # (test.t1) -master-bin.000001 12615 Write_rows 1 12649 table_id: # flags: STMT_END_F -master-bin.000001 12649 Table_map 1 12690 table_id: # (test.t1) -master-bin.000001 12690 Write_rows 1 12724 table_id: # flags: STMT_END_F -master-bin.000001 12724 Table_map 1 12765 table_id: # (test.t1) -master-bin.000001 12765 Write_rows 1 12799 table_id: # flags: STMT_END_F -master-bin.000001 12799 Table_map 1 12840 table_id: # (test.t1) -master-bin.000001 12840 Write_rows 1 12874 table_id: # flags: STMT_END_F -master-bin.000001 12874 Table_map 1 12915 table_id: # (test.t1) -master-bin.000001 12915 Write_rows 1 12949 table_id: # flags: STMT_END_F -master-bin.000001 12949 Table_map 1 12990 table_id: # (test.t1) -master-bin.000001 12990 Write_rows 1 13024 table_id: # flags: STMT_END_F -master-bin.000001 13024 Table_map 1 13065 table_id: # (test.t1) -master-bin.000001 13065 Write_rows 1 13099 table_id: # flags: STMT_END_F -master-bin.000001 13099 Table_map 1 13140 table_id: # (test.t1) -master-bin.000001 13140 Write_rows 1 13174 table_id: # flags: STMT_END_F -master-bin.000001 13174 Table_map 1 13215 table_id: # (test.t1) -master-bin.000001 13215 Write_rows 1 13249 table_id: # flags: STMT_END_F -master-bin.000001 13249 Table_map 1 13290 table_id: # (test.t1) -master-bin.000001 13290 Write_rows 1 13324 table_id: # flags: STMT_END_F -master-bin.000001 13324 Table_map 1 13365 table_id: # (test.t1) -master-bin.000001 13365 Write_rows 1 13399 table_id: # flags: STMT_END_F -master-bin.000001 13399 Table_map 1 13440 table_id: # (test.t1) -master-bin.000001 13440 Write_rows 1 13474 table_id: # flags: STMT_END_F -master-bin.000001 13474 Table_map 1 13515 table_id: # (test.t1) -master-bin.000001 13515 Write_rows 1 13549 table_id: # flags: STMT_END_F -master-bin.000001 13549 Table_map 1 13590 table_id: # (test.t1) -master-bin.000001 13590 Write_rows 1 13624 table_id: # flags: STMT_END_F -master-bin.000001 13624 Table_map 1 13665 table_id: # (test.t1) -master-bin.000001 13665 Write_rows 1 13699 table_id: # flags: STMT_END_F -master-bin.000001 13699 Table_map 1 13740 table_id: # (test.t1) -master-bin.000001 13740 Write_rows 1 13774 table_id: # flags: STMT_END_F -master-bin.000001 13774 Table_map 1 13815 table_id: # (test.t1) -master-bin.000001 13815 Write_rows 1 13849 table_id: # flags: STMT_END_F -master-bin.000001 13849 Table_map 1 13890 table_id: # (test.t1) -master-bin.000001 13890 Write_rows 1 13924 table_id: # flags: STMT_END_F -master-bin.000001 13924 Table_map 1 13965 table_id: # (test.t1) -master-bin.000001 13965 Write_rows 1 13999 table_id: # flags: STMT_END_F -master-bin.000001 13999 Table_map 1 14040 table_id: # (test.t1) -master-bin.000001 14040 Write_rows 1 14074 table_id: # flags: STMT_END_F -master-bin.000001 14074 Table_map 1 14115 table_id: # (test.t1) -master-bin.000001 14115 Write_rows 1 14149 table_id: # flags: STMT_END_F -master-bin.000001 14149 Table_map 1 14190 table_id: # (test.t1) -master-bin.000001 14190 Write_rows 1 14224 table_id: # flags: STMT_END_F -master-bin.000001 14224 Table_map 1 14265 table_id: # (test.t1) -master-bin.000001 14265 Write_rows 1 14299 table_id: # flags: STMT_END_F -master-bin.000001 14299 Table_map 1 14340 table_id: # (test.t1) -master-bin.000001 14340 Write_rows 1 14374 table_id: # flags: STMT_END_F -master-bin.000001 14374 Table_map 1 14415 table_id: # (test.t1) -master-bin.000001 14415 Write_rows 1 14449 table_id: # flags: STMT_END_F -master-bin.000001 14449 Table_map 1 14490 table_id: # (test.t1) -master-bin.000001 14490 Write_rows 1 14524 table_id: # flags: STMT_END_F -master-bin.000001 14524 Table_map 1 14565 table_id: # (test.t1) -master-bin.000001 14565 Write_rows 1 14599 table_id: # flags: STMT_END_F -master-bin.000001 14599 Table_map 1 14640 table_id: # (test.t1) -master-bin.000001 14640 Write_rows 1 14674 table_id: # flags: STMT_END_F -master-bin.000001 14674 Table_map 1 14715 table_id: # (test.t1) -master-bin.000001 14715 Write_rows 1 14749 table_id: # flags: STMT_END_F -master-bin.000001 14749 Table_map 1 14790 table_id: # (test.t1) -master-bin.000001 14790 Write_rows 1 14824 table_id: # flags: STMT_END_F -master-bin.000001 14824 Table_map 1 14865 table_id: # (test.t1) -master-bin.000001 14865 Write_rows 1 14899 table_id: # flags: STMT_END_F -master-bin.000001 14899 Table_map 1 14940 table_id: # (test.t1) -master-bin.000001 14940 Write_rows 1 14974 table_id: # flags: STMT_END_F -master-bin.000001 14974 Table_map 1 15015 table_id: # (test.t1) -master-bin.000001 15015 Write_rows 1 15049 table_id: # flags: STMT_END_F -master-bin.000001 15049 Table_map 1 15090 table_id: # (test.t1) -master-bin.000001 15090 Write_rows 1 15124 table_id: # flags: STMT_END_F -master-bin.000001 15124 Table_map 1 15165 table_id: # (test.t1) -master-bin.000001 15165 Write_rows 1 15199 table_id: # flags: STMT_END_F -master-bin.000001 15199 Table_map 1 15240 table_id: # (test.t1) -master-bin.000001 15240 Write_rows 1 15274 table_id: # flags: STMT_END_F -master-bin.000001 15274 Table_map 1 15315 table_id: # (test.t1) -master-bin.000001 15315 Write_rows 1 15349 table_id: # flags: STMT_END_F -master-bin.000001 15349 Table_map 1 15390 table_id: # (test.t1) -master-bin.000001 15390 Write_rows 1 15424 table_id: # flags: STMT_END_F -master-bin.000001 15424 Table_map 1 15465 table_id: # (test.t1) -master-bin.000001 15465 Write_rows 1 15499 table_id: # flags: STMT_END_F -master-bin.000001 15499 Table_map 1 15540 table_id: # (test.t1) -master-bin.000001 15540 Write_rows 1 15574 table_id: # flags: STMT_END_F -master-bin.000001 15574 Table_map 1 15615 table_id: # (test.t1) -master-bin.000001 15615 Write_rows 1 15649 table_id: # flags: STMT_END_F -master-bin.000001 15649 Table_map 1 15690 table_id: # (test.t1) -master-bin.000001 15690 Write_rows 1 15724 table_id: # flags: STMT_END_F -master-bin.000001 15724 Table_map 1 15765 table_id: # (test.t1) -master-bin.000001 15765 Write_rows 1 15799 table_id: # flags: STMT_END_F -master-bin.000001 15799 Table_map 1 15840 table_id: # (test.t1) -master-bin.000001 15840 Write_rows 1 15874 table_id: # flags: STMT_END_F -master-bin.000001 15874 Table_map 1 15915 table_id: # (test.t1) -master-bin.000001 15915 Write_rows 1 15949 table_id: # flags: STMT_END_F -master-bin.000001 15949 Table_map 1 15990 table_id: # (test.t1) -master-bin.000001 15990 Write_rows 1 16024 table_id: # flags: STMT_END_F -master-bin.000001 16024 Table_map 1 16065 table_id: # (test.t1) -master-bin.000001 16065 Write_rows 1 16099 table_id: # flags: STMT_END_F -master-bin.000001 16099 Table_map 1 16140 table_id: # (test.t1) -master-bin.000001 16140 Write_rows 1 16174 table_id: # flags: STMT_END_F -master-bin.000001 16174 Table_map 1 16215 table_id: # (test.t1) -master-bin.000001 16215 Write_rows 1 16249 table_id: # flags: STMT_END_F -master-bin.000001 16249 Table_map 1 16290 table_id: # (test.t1) -master-bin.000001 16290 Write_rows 1 16324 table_id: # flags: STMT_END_F -master-bin.000001 16324 Table_map 1 16365 table_id: # (test.t1) -master-bin.000001 16365 Write_rows 1 16399 table_id: # flags: STMT_END_F -master-bin.000001 16399 Table_map 1 16440 table_id: # (test.t1) -master-bin.000001 16440 Write_rows 1 16474 table_id: # flags: STMT_END_F -master-bin.000001 16474 Table_map 1 16515 table_id: # (test.t1) -master-bin.000001 16515 Write_rows 1 16549 table_id: # flags: STMT_END_F -master-bin.000001 16549 Table_map 1 16590 table_id: # (test.t1) -master-bin.000001 16590 Write_rows 1 16624 table_id: # flags: STMT_END_F -master-bin.000001 16624 Table_map 1 16665 table_id: # (test.t1) -master-bin.000001 16665 Write_rows 1 16699 table_id: # flags: STMT_END_F -master-bin.000001 16699 Table_map 1 16740 table_id: # (test.t1) -master-bin.000001 16740 Write_rows 1 16774 table_id: # flags: STMT_END_F -master-bin.000001 16774 Table_map 1 16815 table_id: # (test.t1) -master-bin.000001 16815 Write_rows 1 16849 table_id: # flags: STMT_END_F -master-bin.000001 16849 Table_map 1 16890 table_id: # (test.t1) -master-bin.000001 16890 Write_rows 1 16924 table_id: # flags: STMT_END_F -master-bin.000001 16924 Table_map 1 16965 table_id: # (test.t1) -master-bin.000001 16965 Write_rows 1 16999 table_id: # flags: STMT_END_F -master-bin.000001 16999 Table_map 1 17040 table_id: # (test.t1) -master-bin.000001 17040 Write_rows 1 17074 table_id: # flags: STMT_END_F -master-bin.000001 17074 Table_map 1 17115 table_id: # (test.t1) -master-bin.000001 17115 Write_rows 1 17149 table_id: # flags: STMT_END_F -master-bin.000001 17149 Table_map 1 17190 table_id: # (test.t1) -master-bin.000001 17190 Write_rows 1 17224 table_id: # flags: STMT_END_F -master-bin.000001 17224 Table_map 1 17265 table_id: # (test.t1) -master-bin.000001 17265 Write_rows 1 17299 table_id: # flags: STMT_END_F -master-bin.000001 17299 Table_map 1 17340 table_id: # (test.t1) -master-bin.000001 17340 Write_rows 1 17374 table_id: # flags: STMT_END_F -master-bin.000001 17374 Table_map 1 17415 table_id: # (test.t1) -master-bin.000001 17415 Write_rows 1 17449 table_id: # flags: STMT_END_F -master-bin.000001 17449 Table_map 1 17490 table_id: # (test.t1) -master-bin.000001 17490 Write_rows 1 17524 table_id: # flags: STMT_END_F -master-bin.000001 17524 Table_map 1 17565 table_id: # (test.t1) -master-bin.000001 17565 Write_rows 1 17599 table_id: # flags: STMT_END_F -master-bin.000001 17599 Table_map 1 17640 table_id: # (test.t1) -master-bin.000001 17640 Write_rows 1 17674 table_id: # flags: STMT_END_F -master-bin.000001 17674 Table_map 1 17715 table_id: # (test.t1) -master-bin.000001 17715 Write_rows 1 17749 table_id: # flags: STMT_END_F -master-bin.000001 17749 Table_map 1 17790 table_id: # (test.t1) -master-bin.000001 17790 Write_rows 1 17824 table_id: # flags: STMT_END_F -master-bin.000001 17824 Table_map 1 17865 table_id: # (test.t1) -master-bin.000001 17865 Write_rows 1 17899 table_id: # flags: STMT_END_F -master-bin.000001 17899 Table_map 1 17940 table_id: # (test.t1) -master-bin.000001 17940 Write_rows 1 17974 table_id: # flags: STMT_END_F -master-bin.000001 17974 Table_map 1 18015 table_id: # (test.t1) -master-bin.000001 18015 Write_rows 1 18049 table_id: # flags: STMT_END_F -master-bin.000001 18049 Table_map 1 18090 table_id: # (test.t1) -master-bin.000001 18090 Write_rows 1 18124 table_id: # flags: STMT_END_F -master-bin.000001 18124 Table_map 1 18165 table_id: # (test.t1) -master-bin.000001 18165 Write_rows 1 18199 table_id: # flags: STMT_END_F -master-bin.000001 18199 Table_map 1 18240 table_id: # (test.t1) -master-bin.000001 18240 Write_rows 1 18274 table_id: # flags: STMT_END_F -master-bin.000001 18274 Table_map 1 18315 table_id: # (test.t1) -master-bin.000001 18315 Write_rows 1 18349 table_id: # flags: STMT_END_F -master-bin.000001 18349 Table_map 1 18390 table_id: # (test.t1) -master-bin.000001 18390 Write_rows 1 18424 table_id: # flags: STMT_END_F -master-bin.000001 18424 Table_map 1 18465 table_id: # (test.t1) -master-bin.000001 18465 Write_rows 1 18499 table_id: # flags: STMT_END_F -master-bin.000001 18499 Table_map 1 18540 table_id: # (test.t1) -master-bin.000001 18540 Write_rows 1 18574 table_id: # flags: STMT_END_F -master-bin.000001 18574 Table_map 1 18615 table_id: # (test.t1) -master-bin.000001 18615 Write_rows 1 18649 table_id: # flags: STMT_END_F -master-bin.000001 18649 Table_map 1 18690 table_id: # (test.t1) -master-bin.000001 18690 Write_rows 1 18724 table_id: # flags: STMT_END_F -master-bin.000001 18724 Table_map 1 18765 table_id: # (test.t1) -master-bin.000001 18765 Write_rows 1 18799 table_id: # flags: STMT_END_F -master-bin.000001 18799 Table_map 1 18840 table_id: # (test.t1) -master-bin.000001 18840 Write_rows 1 18874 table_id: # flags: STMT_END_F -master-bin.000001 18874 Table_map 1 18915 table_id: # (test.t1) -master-bin.000001 18915 Write_rows 1 18949 table_id: # flags: STMT_END_F -master-bin.000001 18949 Table_map 1 18990 table_id: # (test.t1) -master-bin.000001 18990 Write_rows 1 19024 table_id: # flags: STMT_END_F -master-bin.000001 19024 Table_map 1 19065 table_id: # (test.t1) -master-bin.000001 19065 Write_rows 1 19099 table_id: # flags: STMT_END_F -master-bin.000001 19099 Table_map 1 19140 table_id: # (test.t1) -master-bin.000001 19140 Write_rows 1 19174 table_id: # flags: STMT_END_F -master-bin.000001 19174 Table_map 1 19215 table_id: # (test.t1) -master-bin.000001 19215 Write_rows 1 19249 table_id: # flags: STMT_END_F -master-bin.000001 19249 Table_map 1 19290 table_id: # (test.t1) -master-bin.000001 19290 Write_rows 1 19324 table_id: # flags: STMT_END_F -master-bin.000001 19324 Table_map 1 19365 table_id: # (test.t1) -master-bin.000001 19365 Write_rows 1 19399 table_id: # flags: STMT_END_F -master-bin.000001 19399 Table_map 1 19440 table_id: # (test.t1) -master-bin.000001 19440 Write_rows 1 19474 table_id: # flags: STMT_END_F -master-bin.000001 19474 Table_map 1 19515 table_id: # (test.t1) -master-bin.000001 19515 Write_rows 1 19549 table_id: # flags: STMT_END_F -master-bin.000001 19549 Table_map 1 19590 table_id: # (test.t1) -master-bin.000001 19590 Write_rows 1 19624 table_id: # flags: STMT_END_F -master-bin.000001 19624 Table_map 1 19665 table_id: # (test.t1) -master-bin.000001 19665 Write_rows 1 19699 table_id: # flags: STMT_END_F -master-bin.000001 19699 Table_map 1 19740 table_id: # (test.t1) -master-bin.000001 19740 Write_rows 1 19774 table_id: # flags: STMT_END_F -master-bin.000001 19774 Table_map 1 19815 table_id: # (test.t1) -master-bin.000001 19815 Write_rows 1 19849 table_id: # flags: STMT_END_F -master-bin.000001 19849 Table_map 1 19890 table_id: # (test.t1) -master-bin.000001 19890 Write_rows 1 19924 table_id: # flags: STMT_END_F -master-bin.000001 19924 Table_map 1 19965 table_id: # (test.t1) -master-bin.000001 19965 Write_rows 1 19999 table_id: # flags: STMT_END_F -master-bin.000001 19999 Table_map 1 20040 table_id: # (test.t1) -master-bin.000001 20040 Write_rows 1 20074 table_id: # flags: STMT_END_F -master-bin.000001 20074 Table_map 1 20115 table_id: # (test.t1) -master-bin.000001 20115 Write_rows 1 20149 table_id: # flags: STMT_END_F -master-bin.000001 20149 Table_map 1 20190 table_id: # (test.t1) -master-bin.000001 20190 Write_rows 1 20224 table_id: # flags: STMT_END_F -master-bin.000001 20224 Table_map 1 20265 table_id: # (test.t1) -master-bin.000001 20265 Write_rows 1 20299 table_id: # flags: STMT_END_F -master-bin.000001 20299 Table_map 1 20340 table_id: # (test.t1) -master-bin.000001 20340 Write_rows 1 20374 table_id: # flags: STMT_END_F -master-bin.000001 20374 Table_map 1 20415 table_id: # (test.t1) -master-bin.000001 20415 Write_rows 1 20449 table_id: # flags: STMT_END_F -master-bin.000001 20449 Table_map 1 20490 table_id: # (test.t1) -master-bin.000001 20490 Write_rows 1 20524 table_id: # flags: STMT_END_F -master-bin.000001 20524 Table_map 1 20565 table_id: # (test.t1) -master-bin.000001 20565 Write_rows 1 20599 table_id: # flags: STMT_END_F -master-bin.000001 20599 Table_map 1 20640 table_id: # (test.t1) -master-bin.000001 20640 Write_rows 1 20674 table_id: # flags: STMT_END_F -master-bin.000001 20674 Table_map 1 20715 table_id: # (test.t1) -master-bin.000001 20715 Write_rows 1 20749 table_id: # flags: STMT_END_F -master-bin.000001 20749 Table_map 1 20790 table_id: # (test.t1) -master-bin.000001 20790 Write_rows 1 20824 table_id: # flags: STMT_END_F -master-bin.000001 20824 Table_map 1 20865 table_id: # (test.t1) -master-bin.000001 20865 Write_rows 1 20899 table_id: # flags: STMT_END_F -master-bin.000001 20899 Table_map 1 20940 table_id: # (test.t1) -master-bin.000001 20940 Write_rows 1 20974 table_id: # flags: STMT_END_F -master-bin.000001 20974 Table_map 1 21015 table_id: # (test.t1) -master-bin.000001 21015 Write_rows 1 21049 table_id: # flags: STMT_END_F -master-bin.000001 21049 Table_map 1 21090 table_id: # (test.t1) -master-bin.000001 21090 Write_rows 1 21124 table_id: # flags: STMT_END_F -master-bin.000001 21124 Table_map 1 21165 table_id: # (test.t1) -master-bin.000001 21165 Write_rows 1 21199 table_id: # flags: STMT_END_F -master-bin.000001 21199 Table_map 1 21240 table_id: # (test.t1) -master-bin.000001 21240 Write_rows 1 21274 table_id: # flags: STMT_END_F -master-bin.000001 21274 Table_map 1 21315 table_id: # (test.t1) -master-bin.000001 21315 Write_rows 1 21349 table_id: # flags: STMT_END_F -master-bin.000001 21349 Table_map 1 21390 table_id: # (test.t1) -master-bin.000001 21390 Write_rows 1 21424 table_id: # flags: STMT_END_F -master-bin.000001 21424 Table_map 1 21465 table_id: # (test.t1) -master-bin.000001 21465 Write_rows 1 21499 table_id: # flags: STMT_END_F -master-bin.000001 21499 Table_map 1 21540 table_id: # (test.t1) -master-bin.000001 21540 Write_rows 1 21574 table_id: # flags: STMT_END_F -master-bin.000001 21574 Table_map 1 21615 table_id: # (test.t1) -master-bin.000001 21615 Write_rows 1 21649 table_id: # flags: STMT_END_F -master-bin.000001 21649 Table_map 1 21690 table_id: # (test.t1) -master-bin.000001 21690 Write_rows 1 21724 table_id: # flags: STMT_END_F -master-bin.000001 21724 Table_map 1 21765 table_id: # (test.t1) -master-bin.000001 21765 Write_rows 1 21799 table_id: # flags: STMT_END_F -master-bin.000001 21799 Table_map 1 21840 table_id: # (test.t1) -master-bin.000001 21840 Write_rows 1 21874 table_id: # flags: STMT_END_F -master-bin.000001 21874 Table_map 1 21915 table_id: # (test.t1) -master-bin.000001 21915 Write_rows 1 21949 table_id: # flags: STMT_END_F -master-bin.000001 21949 Table_map 1 21990 table_id: # (test.t1) -master-bin.000001 21990 Write_rows 1 22024 table_id: # flags: STMT_END_F -master-bin.000001 22024 Table_map 1 22065 table_id: # (test.t1) -master-bin.000001 22065 Write_rows 1 22099 table_id: # flags: STMT_END_F -master-bin.000001 22099 Table_map 1 22140 table_id: # (test.t1) -master-bin.000001 22140 Write_rows 1 22174 table_id: # flags: STMT_END_F -master-bin.000001 22174 Table_map 1 22215 table_id: # (test.t1) -master-bin.000001 22215 Write_rows 1 22249 table_id: # flags: STMT_END_F -master-bin.000001 22249 Table_map 1 22290 table_id: # (test.t1) -master-bin.000001 22290 Write_rows 1 22324 table_id: # flags: STMT_END_F -master-bin.000001 22324 Table_map 1 22365 table_id: # (test.t1) -master-bin.000001 22365 Write_rows 1 22399 table_id: # flags: STMT_END_F -master-bin.000001 22399 Table_map 1 22440 table_id: # (test.t1) -master-bin.000001 22440 Write_rows 1 22474 table_id: # flags: STMT_END_F -master-bin.000001 22474 Table_map 1 22515 table_id: # (test.t1) -master-bin.000001 22515 Write_rows 1 22549 table_id: # flags: STMT_END_F -master-bin.000001 22549 Table_map 1 22590 table_id: # (test.t1) -master-bin.000001 22590 Write_rows 1 22624 table_id: # flags: STMT_END_F -master-bin.000001 22624 Table_map 1 22665 table_id: # (test.t1) -master-bin.000001 22665 Write_rows 1 22699 table_id: # flags: STMT_END_F -master-bin.000001 22699 Table_map 1 22740 table_id: # (test.t1) -master-bin.000001 22740 Write_rows 1 22774 table_id: # flags: STMT_END_F -master-bin.000001 22774 Table_map 1 22815 table_id: # (test.t1) -master-bin.000001 22815 Write_rows 1 22849 table_id: # flags: STMT_END_F -master-bin.000001 22849 Table_map 1 22890 table_id: # (test.t1) -master-bin.000001 22890 Write_rows 1 22924 table_id: # flags: STMT_END_F -master-bin.000001 22924 Table_map 1 22965 table_id: # (test.t1) -master-bin.000001 22965 Write_rows 1 22999 table_id: # flags: STMT_END_F -master-bin.000001 22999 Table_map 1 23040 table_id: # (test.t1) -master-bin.000001 23040 Write_rows 1 23074 table_id: # flags: STMT_END_F -master-bin.000001 23074 Table_map 1 23115 table_id: # (test.t1) -master-bin.000001 23115 Write_rows 1 23149 table_id: # flags: STMT_END_F -master-bin.000001 23149 Table_map 1 23190 table_id: # (test.t1) -master-bin.000001 23190 Write_rows 1 23224 table_id: # flags: STMT_END_F -master-bin.000001 23224 Table_map 1 23265 table_id: # (test.t1) -master-bin.000001 23265 Write_rows 1 23299 table_id: # flags: STMT_END_F -master-bin.000001 23299 Table_map 1 23340 table_id: # (test.t1) -master-bin.000001 23340 Write_rows 1 23374 table_id: # flags: STMT_END_F -master-bin.000001 23374 Table_map 1 23415 table_id: # (test.t1) -master-bin.000001 23415 Write_rows 1 23449 table_id: # flags: STMT_END_F -master-bin.000001 23449 Table_map 1 23490 table_id: # (test.t1) -master-bin.000001 23490 Write_rows 1 23524 table_id: # flags: STMT_END_F -master-bin.000001 23524 Table_map 1 23565 table_id: # (test.t1) -master-bin.000001 23565 Write_rows 1 23599 table_id: # flags: STMT_END_F -master-bin.000001 23599 Table_map 1 23640 table_id: # (test.t1) -master-bin.000001 23640 Write_rows 1 23674 table_id: # flags: STMT_END_F -master-bin.000001 23674 Table_map 1 23715 table_id: # (test.t1) -master-bin.000001 23715 Write_rows 1 23749 table_id: # flags: STMT_END_F -master-bin.000001 23749 Table_map 1 23790 table_id: # (test.t1) -master-bin.000001 23790 Write_rows 1 23824 table_id: # flags: STMT_END_F -master-bin.000001 23824 Table_map 1 23865 table_id: # (test.t1) -master-bin.000001 23865 Write_rows 1 23899 table_id: # flags: STMT_END_F -master-bin.000001 23899 Table_map 1 23940 table_id: # (test.t1) -master-bin.000001 23940 Write_rows 1 23974 table_id: # flags: STMT_END_F -master-bin.000001 23974 Table_map 1 24015 table_id: # (test.t1) -master-bin.000001 24015 Write_rows 1 24049 table_id: # flags: STMT_END_F -master-bin.000001 24049 Table_map 1 24090 table_id: # (test.t1) -master-bin.000001 24090 Write_rows 1 24124 table_id: # flags: STMT_END_F -master-bin.000001 24124 Table_map 1 24165 table_id: # (test.t1) -master-bin.000001 24165 Write_rows 1 24199 table_id: # flags: STMT_END_F -master-bin.000001 24199 Table_map 1 24240 table_id: # (test.t1) -master-bin.000001 24240 Write_rows 1 24274 table_id: # flags: STMT_END_F -master-bin.000001 24274 Table_map 1 24315 table_id: # (test.t1) -master-bin.000001 24315 Write_rows 1 24349 table_id: # flags: STMT_END_F -master-bin.000001 24349 Table_map 1 24390 table_id: # (test.t1) -master-bin.000001 24390 Write_rows 1 24424 table_id: # flags: STMT_END_F -master-bin.000001 24424 Table_map 1 24465 table_id: # (test.t1) -master-bin.000001 24465 Write_rows 1 24499 table_id: # flags: STMT_END_F -master-bin.000001 24499 Table_map 1 24540 table_id: # (test.t1) -master-bin.000001 24540 Write_rows 1 24574 table_id: # flags: STMT_END_F -master-bin.000001 24574 Table_map 1 24615 table_id: # (test.t1) -master-bin.000001 24615 Write_rows 1 24649 table_id: # flags: STMT_END_F -master-bin.000001 24649 Table_map 1 24690 table_id: # (test.t1) -master-bin.000001 24690 Write_rows 1 24724 table_id: # flags: STMT_END_F -master-bin.000001 24724 Table_map 1 24765 table_id: # (test.t1) -master-bin.000001 24765 Write_rows 1 24799 table_id: # flags: STMT_END_F -master-bin.000001 24799 Table_map 1 24840 table_id: # (test.t1) -master-bin.000001 24840 Write_rows 1 24874 table_id: # flags: STMT_END_F -master-bin.000001 24874 Table_map 1 24915 table_id: # (test.t1) -master-bin.000001 24915 Write_rows 1 24949 table_id: # flags: STMT_END_F -master-bin.000001 24949 Table_map 1 24990 table_id: # (test.t1) -master-bin.000001 24990 Write_rows 1 25024 table_id: # flags: STMT_END_F -master-bin.000001 25024 Table_map 1 25065 table_id: # (test.t1) -master-bin.000001 25065 Write_rows 1 25099 table_id: # flags: STMT_END_F -master-bin.000001 25099 Table_map 1 25140 table_id: # (test.t1) -master-bin.000001 25140 Write_rows 1 25174 table_id: # flags: STMT_END_F -master-bin.000001 25174 Table_map 1 25215 table_id: # (test.t1) -master-bin.000001 25215 Write_rows 1 25249 table_id: # flags: STMT_END_F -master-bin.000001 25249 Table_map 1 25290 table_id: # (test.t1) -master-bin.000001 25290 Write_rows 1 25324 table_id: # flags: STMT_END_F -master-bin.000001 25324 Table_map 1 25365 table_id: # (test.t1) -master-bin.000001 25365 Write_rows 1 25399 table_id: # flags: STMT_END_F -master-bin.000001 25399 Table_map 1 25440 table_id: # (test.t1) -master-bin.000001 25440 Write_rows 1 25474 table_id: # flags: STMT_END_F -master-bin.000001 25474 Table_map 1 25515 table_id: # (test.t1) -master-bin.000001 25515 Write_rows 1 25549 table_id: # flags: STMT_END_F -master-bin.000001 25549 Table_map 1 25590 table_id: # (test.t1) -master-bin.000001 25590 Write_rows 1 25624 table_id: # flags: STMT_END_F -master-bin.000001 25624 Table_map 1 25665 table_id: # (test.t1) -master-bin.000001 25665 Write_rows 1 25699 table_id: # flags: STMT_END_F -master-bin.000001 25699 Table_map 1 25740 table_id: # (test.t1) -master-bin.000001 25740 Write_rows 1 25774 table_id: # flags: STMT_END_F -master-bin.000001 25774 Table_map 1 25815 table_id: # (test.t1) -master-bin.000001 25815 Write_rows 1 25849 table_id: # flags: STMT_END_F -master-bin.000001 25849 Table_map 1 25890 table_id: # (test.t1) -master-bin.000001 25890 Write_rows 1 25924 table_id: # flags: STMT_END_F -master-bin.000001 25924 Table_map 1 25965 table_id: # (test.t1) -master-bin.000001 25965 Write_rows 1 25999 table_id: # flags: STMT_END_F -master-bin.000001 25999 Table_map 1 26040 table_id: # (test.t1) -master-bin.000001 26040 Write_rows 1 26074 table_id: # flags: STMT_END_F -master-bin.000001 26074 Table_map 1 26115 table_id: # (test.t1) -master-bin.000001 26115 Write_rows 1 26149 table_id: # flags: STMT_END_F -master-bin.000001 26149 Table_map 1 26190 table_id: # (test.t1) -master-bin.000001 26190 Write_rows 1 26224 table_id: # flags: STMT_END_F -master-bin.000001 26224 Table_map 1 26265 table_id: # (test.t1) -master-bin.000001 26265 Write_rows 1 26299 table_id: # flags: STMT_END_F -master-bin.000001 26299 Table_map 1 26340 table_id: # (test.t1) -master-bin.000001 26340 Write_rows 1 26374 table_id: # flags: STMT_END_F -master-bin.000001 26374 Table_map 1 26415 table_id: # (test.t1) -master-bin.000001 26415 Write_rows 1 26449 table_id: # flags: STMT_END_F -master-bin.000001 26449 Table_map 1 26490 table_id: # (test.t1) -master-bin.000001 26490 Write_rows 1 26524 table_id: # flags: STMT_END_F -master-bin.000001 26524 Table_map 1 26565 table_id: # (test.t1) -master-bin.000001 26565 Write_rows 1 26599 table_id: # flags: STMT_END_F -master-bin.000001 26599 Table_map 1 26640 table_id: # (test.t1) -master-bin.000001 26640 Write_rows 1 26674 table_id: # flags: STMT_END_F -master-bin.000001 26674 Table_map 1 26715 table_id: # (test.t1) -master-bin.000001 26715 Write_rows 1 26749 table_id: # flags: STMT_END_F -master-bin.000001 26749 Table_map 1 26790 table_id: # (test.t1) -master-bin.000001 26790 Write_rows 1 26824 table_id: # flags: STMT_END_F -master-bin.000001 26824 Table_map 1 26865 table_id: # (test.t1) -master-bin.000001 26865 Write_rows 1 26899 table_id: # flags: STMT_END_F -master-bin.000001 26899 Table_map 1 26940 table_id: # (test.t1) -master-bin.000001 26940 Write_rows 1 26974 table_id: # flags: STMT_END_F -master-bin.000001 26974 Table_map 1 27015 table_id: # (test.t1) -master-bin.000001 27015 Write_rows 1 27049 table_id: # flags: STMT_END_F -master-bin.000001 27049 Table_map 1 27090 table_id: # (test.t1) -master-bin.000001 27090 Write_rows 1 27124 table_id: # flags: STMT_END_F -master-bin.000001 27124 Table_map 1 27165 table_id: # (test.t1) -master-bin.000001 27165 Write_rows 1 27199 table_id: # flags: STMT_END_F -master-bin.000001 27199 Table_map 1 27240 table_id: # (test.t1) -master-bin.000001 27240 Write_rows 1 27274 table_id: # flags: STMT_END_F -master-bin.000001 27274 Table_map 1 27315 table_id: # (test.t1) -master-bin.000001 27315 Write_rows 1 27349 table_id: # flags: STMT_END_F -master-bin.000001 27349 Table_map 1 27390 table_id: # (test.t1) -master-bin.000001 27390 Write_rows 1 27424 table_id: # flags: STMT_END_F -master-bin.000001 27424 Table_map 1 27465 table_id: # (test.t1) -master-bin.000001 27465 Write_rows 1 27499 table_id: # flags: STMT_END_F -master-bin.000001 27499 Table_map 1 27540 table_id: # (test.t1) -master-bin.000001 27540 Write_rows 1 27574 table_id: # flags: STMT_END_F -master-bin.000001 27574 Table_map 1 27615 table_id: # (test.t1) -master-bin.000001 27615 Write_rows 1 27649 table_id: # flags: STMT_END_F -master-bin.000001 27649 Table_map 1 27690 table_id: # (test.t1) -master-bin.000001 27690 Write_rows 1 27724 table_id: # flags: STMT_END_F -master-bin.000001 27724 Table_map 1 27765 table_id: # (test.t1) -master-bin.000001 27765 Write_rows 1 27799 table_id: # flags: STMT_END_F -master-bin.000001 27799 Table_map 1 27840 table_id: # (test.t1) -master-bin.000001 27840 Write_rows 1 27874 table_id: # flags: STMT_END_F -master-bin.000001 27874 Table_map 1 27915 table_id: # (test.t1) -master-bin.000001 27915 Write_rows 1 27949 table_id: # flags: STMT_END_F -master-bin.000001 27949 Table_map 1 27990 table_id: # (test.t1) -master-bin.000001 27990 Write_rows 1 28024 table_id: # flags: STMT_END_F -master-bin.000001 28024 Table_map 1 28065 table_id: # (test.t1) -master-bin.000001 28065 Write_rows 1 28099 table_id: # flags: STMT_END_F -master-bin.000001 28099 Table_map 1 28140 table_id: # (test.t1) -master-bin.000001 28140 Write_rows 1 28174 table_id: # flags: STMT_END_F -master-bin.000001 28174 Table_map 1 28215 table_id: # (test.t1) -master-bin.000001 28215 Write_rows 1 28249 table_id: # flags: STMT_END_F -master-bin.000001 28249 Table_map 1 28290 table_id: # (test.t1) -master-bin.000001 28290 Write_rows 1 28324 table_id: # flags: STMT_END_F -master-bin.000001 28324 Table_map 1 28365 table_id: # (test.t1) -master-bin.000001 28365 Write_rows 1 28399 table_id: # flags: STMT_END_F -master-bin.000001 28399 Table_map 1 28440 table_id: # (test.t1) -master-bin.000001 28440 Write_rows 1 28474 table_id: # flags: STMT_END_F -master-bin.000001 28474 Table_map 1 28515 table_id: # (test.t1) -master-bin.000001 28515 Write_rows 1 28549 table_id: # flags: STMT_END_F -master-bin.000001 28549 Table_map 1 28590 table_id: # (test.t1) -master-bin.000001 28590 Write_rows 1 28624 table_id: # flags: STMT_END_F -master-bin.000001 28624 Table_map 1 28665 table_id: # (test.t1) -master-bin.000001 28665 Write_rows 1 28699 table_id: # flags: STMT_END_F -master-bin.000001 28699 Table_map 1 28740 table_id: # (test.t1) -master-bin.000001 28740 Write_rows 1 28774 table_id: # flags: STMT_END_F -master-bin.000001 28774 Table_map 1 28815 table_id: # (test.t1) -master-bin.000001 28815 Write_rows 1 28849 table_id: # flags: STMT_END_F -master-bin.000001 28849 Table_map 1 28890 table_id: # (test.t1) -master-bin.000001 28890 Write_rows 1 28924 table_id: # flags: STMT_END_F -master-bin.000001 28924 Table_map 1 28965 table_id: # (test.t1) -master-bin.000001 28965 Write_rows 1 28999 table_id: # flags: STMT_END_F -master-bin.000001 28999 Table_map 1 29040 table_id: # (test.t1) -master-bin.000001 29040 Write_rows 1 29074 table_id: # flags: STMT_END_F -master-bin.000001 29074 Table_map 1 29115 table_id: # (test.t1) -master-bin.000001 29115 Write_rows 1 29149 table_id: # flags: STMT_END_F -master-bin.000001 29149 Table_map 1 29190 table_id: # (test.t1) -master-bin.000001 29190 Write_rows 1 29224 table_id: # flags: STMT_END_F -master-bin.000001 29224 Table_map 1 29265 table_id: # (test.t1) -master-bin.000001 29265 Write_rows 1 29299 table_id: # flags: STMT_END_F -master-bin.000001 29299 Table_map 1 29340 table_id: # (test.t1) -master-bin.000001 29340 Write_rows 1 29374 table_id: # flags: STMT_END_F -master-bin.000001 29374 Table_map 1 29415 table_id: # (test.t1) -master-bin.000001 29415 Write_rows 1 29449 table_id: # flags: STMT_END_F -master-bin.000001 29449 Table_map 1 29490 table_id: # (test.t1) -master-bin.000001 29490 Write_rows 1 29524 table_id: # flags: STMT_END_F -master-bin.000001 29524 Table_map 1 29565 table_id: # (test.t1) -master-bin.000001 29565 Write_rows 1 29599 table_id: # flags: STMT_END_F -master-bin.000001 29599 Table_map 1 29640 table_id: # (test.t1) -master-bin.000001 29640 Write_rows 1 29674 table_id: # flags: STMT_END_F -master-bin.000001 29674 Table_map 1 29715 table_id: # (test.t1) -master-bin.000001 29715 Write_rows 1 29749 table_id: # flags: STMT_END_F -master-bin.000001 29749 Table_map 1 29790 table_id: # (test.t1) -master-bin.000001 29790 Write_rows 1 29824 table_id: # flags: STMT_END_F -master-bin.000001 29824 Table_map 1 29865 table_id: # (test.t1) -master-bin.000001 29865 Write_rows 1 29899 table_id: # flags: STMT_END_F -master-bin.000001 29899 Table_map 1 29940 table_id: # (test.t1) -master-bin.000001 29940 Write_rows 1 29974 table_id: # flags: STMT_END_F -master-bin.000001 29974 Table_map 1 30015 table_id: # (test.t1) -master-bin.000001 30015 Write_rows 1 30049 table_id: # flags: STMT_END_F -master-bin.000001 30049 Table_map 1 30090 table_id: # (test.t1) -master-bin.000001 30090 Write_rows 1 30124 table_id: # flags: STMT_END_F -master-bin.000001 30124 Table_map 1 30165 table_id: # (test.t1) -master-bin.000001 30165 Write_rows 1 30199 table_id: # flags: STMT_END_F -master-bin.000001 30199 Table_map 1 30240 table_id: # (test.t1) -master-bin.000001 30240 Write_rows 1 30274 table_id: # flags: STMT_END_F -master-bin.000001 30274 Xid 1 30301 COMMIT /* XID */ -master-bin.000001 30301 Rotate 1 30345 master-bin.000002;pos=4 +master-bin.000001 # Query # # use `test`; create table t1 (a int) engine=innodb +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Rotate # # master-bin.000002;pos=4 drop table t1; set global binlog_cache_size=@bcs; set session autocommit = @ac; @@ -1081,15 +1079,14 @@ set @b= 14632475938453979136; execute stmt using @a, @b; deallocate prepare stmt; drop table t1; -show binlog events from 0; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 -master-bin.000001 106 Query 1 227 use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned) -master-bin.000001 227 Query 1 295 BEGIN -master-bin.000001 295 Table_map 1 337 table_id: # (test.t1) -master-bin.000001 337 Write_rows 1 383 table_id: # flags: STMT_END_F -master-bin.000001 383 Query 1 452 COMMIT -master-bin.000001 452 Query 1 528 use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned) +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # use `test`; drop table t1 reset master; CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; USE bug39182; @@ -1289,14 +1286,14 @@ drop table if exists t3; create table t3 (a int(11) NOT NULL AUTO_INCREMENT, b text, PRIMARY KEY (a) ) engine=innodb; show master status; File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 346 +master-bin.000001 # insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); -show master status /* must show new binlog index after rotating */; +show master status; File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000002 106 +master-bin.000002 # drop table t3; # # Bug #45998: database crashes when running "create as select" diff --git a/mysql-test/suite/binlog/r/binlog_stm_binlog.result b/mysql-test/suite/binlog/r/binlog_stm_binlog.result index eebcfceaa25..f5ba4524c61 100644 --- a/mysql-test/suite/binlog/r/binlog_stm_binlog.result +++ b/mysql-test/suite/binlog/r/binlog_stm_binlog.result @@ -2,13 +2,12 @@ create table t1 (a int, b int) engine=innodb; begin; insert into t1 values (1,2); commit; -show binlog events; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server ver: #, Binlog ver: # -master-bin.000001 106 Query 1 213 use `test`; create table t1 (a int, b int) engine=innodb -master-bin.000001 213 Query 1 281 BEGIN -master-bin.000001 281 Query 1 371 use `test`; insert into t1 values (1,2) -master-bin.000001 371 Xid 1 398 COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; create table t1 (a int, b int) engine=innodb +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; insert into t1 values (1,2) +master-bin.000001 # Xid # # COMMIT /* XID */ drop table t1; drop table if exists t1, t2; reset master; @@ -36,115 +35,115 @@ create table t1 (n int) engine=innodb; begin; commit; drop table t1; -show binlog events in 'master-bin.000001' from 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1 (n int) engine=innodb -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test`; insert into t1 values(100 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(99 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(98 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(97 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(96 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(95 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(94 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(93 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(92 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(91 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(90 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(89 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(88 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(87 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(86 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(85 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(84 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(83 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(82 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(81 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(80 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(79 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(78 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(77 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(76 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(75 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(74 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(73 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(72 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(71 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(70 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(69 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(68 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(67 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(66 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(65 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(64 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(63 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(62 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(61 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(60 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(59 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(58 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(57 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(56 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(55 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(54 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(53 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(52 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(51 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(50 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(49 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(48 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(47 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(46 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(45 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(44 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(43 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(42 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(41 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(40 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(39 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(38 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(37 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(36 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(35 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(34 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(33 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(32 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(31 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(30 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(29 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(28 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(27 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(26 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(25 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(24 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(23 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(22 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(21 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(20 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(19 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(18 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(17 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(16 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(15 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(14 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(13 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(12 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(11 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(10 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(9 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(8 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(7 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(6 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(5 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(4 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(3 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(2 + 4) -master-bin.000001 # Query 1 # use `test`; insert into t1 values(1 + 4) -master-bin.000001 # Xid 1 # COMMIT /* xid= */ -master-bin.000001 # Rotate 1 # master-bin.000002;pos=4 -show binlog events in 'master-bin.000002' from 106; +master-bin.000001 # Query # # use `test`; create table t1 (n int) engine=innodb +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; insert into t1 values(100 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(99 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(98 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(97 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(96 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(95 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(94 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(93 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(92 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(91 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(90 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(89 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(88 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(87 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(86 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(85 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(84 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(83 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(82 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(81 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(80 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(79 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(78 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(77 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(76 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(75 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(74 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(73 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(72 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(71 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(70 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(69 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(68 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(67 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(66 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(65 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(64 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(63 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(62 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(61 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(60 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(59 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(58 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(57 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(56 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(55 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(54 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(53 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(52 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(51 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(50 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(49 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(48 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(47 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(46 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(45 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(44 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(43 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(42 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(41 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(40 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(39 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(38 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(37 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(36 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(35 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(34 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(33 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(32 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(31 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(30 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(29 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(28 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(27 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(26 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(25 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(24 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(23 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(22 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(21 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(20 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(19 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(18 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(17 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(16 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(15 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(14 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(13 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(12 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(11 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(10 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(9 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(8 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(7 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(6 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(5 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(4 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(3 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(2 + 4) +master-bin.000001 # Query # # use `test`; insert into t1 values(1 + 4) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Rotate # # master-bin.000002;pos=4 +show binlog events in 'master-bin.000002' from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000002 # Query 1 # use `test`; drop table t1 +master-bin.000002 # Query # # use `test`; drop table t1 set @ac = @@autocommit; set autocommit= 0; reset master; @@ -155,427 +154,425 @@ insert into t1 values (2); insert into t1 values (3); commit; drop table t1; -show binlog events from 0; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 -master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb -master-bin.000001 205 Query 1 273 BEGIN -master-bin.000001 273 Query 1 361 use `test`; insert into t1 values (1) -master-bin.000001 361 Query 1 449 use `test`; insert into t1 values (2) -master-bin.000001 449 Query 1 537 use `test`; insert into t1 values (3) -master-bin.000001 537 Xid 1 564 COMMIT /* XID */ -master-bin.000001 564 Query 1 640 use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; create table t1(n int) engine=innodb +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; insert into t1 values (1) +master-bin.000001 # Query # # use `test`; insert into t1 values (2) +master-bin.000001 # Query # # use `test`; insert into t1 values (3) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; drop table t1 set @bcs = @@binlog_cache_size; set global binlog_cache_size=4096; reset master; create table t1 (a int) engine=innodb; -show binlog events from 0; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 -master-bin.000001 106 Query 1 206 use `test`; create table t1 (a int) engine=innodb -master-bin.000001 206 Query 1 274 BEGIN -master-bin.000001 274 Query 1 365 use `test`; insert into t1 values( 400 ) -master-bin.000001 365 Query 1 456 use `test`; insert into t1 values( 399 ) -master-bin.000001 456 Query 1 547 use `test`; insert into t1 values( 398 ) -master-bin.000001 547 Query 1 638 use `test`; insert into t1 values( 397 ) -master-bin.000001 638 Query 1 729 use `test`; insert into t1 values( 396 ) -master-bin.000001 729 Query 1 820 use `test`; insert into t1 values( 395 ) -master-bin.000001 820 Query 1 911 use `test`; insert into t1 values( 394 ) -master-bin.000001 911 Query 1 1002 use `test`; insert into t1 values( 393 ) -master-bin.000001 1002 Query 1 1093 use `test`; insert into t1 values( 392 ) -master-bin.000001 1093 Query 1 1184 use `test`; insert into t1 values( 391 ) -master-bin.000001 1184 Query 1 1275 use `test`; insert into t1 values( 390 ) -master-bin.000001 1275 Query 1 1366 use `test`; insert into t1 values( 389 ) -master-bin.000001 1366 Query 1 1457 use `test`; insert into t1 values( 388 ) -master-bin.000001 1457 Query 1 1548 use `test`; insert into t1 values( 387 ) -master-bin.000001 1548 Query 1 1639 use `test`; insert into t1 values( 386 ) -master-bin.000001 1639 Query 1 1730 use `test`; insert into t1 values( 385 ) -master-bin.000001 1730 Query 1 1821 use `test`; insert into t1 values( 384 ) -master-bin.000001 1821 Query 1 1912 use `test`; insert into t1 values( 383 ) -master-bin.000001 1912 Query 1 2003 use `test`; insert into t1 values( 382 ) -master-bin.000001 2003 Query 1 2094 use `test`; insert into t1 values( 381 ) -master-bin.000001 2094 Query 1 2185 use `test`; insert into t1 values( 380 ) -master-bin.000001 2185 Query 1 2276 use `test`; insert into t1 values( 379 ) -master-bin.000001 2276 Query 1 2367 use `test`; insert into t1 values( 378 ) -master-bin.000001 2367 Query 1 2458 use `test`; insert into t1 values( 377 ) -master-bin.000001 2458 Query 1 2549 use `test`; insert into t1 values( 376 ) -master-bin.000001 2549 Query 1 2640 use `test`; insert into t1 values( 375 ) -master-bin.000001 2640 Query 1 2731 use `test`; insert into t1 values( 374 ) -master-bin.000001 2731 Query 1 2822 use `test`; insert into t1 values( 373 ) -master-bin.000001 2822 Query 1 2913 use `test`; insert into t1 values( 372 ) -master-bin.000001 2913 Query 1 3004 use `test`; insert into t1 values( 371 ) -master-bin.000001 3004 Query 1 3095 use `test`; insert into t1 values( 370 ) -master-bin.000001 3095 Query 1 3186 use `test`; insert into t1 values( 369 ) -master-bin.000001 3186 Query 1 3277 use `test`; insert into t1 values( 368 ) -master-bin.000001 3277 Query 1 3368 use `test`; insert into t1 values( 367 ) -master-bin.000001 3368 Query 1 3459 use `test`; insert into t1 values( 366 ) -master-bin.000001 3459 Query 1 3550 use `test`; insert into t1 values( 365 ) -master-bin.000001 3550 Query 1 3641 use `test`; insert into t1 values( 364 ) -master-bin.000001 3641 Query 1 3732 use `test`; insert into t1 values( 363 ) -master-bin.000001 3732 Query 1 3823 use `test`; insert into t1 values( 362 ) -master-bin.000001 3823 Query 1 3914 use `test`; insert into t1 values( 361 ) -master-bin.000001 3914 Query 1 4005 use `test`; insert into t1 values( 360 ) -master-bin.000001 4005 Query 1 4096 use `test`; insert into t1 values( 359 ) -master-bin.000001 4096 Query 1 4187 use `test`; insert into t1 values( 358 ) -master-bin.000001 4187 Query 1 4278 use `test`; insert into t1 values( 357 ) -master-bin.000001 4278 Query 1 4369 use `test`; insert into t1 values( 356 ) -master-bin.000001 4369 Query 1 4460 use `test`; insert into t1 values( 355 ) -master-bin.000001 4460 Query 1 4551 use `test`; insert into t1 values( 354 ) -master-bin.000001 4551 Query 1 4642 use `test`; insert into t1 values( 353 ) -master-bin.000001 4642 Query 1 4733 use `test`; insert into t1 values( 352 ) -master-bin.000001 4733 Query 1 4824 use `test`; insert into t1 values( 351 ) -master-bin.000001 4824 Query 1 4915 use `test`; insert into t1 values( 350 ) -master-bin.000001 4915 Query 1 5006 use `test`; insert into t1 values( 349 ) -master-bin.000001 5006 Query 1 5097 use `test`; insert into t1 values( 348 ) -master-bin.000001 5097 Query 1 5188 use `test`; insert into t1 values( 347 ) -master-bin.000001 5188 Query 1 5279 use `test`; insert into t1 values( 346 ) -master-bin.000001 5279 Query 1 5370 use `test`; insert into t1 values( 345 ) -master-bin.000001 5370 Query 1 5461 use `test`; insert into t1 values( 344 ) -master-bin.000001 5461 Query 1 5552 use `test`; insert into t1 values( 343 ) -master-bin.000001 5552 Query 1 5643 use `test`; insert into t1 values( 342 ) -master-bin.000001 5643 Query 1 5734 use `test`; insert into t1 values( 341 ) -master-bin.000001 5734 Query 1 5825 use `test`; insert into t1 values( 340 ) -master-bin.000001 5825 Query 1 5916 use `test`; insert into t1 values( 339 ) -master-bin.000001 5916 Query 1 6007 use `test`; insert into t1 values( 338 ) -master-bin.000001 6007 Query 1 6098 use `test`; insert into t1 values( 337 ) -master-bin.000001 6098 Query 1 6189 use `test`; insert into t1 values( 336 ) -master-bin.000001 6189 Query 1 6280 use `test`; insert into t1 values( 335 ) -master-bin.000001 6280 Query 1 6371 use `test`; insert into t1 values( 334 ) -master-bin.000001 6371 Query 1 6462 use `test`; insert into t1 values( 333 ) -master-bin.000001 6462 Query 1 6553 use `test`; insert into t1 values( 332 ) -master-bin.000001 6553 Query 1 6644 use `test`; insert into t1 values( 331 ) -master-bin.000001 6644 Query 1 6735 use `test`; insert into t1 values( 330 ) -master-bin.000001 6735 Query 1 6826 use `test`; insert into t1 values( 329 ) -master-bin.000001 6826 Query 1 6917 use `test`; insert into t1 values( 328 ) -master-bin.000001 6917 Query 1 7008 use `test`; insert into t1 values( 327 ) -master-bin.000001 7008 Query 1 7099 use `test`; insert into t1 values( 326 ) -master-bin.000001 7099 Query 1 7190 use `test`; insert into t1 values( 325 ) -master-bin.000001 7190 Query 1 7281 use `test`; insert into t1 values( 324 ) -master-bin.000001 7281 Query 1 7372 use `test`; insert into t1 values( 323 ) -master-bin.000001 7372 Query 1 7463 use `test`; insert into t1 values( 322 ) -master-bin.000001 7463 Query 1 7554 use `test`; insert into t1 values( 321 ) -master-bin.000001 7554 Query 1 7645 use `test`; insert into t1 values( 320 ) -master-bin.000001 7645 Query 1 7736 use `test`; insert into t1 values( 319 ) -master-bin.000001 7736 Query 1 7827 use `test`; insert into t1 values( 318 ) -master-bin.000001 7827 Query 1 7918 use `test`; insert into t1 values( 317 ) -master-bin.000001 7918 Query 1 8009 use `test`; insert into t1 values( 316 ) -master-bin.000001 8009 Query 1 8100 use `test`; insert into t1 values( 315 ) -master-bin.000001 8100 Query 1 8191 use `test`; insert into t1 values( 314 ) -master-bin.000001 8191 Query 1 8282 use `test`; insert into t1 values( 313 ) -master-bin.000001 8282 Query 1 8373 use `test`; insert into t1 values( 312 ) -master-bin.000001 8373 Query 1 8464 use `test`; insert into t1 values( 311 ) -master-bin.000001 8464 Query 1 8555 use `test`; insert into t1 values( 310 ) -master-bin.000001 8555 Query 1 8646 use `test`; insert into t1 values( 309 ) -master-bin.000001 8646 Query 1 8737 use `test`; insert into t1 values( 308 ) -master-bin.000001 8737 Query 1 8828 use `test`; insert into t1 values( 307 ) -master-bin.000001 8828 Query 1 8919 use `test`; insert into t1 values( 306 ) -master-bin.000001 8919 Query 1 9010 use `test`; insert into t1 values( 305 ) -master-bin.000001 9010 Query 1 9101 use `test`; insert into t1 values( 304 ) -master-bin.000001 9101 Query 1 9192 use `test`; insert into t1 values( 303 ) -master-bin.000001 9192 Query 1 9283 use `test`; insert into t1 values( 302 ) -master-bin.000001 9283 Query 1 9374 use `test`; insert into t1 values( 301 ) -master-bin.000001 9374 Query 1 9465 use `test`; insert into t1 values( 300 ) -master-bin.000001 9465 Query 1 9556 use `test`; insert into t1 values( 299 ) -master-bin.000001 9556 Query 1 9647 use `test`; insert into t1 values( 298 ) -master-bin.000001 9647 Query 1 9738 use `test`; insert into t1 values( 297 ) -master-bin.000001 9738 Query 1 9829 use `test`; insert into t1 values( 296 ) -master-bin.000001 9829 Query 1 9920 use `test`; insert into t1 values( 295 ) -master-bin.000001 9920 Query 1 10011 use `test`; insert into t1 values( 294 ) -master-bin.000001 10011 Query 1 10102 use `test`; insert into t1 values( 293 ) -master-bin.000001 10102 Query 1 10193 use `test`; insert into t1 values( 292 ) -master-bin.000001 10193 Query 1 10284 use `test`; insert into t1 values( 291 ) -master-bin.000001 10284 Query 1 10375 use `test`; insert into t1 values( 290 ) -master-bin.000001 10375 Query 1 10466 use `test`; insert into t1 values( 289 ) -master-bin.000001 10466 Query 1 10557 use `test`; insert into t1 values( 288 ) -master-bin.000001 10557 Query 1 10648 use `test`; insert into t1 values( 287 ) -master-bin.000001 10648 Query 1 10739 use `test`; insert into t1 values( 286 ) -master-bin.000001 10739 Query 1 10830 use `test`; insert into t1 values( 285 ) -master-bin.000001 10830 Query 1 10921 use `test`; insert into t1 values( 284 ) -master-bin.000001 10921 Query 1 11012 use `test`; insert into t1 values( 283 ) -master-bin.000001 11012 Query 1 11103 use `test`; insert into t1 values( 282 ) -master-bin.000001 11103 Query 1 11194 use `test`; insert into t1 values( 281 ) -master-bin.000001 11194 Query 1 11285 use `test`; insert into t1 values( 280 ) -master-bin.000001 11285 Query 1 11376 use `test`; insert into t1 values( 279 ) -master-bin.000001 11376 Query 1 11467 use `test`; insert into t1 values( 278 ) -master-bin.000001 11467 Query 1 11558 use `test`; insert into t1 values( 277 ) -master-bin.000001 11558 Query 1 11649 use `test`; insert into t1 values( 276 ) -master-bin.000001 11649 Query 1 11740 use `test`; insert into t1 values( 275 ) -master-bin.000001 11740 Query 1 11831 use `test`; insert into t1 values( 274 ) -master-bin.000001 11831 Query 1 11922 use `test`; insert into t1 values( 273 ) -master-bin.000001 11922 Query 1 12013 use `test`; insert into t1 values( 272 ) -master-bin.000001 12013 Query 1 12104 use `test`; insert into t1 values( 271 ) -master-bin.000001 12104 Query 1 12195 use `test`; insert into t1 values( 270 ) -master-bin.000001 12195 Query 1 12286 use `test`; insert into t1 values( 269 ) -master-bin.000001 12286 Query 1 12377 use `test`; insert into t1 values( 268 ) -master-bin.000001 12377 Query 1 12468 use `test`; insert into t1 values( 267 ) -master-bin.000001 12468 Query 1 12559 use `test`; insert into t1 values( 266 ) -master-bin.000001 12559 Query 1 12650 use `test`; insert into t1 values( 265 ) -master-bin.000001 12650 Query 1 12741 use `test`; insert into t1 values( 264 ) -master-bin.000001 12741 Query 1 12832 use `test`; insert into t1 values( 263 ) -master-bin.000001 12832 Query 1 12923 use `test`; insert into t1 values( 262 ) -master-bin.000001 12923 Query 1 13014 use `test`; insert into t1 values( 261 ) -master-bin.000001 13014 Query 1 13105 use `test`; insert into t1 values( 260 ) -master-bin.000001 13105 Query 1 13196 use `test`; insert into t1 values( 259 ) -master-bin.000001 13196 Query 1 13287 use `test`; insert into t1 values( 258 ) -master-bin.000001 13287 Query 1 13378 use `test`; insert into t1 values( 257 ) -master-bin.000001 13378 Query 1 13469 use `test`; insert into t1 values( 256 ) -master-bin.000001 13469 Query 1 13560 use `test`; insert into t1 values( 255 ) -master-bin.000001 13560 Query 1 13651 use `test`; insert into t1 values( 254 ) -master-bin.000001 13651 Query 1 13742 use `test`; insert into t1 values( 253 ) -master-bin.000001 13742 Query 1 13833 use `test`; insert into t1 values( 252 ) -master-bin.000001 13833 Query 1 13924 use `test`; insert into t1 values( 251 ) -master-bin.000001 13924 Query 1 14015 use `test`; insert into t1 values( 250 ) -master-bin.000001 14015 Query 1 14106 use `test`; insert into t1 values( 249 ) -master-bin.000001 14106 Query 1 14197 use `test`; insert into t1 values( 248 ) -master-bin.000001 14197 Query 1 14288 use `test`; insert into t1 values( 247 ) -master-bin.000001 14288 Query 1 14379 use `test`; insert into t1 values( 246 ) -master-bin.000001 14379 Query 1 14470 use `test`; insert into t1 values( 245 ) -master-bin.000001 14470 Query 1 14561 use `test`; insert into t1 values( 244 ) -master-bin.000001 14561 Query 1 14652 use `test`; insert into t1 values( 243 ) -master-bin.000001 14652 Query 1 14743 use `test`; insert into t1 values( 242 ) -master-bin.000001 14743 Query 1 14834 use `test`; insert into t1 values( 241 ) -master-bin.000001 14834 Query 1 14925 use `test`; insert into t1 values( 240 ) -master-bin.000001 14925 Query 1 15016 use `test`; insert into t1 values( 239 ) -master-bin.000001 15016 Query 1 15107 use `test`; insert into t1 values( 238 ) -master-bin.000001 15107 Query 1 15198 use `test`; insert into t1 values( 237 ) -master-bin.000001 15198 Query 1 15289 use `test`; insert into t1 values( 236 ) -master-bin.000001 15289 Query 1 15380 use `test`; insert into t1 values( 235 ) -master-bin.000001 15380 Query 1 15471 use `test`; insert into t1 values( 234 ) -master-bin.000001 15471 Query 1 15562 use `test`; insert into t1 values( 233 ) -master-bin.000001 15562 Query 1 15653 use `test`; insert into t1 values( 232 ) -master-bin.000001 15653 Query 1 15744 use `test`; insert into t1 values( 231 ) -master-bin.000001 15744 Query 1 15835 use `test`; insert into t1 values( 230 ) -master-bin.000001 15835 Query 1 15926 use `test`; insert into t1 values( 229 ) -master-bin.000001 15926 Query 1 16017 use `test`; insert into t1 values( 228 ) -master-bin.000001 16017 Query 1 16108 use `test`; insert into t1 values( 227 ) -master-bin.000001 16108 Query 1 16199 use `test`; insert into t1 values( 226 ) -master-bin.000001 16199 Query 1 16290 use `test`; insert into t1 values( 225 ) -master-bin.000001 16290 Query 1 16381 use `test`; insert into t1 values( 224 ) -master-bin.000001 16381 Query 1 16472 use `test`; insert into t1 values( 223 ) -master-bin.000001 16472 Query 1 16563 use `test`; insert into t1 values( 222 ) -master-bin.000001 16563 Query 1 16654 use `test`; insert into t1 values( 221 ) -master-bin.000001 16654 Query 1 16745 use `test`; insert into t1 values( 220 ) -master-bin.000001 16745 Query 1 16836 use `test`; insert into t1 values( 219 ) -master-bin.000001 16836 Query 1 16927 use `test`; insert into t1 values( 218 ) -master-bin.000001 16927 Query 1 17018 use `test`; insert into t1 values( 217 ) -master-bin.000001 17018 Query 1 17109 use `test`; insert into t1 values( 216 ) -master-bin.000001 17109 Query 1 17200 use `test`; insert into t1 values( 215 ) -master-bin.000001 17200 Query 1 17291 use `test`; insert into t1 values( 214 ) -master-bin.000001 17291 Query 1 17382 use `test`; insert into t1 values( 213 ) -master-bin.000001 17382 Query 1 17473 use `test`; insert into t1 values( 212 ) -master-bin.000001 17473 Query 1 17564 use `test`; insert into t1 values( 211 ) -master-bin.000001 17564 Query 1 17655 use `test`; insert into t1 values( 210 ) -master-bin.000001 17655 Query 1 17746 use `test`; insert into t1 values( 209 ) -master-bin.000001 17746 Query 1 17837 use `test`; insert into t1 values( 208 ) -master-bin.000001 17837 Query 1 17928 use `test`; insert into t1 values( 207 ) -master-bin.000001 17928 Query 1 18019 use `test`; insert into t1 values( 206 ) -master-bin.000001 18019 Query 1 18110 use `test`; insert into t1 values( 205 ) -master-bin.000001 18110 Query 1 18201 use `test`; insert into t1 values( 204 ) -master-bin.000001 18201 Query 1 18292 use `test`; insert into t1 values( 203 ) -master-bin.000001 18292 Query 1 18383 use `test`; insert into t1 values( 202 ) -master-bin.000001 18383 Query 1 18474 use `test`; insert into t1 values( 201 ) -master-bin.000001 18474 Query 1 18565 use `test`; insert into t1 values( 200 ) -master-bin.000001 18565 Query 1 18656 use `test`; insert into t1 values( 199 ) -master-bin.000001 18656 Query 1 18747 use `test`; insert into t1 values( 198 ) -master-bin.000001 18747 Query 1 18838 use `test`; insert into t1 values( 197 ) -master-bin.000001 18838 Query 1 18929 use `test`; insert into t1 values( 196 ) -master-bin.000001 18929 Query 1 19020 use `test`; insert into t1 values( 195 ) -master-bin.000001 19020 Query 1 19111 use `test`; insert into t1 values( 194 ) -master-bin.000001 19111 Query 1 19202 use `test`; insert into t1 values( 193 ) -master-bin.000001 19202 Query 1 19293 use `test`; insert into t1 values( 192 ) -master-bin.000001 19293 Query 1 19384 use `test`; insert into t1 values( 191 ) -master-bin.000001 19384 Query 1 19475 use `test`; insert into t1 values( 190 ) -master-bin.000001 19475 Query 1 19566 use `test`; insert into t1 values( 189 ) -master-bin.000001 19566 Query 1 19657 use `test`; insert into t1 values( 188 ) -master-bin.000001 19657 Query 1 19748 use `test`; insert into t1 values( 187 ) -master-bin.000001 19748 Query 1 19839 use `test`; insert into t1 values( 186 ) -master-bin.000001 19839 Query 1 19930 use `test`; insert into t1 values( 185 ) -master-bin.000001 19930 Query 1 20021 use `test`; insert into t1 values( 184 ) -master-bin.000001 20021 Query 1 20112 use `test`; insert into t1 values( 183 ) -master-bin.000001 20112 Query 1 20203 use `test`; insert into t1 values( 182 ) -master-bin.000001 20203 Query 1 20294 use `test`; insert into t1 values( 181 ) -master-bin.000001 20294 Query 1 20385 use `test`; insert into t1 values( 180 ) -master-bin.000001 20385 Query 1 20476 use `test`; insert into t1 values( 179 ) -master-bin.000001 20476 Query 1 20567 use `test`; insert into t1 values( 178 ) -master-bin.000001 20567 Query 1 20658 use `test`; insert into t1 values( 177 ) -master-bin.000001 20658 Query 1 20749 use `test`; insert into t1 values( 176 ) -master-bin.000001 20749 Query 1 20840 use `test`; insert into t1 values( 175 ) -master-bin.000001 20840 Query 1 20931 use `test`; insert into t1 values( 174 ) -master-bin.000001 20931 Query 1 21022 use `test`; insert into t1 values( 173 ) -master-bin.000001 21022 Query 1 21113 use `test`; insert into t1 values( 172 ) -master-bin.000001 21113 Query 1 21204 use `test`; insert into t1 values( 171 ) -master-bin.000001 21204 Query 1 21295 use `test`; insert into t1 values( 170 ) -master-bin.000001 21295 Query 1 21386 use `test`; insert into t1 values( 169 ) -master-bin.000001 21386 Query 1 21477 use `test`; insert into t1 values( 168 ) -master-bin.000001 21477 Query 1 21568 use `test`; insert into t1 values( 167 ) -master-bin.000001 21568 Query 1 21659 use `test`; insert into t1 values( 166 ) -master-bin.000001 21659 Query 1 21750 use `test`; insert into t1 values( 165 ) -master-bin.000001 21750 Query 1 21841 use `test`; insert into t1 values( 164 ) -master-bin.000001 21841 Query 1 21932 use `test`; insert into t1 values( 163 ) -master-bin.000001 21932 Query 1 22023 use `test`; insert into t1 values( 162 ) -master-bin.000001 22023 Query 1 22114 use `test`; insert into t1 values( 161 ) -master-bin.000001 22114 Query 1 22205 use `test`; insert into t1 values( 160 ) -master-bin.000001 22205 Query 1 22296 use `test`; insert into t1 values( 159 ) -master-bin.000001 22296 Query 1 22387 use `test`; insert into t1 values( 158 ) -master-bin.000001 22387 Query 1 22478 use `test`; insert into t1 values( 157 ) -master-bin.000001 22478 Query 1 22569 use `test`; insert into t1 values( 156 ) -master-bin.000001 22569 Query 1 22660 use `test`; insert into t1 values( 155 ) -master-bin.000001 22660 Query 1 22751 use `test`; insert into t1 values( 154 ) -master-bin.000001 22751 Query 1 22842 use `test`; insert into t1 values( 153 ) -master-bin.000001 22842 Query 1 22933 use `test`; insert into t1 values( 152 ) -master-bin.000001 22933 Query 1 23024 use `test`; insert into t1 values( 151 ) -master-bin.000001 23024 Query 1 23115 use `test`; insert into t1 values( 150 ) -master-bin.000001 23115 Query 1 23206 use `test`; insert into t1 values( 149 ) -master-bin.000001 23206 Query 1 23297 use `test`; insert into t1 values( 148 ) -master-bin.000001 23297 Query 1 23388 use `test`; insert into t1 values( 147 ) -master-bin.000001 23388 Query 1 23479 use `test`; insert into t1 values( 146 ) -master-bin.000001 23479 Query 1 23570 use `test`; insert into t1 values( 145 ) -master-bin.000001 23570 Query 1 23661 use `test`; insert into t1 values( 144 ) -master-bin.000001 23661 Query 1 23752 use `test`; insert into t1 values( 143 ) -master-bin.000001 23752 Query 1 23843 use `test`; insert into t1 values( 142 ) -master-bin.000001 23843 Query 1 23934 use `test`; insert into t1 values( 141 ) -master-bin.000001 23934 Query 1 24025 use `test`; insert into t1 values( 140 ) -master-bin.000001 24025 Query 1 24116 use `test`; insert into t1 values( 139 ) -master-bin.000001 24116 Query 1 24207 use `test`; insert into t1 values( 138 ) -master-bin.000001 24207 Query 1 24298 use `test`; insert into t1 values( 137 ) -master-bin.000001 24298 Query 1 24389 use `test`; insert into t1 values( 136 ) -master-bin.000001 24389 Query 1 24480 use `test`; insert into t1 values( 135 ) -master-bin.000001 24480 Query 1 24571 use `test`; insert into t1 values( 134 ) -master-bin.000001 24571 Query 1 24662 use `test`; insert into t1 values( 133 ) -master-bin.000001 24662 Query 1 24753 use `test`; insert into t1 values( 132 ) -master-bin.000001 24753 Query 1 24844 use `test`; insert into t1 values( 131 ) -master-bin.000001 24844 Query 1 24935 use `test`; insert into t1 values( 130 ) -master-bin.000001 24935 Query 1 25026 use `test`; insert into t1 values( 129 ) -master-bin.000001 25026 Query 1 25117 use `test`; insert into t1 values( 128 ) -master-bin.000001 25117 Query 1 25208 use `test`; insert into t1 values( 127 ) -master-bin.000001 25208 Query 1 25299 use `test`; insert into t1 values( 126 ) -master-bin.000001 25299 Query 1 25390 use `test`; insert into t1 values( 125 ) -master-bin.000001 25390 Query 1 25481 use `test`; insert into t1 values( 124 ) -master-bin.000001 25481 Query 1 25572 use `test`; insert into t1 values( 123 ) -master-bin.000001 25572 Query 1 25663 use `test`; insert into t1 values( 122 ) -master-bin.000001 25663 Query 1 25754 use `test`; insert into t1 values( 121 ) -master-bin.000001 25754 Query 1 25845 use `test`; insert into t1 values( 120 ) -master-bin.000001 25845 Query 1 25936 use `test`; insert into t1 values( 119 ) -master-bin.000001 25936 Query 1 26027 use `test`; insert into t1 values( 118 ) -master-bin.000001 26027 Query 1 26118 use `test`; insert into t1 values( 117 ) -master-bin.000001 26118 Query 1 26209 use `test`; insert into t1 values( 116 ) -master-bin.000001 26209 Query 1 26300 use `test`; insert into t1 values( 115 ) -master-bin.000001 26300 Query 1 26391 use `test`; insert into t1 values( 114 ) -master-bin.000001 26391 Query 1 26482 use `test`; insert into t1 values( 113 ) -master-bin.000001 26482 Query 1 26573 use `test`; insert into t1 values( 112 ) -master-bin.000001 26573 Query 1 26664 use `test`; insert into t1 values( 111 ) -master-bin.000001 26664 Query 1 26755 use `test`; insert into t1 values( 110 ) -master-bin.000001 26755 Query 1 26846 use `test`; insert into t1 values( 109 ) -master-bin.000001 26846 Query 1 26937 use `test`; insert into t1 values( 108 ) -master-bin.000001 26937 Query 1 27028 use `test`; insert into t1 values( 107 ) -master-bin.000001 27028 Query 1 27119 use `test`; insert into t1 values( 106 ) -master-bin.000001 27119 Query 1 27210 use `test`; insert into t1 values( 105 ) -master-bin.000001 27210 Query 1 27301 use `test`; insert into t1 values( 104 ) -master-bin.000001 27301 Query 1 27392 use `test`; insert into t1 values( 103 ) -master-bin.000001 27392 Query 1 27483 use `test`; insert into t1 values( 102 ) -master-bin.000001 27483 Query 1 27574 use `test`; insert into t1 values( 101 ) -master-bin.000001 27574 Query 1 27665 use `test`; insert into t1 values( 100 ) -master-bin.000001 27665 Query 1 27755 use `test`; insert into t1 values( 99 ) -master-bin.000001 27755 Query 1 27845 use `test`; insert into t1 values( 98 ) -master-bin.000001 27845 Query 1 27935 use `test`; insert into t1 values( 97 ) -master-bin.000001 27935 Query 1 28025 use `test`; insert into t1 values( 96 ) -master-bin.000001 28025 Query 1 28115 use `test`; insert into t1 values( 95 ) -master-bin.000001 28115 Query 1 28205 use `test`; insert into t1 values( 94 ) -master-bin.000001 28205 Query 1 28295 use `test`; insert into t1 values( 93 ) -master-bin.000001 28295 Query 1 28385 use `test`; insert into t1 values( 92 ) -master-bin.000001 28385 Query 1 28475 use `test`; insert into t1 values( 91 ) -master-bin.000001 28475 Query 1 28565 use `test`; insert into t1 values( 90 ) -master-bin.000001 28565 Query 1 28655 use `test`; insert into t1 values( 89 ) -master-bin.000001 28655 Query 1 28745 use `test`; insert into t1 values( 88 ) -master-bin.000001 28745 Query 1 28835 use `test`; insert into t1 values( 87 ) -master-bin.000001 28835 Query 1 28925 use `test`; insert into t1 values( 86 ) -master-bin.000001 28925 Query 1 29015 use `test`; insert into t1 values( 85 ) -master-bin.000001 29015 Query 1 29105 use `test`; insert into t1 values( 84 ) -master-bin.000001 29105 Query 1 29195 use `test`; insert into t1 values( 83 ) -master-bin.000001 29195 Query 1 29285 use `test`; insert into t1 values( 82 ) -master-bin.000001 29285 Query 1 29375 use `test`; insert into t1 values( 81 ) -master-bin.000001 29375 Query 1 29465 use `test`; insert into t1 values( 80 ) -master-bin.000001 29465 Query 1 29555 use `test`; insert into t1 values( 79 ) -master-bin.000001 29555 Query 1 29645 use `test`; insert into t1 values( 78 ) -master-bin.000001 29645 Query 1 29735 use `test`; insert into t1 values( 77 ) -master-bin.000001 29735 Query 1 29825 use `test`; insert into t1 values( 76 ) -master-bin.000001 29825 Query 1 29915 use `test`; insert into t1 values( 75 ) -master-bin.000001 29915 Query 1 30005 use `test`; insert into t1 values( 74 ) -master-bin.000001 30005 Query 1 30095 use `test`; insert into t1 values( 73 ) -master-bin.000001 30095 Query 1 30185 use `test`; insert into t1 values( 72 ) -master-bin.000001 30185 Query 1 30275 use `test`; insert into t1 values( 71 ) -master-bin.000001 30275 Query 1 30365 use `test`; insert into t1 values( 70 ) -master-bin.000001 30365 Query 1 30455 use `test`; insert into t1 values( 69 ) -master-bin.000001 30455 Query 1 30545 use `test`; insert into t1 values( 68 ) -master-bin.000001 30545 Query 1 30635 use `test`; insert into t1 values( 67 ) -master-bin.000001 30635 Query 1 30725 use `test`; insert into t1 values( 66 ) -master-bin.000001 30725 Query 1 30815 use `test`; insert into t1 values( 65 ) -master-bin.000001 30815 Query 1 30905 use `test`; insert into t1 values( 64 ) -master-bin.000001 30905 Query 1 30995 use `test`; insert into t1 values( 63 ) -master-bin.000001 30995 Query 1 31085 use `test`; insert into t1 values( 62 ) -master-bin.000001 31085 Query 1 31175 use `test`; insert into t1 values( 61 ) -master-bin.000001 31175 Query 1 31265 use `test`; insert into t1 values( 60 ) -master-bin.000001 31265 Query 1 31355 use `test`; insert into t1 values( 59 ) -master-bin.000001 31355 Query 1 31445 use `test`; insert into t1 values( 58 ) -master-bin.000001 31445 Query 1 31535 use `test`; insert into t1 values( 57 ) -master-bin.000001 31535 Query 1 31625 use `test`; insert into t1 values( 56 ) -master-bin.000001 31625 Query 1 31715 use `test`; insert into t1 values( 55 ) -master-bin.000001 31715 Query 1 31805 use `test`; insert into t1 values( 54 ) -master-bin.000001 31805 Query 1 31895 use `test`; insert into t1 values( 53 ) -master-bin.000001 31895 Query 1 31985 use `test`; insert into t1 values( 52 ) -master-bin.000001 31985 Query 1 32075 use `test`; insert into t1 values( 51 ) -master-bin.000001 32075 Query 1 32165 use `test`; insert into t1 values( 50 ) -master-bin.000001 32165 Query 1 32255 use `test`; insert into t1 values( 49 ) -master-bin.000001 32255 Query 1 32345 use `test`; insert into t1 values( 48 ) -master-bin.000001 32345 Query 1 32435 use `test`; insert into t1 values( 47 ) -master-bin.000001 32435 Query 1 32525 use `test`; insert into t1 values( 46 ) -master-bin.000001 32525 Query 1 32615 use `test`; insert into t1 values( 45 ) -master-bin.000001 32615 Query 1 32705 use `test`; insert into t1 values( 44 ) -master-bin.000001 32705 Query 1 32795 use `test`; insert into t1 values( 43 ) -master-bin.000001 32795 Query 1 32885 use `test`; insert into t1 values( 42 ) -master-bin.000001 32885 Query 1 32975 use `test`; insert into t1 values( 41 ) -master-bin.000001 32975 Query 1 33065 use `test`; insert into t1 values( 40 ) -master-bin.000001 33065 Query 1 33155 use `test`; insert into t1 values( 39 ) -master-bin.000001 33155 Query 1 33245 use `test`; insert into t1 values( 38 ) -master-bin.000001 33245 Query 1 33335 use `test`; insert into t1 values( 37 ) -master-bin.000001 33335 Query 1 33425 use `test`; insert into t1 values( 36 ) -master-bin.000001 33425 Query 1 33515 use `test`; insert into t1 values( 35 ) -master-bin.000001 33515 Query 1 33605 use `test`; insert into t1 values( 34 ) -master-bin.000001 33605 Query 1 33695 use `test`; insert into t1 values( 33 ) -master-bin.000001 33695 Query 1 33785 use `test`; insert into t1 values( 32 ) -master-bin.000001 33785 Query 1 33875 use `test`; insert into t1 values( 31 ) -master-bin.000001 33875 Query 1 33965 use `test`; insert into t1 values( 30 ) -master-bin.000001 33965 Query 1 34055 use `test`; insert into t1 values( 29 ) -master-bin.000001 34055 Query 1 34145 use `test`; insert into t1 values( 28 ) -master-bin.000001 34145 Query 1 34235 use `test`; insert into t1 values( 27 ) -master-bin.000001 34235 Query 1 34325 use `test`; insert into t1 values( 26 ) -master-bin.000001 34325 Query 1 34415 use `test`; insert into t1 values( 25 ) -master-bin.000001 34415 Query 1 34505 use `test`; insert into t1 values( 24 ) -master-bin.000001 34505 Query 1 34595 use `test`; insert into t1 values( 23 ) -master-bin.000001 34595 Query 1 34685 use `test`; insert into t1 values( 22 ) -master-bin.000001 34685 Query 1 34775 use `test`; insert into t1 values( 21 ) -master-bin.000001 34775 Query 1 34865 use `test`; insert into t1 values( 20 ) -master-bin.000001 34865 Query 1 34955 use `test`; insert into t1 values( 19 ) -master-bin.000001 34955 Query 1 35045 use `test`; insert into t1 values( 18 ) -master-bin.000001 35045 Query 1 35135 use `test`; insert into t1 values( 17 ) -master-bin.000001 35135 Query 1 35225 use `test`; insert into t1 values( 16 ) -master-bin.000001 35225 Query 1 35315 use `test`; insert into t1 values( 15 ) -master-bin.000001 35315 Query 1 35405 use `test`; insert into t1 values( 14 ) -master-bin.000001 35405 Query 1 35495 use `test`; insert into t1 values( 13 ) -master-bin.000001 35495 Query 1 35585 use `test`; insert into t1 values( 12 ) -master-bin.000001 35585 Query 1 35675 use `test`; insert into t1 values( 11 ) -master-bin.000001 35675 Query 1 35765 use `test`; insert into t1 values( 10 ) -master-bin.000001 35765 Query 1 35854 use `test`; insert into t1 values( 9 ) -master-bin.000001 35854 Query 1 35943 use `test`; insert into t1 values( 8 ) -master-bin.000001 35943 Query 1 36032 use `test`; insert into t1 values( 7 ) -master-bin.000001 36032 Query 1 36121 use `test`; insert into t1 values( 6 ) -master-bin.000001 36121 Query 1 36210 use `test`; insert into t1 values( 5 ) -master-bin.000001 36210 Query 1 36299 use `test`; insert into t1 values( 4 ) -master-bin.000001 36299 Query 1 36388 use `test`; insert into t1 values( 3 ) -master-bin.000001 36388 Query 1 36477 use `test`; insert into t1 values( 2 ) -master-bin.000001 36477 Query 1 36566 use `test`; insert into t1 values( 1 ) -master-bin.000001 36566 Xid 1 36593 COMMIT /* XID */ -master-bin.000001 36593 Rotate 1 36637 master-bin.000002;pos=4 +master-bin.000001 # Query # # use `test`; create table t1 (a int) engine=innodb +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; insert into t1 values( 400 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 399 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 398 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 397 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 396 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 395 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 394 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 393 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 392 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 391 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 390 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 389 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 388 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 387 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 386 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 385 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 384 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 383 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 382 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 381 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 380 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 379 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 378 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 377 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 376 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 375 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 374 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 373 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 372 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 371 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 370 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 369 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 368 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 367 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 366 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 365 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 364 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 363 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 362 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 361 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 360 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 359 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 358 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 357 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 356 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 355 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 354 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 353 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 352 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 351 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 350 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 349 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 348 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 347 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 346 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 345 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 344 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 343 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 342 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 341 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 340 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 339 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 338 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 337 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 336 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 335 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 334 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 333 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 332 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 331 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 330 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 329 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 328 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 327 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 326 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 325 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 324 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 323 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 322 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 321 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 320 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 319 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 318 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 317 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 316 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 315 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 314 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 313 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 312 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 311 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 310 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 309 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 308 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 307 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 306 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 305 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 304 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 303 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 302 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 301 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 300 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 299 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 298 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 297 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 296 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 295 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 294 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 293 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 292 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 291 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 290 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 289 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 288 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 287 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 286 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 285 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 284 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 283 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 282 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 281 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 280 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 279 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 278 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 277 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 276 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 275 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 274 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 273 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 272 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 271 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 270 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 269 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 268 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 267 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 266 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 265 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 264 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 263 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 262 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 261 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 260 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 259 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 258 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 257 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 256 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 255 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 254 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 253 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 252 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 251 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 250 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 249 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 248 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 247 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 246 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 245 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 244 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 243 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 242 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 241 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 240 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 239 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 238 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 237 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 236 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 235 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 234 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 233 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 232 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 231 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 230 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 229 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 228 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 227 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 226 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 225 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 224 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 223 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 222 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 221 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 220 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 219 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 218 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 217 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 216 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 215 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 214 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 213 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 212 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 211 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 210 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 209 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 208 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 207 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 206 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 205 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 204 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 203 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 202 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 201 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 200 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 199 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 198 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 197 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 196 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 195 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 194 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 193 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 192 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 191 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 190 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 189 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 188 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 187 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 186 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 185 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 184 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 183 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 182 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 181 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 180 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 179 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 178 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 177 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 176 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 175 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 174 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 173 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 172 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 171 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 170 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 169 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 168 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 167 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 166 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 165 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 164 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 163 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 162 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 161 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 160 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 159 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 158 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 157 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 156 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 155 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 154 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 153 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 152 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 151 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 150 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 149 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 148 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 147 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 146 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 145 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 144 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 143 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 142 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 141 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 140 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 139 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 138 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 137 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 136 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 135 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 134 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 133 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 132 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 131 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 130 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 129 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 128 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 127 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 126 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 125 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 124 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 123 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 122 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 121 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 120 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 119 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 118 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 117 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 116 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 115 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 114 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 113 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 112 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 111 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 110 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 109 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 108 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 107 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 105 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 104 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 103 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 102 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 101 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 100 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 99 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 98 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 97 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 96 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 95 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 94 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 93 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 92 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 91 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 90 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 89 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 88 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 87 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 86 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 85 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 84 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 83 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 82 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 81 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 80 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 79 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 78 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 77 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 76 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 75 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 74 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 73 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 72 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 71 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 70 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 69 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 68 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 67 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 66 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 65 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 64 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 63 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 62 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 61 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 60 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 59 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 58 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 57 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 56 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 55 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 54 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 53 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 52 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 51 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 50 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 49 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 48 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 47 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 46 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 45 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 44 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 43 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 42 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 41 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 40 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 39 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 38 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 37 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 36 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 35 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 34 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 33 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 32 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 31 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 30 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 29 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 28 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 27 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 26 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 25 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 24 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 23 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 22 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 21 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 20 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 19 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 18 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 17 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 16 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 15 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 14 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 13 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 12 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 11 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 10 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 9 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 8 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 7 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 6 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 5 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 4 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 3 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 2 ) +master-bin.000001 # Query # # use `test`; insert into t1 values( 1 ) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Rotate # # master-bin.000002;pos=4 drop table t1; set global binlog_cache_size=@bcs; set session autocommit = @ac; @@ -588,12 +585,11 @@ set @b= 14632475938453979136; execute stmt using @a, @b; deallocate prepare stmt; drop table t1; -show binlog events from 0; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4 -master-bin.000001 106 Query 1 227 use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned) -master-bin.000001 227 Query 1 351 use `test`; insert into t1 values (9999999999999999,14632475938453979136) -master-bin.000001 351 Query 1 427 use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned) +master-bin.000001 # Query # # use `test`; insert into t1 values (9999999999999999,14632475938453979136) +master-bin.000001 # Query # # use `test`; drop table t1 reset master; CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; USE bug39182; @@ -764,14 +760,14 @@ drop table if exists t3; create table t3 (a int(11) NOT NULL AUTO_INCREMENT, b text, PRIMARY KEY (a) ) engine=innodb; show master status; File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 346 +master-bin.000001 # insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); -show master status /* must show new binlog index after rotating */; +show master status; File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000002 106 +master-bin.000002 # drop table t3; # # Bug #45998: database crashes when running "create as select" diff --git a/mysql-test/suite/binlog/r/binlog_stm_blackhole.result b/mysql-test/suite/binlog/r/binlog_stm_blackhole.result index b2e6ac854cf..a47ab2ce932 100644 --- a/mysql-test/suite/binlog/r/binlog_stm_blackhole.result +++ b/mysql-test/suite/binlog/r/binlog_stm_blackhole.result @@ -104,9 +104,8 @@ select * from t2; a select * from t3; a -show binlog events; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Format_desc # # Server ver: VERSION, Binlog ver: 4 master-bin.000001 # Query # # use `test`; drop table t1,t2 master-bin.000001 # Query # # use `test`; create table t1 (a int) engine=blackhole master-bin.000001 # Query # # BEGIN @@ -126,7 +125,7 @@ master-bin.000001 # Query # # use `test`; replace into t1 values(100) master-bin.000001 # Query # # COMMIT master-bin.000001 # Query # # use `test`; create table t2 (a varchar(200)) engine=blackhole master-bin.000001 # Query # # BEGIN -master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=581 +master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE `t2` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`) ;file_id=# master-bin.000001 # Query # # COMMIT master-bin.000001 # Query # # use `test`; alter table t1 add b int @@ -163,13 +162,6 @@ start transaction; insert into t1 values(2); rollback; set autocommit=1; -show binlog events; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Format_desc # # Server ver: VERSION, Binlog ver: 4 -master-bin.000001 # Query # # use `test`; create table t1 (a int) engine=blackhole -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Query # # use `test`; insert into t1 values(1) -master-bin.000001 # Query # # COMMIT drop table if exists t1; reset master; create table t1 (a int auto_increment, primary key (a)) engine=blackhole; diff --git a/mysql-test/suite/binlog/t/binlog_innodb.test b/mysql-test/suite/binlog/t/binlog_innodb.test index f84fd65226a..2914cd1dcc5 100644 --- a/mysql-test/suite/binlog/t/binlog_innodb.test +++ b/mysql-test/suite/binlog/t/binlog_innodb.test @@ -155,7 +155,8 @@ reset master; UPDATE t2,t1 SET t2.a=t1.a+2; # check select * from t2 /* must be (3,1), (4,4) */; -show master status /* there must no UPDATE in binlog */; +--echo # There must no UPDATE in binlog; +source include/show_binlog_events.inc; # B. testing multi_update::send_error() execution branch delete from t1; @@ -165,7 +166,8 @@ insert into t2 values (1,2),(3,4),(4,4); reset master; --error ER_DUP_ENTRY UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a; -show master status /* there must be no UPDATE query event */; +--echo # There must be no UPDATE query event; +source include/show_binlog_events.inc; # cleanup bug#27716 drop table t1, t2; diff --git a/mysql-test/suite/binlog/t/binlog_stm_binlog.test b/mysql-test/suite/binlog/t/binlog_stm_binlog.test index 280b7a3aef9..d18c2b4cd77 100644 --- a/mysql-test/suite/binlog/t/binlog_stm_binlog.test +++ b/mysql-test/suite/binlog/t/binlog_stm_binlog.test @@ -5,8 +5,7 @@ create table t1 (a int, b int) engine=innodb; begin; insert into t1 values (1,2); commit; ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /Server ver: .*, Binlog ver: .*/Server ver: #, Binlog ver: #/ /table_id: [0-9]+/table_id: #/ -show binlog events; +source include/show_binlog_events.inc; drop table t1; # This is a wrapper for binlog.test so that the same test case can be used diff --git a/mysql-test/suite/bugs/r/rpl_bug12691.result b/mysql-test/suite/bugs/r/rpl_bug12691.result index 69d5e8009b0..8feeb0effc3 100644 --- a/mysql-test/suite/bugs/r/rpl_bug12691.result +++ b/mysql-test/suite/bugs/r/rpl_bug12691.result @@ -16,12 +16,11 @@ LOAD DATA INFILE FILENAME SELECT COUNT(*) FROM t1; COUNT(*) 3 -SHOW BINLOG EVENTS; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Format_desc 1 # Server ver: # -master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1 (b CHAR(10)) -master-bin.000001 # Begin_load_query 1 # ;file_id=#;block_len=# -master-bin.000001 # Execute_load_query 1 # use `test`; LOAD DATA INFILE FILENAME ;file_id=# +master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (b CHAR(10)) +master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# +master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/rpl_bug12691.dat' INTO TABLE `t1` FIELDS TERMINATED BY '|' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`b`) ;file_id=# **** On Slave **** SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; diff --git a/mysql-test/suite/bugs/r/rpl_bug36391.result b/mysql-test/suite/bugs/r/rpl_bug36391.result index 2d62837a87a..33175d89d30 100644 --- a/mysql-test/suite/bugs/r/rpl_bug36391.result +++ b/mysql-test/suite/bugs/r/rpl_bug36391.result @@ -13,5 +13,6 @@ Tables_in_test t1 show master status; File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 278 +master-bin.000001 # flush logs; +drop table t1; diff --git a/mysql-test/suite/bugs/t/rpl_bug12691.test b/mysql-test/suite/bugs/t/rpl_bug12691.test index b29c85584a5..28d7f16935e 100644 --- a/mysql-test/suite/bugs/t/rpl_bug12691.test +++ b/mysql-test/suite/bugs/t/rpl_bug12691.test @@ -28,9 +28,7 @@ STOP SLAVE; SELECT COUNT(*) FROM t1; ---replace_column 2 # 5 # ---replace_regex /Server ver: .+/Server ver: #/ /table_id: [0-9]+/table_id: #/ /COMMIT.+xid=[0-9]+.+/#/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /'.+'/FILENAME/ -SHOW BINLOG EVENTS; +source include/show_binlog_events.inc; --save_master_pos diff --git a/mysql-test/suite/bugs/t/rpl_bug36391.test b/mysql-test/suite/bugs/t/rpl_bug36391.test index 9f384304837..8bca9a46c5a 100644 --- a/mysql-test/suite/bugs/t/rpl_bug36391.test +++ b/mysql-test/suite/bugs/t/rpl_bug36391.test @@ -21,8 +21,10 @@ create table t1(id int); show tables; -show master status; +--source include/show_master_status.inc flush logs; --exec $MYSQL_BINLOG $MYSQL_TEST_DIR/var/log/master-bin.000001 | $MYSQL test + +drop table t1; diff --git a/mysql-test/suite/engines/funcs/r/rpl_000015.result b/mysql-test/suite/engines/funcs/r/rpl_000015.result index eee3b505ad6..8cd48141127 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_000015.result +++ b/mysql-test/suite/engines/funcs/r/rpl_000015.result @@ -10,166 +10,25 @@ File Position Binlog_Do_DB Binlog_Ignore_DB master-bin.000001 106 stop slave; reset slave; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry # Master_Log_File Read_Master_Log_Pos 4 -Relay_Log_File # -Relay_Log_Pos # Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 Exec_Master_Log_Pos 0 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error change master to master_host='127.0.0.1'; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry # Master_Log_File Read_Master_Log_Pos 4 -Relay_Log_File # -Relay_Log_Pos # Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 Exec_Master_Log_Pos 0 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error change master to master_host='127.0.0.1',master_user='root', master_password='',master_port=MASTER_PORT; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry # Master_Log_File Read_Master_Log_Pos 4 -Relay_Log_File # -Relay_Log_Pos # Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 Exec_Master_Log_Pos 0 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error start slave; -show slave status; -Slave_IO_State Waiting for master to send event -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 Master_Log_File master-bin.000001 -Read_Master_Log_Pos 106 -Relay_Log_File slave-relay-bin.000002 -Relay_Log_Pos 252 Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 106 -Relay_Log_Space 407 -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. drop table if exists t1; create table t1 (n int, PRIMARY KEY(n)); insert into t1 values (10),(45),(90); diff --git a/mysql-test/suite/engines/funcs/r/rpl_REDIRECT.result b/mysql-test/suite/engines/funcs/r/rpl_REDIRECT.result index 7a901b65810..b6cb2c0e7de 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_REDIRECT.result +++ b/mysql-test/suite/engines/funcs/r/rpl_REDIRECT.result @@ -4,8 +4,7 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -SHOW SLAVE STATUS; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error +SHOW SLAVE STATUS;; SHOW SLAVE HOSTS; Server_id Host Port Rpl_recovery_rank Master_id 2 127.0.0.1 SLAVE_PORT 0 1 diff --git a/mysql-test/suite/engines/funcs/r/rpl_change_master.result b/mysql-test/suite/engines/funcs/r/rpl_change_master.result index 62c5ffdd4f8..2258a35a869 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_change_master.result +++ b/mysql-test/suite/engines/funcs/r/rpl_change_master.result @@ -11,13 +11,7 @@ stop slave sql_thread; insert into t1 values(1); insert into t1 values(2); stop slave; -show slave status; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error -# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 # # # master-bin.000001 No No 0 0 191 # None 0 No # No 0 0 change master to master_user='root'; -show slave status; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error -# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 # # # master-bin.000001 No No 0 0 191 # None 0 No # No 0 0 start slave; select * from t1; n diff --git a/mysql-test/suite/engines/funcs/r/rpl_empty_master_crash.result b/mysql-test/suite/engines/funcs/r/rpl_empty_master_crash.result index b5e14d3adac..f71411c68dd 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_empty_master_crash.result +++ b/mysql-test/suite/engines/funcs/r/rpl_empty_master_crash.result @@ -4,8 +4,6 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -show slave status; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error load table t1 from master; ERROR 08S01: Error connecting to master: Master is not configured load table t1 from master; diff --git a/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result b/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result index c894ad0135b..ef4d7797dbf 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result +++ b/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result @@ -17,43 +17,6 @@ let $result_pattern= '%127.0.0.1%root%slave-bin.000001%slave-bin.000001%Yes%Yes% --source include/wait_slave_status.inc flush logs; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port SLAVE_PORT -Connect_Retry 60 -Master_Log_File slave-bin.000001 -Read_Master_Log_Pos 106 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File slave-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 106 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error +Relay_Log_File mysqld-relay-bin.000003 +Checking that both slave threads are running. STOP SLAVE; diff --git a/mysql-test/suite/engines/funcs/r/rpl_loaddata_s.result b/mysql-test/suite/engines/funcs/r/rpl_loaddata_s.result index d858ced1352..779a3af9631 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_loaddata_s.result +++ b/mysql-test/suite/engines/funcs/r/rpl_loaddata_s.result @@ -10,6 +10,6 @@ load data infile '../../std_data/rpl_loaddata.dat' into table test.t1; select count(*) from test.t1; count(*) 2 -show binlog events from 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info drop table test.t1; diff --git a/mysql-test/suite/engines/funcs/r/rpl_log_pos.result b/mysql-test/suite/engines/funcs/r/rpl_log_pos.result index f26f4350cf1..1b2ded26f66 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_log_pos.result +++ b/mysql-test/suite/engines/funcs/r/rpl_log_pos.result @@ -4,39 +4,23 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 106 -show slave status; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error -# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 106 # # master-bin.000001 Yes Yes 0 0 106 # None 0 No # No 0 0 stop slave; -change master to master_log_pos=106; +change master to master_log_pos=MASTER_LOG_POS; start slave; stop slave; -change master to master_log_pos=106; -show slave status; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error -# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 106 # # master-bin.000001 No No 0 0 106 # None 0 No # No 0 0 +change master to master_log_pos=MASTER_LOG_POS; start slave; -show slave status; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error -# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 106 # # master-bin.000001 Yes Yes 0 0 106 # None 0 No # No 0 0 stop slave; -change master to master_log_pos=177; +# impossible position leads to an error +change master to master_log_pos=MASTER_LOG_POS; start slave; -show slave status; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error -# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 177 # # master-bin.000001 No Yes 0 0 177 # None 0 No # No 1236 Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position' 0 -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 106 +Last_IO_Error = Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position' create table if not exists t1 (n int); drop table if exists t1; create table t1 (n int); insert into t1 values (1),(2),(3); stop slave; -change master to master_log_pos=206; +change master to master_log_pos=MASTER_LOG_POS; start slave; select * from t1 ORDER BY n; n diff --git a/mysql-test/suite/engines/funcs/r/rpl_rbr_to_sbr.result b/mysql-test/suite/engines/funcs/r/rpl_rbr_to_sbr.result index b4b04d35208..ced1693bdc8 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_rbr_to_sbr.result +++ b/mysql-test/suite/engines/funcs/r/rpl_rbr_to_sbr.result @@ -14,47 +14,16 @@ MIXED MIXED CREATE TABLE t1 (a INT, b LONG); INSERT INTO t1 VALUES (1,1), (2,2); INSERT INTO t1 VALUES (3,UUID()), (4,UUID()); -SHOW BINLOG EVENTS; +show binlog events from ; **** On Slave **** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error -SHOW BINLOG EVENTS; +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +slave-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG) +slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (2,2) +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Query # # COMMIT +show binlog events from ; DROP TABLE IF EXISTS t1; SET GLOBAL BINLOG_FORMAT=@saved_binlog_format; diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_drop.result b/mysql-test/suite/engines/funcs/r/rpl_row_drop.result index 89654ebf165..048e07271b3 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_row_drop.result +++ b/mysql-test/suite/engines/funcs/r/rpl_row_drop.result @@ -41,12 +41,11 @@ t1 t2 **** On Master **** DROP TABLE t1,t2; -SHOW BINLOG EVENTS; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server ver: VERSION, Binlog ver: 4 -master-bin.000001 106 Query 1 192 use `test`; CREATE TABLE t1 (a int) -master-bin.000001 192 Query 1 278 use `test`; CREATE TABLE t2 (a int) -master-bin.000001 278 Query 1 382 use `test`; DROP TABLE `t1` /* generated by server */ +master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a int) +master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a int) +master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ SHOW TABLES; Tables_in_test t2 diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_inexist_tbl.result b/mysql-test/suite/engines/funcs/r/rpl_row_inexist_tbl.result index ad192b530a7..cd7528280d0 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_row_inexist_tbl.result +++ b/mysql-test/suite/engines/funcs/r/rpl_row_inexist_tbl.result @@ -17,43 +17,5 @@ a 0 drop table t1; insert into t1 values (1); -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table test.t2 -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1146 -Last_Error Error 'Table 'test.t1' doesn't exist' on opening tables -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 1146 -Last_SQL_Error Error 'Table 'test.t1' doesn't exist' on opening tables +Last_SQL_Error = Error 'Table 'test.t1' doesn't exist' on opening tables drop table t1, t2; diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_max_relay_size.result b/mysql-test/suite/engines/funcs/r/rpl_row_max_relay_size.result index 6ef88c23726..c0f7ddabec7 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_row_max_relay_size.result +++ b/mysql-test/suite/engines/funcs/r/rpl_row_max_relay_size.result @@ -24,45 +24,7 @@ select @@global.max_relay_log_size; @@global.max_relay_log_size 4096 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 2 # @@ -72,45 +34,7 @@ set global max_relay_log_size=(5*4096); select @@global.max_relay_log_size; @@global.max_relay_log_size 20480 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 3: max_relay_log_size = 0 # @@ -120,90 +44,13 @@ set global max_relay_log_size=0; select @@global.max_relay_log_size; @@global.max_relay_log_size 0 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions # stop slave; reset slave; flush logs; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error # # Test 5 # @@ -211,89 +58,13 @@ reset slave; start slave; flush logs; create table t1 (a int); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated # flush logs; drop table t1; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. flush logs; show master status; File Position Binlog_Do_DB Binlog_Ignore_DB diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result b/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result index fa40d8760a8..7bf09df31ca 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result +++ b/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result @@ -4,196 +4,37 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -stop slave; +Master_Host 127.0.0.1 +include/stop_slave.inc change master to master_user='test'; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 Master_User test -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -reset slave; -SHOW SLAVE STATUS; -Slave_IO_State # Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -stop slave; reset slave; -start slave; +Master_User root +Master_Host 127.0.0.1 +include/start_slave.inc +Master_User root +Master_Host 127.0.0.1 +include/stop_slave.inc +reset slave; +include/start_slave.inc create temporary table t1 (a int); -stop slave; +include/stop_slave.inc reset slave; -start slave; +include/start_slave.inc show status like 'slave_open_temp_tables'; Variable_name Value Slave_open_temp_tables 0 -stop slave; +include/stop_slave.inc reset slave; -*** errno must be zero: 0 *** change master to master_user='impossible_user_name'; start slave; -ONE -1 include/stop_slave.inc change master to master_user='root'; include/start_slave.inc -*** last errno must be zero: 0 *** -*** last error must be blank: *** include/stop_slave.inc change master to master_user='impossible_user_name'; start slave; -ONE -1 include/stop_slave.inc reset slave; -*** io last errno must be zero: 0 *** -*** io last error must be blank: *** -*** sql last errno must be zero: 0 *** -*** sql last error must be blank: *** diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_until.result b/mysql-test/suite/engines/funcs/r/rpl_row_until.result index 5091a9f6468..72dd1a6a7c3 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_row_until.result +++ b/mysql-test/suite/engines/funcs/r/rpl_row_until.result @@ -12,193 +12,39 @@ create table t2(n int not null auto_increment primary key); insert into t2 values (1),(2); insert into t2 values (3),(4); drop table t2; -start slave until master_log_file='master-bin.000001', master_log_pos=311; +start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS; select * from t1; n 1 2 3 4 -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File slave-relay-bin.000004 -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running # -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition Master -Until_Log_File master-bin.000001 -Until_Log_Pos 311 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error -start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291; +start slave until master_log_file='master-no-such-bin.000001', master_log_pos=MASTER_LOG_POS; select * from t1; -n 1 -n 2 -n 3 -n 4 -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File slave-relay-bin.000004 -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running # -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition Master -Until_Log_File master-no-such-bin.000001 -Until_Log_Pos 291 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error -start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=728; +n +1 +2 +3 +4 +start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=RELAY_LOG_POS; select * from t2; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File slave-relay-bin.000004 -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running # -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition Relay -Until_Log_File slave-relay-bin.000004 -Until_Log_Pos 728 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error +n +1 +2 start slave; stop slave; -start slave until master_log_file='master-bin.000001', master_log_pos=740; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File slave-relay-bin.000004 -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition Master -Until_Log_File master-bin.000001 -Until_Log_Pos 740 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error -start slave until master_log_file='master-bin', master_log_pos=561; +start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS; +start slave until master_log_file='master-bin', master_log_pos=MASTER_LOG_POS; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL -start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12; +start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS, relay_log_pos=RELAY_LOG_POS; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL start slave until master_log_file='master-bin.000001'; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL start slave until relay_log_file='slave-relay-bin.000002'; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL -start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561; +start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=MASTER_LOG_POS; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL start slave sql_thread; -start slave until master_log_file='master-bin.000001', master_log_pos=740; +start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS; Warnings: -Level Note -Code 1254 -Message Slave is already running +Note 1254 Slave is already running diff --git a/mysql-test/suite/engines/funcs/r/rpl_server_id1.result b/mysql-test/suite/engines/funcs/r/rpl_server_id1.result index 47c2a522094..1e7108d7961 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_server_id1.result +++ b/mysql-test/suite/engines/funcs/r/rpl_server_id1.result @@ -8,10 +8,8 @@ create table t1 (n int); reset master; stop slave; change master to master_port=SLAVE_PORT; -show slave status; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error - 127.0.0.1 root SLAVE_PORT 1 4 slave-relay-bin.000001 4 No No # # 0 0 0 106 None 0 No NULL No 0 0 start slave; +Last_IO_Error = Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it). insert into t1 values (1); show status like "slave_running"; Variable_name Value diff --git a/mysql-test/suite/engines/funcs/r/rpl_server_id2.result b/mysql-test/suite/engines/funcs/r/rpl_server_id2.result index d50814022d8..066b563c4e8 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_server_id2.result +++ b/mysql-test/suite/engines/funcs/r/rpl_server_id2.result @@ -8,9 +8,6 @@ create table t1 (n int); reset master; stop slave; change master to master_port=SLAVE_PORT; -show slave status; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error - 127.0.0.1 root SLAVE_PORT 1 4 slave-relay-bin.000001 4 No No # 0 0 0 106 None 0 No NULL No 0 0 start slave; insert into t1 values (1); select * from t1; diff --git a/mysql-test/suite/engines/funcs/r/rpl_slave_status.result b/mysql-test/suite/engines/funcs/r/rpl_slave_status.result index dfc82f61e68..c4dc7686045 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_slave_status.result +++ b/mysql-test/suite/engines/funcs/r/rpl_slave_status.result @@ -18,44 +18,5 @@ drop user rpl@127.0.0.1; flush privileges; stop slave; start slave; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User rpl -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running No -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master NULL -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error drop table t1; drop table t1; diff --git a/mysql-test/suite/engines/funcs/r/rpl_stm_max_relay_size.result b/mysql-test/suite/engines/funcs/r/rpl_stm_max_relay_size.result index 2215b34814e..db06cb6d3de 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_stm_max_relay_size.result +++ b/mysql-test/suite/engines/funcs/r/rpl_stm_max_relay_size.result @@ -21,45 +21,7 @@ select @@global.max_relay_log_size; @@global.max_relay_log_size 4096 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 2 # @@ -69,45 +31,7 @@ set global max_relay_log_size=(5*4096); select @@global.max_relay_log_size; @@global.max_relay_log_size 20480 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 3: max_relay_log_size = 0 # @@ -117,90 +41,13 @@ set global max_relay_log_size=0; select @@global.max_relay_log_size; @@global.max_relay_log_size 0 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions # stop slave; reset slave; flush logs; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error # # Test 5 # @@ -208,89 +55,13 @@ reset slave; start slave; flush logs; create table t1 (a int); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated # flush logs; drop table t1; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. flush logs; show master status; File Position Binlog_Do_DB Binlog_Ignore_DB diff --git a/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result b/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result index 78d9d7c41eb..1fc189975ef 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result +++ b/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result @@ -4,196 +4,37 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -stop slave; +Master_Host 127.0.0.1 +include/stop_slave.inc change master to master_user='test'; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 Master_User test -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -reset slave; -SHOW SLAVE STATUS; -Slave_IO_State # Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -stop slave; reset slave; -start slave; +Master_User root +Master_Host 127.0.0.1 +include/start_slave.inc +Master_User root +Master_Host 127.0.0.1 +include/stop_slave.inc +reset slave; +include/start_slave.inc create temporary table t1 (a int); -stop slave; +include/stop_slave.inc reset slave; -start slave; +include/start_slave.inc show status like 'slave_open_temp_tables'; Variable_name Value Slave_open_temp_tables 1 -stop slave; +include/stop_slave.inc reset slave; -*** errno must be zero: 0 *** change master to master_user='impossible_user_name'; start slave; -ONE -1 include/stop_slave.inc change master to master_user='root'; include/start_slave.inc -*** last errno must be zero: 0 *** -*** last error must be blank: *** include/stop_slave.inc change master to master_user='impossible_user_name'; start slave; -ONE -1 include/stop_slave.inc reset slave; -*** io last errno must be zero: 0 *** -*** io last error must be blank: *** -*** sql last errno must be zero: 0 *** -*** sql last error must be blank: *** diff --git a/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result b/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result index 466302000af..61d77c0dc2a 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result +++ b/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result @@ -376,7 +376,7 @@ CREATE TABLE t12 (data LONG); LOCK TABLES t12 WRITE; INSERT INTO t12 VALUES(UUID()); UNLOCK TABLES; -show binlog events; -show binlog events; +show binlog events from ; +show binlog events from ; drop database mysqltest1; set global binlog_format= @saved_binlog_format; diff --git a/mysql-test/suite/engines/funcs/t/rpl_000015.test b/mysql-test/suite/engines/funcs/t/rpl_000015.test index 817ed6f407c..6c18e66a3a6 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_000015.test +++ b/mysql-test/suite/engines/funcs/t/rpl_000015.test @@ -11,31 +11,25 @@ save_master_pos; connection slave; stop slave; reset slave; ---vertical_results ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 5 # 8 # 9 # 23 # 33 # -show slave status; +let $status_items= Master_Log_File, Read_Master_Log_Pos, Relay_Master_Log_File, Exec_Master_Log_Pos; +source include/show_slave_status.inc; change master to master_host='127.0.0.1'; # The following needs to be cleaned up when change master is fixed ---vertical_results ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 5 # 8 # 9 # 23 # 33 # -show slave status; +source include/show_slave_status.inc; + --replace_result $MASTER_MYPORT MASTER_PORT eval change master to master_host='127.0.0.1',master_user='root', master_password='',master_port=$MASTER_MYPORT; ---vertical_results ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 5 # 8 # 9 # 23 # 33 # -show slave status; +source include/show_slave_status.inc; + start slave; sync_with_master; +let $status_items= Master_Log_File, Relay_Master_Log_File; +source include/show_slave_status.inc; +source include/check_slave_is_running.inc; + --vertical_results ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 5 # 8 # 9 # 23 # 33 # ---replace_column 33 # -show slave status; connection master; --disable_warnings drop table if exists t1; diff --git a/mysql-test/suite/engines/funcs/t/rpl_REDIRECT.test b/mysql-test/suite/engines/funcs/t/rpl_REDIRECT.test index 078d1048794..7644b18ee7e 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_REDIRECT.test +++ b/mysql-test/suite/engines/funcs/t/rpl_REDIRECT.test @@ -7,15 +7,11 @@ source include/master-slave.inc; --disable_ps_protocol #first, make sure the slave has had enough time to register -save_master_pos; -connection slave; -sync_with_master; +sync_slave_with_master; #discover slaves connection master; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 8 # 9 # 16 # 23 # 33 # -SHOW SLAVE STATUS; +--query_vertical SHOW SLAVE STATUS; --replace_result $SLAVE_MYPORT SLAVE_PORT SHOW SLAVE HOSTS; rpl_probe; @@ -25,9 +21,7 @@ enable_rpl_parse; create table t1 ( n int); insert into t1 values (1),(2),(3),(4); disable_rpl_parse; -save_master_pos; -connection slave; -sync_with_master; +sync_slave_with_master; insert into t1 values(5); connection master; enable_rpl_parse; diff --git a/mysql-test/suite/engines/funcs/t/rpl_change_master.test b/mysql-test/suite/engines/funcs/t/rpl_change_master.test index c031464c95e..ce8c921c2ad 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_change_master.test +++ b/mysql-test/suite/engines/funcs/t/rpl_change_master.test @@ -18,13 +18,26 @@ save_master_pos; connection slave; --real_sleep 3 # wait for I/O thread to have read updates stop slave; ---replace_result $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 7 # 8 # 9 # 23 # 33 # -show slave status; +source include/wait_for_slave_to_stop.inc; + +let $read_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1); +let $exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1); +if (`SELECT $read_pos = $exec_pos`) +{ + source include/show_rpl_debug_info.inc; + echo 'Read_Master_Log_Pos: $read_pos' == 'Exec_Master_Log_Pos: $exec_pos'; + die Failed because Read_Master_Log_Pos is equal to Exec_Master_Log_Pos; +} change master to master_user='root'; ---replace_result $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 7 # 8 # 9 # 23 # 33 # -show slave status; +let $read_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1); +let $exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1); +if (`SELECT $read_pos <> $exec_pos`) +{ + source include/show_rpl_debug_info.inc; + echo 'Read_Master_Log_Pos: $read_pos' <> 'Exec_Master_Log_Pos: $exec_pos'; + die Failed because Read_Master_Log_Pos is not equal to Exec_Master_Log_Pos; +} + start slave; sync_with_master; select * from t1; diff --git a/mysql-test/suite/engines/funcs/t/rpl_empty_master_crash.test b/mysql-test/suite/engines/funcs/t/rpl_empty_master_crash.test index 707d1eca8c2..863b450a6d9 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_empty_master_crash.test +++ b/mysql-test/suite/engines/funcs/t/rpl_empty_master_crash.test @@ -1,8 +1,5 @@ source include/master-slave.inc; ---replace_column 1 # 8 # 9 # 16 # 23 # 33 # -show slave status; - # # Load table should not succeed on the master as this is not a slave # diff --git a/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test b/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test index 2e481f5e5e7..0b71817226a 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test +++ b/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test @@ -41,8 +41,7 @@ sleep 5; # # Show status of slave # ---replace_result $SLAVE_MYPORT SLAVE_PORT ---replace_column 1 # 8 # 9 # 16 # 23 # 33 # ---vertical_results -SHOW SLAVE STATUS; +--let status_items= Relay_Log_File +--source include/show_slave_status.inc +--source include/check_slave_is_running.inc STOP SLAVE; diff --git a/mysql-test/suite/engines/funcs/t/rpl_loaddata_s.test b/mysql-test/suite/engines/funcs/t/rpl_loaddata_s.test index 791fe84420f..2dd2218eb5c 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_loaddata_s.test +++ b/mysql-test/suite/engines/funcs/t/rpl_loaddata_s.test @@ -20,9 +20,7 @@ save_master_pos; connection slave; sync_with_master; select count(*) from test.t1; # check that LOAD was replicated ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ -show binlog events from 106; # should be nothing +source include/show_binlog_events.inc; # Cleanup connection master; diff --git a/mysql-test/suite/engines/funcs/t/rpl_log_pos.test b/mysql-test/suite/engines/funcs/t/rpl_log_pos.test index 13083e47bcf..e07f0d5f2a7 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_log_pos.test +++ b/mysql-test/suite/engines/funcs/t/rpl_log_pos.test @@ -11,36 +11,41 @@ # Passes with rbr no problem, removed statement include [jbm] source include/master-slave.inc; ---replace_column 3 -show master status; +let $master_log_pos= query_get_value(SHOW MASTER STATUS, Position, 1); sync_slave_with_master; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 8 # 9 # 23 # 33 # -show slave status; stop slave; -change master to master_log_pos=106; + +--replace_result $master_log_pos MASTER_LOG_POS +eval change master to master_log_pos=$master_log_pos; start slave; sleep 5; stop slave; -change master to master_log_pos=106; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 8 # 9 # 23 # 33 # -show slave status; + +--replace_result $master_log_pos MASTER_LOG_POS +eval change master to master_log_pos=$master_log_pos; +--let $slave_param= Read_Master_Log_Pos +--let $slave_param_value= $master_log_pos +--source include/wait_for_slave_param.inc + start slave; sleep 5; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 8 # 9 # 23 # 33 # -show slave status; +--let $slave_param= Read_Master_Log_Pos +--let $slave_param_value= $master_log_pos +--source include/wait_for_slave_param.inc +--source include/check_slave_no_error.inc + stop slave; +--echo # impossible position leads to an error +--replace_result 177 MASTER_LOG_POS change master to master_log_pos=177; start slave; sleep 2; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 8 # 9 # 23 # 33 # -show slave status; +let $slave_io_errno= 1236; +let $show_slave_io_error= 1; +source include/wait_for_slave_io_error.inc; connection master; ---replace_column 3 -show master status; + +let $master_log_pos= query_get_value(SHOW MASTER STATUS, Position, 1); create table if not exists t1 (n int); drop table if exists t1; create table t1 (n int); @@ -48,7 +53,9 @@ insert into t1 values (1),(2),(3); save_master_pos; connection slave; stop slave; -change master to master_log_pos=206; + +--replace_result $master_log_pos MASTER_LOG_POS +eval change master to master_log_pos=$master_log_pos; start slave; sync_with_master; select * from t1 ORDER BY n; diff --git a/mysql-test/suite/engines/funcs/t/rpl_rbr_to_sbr.test b/mysql-test/suite/engines/funcs/t/rpl_rbr_to_sbr.test index d466382dc92..c9d27d1ea6a 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_rbr_to_sbr.test +++ b/mysql-test/suite/engines/funcs/t/rpl_rbr_to_sbr.test @@ -15,25 +15,17 @@ SELECT @@GLOBAL.BINLOG_FORMAT, @@SESSION.BINLOG_FORMAT; CREATE TABLE t1 (a INT, b LONG); INSERT INTO t1 VALUES (1,1), (2,2); INSERT INTO t1 VALUES (3,UUID()), (4,UUID()); -let $VERSION=`select version()`; ---replace_result $VERSION VERSION ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ # Different number of binlog events are generated by different engines --disable_result_log -SHOW BINLOG EVENTS; +source include/show_binlog_events.inc; --enable_result_log sync_slave_with_master; --echo **** On Slave **** ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # ---query_vertical SHOW SLAVE STATUS ---replace_result $VERSION VERSION ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ +source include/show_binlog_events.inc; + # Different number of binlog events are generated by different engines --disable_result_log -SHOW BINLOG EVENTS; +source include/show_binlog_events.inc; --enable_result_log --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_master.sql --exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_slave.sql diff --git a/mysql-test/suite/engines/funcs/t/rpl_row_drop.test b/mysql-test/suite/engines/funcs/t/rpl_row_drop.test index 20c217a7c3a..d18ebc2846b 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_row_drop.test +++ b/mysql-test/suite/engines/funcs/t/rpl_row_drop.test @@ -30,10 +30,7 @@ connection master; --echo **** On Master **** # Should drop the non-temporary table t1 and the temporary table t2 DROP TABLE t1,t2; -let $VERSION=`select version()`; ---replace_result $VERSION VERSION ---replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS; +source include/show_binlog_events.inc; SHOW TABLES; sync_slave_with_master; --echo **** On Slave **** diff --git a/mysql-test/suite/engines/funcs/t/rpl_row_inexist_tbl.test b/mysql-test/suite/engines/funcs/t/rpl_row_inexist_tbl.test index 736071a8ece..dca2894c9da 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_row_inexist_tbl.test +++ b/mysql-test/suite/engines/funcs/t/rpl_row_inexist_tbl.test @@ -22,13 +22,11 @@ connection master; insert into t1 values (1); connection slave; -# slave should have stopped because can't find table t1 -wait_for_slave_to_stop; +# slave should have stopped because can't find table t1 # see if we have a good error message: ---replace_result $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # ---vertical_results -show slave status; +--let $slave_sql_errno= 1146 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc # cleanup connection master; diff --git a/mysql-test/suite/engines/funcs/t/rpl_row_until.test b/mysql-test/suite/engines/funcs/t/rpl_row_until.test index ccd9ce11637..b60734317c6 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_row_until.test +++ b/mysql-test/suite/engines/funcs/t/rpl_row_until.test @@ -18,44 +18,50 @@ connection master; # create some events on master create table t1(n int not null auto_increment primary key); insert into t1 values (1),(2),(3),(4); +let $master_log_pos_1= query_get_value(SHOW MASTER STATUS, Position, 1); drop table t1; + create table t2(n int not null auto_increment primary key); insert into t2 values (1),(2); +let $master_log_pos_2= query_get_value(SHOW MASTER STATUS, Position, 1); insert into t2 values (3),(4); drop table t2; # try to replicate all queries until drop of t1 connection slave; -start slave until master_log_file='master-bin.000001', master_log_pos=311; +--replace_result $master_log_pos_1 MASTER_LOG_POS +eval start slave until master_log_file='master-bin.000001', master_log_pos=$master_log_pos_1; sleep 2; wait_for_slave_to_stop; # here table should be still not deleted select * from t1; ---vertical_results ---replace_result $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 7 # 9 # 11 # 22 # 23 # 33 # -show slave status; +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $master_log_pos_1 +--source include/check_slave_param.inc # this should fail right after start +--replace_result 291 MASTER_LOG_POS start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291; # again this table should be still not deleted select * from t1; sleep 2; wait_for_slave_to_stop; ---vertical_results ---replace_result $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 7 # 9 # 11 # 22 # 23 # 33 # -show slave status; +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $master_log_pos_1 +--source include/check_slave_param.inc # try replicate all up to and not including the second insert to t2; -start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=728; +let $master_log_pos= $master_log_pos_2; +let $relay_log_file= slave-relay-bin.000004; +--source include/get_relay_log_pos.inc +--replace_result $relay_log_pos RELAY_LOG_POS +eval start slave until relay_log_file='$relay_log_file', relay_log_pos=$relay_log_pos; sleep 2; wait_for_slave_to_stop; select * from t2; ---vertical_results ---replace_result $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 7 # 9 # 11 # 22 # 23 # 33 # -show slave status; +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $master_log_pos +--source include/check_slave_param.inc # clean up start slave; @@ -65,27 +71,32 @@ connection slave; sync_with_master; stop slave; +--let $exec_log_pos_1= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1) # this should stop immediately as we are already there -start slave until master_log_file='master-bin.000001', master_log_pos=740; +--replace_result $master_log_pos_2 MASTER_LOG_POS +eval start slave until master_log_file='master-bin.000001', master_log_pos=$master_log_pos_2; sleep 2; wait_for_slave_to_stop; # here the sql slave thread should be stopped ---vertical_results ---replace_result $MASTER_MYPORT MASTER_MYPORT bin.000005 bin.000004 bin.000006 bin.000004 bin.000007 bin.000004 ---replace_column 1 # 7 # 9 # 22 # 23 # 33 # -show slave status; +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $exec_log_pos_1 +--source include/check_slave_param.inc #testing various error conditions +--replace_result 561 MASTER_LOG_POS --error 1277 start slave until master_log_file='master-bin', master_log_pos=561; +--replace_result 561 MASTER_LOG_POS 12 RELAY_LOG_POS --error 1277 start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12; --error 1277 start slave until master_log_file='master-bin.000001'; --error 1277 start slave until relay_log_file='slave-relay-bin.000002'; +--replace_result 561 MASTER_LOG_POS --error 1277 start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561; # Warning should be given for second command start slave sql_thread; +--replace_result 740 MASTER_LOG_POS start slave until master_log_file='master-bin.000001', master_log_pos=740; diff --git a/mysql-test/suite/engines/funcs/t/rpl_server_id1.test b/mysql-test/suite/engines/funcs/t/rpl_server_id1.test index 71310750b60..014f38d3544 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_server_id1.test +++ b/mysql-test/suite/engines/funcs/t/rpl_server_id1.test @@ -12,10 +12,13 @@ reset master; stop slave; --replace_result $SLAVE_MYPORT SLAVE_PORT eval change master to master_port=$SLAVE_MYPORT; ---replace_result $SLAVE_MYPORT SLAVE_PORT ---replace_column 16 # 18 # -show slave status; +source include/check_slave_no_error.inc; + start slave; +let $slave_io_errno= 1593; +let $show_slave_io_error= 1; +source include/wait_for_slave_io_error.inc; + insert into t1 values (1); # can't MASTER_POS_WAIT(), it does not work in this weird setup # (when slave is its own master without --replicate-same-server-id) diff --git a/mysql-test/suite/engines/funcs/t/rpl_server_id2.test b/mysql-test/suite/engines/funcs/t/rpl_server_id2.test index 0f2eb560d18..5b8683ecfb1 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_server_id2.test +++ b/mysql-test/suite/engines/funcs/t/rpl_server_id2.test @@ -9,9 +9,6 @@ reset master; stop slave; --replace_result $SLAVE_MYPORT SLAVE_PORT eval change master to master_port=$SLAVE_MYPORT; ---replace_result $SLAVE_MYPORT SLAVE_PORT ---replace_column 18 # -show slave status; start slave; insert into t1 values (1); save_master_pos; diff --git a/mysql-test/suite/engines/funcs/t/rpl_slave_status.test b/mysql-test/suite/engines/funcs/t/rpl_slave_status.test index b3d6e49e215..cc3fbf6abee 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_slave_status.test +++ b/mysql-test/suite/engines/funcs/t/rpl_slave_status.test @@ -22,9 +22,7 @@ drop table if exists t1; --enable_warnings create table t1 (n int); insert into t1 values (1); -save_master_pos; -connection slave; -sync_with_master; +sync_slave_with_master; select * from t1; # 3. Delete new replication user @@ -40,12 +38,8 @@ stop slave; start slave; # 5. Make sure Slave_IO_Running = No ---replace_result $MASTER_MYPORT MASTER_MYPORT -# Column 1 is replaced, since the output can be either -# "Connecting to master" or "Waiting for master update" ---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 35 # 36 # ---vertical_results -show slave status; +let $slave_io_errno= 1045; +source include/wait_for_slave_io_error.inc; # Cleanup (Note that slave IO thread is not running) connection slave; diff --git a/mysql-test/suite/engines/funcs/t/rpl_switch_stm_row_mixed.test b/mysql-test/suite/engines/funcs/t/rpl_switch_stm_row_mixed.test index d89765fb28d..eb2e2a828f3 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_switch_stm_row_mixed.test +++ b/mysql-test/suite/engines/funcs/t/rpl_switch_stm_row_mixed.test @@ -501,9 +501,7 @@ INSERT INTO t12 VALUES(UUID()); UNLOCK TABLES; --disable_result_log ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ -show binlog events; +source include/show_binlog_events.inc; --enable_result_log sync_slave_with_master; @@ -520,9 +518,7 @@ diff_files $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_master.sql $MYSQLTEST_ connection master; --disable_result_log ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ -show binlog events; +source include/show_binlog_events.inc; --enable_result_log # Now test that mysqlbinlog works fine on a binlog generated by the diff --git a/mysql-test/suite/manual/r/rpl_replication_delay.result b/mysql-test/suite/manual/r/rpl_replication_delay.result index a8fa6ce8265..73dd77cc647 100644 --- a/mysql-test/suite/manual/r/rpl_replication_delay.result +++ b/mysql-test/suite/manual/r/rpl_replication_delay.result @@ -4,45 +4,8 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -show slave status /* Second_behind reports 0 */;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port 9306 -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos 106 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 106 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key +# Second_behind reports 0 Seconds_Behind_Master 0 -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error drop table if exists t1; Warnings: Note 1051 Unknown table 't1' @@ -50,87 +13,13 @@ create table t1 (f1 int); flush logs /* contaminate rli->last_master_timestamp */; lock table t1 write; insert into t1 values (1); -show slave status /* bug emulated: reports slave threads starting time about 3*3 not 3 secs */;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port 9306 -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos 367 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 279 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key +# bug emulated: reports slave threads starting time about 3*3 not 3 secs Seconds_Behind_Master 9 -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error unlock tables; flush logs /* this time rli->last_master_timestamp is not affected */; lock table t1 write; insert into t1 values (2); -show slave status /* reports the correct diff with master query time about 3+3 secs */;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port 9306 -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos 455 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 367 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key +# reports the correct diff with master query time about 3+3 secs Seconds_Behind_Master 7 -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error unlock tables; drop table t1; diff --git a/mysql-test/suite/manual/t/rpl_replication_delay.test b/mysql-test/suite/manual/t/rpl_replication_delay.test index 8230698c8f9..fc1db9bfe18 100644 --- a/mysql-test/suite/manual/t/rpl_replication_delay.test +++ b/mysql-test/suite/manual/t/rpl_replication_delay.test @@ -10,9 +10,9 @@ source include/master-slave.inc; connection master; #connection slave; sync_slave_with_master; ---replace_result $DEFAULT_MASTER_PORT DEFAULT_MASTER_PORT ---replace_column 1 # 8 # 9 # 23 # ---query_vertical show slave status /* Second_behind reports 0 */; +--echo # Second_behind reports 0 +let $status_items= Seconds_Behind_Master; +source include/show_slave_status.inc; sleep 3; ### bug emulation @@ -35,9 +35,8 @@ insert into t1 values (1); sleep 3; connection slave; ---replace_result $DEFAULT_MASTER_PORT DEFAULT_MASTER_PORT ---replace_column 1 # 8 # 9 # 23 # ---query_vertical show slave status /* bug emulated: reports slave threads starting time about 3*3 not 3 secs */; +--echo # bug emulated: reports slave threads starting time about 3*3 not 3 secs +source include/show_slave_status.inc; unlock tables; connection master; @@ -55,9 +54,8 @@ insert into t1 values (2); sleep 3; connection slave; ---replace_result $DEFAULT_MASTER_PORT DEFAULT_MASTER_PORT ---replace_column 1 # 8 # 9 # 23 # ---query_vertical show slave status /* reports the correct diff with master query time about 3+3 secs */; +--echo # reports the correct diff with master query time about 3+3 secs +source include/show_slave_status.inc; unlock tables; connection master; diff --git a/mysql-test/suite/ndb_team/r/rpl_ndb_extraColMaster.result b/mysql-test/suite/ndb_team/r/rpl_ndb_extraColMaster.result index 97300e7131b..fb0324bc89e 100644 --- a/mysql-test/suite/ndb_team/r/rpl_ndb_extraColMaster.result +++ b/mysql-test/suite/ndb_team/r/rpl_ndb_extraColMaster.result @@ -91,49 +91,7 @@ f1 f2 f3 f4 27 27 27 next 29 29 29 second 30 30 30 next - -* Show Slave Status * - -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error - +Checking that both slave threads are running. ***** Testing Altering table def scenario ***** @@ -454,7 +412,9 @@ f1 f2 f3 f4 update t31 set f5=555555555555555 where f3=6; update t31 set f2=2 where f3=2; update t31 set f1=NULL where f3=1; -update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3; +update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3; +Warnings: +Warning 1048 Column 'f3' cannot be null ** Delete from Master ** @@ -463,50 +423,12 @@ delete from t2; delete from t3; delete from t4; delete from t31; +select * from t31; +f1 f2 f3 f4 ** Check slave status ** -select * from t31; -f1 f2 f3 f4 -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. **************************************** * columns in master at middle of table * @@ -539,50 +461,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t10 *** DROP TABLE t10; @@ -614,50 +499,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t11 *** DROP TABLE t11; @@ -768,45 +616,7 @@ c1 c3 hex(c4) c5 c6 ************ * Bug30415 * ************ -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1091 -Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1091 -Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' +Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' STOP SLAVE; RESET SLAVE; @@ -854,45 +664,7 @@ c1 hex(c4) c5 c6 c7 c2 *** Expect slave to fail with Error 1054 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1054 -Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1054 -Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' +Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' STOP SLAVE; RESET SLAVE; @@ -940,45 +712,7 @@ c1 hex(c4) c5 c6 c7 *** BUG 30434 *** ***************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1072 -Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1072 -Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' +Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' STOP SLAVE; RESET SLAVE; @@ -1230,49 +964,7 @@ f1 f2 f3 f4 27 27 27 next 29 29 29 second 30 30 30 next - -* Show Slave Status * - -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error - +Checking that both slave threads are running. ***** Testing Altering table def scenario ***** @@ -1593,7 +1285,9 @@ f1 f2 f3 f4 update t31 set f5=555555555555555 where f3=6; update t31 set f2=2 where f3=2; update t31 set f1=NULL where f3=1; -update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3; +update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3; +Warnings: +Warning 1048 Column 'f3' cannot be null ** Delete from Master ** @@ -1602,50 +1296,12 @@ delete from t2; delete from t3; delete from t4; delete from t31; +select * from t31; +f1 f2 f3 f4 ** Check slave status ** -select * from t31; -f1 f2 f3 f4 -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. **************************************** * columns in master at middle of table * @@ -1678,50 +1334,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t10 *** DROP TABLE t10; @@ -1753,50 +1372,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t11 *** DROP TABLE t11; @@ -1907,45 +1489,7 @@ c1 c3 hex(c4) c5 c6 ************ * Bug30415 * ************ -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1091 -Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1091 -Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' +Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' STOP SLAVE; RESET SLAVE; @@ -1993,45 +1537,7 @@ c1 hex(c4) c5 c6 c7 c2 *** Expect slave to fail with Error 1054 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1054 -Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1054 -Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' +Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' STOP SLAVE; RESET SLAVE; @@ -2079,45 +1585,7 @@ c1 hex(c4) c5 c6 c7 *** BUG 30434 *** ***************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1072 -Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1072 -Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' +Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' STOP SLAVE; RESET SLAVE; diff --git a/mysql-test/suite/ndb_team/r/rpl_ndb_mix_innodb.result b/mysql-test/suite/ndb_team/r/rpl_ndb_mix_innodb.result index f9c077f38da..203a59b4613 100644 --- a/mysql-test/suite/ndb_team/r/rpl_ndb_mix_innodb.result +++ b/mysql-test/suite/ndb_team/r/rpl_ndb_mix_innodb.result @@ -26,21 +26,21 @@ from mysql.ndb_apply_status; # since insert is done with transactional engine, expect a BEGIN # at -show binlog events from limit 1; +show binlog events from limit 1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 Query 1 # BEGIN +master-bin.000001 # Query # # BEGIN # Now the insert, one step after -show binlog events from limit 1,1; +show binlog events from limit 1,1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; insert into t1 values (1,2) +master-bin.000001 # Query # # use `test`; insert into t1 values (1,2) # and the COMMIT should be at -show binlog events from limit 2,1; +show binlog events from limit 2,1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Xid 1 COMMIT /* XID */ +master-bin.000001 # Xid # # COMMIT /* XID */ begin; insert into t1 values (2,3); @@ -51,18 +51,18 @@ select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos from mysql.ndb_apply_status; @log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos -show binlog events from limit 1; +show binlog events from limit 1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 Query 1 # BEGIN +master-bin.000001 # Query # # BEGIN -show binlog events from limit 1,2; +show binlog events from limit 1,2; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # use `test`; insert into t1 values (2,3) master-bin.000001 # Query # # use `test`; insert into t2 values (3,4) -show binlog events from limit 3,1; +show binlog events from limit 3,1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Xid 1 COMMIT /* XID */ +master-bin.000001 # Xid # # COMMIT /* XID */ DROP TABLE test.t1, test.t2; SHOW TABLES; diff --git a/mysql-test/suite/parts/r/rpl_partition.result b/mysql-test/suite/parts/r/rpl_partition.result index c2537815631..9c5ac34b1b0 100644 --- a/mysql-test/suite/parts/r/rpl_partition.result +++ b/mysql-test/suite/parts/r/rpl_partition.result @@ -138,45 +138,7 @@ SUBPARTITIONS 2 PARTITION pa9 VALUES LESS THAN (90) ENGINE = InnoDB, PARTITION pa10 VALUES LESS THAN (100) ENGINE = InnoDB, PARTITION pa11 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */ -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. SELECT count(*) "Slave norm" FROM t1; Slave norm 500 SELECT count(*) "Slave bykey" FROM t2; diff --git a/mysql-test/suite/parts/t/rpl_partition.test b/mysql-test/suite/parts/t/rpl_partition.test index c5ee20971b3..15cd85463b1 100644 --- a/mysql-test/suite/parts/t/rpl_partition.test +++ b/mysql-test/suite/parts/t/rpl_partition.test @@ -144,9 +144,7 @@ SELECT count(*) as "Master byrange" FROM t3; --sync_slave_with_master connection slave; show create table t3; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # -show slave status; +--source include/check_slave_is_running.inc SELECT count(*) "Slave norm" FROM t1; SELECT count(*) "Slave bykey" FROM t2; SELECT count(*) "Slave byrange" FROM t3; diff --git a/mysql-test/suite/rpl/include/rpl_mixed_ddl.inc b/mysql-test/suite/rpl/include/rpl_mixed_ddl.inc index 70e17cef9fe..79825016448 100644 --- a/mysql-test/suite/rpl/include/rpl_mixed_ddl.inc +++ b/mysql-test/suite/rpl/include/rpl_mixed_ddl.inc @@ -66,9 +66,7 @@ ALTER TABLE t2 DROP COLUMN d; --echo --echo --echo ******************** SHOW BINLOG EVENTS ******************** ---replace_column 2 # 5 # ---replace_regex /Server ver: .+/Server ver: #/ /table_id: [0-9]+/table_id: #/ -show binlog events from 1; +source include/show_binlog_events.inc; sync_slave_with_master; # as we're using UUID we don't SELECT but use "diff" like in rpl_row_UUID --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test_rpl > $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_master.sql diff --git a/mysql-test/suite/rpl/include/rpl_mixed_dml.inc b/mysql-test/suite/rpl/include/rpl_mixed_dml.inc index e9adb805c99..d953397c0cb 100644 --- a/mysql-test/suite/rpl/include/rpl_mixed_dml.inc +++ b/mysql-test/suite/rpl/include/rpl_mixed_dml.inc @@ -326,10 +326,7 @@ DROP VIEW v2; --echo --echo --echo ******************** SHOW BINLOG EVENTS ******************** ---replace_column 2 # 5 # ---replace_regex /Server ver: .+/Server ver: #/ /table_id: [0-9]+/table_id: #/ /COMMIT.+xid=[0-9]+.+/#/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR -show binlog events from 1; +--source include/show_binlog_events.inc sync_slave_with_master; # as we're using UUID we don't SELECT but use "diff" like in rpl_row_UUID --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test_rpl > $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_master.sql diff --git a/mysql-test/suite/rpl/r/rpl_000015.result b/mysql-test/suite/rpl/r/rpl_000015.result deleted file mode 100644 index 03b96d5870b..00000000000 --- a/mysql-test/suite/rpl/r/rpl_000015.result +++ /dev/null @@ -1,141 +0,0 @@ -reset master; -show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # -reset slave; -SHOW SLAVE STATUS; -change master to master_host='127.0.0.1'; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User test -Master_Port 3306 -Connect_Retry 7 -Master_Log_File -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -change master to master_host='127.0.0.1',master_user='root', -master_password='',master_port=MASTER_PORT; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 7 -Master_Log_File -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 7 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -drop table if exists t1; -create table t1 (n int, PRIMARY KEY(n)); -insert into t1 values (10),(45),(90); -SELECT * FROM t1 ORDER BY n; -n -10 -45 -90 -SELECT * FROM t1 ORDER BY n; -n -10 -45 -90 -drop table t1; diff --git a/mysql-test/suite/rpl/r/rpl_binlog_grant.result b/mysql-test/suite/rpl/r/rpl_binlog_grant.result index 4a789f361c6..7a2e3183d5b 100644 --- a/mysql-test/suite/rpl/r/rpl_binlog_grant.result +++ b/mysql-test/suite/rpl/r/rpl_binlog_grant.result @@ -17,16 +17,6 @@ show grants for x@y; Grants for x@y GRANT USAGE ON *.* TO 'x'@'y' GRANT SELECT ON `d1`.`t` TO 'x'@'y' -show binlog events; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server ver: VERSION, Binlog ver: 4 -master-bin.000001 106 Query 1 193 drop database if exists d1 -master-bin.000001 193 Query 1 272 create database d1 -master-bin.000001 272 Query 1 370 use `d1`; create table t (s1 int) engine=innodb -master-bin.000001 370 Query 1 436 BEGIN -master-bin.000001 436 Query 1 521 use `d1`; insert into t values (1) -master-bin.000001 521 Xid 1 548 COMMIT /* XID */ -master-bin.000001 548 Query 1 633 use `d1`; grant select on t to x@y start transaction; insert into t values (2); revoke select on t from x@y; @@ -38,19 +28,5 @@ s1 show grants for x@y; Grants for x@y GRANT USAGE ON *.* TO 'x'@'y' -show binlog events; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server ver: VERSION, Binlog ver: 4 -master-bin.000001 106 Query 1 193 drop database if exists d1 -master-bin.000001 193 Query 1 272 create database d1 -master-bin.000001 272 Query 1 370 use `d1`; create table t (s1 int) engine=innodb -master-bin.000001 370 Query 1 436 BEGIN -master-bin.000001 436 Query 1 521 use `d1`; insert into t values (1) -master-bin.000001 521 Xid 1 548 COMMIT /* XID */ -master-bin.000001 548 Query 1 633 use `d1`; grant select on t to x@y -master-bin.000001 633 Query 1 699 BEGIN -master-bin.000001 699 Query 1 784 use `d1`; insert into t values (2) -master-bin.000001 784 Xid 1 811 COMMIT /* XID */ -master-bin.000001 811 Query 1 899 use `d1`; revoke select on t from x@y drop user x@y; drop database d1; diff --git a/mysql-test/suite/rpl/r/rpl_bug33931.result b/mysql-test/suite/rpl/r/rpl_bug33931.result index a17941f6ba9..292922a1afd 100644 --- a/mysql-test/suite/rpl/r/rpl_bug33931.result +++ b/mysql-test/suite/rpl/r/rpl_bug33931.result @@ -4,43 +4,5 @@ stop slave; reset slave; SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init"; start slave; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File -Read_Master_Log_Pos 4 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno # -Last_Error Failed during slave thread initialization -Skip_Counter 0 -Exec_Master_Log_Pos 0 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno # -Last_SQL_Error Failed during slave thread initialization +Last_SQL_Error = Failed during slave thread initialization SET GLOBAL debug=""; diff --git a/mysql-test/suite/rpl/r/rpl_change_master.result b/mysql-test/suite/rpl/r/rpl_change_master.result index c06c1201e3d..883feb42b3f 100644 --- a/mysql-test/suite/rpl/r/rpl_change_master.result +++ b/mysql-test/suite/rpl/r/rpl_change_master.result @@ -10,86 +10,8 @@ n stop slave sql_thread; insert into t1 values(1); insert into t1 values(2); -stop slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +include/stop_slave.inc change master to master_user='root'; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error start slave; select * from t1; n diff --git a/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result b/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result index 6c8d35619e5..1485389204b 100644 --- a/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result +++ b/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result @@ -50,45 +50,7 @@ a SELECT * FROM t3; a 3 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. *** Test lock wait timeout *** include/stop_slave.inc @@ -112,52 +74,14 @@ SELECT * FROM t3; a 3 3 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. *** Test lock wait timeout and purged relay logs *** SET @my_max_relay_log_size= @@global.max_relay_log_size; SET global max_relay_log_size=0; include/stop_slave.inc DELETE FROM t2; -CHANGE MASTER TO MASTER_LOG_POS=440; +CHANGE MASTER TO MASTER_LOG_POS=MASTER_POS_BEGIN; BEGIN; SELECT * FROM t1 FOR UPDATE; a @@ -179,45 +103,7 @@ a 3 3 3 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. *** Clean up *** DROP TABLE t1,t2,t3; diff --git a/mysql-test/suite/rpl/r/rpl_dual_pos_advance.result b/mysql-test/suite/rpl/r/rpl_dual_pos_advance.result index 4c6323a61db..aa1a573d052 100644 --- a/mysql-test/suite/rpl/r/rpl_dual_pos_advance.result +++ b/mysql-test/suite/rpl/r/rpl_dual_pos_advance.result @@ -6,9 +6,9 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; reset master; change master to master_host="127.0.0.1",master_port=SLAVE_PORT,master_user="root"; -start slave; +include/start_slave.inc create table t1 (n int); -stop slave; +include/stop_slave.inc create table t2 (n int); show tables; Tables_in_test @@ -22,20 +22,20 @@ insert into t3 values(2); insert into t3 values(3); commit; insert into t3 values(4); -start slave until master_log_file="slave-bin.000001",master_log_pos=195; +start slave until master_log_file="MASTER_LOG_FILE",master_log_pos=MASTER_LOG_POS; Warnings: Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart show tables; Tables_in_test t1 t2 -start slave until master_log_file="slave-bin.000001",master_log_pos=438; +start slave until master_log_file="MASTER_LOG_FILE",master_log_pos=MASTER_LOG_POS; Warnings: Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart select * from t3; n 1 -start slave until master_log_file="slave-bin.000001",master_log_pos=663; +start slave until master_log_file="MASTER_LOG_FILE",master_log_pos=MASTER_LOG_POS; Warnings: Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart select * from t3; @@ -43,7 +43,7 @@ n 1 2 3 -start slave; +include/start_slave.inc create table t4 (n int); create table t5 (n int); create table t6 (n int); @@ -55,6 +55,6 @@ t3 t4 t5 t6 -stop slave; +include/stop_slave.inc reset slave; drop table t1,t2,t3,t4,t5,t6; diff --git a/mysql-test/suite/rpl/r/rpl_empty_master_crash.result b/mysql-test/suite/rpl/r/rpl_empty_master_crash.result index f0d84f85069..f71411c68dd 100644 --- a/mysql-test/suite/rpl/r/rpl_empty_master_crash.result +++ b/mysql-test/suite/rpl/r/rpl_empty_master_crash.result @@ -4,7 +4,6 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -SHOW SLAVE STATUS; load table t1 from master; ERROR 08S01: Error connecting to master: Master is not configured load table t1 from master; diff --git a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result index 63154383e8c..025da75581c 100644 --- a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result +++ b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result @@ -54,45 +54,7 @@ a b c 3 4 QA TESTING *** Start Slave *** START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size. STOP SLAVE; RESET SLAVE; SELECT * FROM t2 ORDER BY a; @@ -121,47 +83,10 @@ INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TEST ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t3 *** DROP TABLE t3; *** Create t4 on slave *** @@ -183,47 +108,10 @@ INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'), ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t4 *** DROP TABLE t4; *** Create t5 on slave *** @@ -245,47 +133,10 @@ INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098), ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t5 *** DROP TABLE t5; *** Create t6 on slave *** @@ -306,45 +157,7 @@ INSERT INTO t6 () VALUES(1,'Kyle',200.23,1), ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 +Last_SQL_Error = Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3; *** Drop t6 *** DROP TABLE t6; @@ -442,47 +255,10 @@ INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t10 *** DROP TABLE t10; *** Create t11 on slave *** @@ -503,47 +279,10 @@ INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t11 *** DROP TABLE t11; *** Create t12 on slave *** @@ -753,47 +492,10 @@ ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5; ******************************************** *** Expect slave to fail with Error 1060 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1060 -Last_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1060 -Last_SQL_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5' -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5' +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 1; +include/start_slave.inc *** Try to insert in master **** INSERT INTO t15 () VALUES(5,2.00,'Replication Testing',@b1,'Buda',2); SELECT * FROM t15 ORDER BY c1; @@ -893,46 +595,9 @@ INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX'); ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc ** DROP table t17 *** DROP TABLE t17; diff --git a/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result index d80ac5eea2c..8dc726db84c 100644 --- a/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result +++ b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result @@ -54,45 +54,7 @@ a b c 3 4 QA TESTING *** Start Slave *** START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size. STOP SLAVE; RESET SLAVE; SELECT * FROM t2 ORDER BY a; @@ -121,47 +83,10 @@ INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TEST ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t3 *** DROP TABLE t3; *** Create t4 on slave *** @@ -183,47 +108,10 @@ INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'), ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t4 *** DROP TABLE t4; *** Create t5 on slave *** @@ -245,47 +133,10 @@ INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098), ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t5 *** DROP TABLE t5; *** Create t6 on slave *** @@ -306,45 +157,7 @@ INSERT INTO t6 () VALUES(1,'Kyle',200.23,1), ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 +Last_SQL_Error = Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3; *** Drop t6 *** DROP TABLE t6; @@ -442,47 +255,10 @@ INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t10 *** DROP TABLE t10; *** Create t11 on slave *** @@ -503,47 +279,10 @@ INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t11 *** DROP TABLE t11; *** Create t12 on slave *** @@ -753,47 +492,10 @@ ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5; ******************************************** *** Expect slave to fail with Error 1060 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1060 -Last_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1060 -Last_SQL_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5' -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5' +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 1; +include/start_slave.inc *** Try to insert in master **** INSERT INTO t15 () VALUES(5,2.00,'Replication Testing',@b1,'Buda',2); SELECT * FROM t15 ORDER BY c1; @@ -893,46 +595,9 @@ INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX'); ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc ** DROP table t17 *** DROP TABLE t17; diff --git a/mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result b/mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result index ad67f96db71..e8535a0bc5e 100644 --- a/mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result +++ b/mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result @@ -91,49 +91,7 @@ f1 f2 f3 f4 27 27 27 next 29 29 29 second 30 30 30 next - -* Show Slave Status * - -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error - +Checking that both slave threads are running. ***** Testing Altering table def scenario ***** @@ -465,50 +423,12 @@ delete from t2; delete from t3; delete from t4; delete from t31; +select * from t31; +f1 f2 f3 f4 ** Check slave status ** -select * from t31; -f1 f2 f3 f4 -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. **************************************** * columns in master at middle of table * @@ -541,50 +461,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t10 *** DROP TABLE t10; @@ -616,50 +499,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t11 *** DROP TABLE t11; @@ -770,45 +616,7 @@ c1 c3 hex(c4) c5 c6 ************ * Bug30415 * ************ -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1091 -Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1091 -Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' +Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' STOP SLAVE; RESET SLAVE; @@ -856,45 +664,7 @@ c1 hex(c4) c5 c6 c7 c2 *** Expect slave to fail with Error 1054 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1054 -Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1054 -Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' +Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' STOP SLAVE; RESET SLAVE; @@ -942,45 +712,7 @@ c1 hex(c4) c5 c6 c7 *** BUG 30434 *** ***************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1072 -Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1072 -Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' +Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' STOP SLAVE; RESET SLAVE; @@ -1232,49 +964,7 @@ f1 f2 f3 f4 27 27 27 next 29 29 29 second 30 30 30 next - -* Show Slave Status * - -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error - +Checking that both slave threads are running. ***** Testing Altering table def scenario ***** @@ -1606,50 +1296,12 @@ delete from t2; delete from t3; delete from t4; delete from t31; +select * from t31; +f1 f2 f3 f4 ** Check slave status ** -select * from t31; -f1 f2 f3 f4 -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. **************************************** * columns in master at middle of table * @@ -1682,50 +1334,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t10 *** DROP TABLE t10; @@ -1757,50 +1372,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t11 *** DROP TABLE t11; @@ -1911,45 +1489,7 @@ c1 c3 hex(c4) c5 c6 ************ * Bug30415 * ************ -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1091 -Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1091 -Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' +Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' STOP SLAVE; RESET SLAVE; @@ -1997,45 +1537,7 @@ c1 hex(c4) c5 c6 c7 c2 *** Expect slave to fail with Error 1054 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1054 -Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1054 -Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' +Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' STOP SLAVE; RESET SLAVE; @@ -2083,45 +1585,7 @@ c1 hex(c4) c5 c6 c7 *** BUG 30434 *** ***************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1072 -Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1072 -Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' +Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' STOP SLAVE; RESET SLAVE; @@ -2373,49 +1837,7 @@ f1 f2 f3 f4 27 27 27 next 29 29 29 second 30 30 30 next - -* Show Slave Status * - -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error - +Checking that both slave threads are running. ***** Testing Altering table def scenario ***** @@ -2747,50 +2169,12 @@ delete from t2; delete from t3; delete from t4; delete from t31; +select * from t31; +f1 f2 f3 f4 ** Check slave status ** -select * from t31; -f1 f2 f3 f4 -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. **************************************** * columns in master at middle of table * @@ -2823,50 +2207,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t10 *** DROP TABLE t10; @@ -2898,50 +2245,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t11 *** DROP TABLE t11; @@ -3052,45 +2362,7 @@ c1 c3 hex(c4) c5 c6 ************ * Bug30415 * ************ -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1091 -Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1091 -Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' +Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' STOP SLAVE; RESET SLAVE; @@ -3138,45 +2410,7 @@ c1 hex(c4) c5 c6 c7 c2 *** Expect slave to fail with Error 1054 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1054 -Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1054 -Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' +Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' STOP SLAVE; RESET SLAVE; @@ -3224,45 +2458,7 @@ c1 hex(c4) c5 c6 c7 *** BUG 30434 *** ***************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1072 -Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1072 -Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' +Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' STOP SLAVE; RESET SLAVE; diff --git a/mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result b/mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result index 8859a8e24e3..f360a8847eb 100644 --- a/mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result +++ b/mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result @@ -91,49 +91,7 @@ f1 f2 f3 f4 27 27 27 next 29 29 29 second 30 30 30 next - -* Show Slave Status * - -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error - +Checking that both slave threads are running. ***** Testing Altering table def scenario ***** @@ -465,50 +423,12 @@ delete from t2; delete from t3; delete from t4; delete from t31; +select * from t31; +f1 f2 f3 f4 ** Check slave status ** -select * from t31; -f1 f2 f3 f4 -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. **************************************** * columns in master at middle of table * @@ -541,50 +461,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t10 *** DROP TABLE t10; @@ -616,50 +499,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t11 *** DROP TABLE t11; @@ -770,45 +616,7 @@ c1 c3 hex(c4) c5 c6 ************ * Bug30415 * ************ -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1091 -Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1091 -Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' +Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' STOP SLAVE; RESET SLAVE; @@ -856,45 +664,7 @@ c1 hex(c4) c5 c6 c7 c2 *** Expect slave to fail with Error 1054 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1054 -Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1054 -Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' +Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' STOP SLAVE; RESET SLAVE; @@ -942,45 +712,7 @@ c1 hex(c4) c5 c6 c7 *** BUG 30434 *** ***************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1072 -Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1072 -Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' +Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' STOP SLAVE; RESET SLAVE; @@ -1232,49 +964,7 @@ f1 f2 f3 f4 27 27 27 next 29 29 29 second 30 30 30 next - -* Show Slave Status * - -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error - +Checking that both slave threads are running. ***** Testing Altering table def scenario ***** @@ -1606,50 +1296,12 @@ delete from t2; delete from t3; delete from t4; delete from t31; +select * from t31; +f1 f2 f3 f4 ** Check slave status ** -select * from t31; -f1 f2 f3 f4 -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. **************************************** * columns in master at middle of table * @@ -1682,50 +1334,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t10 *** DROP TABLE t10; @@ -1757,50 +1372,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t11 *** DROP TABLE t11; @@ -1911,45 +1489,7 @@ c1 c3 hex(c4) c5 c6 ************ * Bug30415 * ************ -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1091 -Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1091 -Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' +Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' STOP SLAVE; RESET SLAVE; @@ -1997,45 +1537,7 @@ c1 hex(c4) c5 c6 c7 c2 *** Expect slave to fail with Error 1054 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1054 -Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1054 -Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' +Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' STOP SLAVE; RESET SLAVE; @@ -2083,45 +1585,7 @@ c1 hex(c4) c5 c6 c7 *** BUG 30434 *** ***************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1072 -Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1072 -Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' +Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' STOP SLAVE; RESET SLAVE; @@ -2373,49 +1837,7 @@ f1 f2 f3 f4 27 27 27 next 29 29 29 second 30 30 30 next - -* Show Slave Status * - -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error - +Checking that both slave threads are running. ***** Testing Altering table def scenario ***** @@ -2747,50 +2169,12 @@ delete from t2; delete from t3; delete from t4; delete from t31; +select * from t31; +f1 f2 f3 f4 ** Check slave status ** -select * from t31; -f1 f2 f3 f4 -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. **************************************** * columns in master at middle of table * @@ -2823,50 +2207,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t10 *** DROP TABLE t10; @@ -2898,50 +2245,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT), (3,@b1,DEFAULT,'QA',DEFAULT); ******************************************** -*** Expect slave to fail with Error 1523 *** +*** Expect slave to fail with Error 1535 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t11 *** DROP TABLE t11; @@ -3052,45 +2362,7 @@ c1 c3 hex(c4) c5 c6 ************ * Bug30415 * ************ -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1091 -Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1091 -Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' +Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7' STOP SLAVE; RESET SLAVE; @@ -3138,45 +2410,7 @@ c1 hex(c4) c5 c6 c7 c2 *** Expect slave to fail with Error 1054 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1054 -Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1054 -Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' +Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7' STOP SLAVE; RESET SLAVE; @@ -3224,45 +2458,7 @@ c1 hex(c4) c5 c6 c7 *** BUG 30434 *** ***************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1072 -Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1072 -Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' +Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)' STOP SLAVE; RESET SLAVE; diff --git a/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result b/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result index 7eddaabc636..5f1f72a9a3a 100644 --- a/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result +++ b/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result @@ -49,82 +49,82 @@ UPDATE t7 LEFT JOIN (t8, t4, t1) ON (t7.id=t8.id and t7.id=t4.id and t7.id=t1.id UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0 where t1.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t1 LEFT JOIN (t4, t7) ON (t1.id=t4.id and t1.id=t7.id) SET a=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t7) ON (t1.id=t4.id and t1.id=t7.id) SET a=0 where t1.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t1 LEFT JOIN (t2, t4, t7) ON (t1.id=t2.id and t1.id=t4.id and t1.id=t7.id) SET a=0, b=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t2, t4, t7) ON (t1.id=t2.id and t1.id=t4.id and t1.id=t7.id) SET a=0, b=0 where t1.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t1 LEFT JOIN (t2, t3, t7) ON (t1.id=t2.id and t1.id=t3.id and t1.id=t7.id) SET a=0, b=0, c=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t2, t3, t7) ON (t1.id=t2.id and t1.id=t3.id and t1.id=t7.id) SET a=0, b=0, c=0 where t1.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t1 LEFT JOIN t7 ON (t1.id=t7.id) SET a=0, g=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t7 ON (t1.id=t7.id) SET a=0, g=0 where t1.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t7 LEFT JOIN t1 ON (t1.id=t7.id) SET a=0, g=0 where t7.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN t1 ON (t1.id=t7.id) SET a=0, g=0 where t7.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t1 LEFT JOIN (t4, t5, t7) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t7.id) SET a=0, g=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t5, t7) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t7.id) SET a=0, g=0 where t1.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t1 LEFT JOIN (t4, t7, t8) ON (t1.id=t4.id and t1.id=t7.id and t1.id=t8.id) SET a=0, g=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t7, t8) ON (t1.id=t4.id and t1.id=t7.id and t1.id=t8.id) SET a=0, g=0 where t1.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t1 LEFT JOIN (t7, t8, t9) ON (t1.id=t7.id and t1.id=t8.id and t1.id=t9.id) SET a=0, g=0, h=0, i=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t7, t8, t9) ON (t1.id=t7.id and t1.id=t8.id and t1.id=t9.id) SET a=0, g=0, h=0, i=0 where t1.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t7 LEFT JOIN (t1, t2, t3) ON (t7.id=t1.id and t7.id=t2.id and t7.id=t3.id) SET g=0, a=0, b=0, c=0 where t7.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t1, t2, t3) ON (t7.id=t1.id and t7.id=t2.id and t7.id=t3.id) SET g=0, a=0, b=0, c=0 where t7.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t7 LEFT JOIN (t4, t5, t3) ON (t7.id=t4.id and t7.id=t5.id and t7.id=t3.id) SET g=0, c=0 where t7.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t4, t5, t3) ON (t7.id=t4.id and t7.id=t5.id and t7.id=t3.id) SET g=0, c=0 where t7.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t7 LEFT JOIN (t8, t9, t3) ON (t7.id=t8.id and t7.id=t9.id and t7.id=t3.id) SET g=0, h=0, i=0, c=0 where t7.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t8, t9, t3) ON (t7.id=t8.id and t7.id=t9.id and t7.id=t3.id) SET g=0, h=0, i=0, c=0 where t7.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0, d=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0, d=0 where t1.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t1 LEFT JOIN (t4, t5, t6) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t6.id) SET a=0, d=0, e=0, f=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t5, t6) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t6.id) SET a=0, d=0, e=0, f=0 where t1.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t4 LEFT JOIN (t1, t5, t6) ON (t4.id=t1.id and t4.id=t5.id and t4.id=t6.id) SET a=0, e=0, f=0 where t4.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t4 LEFT JOIN (t1, t5, t6) ON (t4.id=t1.id and t4.id=t5.id and t4.id=t6.id) SET a=0, e=0, f=0 where t4.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc UPDATE t7 LEFT JOIN (t1, t4, t2) ON (t7.id=t1.id and t7.id=t4.id and t7.id=t2.id) SET a=0, b=0, d=0, g=0 where t7.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t1, t4, t2) ON (t7.id=t1.id and t7.id=t4.id and t7.id=t2.id) SET a=0, b=0, d=0, g=0 where t7.id=1' -set global sql_slave_skip_counter=1; +SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; include/start_slave.inc [on slave] show tables like 't%'; diff --git a/mysql-test/suite/rpl/r/rpl_flushlog_loop.result b/mysql-test/suite/rpl/r/rpl_flushlog_loop.result index 600ac44fc86..3bb96b669d7 100644 --- a/mysql-test/suite/rpl/r/rpl_flushlog_loop.result +++ b/mysql-test/suite/rpl/r/rpl_flushlog_loop.result @@ -19,43 +19,9 @@ stop slave; change master to master_host='127.0.0.1',master_user='root', master_password='',master_port=SLAVE_PORT; include/start_slave.inc +CREATE TABLE t1 (a INT KEY) ENGINE= MyISAM; +INSERT INTO t1 VALUE(1); FLUSH LOGS; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port SLAVE_PORT -Connect_Retry 60 -Master_Log_File slave-bin.000001 -Read_Master_Log_Pos POSITION -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File slave-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos POSITION -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert # -Last_IO_Errno # -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error +INSERT INTO t1 VALUE(2); +Checking that both slave threads are running. +Relay_Log_File relay-log.000003 diff --git a/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result b/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result index a34c536feb8..6d3e73f787d 100644 --- a/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result +++ b/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result @@ -31,6 +31,5 @@ include/stop_slave.inc change master to master_port=SLAVE_PORT; start slave; *** must be having the replicate-same-server-id IO thread error *** -Slave_IO_Errno= 1593 -Slave_IO_Error= Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it). +Last_IO_Error = Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it). SET DEBUG_SYNC= 'RESET'; diff --git a/mysql-test/suite/rpl/r/rpl_grant.result b/mysql-test/suite/rpl/r/rpl_grant.result index 1bed6101e3c..285d52b7678 100644 --- a/mysql-test/suite/rpl/r/rpl_grant.result +++ b/mysql-test/suite/rpl/r/rpl_grant.result @@ -41,42 +41,3 @@ user host SELECT COUNT(*) FROM mysql.user WHERE user like 'dummy%'; COUNT(*) 0 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error diff --git a/mysql-test/suite/rpl/r/rpl_incident.result b/mysql-test/suite/rpl/r/rpl_incident.result index c3baabbdbc3..6c226aaf2f7 100644 --- a/mysql-test/suite/rpl/r/rpl_incident.result +++ b/mysql-test/suite/rpl/r/rpl_incident.result @@ -19,51 +19,13 @@ a 2 3 4 +Last_SQL_Error = The incident LOST_EVENTS occured on the master. Message: **** On Slave **** SELECT * FROM t1; a 1 2 3 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File # -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1590 -Last_Error The incident LOST_EVENTS occured on the master. Message: -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 1590 -Last_SQL_Error The incident LOST_EVENTS occured on the master. Message: SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; SELECT * FROM t1; @@ -72,43 +34,5 @@ a 2 3 4 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File # -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000002 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. DROP TABLE t1; diff --git a/mysql-test/suite/rpl/r/rpl_innodb_mixed_ddl.result b/mysql-test/suite/rpl/r/rpl_innodb_mixed_ddl.result index fbb1e2355c3..549842198e8 100644 --- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_ddl.result +++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_ddl.result @@ -136,25 +136,24 @@ ALTER TABLE t2 DROP COLUMN d; ******************** SHOW BINLOG EVENTS ******************** -show binlog events from 1; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Format_desc 1 # Server ver: # -master-bin.000001 # Query 1 # DROP DATABASE IF EXISTS test_rpl -master-bin.000001 # Query 1 # DROP DATABASE IF EXISTS test_rpl_1 -master-bin.000001 # Query 1 # CREATE DATABASE test_rpl_1 CHARACTER SET utf8 COLLATE utf8_general_ci -master-bin.000001 # Query 1 # ALTER DATABASE test_rpl_1 CHARACTER SET latin1 COLLATE latin1_general_ci -master-bin.000001 # Query 1 # DROP DATABASE test_rpl_1 -master-bin.000001 # Query 1 # CREATE DATABASE test_rpl CHARACTER SET utf8 COLLATE utf8_general_ci -master-bin.000001 # Query 1 # ALTER DATABASE test_rpl CHARACTER SET latin1 COLLATE latin1_swedish_ci -master-bin.000001 # Query 1 # use `test_rpl`; CREATE TABLE t0 (a int auto_increment not null, c int not null, PRIMARY KEY(a), KEY index2 (c)) ENGINE=innodb -master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t0 DROP INDEX index2 -master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t0 ADD COLUMN b char(254) -master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t0 ADD INDEX index1 (b) -master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t0 DROP COLUMN c -master-bin.000001 # Query 1 # use `test_rpl`; RENAME TABLE t0 TO t1 -master-bin.000001 # Query 1 # use `test_rpl`; CREATE TABLE t2 LIKE t1 -master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t2 ADD COLUMN d datetime -master-bin.000001 # Query 1 # use `test_rpl`; CREATE INDEX index2 on t2 (d) -master-bin.000001 # Query 1 # use `test_rpl`; CREATE INDEX index3 on t2 (a, d) -master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t2 DROP COLUMN d +master-bin.000001 # Query # # DROP DATABASE IF EXISTS test_rpl +master-bin.000001 # Query # # DROP DATABASE IF EXISTS test_rpl_1 +master-bin.000001 # Query # # CREATE DATABASE test_rpl_1 CHARACTER SET utf8 COLLATE utf8_general_ci +master-bin.000001 # Query # # ALTER DATABASE test_rpl_1 CHARACTER SET latin1 COLLATE latin1_general_ci +master-bin.000001 # Query # # DROP DATABASE test_rpl_1 +master-bin.000001 # Query # # CREATE DATABASE test_rpl CHARACTER SET utf8 COLLATE utf8_general_ci +master-bin.000001 # Query # # ALTER DATABASE test_rpl CHARACTER SET latin1 COLLATE latin1_swedish_ci +master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t0 (a int auto_increment not null, c int not null, PRIMARY KEY(a), KEY index2 (c)) ENGINE=innodb +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 DROP INDEX index2 +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 ADD COLUMN b char(254) +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 ADD INDEX index1 (b) +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 DROP COLUMN c +master-bin.000001 # Query # # use `test_rpl`; RENAME TABLE t0 TO t1 +master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t2 LIKE t1 +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t2 ADD COLUMN d datetime +master-bin.000001 # Query # # use `test_rpl`; CREATE INDEX index2 on t2 (d) +master-bin.000001 # Query # # use `test_rpl`; CREATE INDEX index3 on t2 (a, d) +master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t2 DROP COLUMN d drop database test_rpl; diff --git a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result index 58b9d445037..26f2545dd72 100644 --- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result +++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result @@ -830,278 +830,277 @@ DELETE FROM t2; ******************** SHOW BINLOG EVENTS ******************** -show binlog events from 1; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Format_desc 1 # Server ver: # -master-bin.000001 # Query 1 # CREATE DATABASE test_rpl -master-bin.000001 # Query 1 # use `test_rpl`; CREATE TABLE t1 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=innodb -master-bin.000001 # Query 1 # use `test_rpl`; CREATE TABLE t2 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=innodb -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t2) -master-bin.000001 # Delete_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 SELECT * FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES (1, 't1, text 1') ON DUPLICATE KEY UPDATE b = 't2, text 1' -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 WHERE a = 2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Begin_load_query 1 # ;file_id=#;block_len=# -master-bin.000001 # Execute_load_query 1 # use `test_rpl`; LOAD DATA INFILE 'MYSQLTEST_VARDIR/std_data/rpl_mixed.dat' INTO TABLE `t1` FIELDS TERMINATED BY '|' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`, `b`) ;file_id=# -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(3, 't1, text 3') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; REPLACE INTO t1 VALUES(1, 't1, text 11') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1) -master-bin.000001 # Update_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; REPLACE INTO t1 SET a=3, b='t1, text 33' -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'CCC') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 'DDD') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 'DDD') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(2, 'CCC') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; TRUNCATE t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; UPDATE t1 SET b = 't1, text 1 updated' WHERE a = 1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; UPDATE t1, t2 SET t1.b = 'test', t2.b = 'test' -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (1, 'start') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (3, 'before savepoint s1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (5, 'before savepoint s2') -master-bin.000001 # Query 1 # SAVEPOINT s2 -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (6, 'after savepoint s2') -master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 7 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # use `test_rpl`; CREATE USER 'user_test_rpl'@'localhost' IDENTIFIED BY PASSWORD '*1111111111111111111111111111111111111111' -master-bin.000001 # Query 1 # use `test_rpl`; GRANT SELECT ON *.* TO 'user_test_rpl'@'localhost' -master-bin.000001 # Query 1 # use `test_rpl`; REVOKE SELECT ON *.* FROM 'user_test_rpl'@'localhost' -master-bin.000001 # Query 1 # use `test_rpl`; SET PASSWORD FOR 'user_test_rpl'@'localhost'='*0000000000000000000000000000000000000000' -master-bin.000001 # Query 1 # use `test_rpl`; RENAME USER 'user_test_rpl'@'localhost' TO 'user_test_rpl_2'@'localhost' -master-bin.000001 # Query 1 # use `test_rpl`; DROP USER 'user_test_rpl_2'@'localhost' -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(100, 'test') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # use `test_rpl`; ANALYZE TABLE t1 -master-bin.000001 # Query 1 # use `test_rpl`; OPTIMIZE TABLE t1 -master-bin.000001 # Query 1 # use `test_rpl`; REPAIR TABLE t1 -master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() +master-bin.000001 # Query # # CREATE DATABASE test_rpl +master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t1 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=innodb +master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t2 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=innodb +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t2) +master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 SELECT * FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES (1, 't1, text 1') ON DUPLICATE KEY UPDATE b = 't2, text 1' +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 WHERE a = 2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# +master-bin.000001 # Execute_load_query # # use `test_rpl`; LOAD DATA INFILE 'MYSQLTEST_VARDIR/std_data/rpl_mixed.dat' INTO TABLE `t1` FIELDS TERMINATED BY '|' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`, `b`) ;file_id=# +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(3, 't1, text 3') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; REPLACE INTO t1 VALUES(1, 't1, text 11') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) +master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; REPLACE INTO t1 SET a=3, b='t1, text 33' +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'CCC') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 'DDD') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 'DDD') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(2, 'CCC') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; TRUNCATE t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; UPDATE t1 SET b = 't1, text 1 updated' WHERE a = 1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; UPDATE t1, t2 SET t1.b = 'test', t2.b = 'test' +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (1, 'start') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (3, 'before savepoint s1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (5, 'before savepoint s2') +master-bin.000001 # Query # # SAVEPOINT s2 +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (6, 'after savepoint s2') +master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 7 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; CREATE USER 'user_test_rpl'@'localhost' IDENTIFIED BY PASSWORD '*1111111111111111111111111111111111111111' +master-bin.000001 # Query # # use `test_rpl`; GRANT SELECT ON *.* TO 'user_test_rpl'@'localhost' +master-bin.000001 # Query # # use `test_rpl`; REVOKE SELECT ON *.* FROM 'user_test_rpl'@'localhost' +master-bin.000001 # Query # # use `test_rpl`; SET PASSWORD FOR 'user_test_rpl'@'localhost'='*0000000000000000000000000000000000000000' +master-bin.000001 # Query # # use `test_rpl`; RENAME USER 'user_test_rpl'@'localhost' TO 'user_test_rpl_2'@'localhost' +master-bin.000001 # Query # # use `test_rpl`; DROP USER 'user_test_rpl_2'@'localhost' +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(100, 'test') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; ANALYZE TABLE t1 +master-bin.000001 # Query # # use `test_rpl`; OPTIMIZE TABLE t1 +master-bin.000001 # Query # # use `test_rpl`; REPAIR TABLE t1 +master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() BEGIN UPDATE t1 SET b = 'test' WHERE a = 201; END -master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`() +master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`() BEGIN UPDATE t1 SET b = UUID() WHERE a = 202; END -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(201, 'test 201') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; UPDATE t1 SET b = 'test' WHERE a = 201 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(202, 'test 202') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1) -master-bin.000001 # Update_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 202 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # use `test_rpl`; ALTER PROCEDURE p1 COMMENT 'p1' -master-bin.000001 # Query 1 # use `test_rpl`; DROP PROCEDURE p1 -master-bin.000001 # Query 1 # use `test_rpl`; DROP PROCEDURE p2 -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` TRIGGER tr1 BEFORE INSERT ON t1 +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(201, 'test 201') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; UPDATE t1 SET b = 'test' WHERE a = 201 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(202, 'test 202') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) +master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 202 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; ALTER PROCEDURE p1 COMMENT 'p1' +master-bin.000001 # Query # # use `test_rpl`; DROP PROCEDURE p1 +master-bin.000001 # Query # # use `test_rpl`; DROP PROCEDURE p2 +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN INSERT INTO t2 SET a = NEW.a, b = NEW.b; END -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1) -master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t2) -master-bin.000001 # Write_rows 1 # table_id: # -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # use `test_rpl`; DROP TRIGGER tr1 -master-bin.000001 # Query 1 # use `test_rpl`; GRANT EVENT ON *.* TO 'root'@'localhost' -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1 -master-bin.000001 # Query 1 # use `test_rpl`; ALTER EVENT e1 RENAME TO e2 -master-bin.000001 # Query 1 # use `test_rpl`; DROP EVENT e2 -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 'test2') -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 1 -master-bin.000001 # Query 1 # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS SELECT * FROM t1 WHERE b <> UUID() -master-bin.000001 # Query 1 # use `test_rpl`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 2 -master-bin.000001 # Query 1 # use `test_rpl`; DROP VIEW v1 -master-bin.000001 # Query 1 # use `test_rpl`; DROP VIEW v2 -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 -master-bin.000001 # Xid 1 # # -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 -master-bin.000001 # Xid 1 # # +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test_rpl.t1) +master-bin.000001 # Table_map # # table_id: # (test_rpl.t2) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; DROP TRIGGER tr1 +master-bin.000001 # Query # # use `test_rpl`; GRANT EVENT ON *.* TO 'root'@'localhost' +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1 +master-bin.000001 # Query # # use `test_rpl`; ALTER EVENT e1 RENAME TO e2 +master-bin.000001 # Query # # use `test_rpl`; DROP EVENT e2 +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 'test2') +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 1 +master-bin.000001 # Query # # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS SELECT * FROM t1 WHERE b <> UUID() +master-bin.000001 # Query # # use `test_rpl`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 2 +master-bin.000001 # Query # # use `test_rpl`; DROP VIEW v1 +master-bin.000001 # Query # # use `test_rpl`; DROP VIEW v2 +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 +master-bin.000001 # Xid # # COMMIT /* XID */ drop database test_rpl; diff --git a/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result b/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result index 75180334c28..daefee9c669 100644 --- a/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result +++ b/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result @@ -11,45 +11,7 @@ SELECT * FROM t1; a b 1 10 2 2 -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1105 -Last_Error Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10' -Skip_Counter 0 -Exec_Master_Log_Pos 246 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 1105 -Last_SQL_Error Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10' +Last_SQL_Error = Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10' SELECT * FROM t1; a b stop slave; @@ -94,49 +56,7 @@ id field_1 field_2 field_3 4 4 d 4d 5 5 e 5e 6 6 f 6f -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1105 -Last_Error Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1 (field_1, field_2, field_3) -SELECT t2.field_a, t2.field_b, t2.field_c -FROM t2 -ON DUPLICATE KEY UPDATE -t1.field_3 = t2.field_c' -Skip_Counter 0 -Exec_Master_Log_Pos 1278 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 1105 -Last_SQL_Error Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1 (field_1, field_2, field_3) +Last_SQL_Error = Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1 (field_1, field_2, field_3) SELECT t2.field_a, t2.field_b, t2.field_c FROM t2 ON DUPLICATE KEY UPDATE diff --git a/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result b/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result index ba0aa847cf7..9acc1ad93ac 100644 --- a/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result +++ b/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result @@ -6,85 +6,9 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; CREATE TABLE t1 (a INT, b INT); INSERT INTO t1 VALUES (1,10); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos 290 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 290 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos 560 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1593 -Last_Error Fatal error: Not enough memory -Skip_Counter 0 -Exec_Master_Log_Pos 325 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1593 -Last_SQL_Error Fatal error: Not enough memory +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Fatal error: Not enough memory SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; -START SLAVE; +include/start_slave.inc DROP TABLE t1; diff --git a/mysql-test/suite/rpl/r/rpl_log_pos.result b/mysql-test/suite/rpl/r/rpl_log_pos.result index 85fa4c10eac..d9f02f6e82f 100644 --- a/mysql-test/suite/rpl/r/rpl_log_pos.result +++ b/mysql-test/suite/rpl/r/rpl_log_pos.result @@ -9,87 +9,11 @@ show master status; File Position Binlog_Do_DB Binlog_Ignore_DB master-bin.000001 # include/stop_slave.inc -change master to master_log_pos=75; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -start slave; -include/stop_slave.inc -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 +change master to master_log_pos=MASTER_LOG_POS; Read_Master_Log_Pos 75 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 75 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +start slave; +Last_IO_Error = Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master' +include/stop_slave.inc show master status; File Position Binlog_Do_DB Binlog_Ignore_DB master-bin.000001 # @@ -97,7 +21,7 @@ create table if not exists t1 (n int); drop table if exists t1; create table t1 (n int); insert into t1 values (1),(2),(3); -change master to master_log_pos=4; +change master to master_log_pos=MASTER_LOG_POS; start slave; select * from t1 ORDER BY n; n diff --git a/mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result b/mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result index 2e707fb62c1..6bb9b139057 100644 --- a/mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result +++ b/mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result @@ -14,63 +14,22 @@ MIXED MIXED CREATE TABLE t1 (a INT, b LONG); INSERT INTO t1 VALUES (1,1), (2,2); INSERT INTO t1 VALUES (3,UUID()), (4,UUID()); -SHOW BINLOG EVENTS; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 -master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1 (a INT, b LONG) -master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES (1,1), (2,2) -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # COMMIT +master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG) +master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (2,2) +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT **** On Slave **** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos 594 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 594 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert # -Last_IO_Errno # -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error -SHOW BINLOG EVENTS; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Query 1 # use `test`; CREATE TABLE t1 (a INT, b LONG) -slave-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES (1,1), (2,2) -slave-bin.000001 # Query 1 # BEGIN -slave-bin.000001 # Table_map 1 # table_id: # (test.t1) -slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -slave-bin.000001 # Query 1 # COMMIT +slave-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG) +slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (2,2) +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Query # # COMMIT DROP TABLE IF EXISTS t1; SET @@global.binlog_format= @old_binlog_format; diff --git a/mysql-test/suite/rpl/r/rpl_replicate_do.result b/mysql-test/suite/rpl/r/rpl_replicate_do.result index 33088ee2ec8..637047a883b 100644 --- a/mysql-test/suite/rpl/r/rpl_replicate_do.result +++ b/mysql-test/suite/rpl/r/rpl_replicate_do.result @@ -26,45 +26,7 @@ n select * from t11; ERROR 42S02: Table 'test.t11' doesn't exist drop table if exists t1,t2,t11; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB Replicate_Do_Table test.t1 -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error create table t1 (ts timestamp); set one_shot time_zone='met'; insert into t1 values('2005-08-12 00:00:00'); diff --git a/mysql-test/suite/rpl/r/rpl_rotate_logs.result b/mysql-test/suite/rpl/r/rpl_rotate_logs.result index 013ba87ec0b..b50c7cebcab 100644 --- a/mysql-test/suite/rpl/r/rpl_rotate_logs.result +++ b/mysql-test/suite/rpl/r/rpl_rotate_logs.result @@ -14,45 +14,9 @@ create temporary table temp_table (a char(80) not null); insert into temp_table values ("testing temporary tables"); create table t1 (s text); insert into t1 values('Could not break slave'),('Tried hard'); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 60 Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. select * from t1; s Could not break slave @@ -93,45 +57,9 @@ show binary logs; Log_name File_size master-bin.000003 # insert into t2 values (65); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 60 Master_Log_File master-bin.000003 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # Relay_Master_Log_File master-bin.000003 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. select * from t2; m 34 @@ -157,45 +85,9 @@ master-bin.000005 # select * from t4; a testing temporary tables part 2 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 60 Master_Log_File master-bin.000005 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # Relay_Master_Log_File master-bin.000005 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. lock tables t3 read; select count(*) from t3 where n >= 4; count(*) diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result index 7920b9a981d..458ae53e79c 100644 --- a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result +++ b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result @@ -56,14 +56,13 @@ DELETE FROM t1; INSERT INTO t1 VALUES (1),(2); DELETE FROM t1 WHERE a = 0; UPDATE t1 SET a=99 WHERE a = 0; -SHOW BINLOG EVENTS; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4 -master-bin.000001 106 Query 1 192 use `test`; CREATE TABLE t1 (a INT) -master-bin.000001 192 Query 1 260 BEGIN -master-bin.000001 260 Table_map 1 301 table_id: # (test.t1) -master-bin.000001 301 Write_rows 1 340 table_id: # flags: STMT_END_F -master-bin.000001 340 Query 1 409 COMMIT +master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT) +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT DROP TABLE t1; ================ Test for BUG#17620 ================ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result index a980092ac37..a247c3a6039 100644 --- a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result +++ b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result @@ -436,8 +436,7 @@ DELETE FROM t1; SELECT COUNT(*) FROM t1 ORDER BY c1,c2; COUNT(*) 0 set @@global.slave_exec_mode= default; -Last_SQL_Error - +Checking that both slave threads are running. SELECT COUNT(*) FROM t1 ORDER BY c1,c2; COUNT(*) 0 **** Test for BUG#37076 **** @@ -487,8 +486,7 @@ Comparing tables master:test.t2 and slave:test.t2 [expecting slave to stop] INSERT INTO t3 VALUES (1, "", 1); INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2); -Last_SQL_Error -Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size. RESET MASTER; STOP SLAVE; RESET SLAVE; @@ -500,8 +498,7 @@ Comparing tables master:test.t4 and slave:test.t4 [expecting slave to stop] INSERT INTO t5 VALUES (1, "", 1); INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2); -Last_SQL_Error -Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size. RESET MASTER; STOP SLAVE; RESET SLAVE; @@ -509,8 +506,7 @@ START SLAVE; [expecting slave to stop] INSERT INTO t6 VALUES (1, "", 1); INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2); -Last_SQL_Error -Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size. RESET MASTER; STOP SLAVE; RESET SLAVE; diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result index ea0c322fe6d..fefe8e969dc 100644 --- a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result +++ b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result @@ -436,8 +436,7 @@ DELETE FROM t1; SELECT COUNT(*) FROM t1 ORDER BY c1,c2; COUNT(*) 0 set @@global.slave_exec_mode= default; -Last_SQL_Error - +Checking that both slave threads are running. SELECT COUNT(*) FROM t1 ORDER BY c1,c2; COUNT(*) 0 **** Test for BUG#37076 **** @@ -487,8 +486,7 @@ Comparing tables master:test.t2 and slave:test.t2 [expecting slave to stop] INSERT INTO t3 VALUES (1, "", 1); INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2); -Last_SQL_Error -Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size. RESET MASTER; STOP SLAVE; RESET SLAVE; @@ -500,8 +498,7 @@ Comparing tables master:test.t4 and slave:test.t4 [expecting slave to stop] INSERT INTO t5 VALUES (1, "", 1); INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2); -Last_SQL_Error -Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size. RESET MASTER; STOP SLAVE; RESET SLAVE; @@ -509,8 +506,7 @@ START SLAVE; [expecting slave to stop] INSERT INTO t6 VALUES (1, "", 1); INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2); -Last_SQL_Error -Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size. RESET MASTER; STOP SLAVE; RESET SLAVE; diff --git a/mysql-test/suite/rpl/r/rpl_row_colSize.result b/mysql-test/suite/rpl/r/rpl_row_colSize.result index 6d002a722f1..417bc65641a 100644 --- a/mysql-test/suite/rpl/r/rpl_row_colSize.result +++ b/mysql-test/suite/rpl/r/rpl_row_colSize.result @@ -18,45 +18,7 @@ CREATE TABLE t1 (a DECIMAL(20, 10)); RESET MASTER; INSERT INTO t1 VALUES (901251.90125); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -72,45 +34,7 @@ CREATE TABLE t1 (a DECIMAL(27, 18)); RESET MASTER; INSERT INTO t1 VALUES (901251.90125); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 12, test.t1 on slave has size 12. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 12, test.t1 on slave has size 12. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 12, test.t1 on slave has size 12. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -126,45 +50,7 @@ CREATE TABLE t1 (a NUMERIC(20, 10)); RESET MASTER; INSERT INTO t1 VALUES (901251.90125); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -181,45 +67,7 @@ CREATE TABLE t1 (a FLOAT(47)); RESET MASTER; INSERT INTO t1 VALUES (901251.90125); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 5, test.t1 has type 4 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 5, test.t1 has type 4 +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 5, test.t1 has type 4 SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -236,45 +84,7 @@ CREATE TABLE t1 (a BIT(64)); RESET MASTER; INSERT INTO t1 VALUES (B'10101'); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 8, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 8, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 8, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -290,45 +100,7 @@ CREATE TABLE t1 (a BIT(12)); RESET MASTER; INSERT INTO t1 VALUES (B'10101'); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 2. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 2. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 2. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -345,45 +117,7 @@ CREATE TABLE t1 (a SET('1','2','3','4','5','6','7','8','9')); RESET MASTER; INSERT INTO t1 VALUES ('4'); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -400,45 +134,7 @@ CREATE TABLE t1 (a CHAR(20)); RESET MASTER; INSERT INTO t1 VALUES ('This is a test.'); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 20, test.t1 on slave has size 11. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 20, test.t1 on slave has size 11. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 20, test.t1 on slave has size 11. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -486,45 +182,7 @@ CREATE TABLE t1 (a ENUM( RESET MASTER; INSERT INTO t1 VALUES ('44'); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -541,45 +199,7 @@ CREATE TABLE t1 (a VARCHAR(2000)); RESET MASTER; INSERT INTO t1 VALUES ('This is a test.'); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 100. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 100. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 100. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -595,45 +215,7 @@ CREATE TABLE t1 (a VARCHAR(200)); RESET MASTER; INSERT INTO t1 VALUES ('This is a test.'); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 200, test.t1 on slave has size 10. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 200, test.t1 on slave has size 10. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 200, test.t1 on slave has size 10. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -649,45 +231,7 @@ CREATE TABLE t1 (a VARCHAR(2000)); RESET MASTER; INSERT INTO t1 VALUES ('This is a test.'); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 1000. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 1000. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 1000. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 @@ -704,45 +248,7 @@ CREATE TABLE t1 (a LONGBLOB); RESET MASTER; INSERT INTO t1 VALUES ('This is a test.'); START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 4, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 4, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 4, test.t1 on slave has size 1. Master's column size should be <= the slave's column size. SELECT COUNT(*) FROM t1; COUNT(*) 0 diff --git a/mysql-test/suite/rpl/r/rpl_row_create_table.result b/mysql-test/suite/rpl/r/rpl_row_create_table.result index 8a1b7a805aa..e480ff3dfe9 100644 --- a/mysql-test/suite/rpl/r/rpl_row_create_table.result +++ b/mysql-test/suite/rpl/r/rpl_row_create_table.result @@ -13,31 +13,12 @@ CREATE TABLE t1 (a INT, b INT); CREATE TABLE t2 (a INT, b INT) ENGINE=Merge; CREATE TABLE t3 (a INT, b INT) CHARSET=utf8; CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8; -SHOW BINLOG EVENTS FROM 106; -Log_name # -Pos 106 -Event_type Query -Server_id # -End_log_pos 199 -Info use `test`; CREATE TABLE t1 (a INT, b INT) -Log_name # -Pos 199 -Event_type Query -Server_id # -End_log_pos 305 -Info use `test`; CREATE TABLE t2 (a INT, b INT) ENGINE=Merge -Log_name # -Pos 305 -Event_type Query -Server_id # -End_log_pos 411 -Info use `test`; CREATE TABLE t3 (a INT, b INT) CHARSET=utf8 -Log_name # -Pos 411 -Event_type Query -Server_id # -End_log_pos 530 -Info use `test`; CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8 +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b INT) +master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a INT, b INT) ENGINE=Merge +master-bin.000001 # Query # # use `test`; CREATE TABLE t3 (a INT, b INT) CHARSET=utf8 +master-bin.000001 # Query # # use `test`; CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8 **** On Master **** SHOW CREATE TABLE t1; Table t1 @@ -137,7 +118,7 @@ RESET MASTER; include/start_slave.inc CREATE TABLE t7 (UNIQUE(b)) SELECT a,b FROM tt3; ERROR 23000: Duplicate entry '2' for key 'b' -SHOW BINLOG EVENTS FROM 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info CREATE TABLE t7 (a INT, b INT UNIQUE); INSERT INTO t7 SELECT a,b FROM tt3; @@ -147,13 +128,13 @@ a b 1 2 2 4 3 6 -SHOW BINLOG EVENTS FROM 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -# 106 Query # 206 use `test`; CREATE TABLE t7 (a INT, b INT UNIQUE) -# 206 Query # 274 BEGIN -# 274 Table_map # 316 table_id: # (test.t7) -# 316 Write_rows # 372 table_id: # flags: STMT_END_F -# 372 Query # 443 ROLLBACK +master-bin.000001 # Query # # use `test`; CREATE TABLE t7 (a INT, b INT UNIQUE) +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t7) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # ROLLBACK SELECT * FROM t7 ORDER BY a,b; a b 1 2 @@ -171,12 +152,12 @@ INSERT INTO t7 SELECT a,b FROM tt4; ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back -SHOW BINLOG EVENTS FROM 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -# 106 Query # 174 BEGIN -# 174 Table_map # 216 table_id: # (test.t7) -# 216 Write_rows # 272 table_id: # flags: STMT_END_F -# 272 Query # 341 COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t7) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT SELECT * FROM t7 ORDER BY a,b; a b 1 2 @@ -216,10 +197,10 @@ Create Table CREATE TABLE `t9` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 -SHOW BINLOG EVENTS FROM 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -# 106 Query # 192 use `test`; CREATE TABLE t8 LIKE t4 -# 192 Query # 331 use `test`; CREATE TABLE `t9` ( +master-bin.000001 # Query # # use `test`; CREATE TABLE t8 LIKE t4 +master-bin.000001 # Query # # use `test`; CREATE TABLE `t9` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL ) @@ -289,38 +270,38 @@ a 1 2 3 -SHOW BINLOG EVENTS FROM 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -# 106 Query # 192 use `test`; CREATE TABLE t1 (a INT) -# 192 Query # 260 BEGIN -# 260 Table_map # 301 table_id: # (test.t1) -# 301 Write_rows # 345 table_id: # flags: STMT_END_F -# 345 Query # 414 COMMIT -# 414 Query # 482 BEGIN -# 482 Query # 607 use `test`; CREATE TABLE `t2` ( +master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT) +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; CREATE TABLE `t2` ( `a` int(11) DEFAULT NULL ) ENGINE=InnoDB -# 607 Table_map # 648 table_id: # (test.t2) -# 648 Write_rows # 692 table_id: # flags: STMT_END_F -# 692 Xid # 719 COMMIT /* XID */ -# 719 Query # 787 BEGIN -# 787 Query # 912 use `test`; CREATE TABLE `t3` ( +master-bin.000001 # Table_map # # table_id: # (test.t2) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; CREATE TABLE `t3` ( `a` int(11) DEFAULT NULL ) ENGINE=InnoDB -# 912 Table_map # 953 table_id: # (test.t3) -# 953 Write_rows # 997 table_id: # flags: STMT_END_F -# 997 Xid # 1024 COMMIT /* XID */ -# 1024 Query # 1092 BEGIN -# 1092 Query # 1217 use `test`; CREATE TABLE `t4` ( +master-bin.000001 # Table_map # # table_id: # (test.t3) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; CREATE TABLE `t4` ( `a` int(11) DEFAULT NULL ) ENGINE=InnoDB -# 1217 Table_map # 1258 table_id: # (test.t4) -# 1258 Write_rows # 1302 table_id: # flags: STMT_END_F -# 1302 Xid # 1329 COMMIT /* XID */ -# 1329 Query # 1397 BEGIN -# 1397 Table_map # 1438 table_id: # (test.t1) -# 1438 Write_rows # 1482 table_id: # flags: STMT_END_F -# 1482 Query # 1551 COMMIT +master-bin.000001 # Table_map # # table_id: # (test.t4) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT SHOW TABLES; Tables_in_test t1 @@ -374,20 +355,20 @@ a 4 6 9 -SHOW BINLOG EVENTS FROM 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -# 106 Query # 192 use `test`; CREATE TABLE t1 (a INT) -# 192 Query # 260 BEGIN -# 260 Table_map # 301 table_id: # (test.t1) -# 301 Write_rows # 345 table_id: # flags: STMT_END_F -# 345 Query # 414 COMMIT -# 414 Query # 514 use `test`; CREATE TABLE t2 (a INT) ENGINE=INNODB -# 514 Query # 582 BEGIN -# 582 Table_map # 623 table_id: # (test.t2) -# 623 Write_rows # 667 table_id: # flags: STMT_END_F -# 667 Table_map # 708 table_id: # (test.t2) -# 708 Write_rows # 747 table_id: # flags: STMT_END_F -# 747 Xid # 774 COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT) +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a INT) ENGINE=INNODB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t2) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t2) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ SELECT * FROM t2 ORDER BY a; a 1 @@ -413,14 +394,14 @@ Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back SELECT * FROM t2 ORDER BY a; a -SHOW BINLOG EVENTS FROM 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -# 106 Query # 174 BEGIN -# 174 Table_map # 215 table_id: # (test.t2) -# 215 Write_rows # 259 table_id: # flags: STMT_END_F -# 259 Table_map # 300 table_id: # (test.t2) -# 300 Write_rows # 339 table_id: # flags: STMT_END_F -# 339 Query # 410 ROLLBACK +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t2) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Table_map # # table_id: # (test.t2) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # ROLLBACK SELECT * FROM t2 ORDER BY a; a DROP TABLE t1,t2; diff --git a/mysql-test/suite/rpl/r/rpl_row_drop.result b/mysql-test/suite/rpl/r/rpl_row_drop.result index 89654ebf165..048e07271b3 100644 --- a/mysql-test/suite/rpl/r/rpl_row_drop.result +++ b/mysql-test/suite/rpl/r/rpl_row_drop.result @@ -41,12 +41,11 @@ t1 t2 **** On Master **** DROP TABLE t1,t2; -SHOW BINLOG EVENTS; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server ver: VERSION, Binlog ver: 4 -master-bin.000001 106 Query 1 192 use `test`; CREATE TABLE t1 (a int) -master-bin.000001 192 Query 1 278 use `test`; CREATE TABLE t2 (a int) -master-bin.000001 278 Query 1 382 use `test`; DROP TABLE `t1` /* generated by server */ +master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a int) +master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a int) +master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ SHOW TABLES; Tables_in_test t2 diff --git a/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result b/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result index 129bad0fbcc..61fee130d49 100644 --- a/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result +++ b/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result @@ -12,16 +12,12 @@ create table t4 (a int); insert into t4 select * from t3; rename table t1 to t5, t2 to t1; flush no_write_to_binlog tables; -SHOW BINLOG EVENTS FROM 897 ; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; rename table t1 to t5, t2 to t1 +master-bin.000001 # Query # # use `test`; rename table t1 to t5, t2 to t1 select * from t3; a flush tables; -SHOW BINLOG EVENTS FROM 897 ; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; rename table t1 to t5, t2 to t1 -master-bin.000001 # Query 1 # use `test`; flush tables select * from t3; a stop slave; diff --git a/mysql-test/suite/rpl/r/rpl_row_log.result b/mysql-test/suite/rpl/r/rpl_row_log.result index 9593b009d1f..0f648539c47 100644 --- a/mysql-test/suite/rpl/r/rpl_row_log.result +++ b/mysql-test/suite/rpl/r/rpl_row_log.result @@ -7,7 +7,7 @@ start slave; include/stop_slave.inc reset master; reset slave; -start slave; +include/start_slave.inc create table t1(n int not null auto_increment primary key)ENGINE=MyISAM; insert into t1 values (NULL); drop table t1; @@ -16,30 +16,29 @@ load data infile 'LOAD_FILE' into table t1 ignore 1 lines; select count(*) from t1; count(*) 69 -show binlog events; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # COMMIT -master-bin.000001 # Query 1 # use `test`; drop table t1 -master-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # COMMIT -show binlog events from 106 limit 1; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +show binlog events from limit 1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM -show binlog events from 106 limit 2; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM +show binlog events from limit 2; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM -master-bin.000001 # Query 1 # BEGIN -show binlog events from 106 limit 2,1; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM +master-bin.000001 # Query # # BEGIN +show binlog events from limit 2,1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Table_map 1 # table_id: # (test.t1) +master-bin.000001 # Table_map # # table_id: # (test.t1) flush logs; create table t3 (a int)ENGINE=MyISAM; select * from t1 order by 1 asc; @@ -203,15 +202,14 @@ master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Rotate # # master-bin.000002;pos=4 -show binlog events in 'master-bin.000002'; +show binlog events in 'master-bin.000002' from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 -master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=MyISAM -master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM -master-bin.000002 # Query 1 # BEGIN -master-bin.000002 # Table_map 1 # table_id: # (test.t2) -master-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000002 # Query 1 # COMMIT +master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=MyISAM +master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=MyISAM +master-bin.000002 # Query # # BEGIN +master-bin.000002 # Table_map # # table_id: # (test.t2) +master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000002 # Query # # COMMIT show binary logs; Log_name File_size master-bin.000001 # @@ -220,69 +218,29 @@ show binary logs; Log_name File_size slave-bin.000001 # slave-bin.000002 # -show binlog events in 'slave-bin.000001' from 4; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM -slave-bin.000001 # Query 1 # BEGIN -slave-bin.000001 # Table_map 1 # table_id: # (test.t1) -slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -slave-bin.000001 # Query 1 # COMMIT -slave-bin.000001 # Query 1 # use `test`; drop table t1 -slave-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM -slave-bin.000001 # Query 1 # BEGIN -slave-bin.000001 # Table_map 1 # table_id: # (test.t1) -slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -slave-bin.000001 # Query 1 # COMMIT -slave-bin.000001 # Query 1 # use `test`; create table t3 (a int)ENGINE=MyISAM -slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4 -show binlog events in 'slave-bin.000002' from 4; +slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Query # # COMMIT +slave-bin.000001 # Query # # use `test`; drop table t1 +slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Query # # COMMIT +slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=MyISAM +slave-bin.000001 # Rotate # # slave-bin.000002;pos=4 +show binlog events in 'slave-bin.000002' from ; Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM -slave-bin.000002 # Query 1 # BEGIN -slave-bin.000002 # Table_map 1 # table_id: # (test.t2) -slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F -slave-bin.000002 # Query 1 # COMMIT -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000002 -Read_Master_Log_Pos 516 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000002 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 516 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=MyISAM +slave-bin.000002 # Query # # BEGIN +slave-bin.000002 # Table_map # # table_id: # (test.t2) +slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000002 # Query # # COMMIT +Checking that both slave threads are running. show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log DROP TABLE t1; diff --git a/mysql-test/suite/rpl/r/rpl_row_log_innodb.result b/mysql-test/suite/rpl/r/rpl_row_log_innodb.result index 8526bad558b..ff189e676cc 100644 --- a/mysql-test/suite/rpl/r/rpl_row_log_innodb.result +++ b/mysql-test/suite/rpl/r/rpl_row_log_innodb.result @@ -7,7 +7,7 @@ start slave; include/stop_slave.inc reset master; reset slave; -start slave; +include/start_slave.inc create table t1(n int not null auto_increment primary key)ENGINE=InnoDB; insert into t1 values (NULL); drop table t1; @@ -16,30 +16,29 @@ load data infile 'LOAD_FILE' into table t1 ignore 1 lines; select count(*) from t1; count(*) 69 -show binlog events; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Xid 1 # COMMIT /* XID */ -master-bin.000001 # Query 1 # use `test`; drop table t1 -master-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=InnoDB -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Xid 1 # COMMIT /* XID */ -show binlog events from 106 limit 1; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=InnoDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Xid # # COMMIT /* XID */ +show binlog events from limit 1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB -show binlog events from 106 limit 2; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB +show binlog events from limit 2; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB -master-bin.000001 # Query 1 # BEGIN -show binlog events from 106 limit 2,1; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB +master-bin.000001 # Query # # BEGIN +show binlog events from limit 2,1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Table_map 1 # table_id: # (test.t1) +master-bin.000001 # Table_map # # table_id: # (test.t1) flush logs; create table t3 (a int)ENGINE=InnoDB; select * from t1 order by 1 asc; @@ -203,15 +202,14 @@ master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ master-bin.000001 # Rotate # # master-bin.000002;pos=4 -show binlog events in 'master-bin.000002'; +show binlog events in 'master-bin.000002' from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 -master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=InnoDB -master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB -master-bin.000002 # Query 1 # BEGIN -master-bin.000002 # Table_map 1 # table_id: # (test.t2) -master-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000002 # Xid 1 # COMMIT /* XID */ +master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=InnoDB +master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=InnoDB +master-bin.000002 # Query # # BEGIN +master-bin.000002 # Table_map # # table_id: # (test.t2) +master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000002 # Xid # # COMMIT /* XID */ show binary logs; Log_name File_size master-bin.000001 # @@ -220,69 +218,29 @@ show binary logs; Log_name File_size slave-bin.000001 # slave-bin.000002 # -show binlog events in 'slave-bin.000001' from 4; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB -slave-bin.000001 # Query 1 # BEGIN -slave-bin.000001 # Table_map 1 # table_id: # (test.t1) -slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -slave-bin.000001 # Xid 1 # COMMIT /* XID */ -slave-bin.000001 # Query 1 # use `test`; drop table t1 -slave-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=InnoDB -slave-bin.000001 # Query 1 # BEGIN -slave-bin.000001 # Table_map 1 # table_id: # (test.t1) -slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -slave-bin.000001 # Xid 1 # COMMIT /* XID */ -slave-bin.000001 # Query 1 # use `test`; create table t3 (a int)ENGINE=InnoDB -slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4 -show binlog events in 'slave-bin.000002' from 4; +slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Xid # # COMMIT /* XID */ +slave-bin.000001 # Query # # use `test`; drop table t1 +slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=InnoDB +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Xid # # COMMIT /* XID */ +slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=InnoDB +slave-bin.000001 # Rotate # # slave-bin.000002;pos=4 +show binlog events in 'slave-bin.000002' from ; Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB -slave-bin.000002 # Query 1 # BEGIN -slave-bin.000002 # Table_map 1 # table_id: # (test.t2) -slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F -slave-bin.000002 # Xid 1 # COMMIT /* XID */ -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000002 -Read_Master_Log_Pos 474 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000002 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 474 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=InnoDB +slave-bin.000002 # Query # # BEGIN +slave-bin.000002 # Table_map # # table_id: # (test.t2) +slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000002 # Xid # # COMMIT /* XID */ +Checking that both slave threads are running. show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log DROP TABLE t1; diff --git a/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result b/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result index 2215b34814e..db06cb6d3de 100644 --- a/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result +++ b/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result @@ -21,45 +21,7 @@ select @@global.max_relay_log_size; @@global.max_relay_log_size 4096 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 2 # @@ -69,45 +31,7 @@ set global max_relay_log_size=(5*4096); select @@global.max_relay_log_size; @@global.max_relay_log_size 20480 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 3: max_relay_log_size = 0 # @@ -117,90 +41,13 @@ set global max_relay_log_size=0; select @@global.max_relay_log_size; @@global.max_relay_log_size 0 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions # stop slave; reset slave; flush logs; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error # # Test 5 # @@ -208,89 +55,13 @@ reset slave; start slave; flush logs; create table t1 (a int); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated # flush logs; drop table t1; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. flush logs; show master status; File Position Binlog_Do_DB Binlog_Ignore_DB diff --git a/mysql-test/suite/rpl/r/rpl_row_reset_slave.result b/mysql-test/suite/rpl/r/rpl_row_reset_slave.result index fa40d8760a8..7bf09df31ca 100644 --- a/mysql-test/suite/rpl/r/rpl_row_reset_slave.result +++ b/mysql-test/suite/rpl/r/rpl_row_reset_slave.result @@ -4,196 +4,37 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -stop slave; +Master_Host 127.0.0.1 +include/stop_slave.inc change master to master_user='test'; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 Master_User test -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -reset slave; -SHOW SLAVE STATUS; -Slave_IO_State # Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -stop slave; reset slave; -start slave; +Master_User root +Master_Host 127.0.0.1 +include/start_slave.inc +Master_User root +Master_Host 127.0.0.1 +include/stop_slave.inc +reset slave; +include/start_slave.inc create temporary table t1 (a int); -stop slave; +include/stop_slave.inc reset slave; -start slave; +include/start_slave.inc show status like 'slave_open_temp_tables'; Variable_name Value Slave_open_temp_tables 0 -stop slave; +include/stop_slave.inc reset slave; -*** errno must be zero: 0 *** change master to master_user='impossible_user_name'; start slave; -ONE -1 include/stop_slave.inc change master to master_user='root'; include/start_slave.inc -*** last errno must be zero: 0 *** -*** last error must be blank: *** include/stop_slave.inc change master to master_user='impossible_user_name'; start slave; -ONE -1 include/stop_slave.inc reset slave; -*** io last errno must be zero: 0 *** -*** io last error must be blank: *** -*** sql last errno must be zero: 0 *** -*** sql last error must be blank: *** diff --git a/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result b/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result index bb9865ab2d1..2b83bffd85f 100644 --- a/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result +++ b/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result @@ -118,214 +118,27 @@ a b SELECT * FROM t2; a 2 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. INSERT INTO t9 VALUES (4); INSERT INTO t4 VALUES (4); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno 1535 -Last_SQL_Error -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc INSERT INTO t9 VALUES (5); INSERT INTO t5 VALUES (5,10,25); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno 1535 -Last_SQL_Error -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc INSERT INTO t9 VALUES (6); INSERT INTO t6 VALUES (6,12,36); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno 1535 -Last_SQL_Error -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc INSERT INTO t9 VALUES (6); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. INSERT INTO t7 VALUES (1),(2),(3); INSERT INTO t8 VALUES (1),(2),(3); SELECT * FROM t7 ORDER BY a; diff --git a/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result b/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result index f606a28c2d9..a42530c354d 100644 --- a/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result +++ b/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result @@ -118,214 +118,27 @@ a b SELECT * FROM t2; a 2 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. INSERT INTO t9 VALUES (4); INSERT INTO t4 VALUES (4); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno 1535 -Last_SQL_Error -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc INSERT INTO t9 VALUES (5); INSERT INTO t5 VALUES (5,10,25); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno 1535 -Last_SQL_Error -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc INSERT INTO t9 VALUES (6); INSERT INTO t6 VALUES (6,12,36); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno 1535 -Last_SQL_Error -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc INSERT INTO t9 VALUES (6); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. INSERT INTO t7 VALUES (1),(2),(3); INSERT INTO t8 VALUES (1),(2),(3); SELECT * FROM t7 ORDER BY a; diff --git a/mysql-test/suite/rpl/r/rpl_row_until.result b/mysql-test/suite/rpl/r/rpl_row_until.result index ad54450af74..81aeb0d645b 100644 --- a/mysql-test/suite/rpl/r/rpl_row_until.result +++ b/mysql-test/suite/rpl/r/rpl_row_until.result @@ -20,188 +20,32 @@ n 2 3 4 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos MASTER_POS_DROP_T1 -Relay_Log_Space # -Until_Condition Master -Until_Log_File master-bin.000001 -Until_Log_Pos MASTER_POS_DROP_T1 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -START SLAVE UNTIL MASTER_LOG_FILE='master-no-such-bin.000001', MASTER_LOG_POS=291; +START SLAVE UNTIL MASTER_LOG_FILE='master-no-such-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS; SELECT * FROM t1; n 1 2 3 4 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos MASTER_POS_DROP_T1 -Relay_Log_Space # -Until_Condition Master -Until_Log_File master-no-such-bin.000001 -Until_Log_Pos 291 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', RELAY_LOG_POS=relay_pos_insert1_t2 SELECT * FROM t2; n 1 2 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos MASTER_POS_INSERT1_T2 -Relay_Log_Space # -Until_Condition Relay -Until_Log_File slave-relay-bin.000002 -Until_Log_Pos RELAY_POS_INSERT1_T2 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error START SLAVE; include/stop_slave.inc START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=master_pos_create_t2 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos MASTER_POS_DROP_T2 -Relay_Log_Space # -Until_Condition Master -Until_Log_File master-bin.000001 -Until_Log_Pos MASTER_POS_CREATE_T2 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -START SLAVE UNTIL MASTER_LOG_FILE='master-bin', MASTER_LOG_POS=561; +START SLAVE UNTIL MASTER_LOG_FILE='master-bin', MASTER_LOG_POS=MASTER_LOG_POS; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL -START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=561, RELAY_LOG_POS=12; +START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS, RELAY_LOG_POS=RELAY_LOG_POS; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001'; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000009'; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL -START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', MASTER_LOG_POS=561; +START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', MASTER_LOG_POS=MASTER_LOG_POS; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL START SLAVE; -START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=740; +START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS; Warnings: Note 1254 Slave is already running diff --git a/mysql-test/suite/rpl/r/rpl_skip_error.result b/mysql-test/suite/rpl/r/rpl_skip_error.result index d955859f030..0aa8069a38c 100644 --- a/mysql-test/suite/rpl/r/rpl_skip_error.result +++ b/mysql-test/suite/rpl/r/rpl_skip_error.result @@ -31,45 +31,7 @@ n 3 7 8 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. ==== Clean Up ==== drop table t1; create table t1(a int primary key); @@ -84,45 +46,7 @@ select * from t1; a 1 2 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. ==== Clean Up ==== drop table t1; ==== Using Innodb ==== diff --git a/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result b/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result index e2efcf08d7a..c3c4f7c015a 100644 --- a/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result +++ b/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result @@ -10,45 +10,6 @@ insert into t1(b) values (1); insert into t1(b) values (2); load data infile '../../std_data/rpl_loaddata.dat' into table t1; commit; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 9 -Last_Error Error in Begin_load_query event: write to '../../tmp/SQL_LOAD.data' failed -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 9 -Last_SQL_Error Error in Begin_load_query event: write to '../../tmp/SQL_LOAD.data' failed drop table t1; drop table t1; call mtr.add_suppression("Slave: Error writing file 'UNKNOWN' .Errcode: 9. Error_code: 3"); diff --git a/mysql-test/suite/rpl/r/rpl_slave_skip.result b/mysql-test/suite/rpl/r/rpl_slave_skip.result index 6148de5d954..a4067fb7983 100644 --- a/mysql-test/suite/rpl/r/rpl_slave_skip.result +++ b/mysql-test/suite/rpl/r/rpl_slave_skip.result @@ -42,46 +42,7 @@ c d 2 8 3 18 **** On Slave **** -START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=762; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos 1115 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 762 -Relay_Log_Space # -Until_Condition Master -Until_Log_File master-bin.000001 -Until_Log_Pos 762 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; SELECT * FROM t1; @@ -104,48 +65,9 @@ show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # User var # # @`foo`=12 master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES(@foo, 2*@foo) -START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=106; +START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos 248 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 248 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error **** On Master **** DROP TABLE t1, t2; SET SESSION BINLOG_FORMAT=ROW; diff --git a/mysql-test/suite/rpl/r/rpl_sp.result b/mysql-test/suite/rpl/r/rpl_sp.result index 631369b2b74..8f06653f8ab 100644 --- a/mysql-test/suite/rpl/r/rpl_sp.result +++ b/mysql-test/suite/rpl/r/rpl_sp.result @@ -409,110 +409,110 @@ return 0; end| use mysqltest; set @a:= mysqltest2.f1(); -show binlog events in 'master-bin.000001' from 106; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # drop database if exists mysqltest1 -master-bin.000001 # Query 1 # create database mysqltest1 -master-bin.000001 # Query 1 # use `mysqltest1`; create table t1 (a varchar(100)) -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`() +master-bin.000001 # Query # # drop database if exists mysqltest1 +master-bin.000001 # Query # # create database mysqltest1 +master-bin.000001 # Query # # use `mysqltest1`; create table t1 (a varchar(100)) +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`() begin declare b int; set b = 8; insert into t1 values (b); insert into t1 values (unix_timestamp()); end -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values ( NAME_CONST('b',8)) -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (unix_timestamp()) -master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1 -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo2`() +master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values ( NAME_CONST('b',8)) +master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (unix_timestamp()) +master-bin.000001 # Query # # use `mysqltest1`; delete from t1 +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo2`() select * from mysqltest1.t1 -master-bin.000001 # Query 1 # use `mysqltest1`; alter procedure foo2 contains sql -master-bin.000001 # Query 1 # use `mysqltest1`; drop table t1 -master-bin.000001 # Query 1 # use `mysqltest1`; create table t1 (a int) -master-bin.000001 # Query 1 # use `mysqltest1`; create table t2 like t1 -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`() +master-bin.000001 # Query # # use `mysqltest1`; alter procedure foo2 contains sql +master-bin.000001 # Query # # use `mysqltest1`; drop table t1 +master-bin.000001 # Query # # use `mysqltest1`; create table t1 (a int) +master-bin.000001 # Query # # use `mysqltest1`; create table t2 like t1 +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`() DETERMINISTIC insert into t1 values (15) -master-bin.000001 # Query 1 # use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1 -master-bin.000001 # Query 1 # use `mysqltest1`; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1 -master-bin.000001 # Query 1 # use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1 -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`() +master-bin.000001 # Query # # use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1 +master-bin.000001 # Query # # use `mysqltest1`; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1 +master-bin.000001 # Query # # use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1 +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`() DETERMINISTIC begin insert into t2 values(3); insert into t1 values (5); end -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(3) -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (15) -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(3) -master-bin.000001 # Query 1 # use `mysqltest1`; alter procedure foo4 sql security invoker -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(3) -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (5) -master-bin.000001 # Query 1 # use `mysqltest1`; delete from t2 -master-bin.000001 # Query 1 # use `mysqltest1`; alter table t2 add unique (a) -master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo4 -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo4`() +master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(3) +master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (15) +master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(3) +master-bin.000001 # Query # # use `mysqltest1`; alter procedure foo4 sql security invoker +master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(3) +master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (5) +master-bin.000001 # Query # # use `mysqltest1`; delete from t2 +master-bin.000001 # Query # # use `mysqltest1`; alter table t2 add unique (a) +master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo4 +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo4`() DETERMINISTIC begin insert into t2 values(20),(20); end -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(20),(20) -master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo4 -master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo -master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo2 -master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo3 -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11) +master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(20),(20) +master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo4 +master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo +master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo2 +master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo3 +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11) DETERMINISTIC begin insert into t1 values (x); return x+2; end -master-bin.000001 # Query 1 # use `mysqltest1`; delete t1,t2 from t1,t2 -master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20) -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(fn1(21)) -master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1 -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`() RETURNS int(11) +master-bin.000001 # Query # # use `mysqltest1`; delete t1,t2 from t1,t2 +master-bin.000001 # Query # # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20) +master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(fn1(21)) +master-bin.000001 # Query # # use `mysqltest1`; drop function fn1 +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`() RETURNS int(11) NO SQL begin return unix_timestamp(); end -master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1 -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values(fn1()) -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` FUNCTION `fn2`() RETURNS int(11) +master-bin.000001 # Query # # use `mysqltest1`; delete from t1 +master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values(fn1()) +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` FUNCTION `fn2`() RETURNS int(11) NO SQL begin return unix_timestamp(); end -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn3`() RETURNS int(11) +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn3`() RETURNS int(11) READS SQL DATA begin return 0; end -master-bin.000001 # Query 1 # use `mysqltest1`; delete from t2 -master-bin.000001 # Query 1 # use `mysqltest1`; alter table t2 add unique (a) -master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1 -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11) +master-bin.000001 # Query # # use `mysqltest1`; delete from t2 +master-bin.000001 # Query # # use `mysqltest1`; alter table t2 add unique (a) +master-bin.000001 # Query # # use `mysqltest1`; drop function fn1 +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11) begin insert into t2 values(x),(x); return 10; end -master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(100) -master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20) -master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1 -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` trigger trg before insert on t1 for each row set new.a= 10 -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (1) -master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1 -master-bin.000001 # Query 1 # use `mysqltest1`; drop trigger trg -master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (1) -master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`() +master-bin.000001 # Query # # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(100) +master-bin.000001 # Query # # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20) +master-bin.000001 # Query # # use `mysqltest1`; delete from t1 +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` trigger trg before insert on t1 for each row set new.a= 10 +master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (1) +master-bin.000001 # Query # # use `mysqltest1`; delete from t1 +master-bin.000001 # Query # # use `mysqltest1`; drop trigger trg +master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (1) +master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`() READS SQL DATA select * from t1 -master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo -master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1 -master-bin.000001 # Query 1 # drop database mysqltest1 -master-bin.000001 # Query 1 # drop user "zedjzlcsjhd"@127.0.0.1 -master-bin.000001 # Query 1 # use `test`; drop function if exists f1 -master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11) +master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo +master-bin.000001 # Query # # use `mysqltest1`; drop function fn1 +master-bin.000001 # Query # # drop database mysqltest1 +master-bin.000001 # Query # # drop user "zedjzlcsjhd"@127.0.0.1 +master-bin.000001 # Query # # use `test`; drop function if exists f1 +master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11) READS SQL DATA begin declare var integer; @@ -522,41 +522,41 @@ fetch c into var; close c; return var; end -master-bin.000001 # Query 1 # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 as a -master-bin.000001 # Query 1 # use `test`; create table t1 (a int) -master-bin.000001 # Query 1 # use `test`; insert into t1 (a) values (f1()) -master-bin.000001 # Query 1 # use `test`; drop view v1 -master-bin.000001 # Query 1 # use `test`; drop function f1 -master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE IF EXISTS p1 -master-bin.000001 # Query 1 # use `test`; DROP TABLE IF EXISTS t1 -master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1(col VARCHAR(10)) -master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(arg VARCHAR(10)) +master-bin.000001 # Query # # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 as a +master-bin.000001 # Query # # use `test`; create table t1 (a int) +master-bin.000001 # Query # # use `test`; insert into t1 (a) values (f1()) +master-bin.000001 # Query # # use `test`; drop view v1 +master-bin.000001 # Query # # use `test`; drop function f1 +master-bin.000001 # Query # # use `test`; DROP PROCEDURE IF EXISTS p1 +master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t1 +master-bin.000001 # Query # # use `test`; CREATE TABLE t1(col VARCHAR(10)) +master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(arg VARCHAR(10)) INSERT INTO t1 VALUES(arg) -master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES( NAME_CONST('arg',_latin1'test' COLLATE 'latin1_swedish_ci')) -master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE p1 -master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE IF EXISTS p1 -master-bin.000001 # Query 1 # use `test`; DROP FUNCTION IF EXISTS f1 -master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() +master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES( NAME_CONST('arg',_latin1'test' COLLATE 'latin1_swedish_ci')) +master-bin.000001 # Query # # use `test`; DROP PROCEDURE p1 +master-bin.000001 # Query # # use `test`; DROP PROCEDURE IF EXISTS p1 +master-bin.000001 # Query # # use `test`; DROP FUNCTION IF EXISTS f1 +master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() SET @a = 1 -master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11) +master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11) RETURN 0 -master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE p1 -master-bin.000001 # Query 1 # use `test`; DROP FUNCTION f1 -master-bin.000001 # Query 1 # use `test`; drop table t1 -master-bin.000001 # Query 1 # drop database if exists mysqltest -master-bin.000001 # Query 1 # drop database if exists mysqltest2 -master-bin.000001 # Query 1 # create database mysqltest -master-bin.000001 # Query 1 # create database mysqltest2 -master-bin.000001 # Query 1 # use `mysqltest2`; create table t ( t integer ) -master-bin.000001 # Query 1 # use `mysqltest2`; CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqltest`.`test`() +master-bin.000001 # Query # # use `test`; DROP PROCEDURE p1 +master-bin.000001 # Query # # use `test`; DROP FUNCTION f1 +master-bin.000001 # Query # # use `test`; drop table t1 +master-bin.000001 # Query # # drop database if exists mysqltest +master-bin.000001 # Query # # drop database if exists mysqltest2 +master-bin.000001 # Query # # create database mysqltest +master-bin.000001 # Query # # create database mysqltest2 +master-bin.000001 # Query # # use `mysqltest2`; create table t ( t integer ) +master-bin.000001 # Query # # use `mysqltest2`; CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqltest`.`test`() begin end -master-bin.000001 # Query 1 # use `mysqltest2`; insert into t values ( 1 ) -master-bin.000001 # Query 1 # use `mysqltest2`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11) +master-bin.000001 # Query # # use `mysqltest2`; insert into t values ( 1 ) +master-bin.000001 # Query # # use `mysqltest2`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11) begin insert into t values (1); return 0; end -master-bin.000001 # Query 1 # use `mysqltest`; SELECT `mysqltest2`.`f1`() +master-bin.000001 # Query # # use `mysqltest`; SELECT `mysqltest2`.`f1`() set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators; Warnings: Warning 1287 '@@log_bin_trust_routine_creators' is deprecated and will be removed in a future release. Please use '@@log_bin_trust_function_creators' instead diff --git a/mysql-test/suite/rpl/r/rpl_ssl.result b/mysql-test/suite/rpl/r/rpl_ssl.result index d188dd353ce..1af4c5e227c 100644 --- a/mysql-test/suite/rpl/r/rpl_ssl.result +++ b/mysql-test/suite/rpl/r/rpl_ssl.result @@ -19,89 +19,23 @@ insert into t1 values(1); select * from t1; t 1 -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User replssl -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 Master_SSL_Allowed Yes -Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem Master_SSL_CA_Path +Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem Master_SSL_Cert MYSQL_TEST_DIR/std_data/client-cert.pem -Master_SSL_Cipher Master_SSL_Key MYSQL_TEST_DIR/std_data/client-key.pem -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. STOP SLAVE; select * from t1; t 1 insert into t1 values (NULL); -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User replssl -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 Master_SSL_Allowed Yes -Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem Master_SSL_CA_Path +Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem Master_SSL_Cert MYSQL_TEST_DIR/std_data/client-cert.pem -Master_SSL_Cipher Master_SSL_Key MYSQL_TEST_DIR/std_data/client-key.pem -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. drop user replssl@localhost; drop table t1; End of 5.0 tests diff --git a/mysql-test/suite/rpl/r/rpl_ssl1.result b/mysql-test/suite/rpl/r/rpl_ssl1.result index 74d2550cdaf..5b4aa126c77 100644 --- a/mysql-test/suite/rpl/r/rpl_ssl1.result +++ b/mysql-test/suite/rpl/r/rpl_ssl1.result @@ -18,89 +18,23 @@ start slave; select * from t1; t 1 -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User replssl -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File # -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File # -Slave_IO_Running # -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 Master_SSL_Allowed Yes -Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem Master_SSL_CA_Path +Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem Master_SSL_Cert MYSQL_TEST_DIR/std_data/client-cert.pem -Master_SSL_Cipher Master_SSL_Key MYSQL_TEST_DIR/std_data/client-key.pem -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. stop slave; change master to master_user='root',master_password='', master_ssl=0; start slave; drop user replssl@localhost; drop table t1; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File # -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File # -Slave_IO_Running # -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 Master_SSL_Allowed No -Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem Master_SSL_CA_Path +Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem Master_SSL_Cert MYSQL_TEST_DIR/std_data/client-cert.pem -Master_SSL_Cipher Master_SSL_Key MYSQL_TEST_DIR/std_data/client-key.pem -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. stop slave; change master to master_host="localhost", @@ -116,43 +50,10 @@ on slave select * from t1; t 1 -show slave status; -Slave_IO_State # -Master_Host localhost -Master_User root -Master_Port MASTER_MYPORT -Connect_Retry 1 -Master_Log_File # -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File # -Slave_IO_Running # -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 Master_SSL_Allowed Yes -Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem Master_SSL_CA_Path +Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem Master_SSL_Cert MYSQL_TEST_DIR/std_data/client-cert.pem -Master_SSL_Cipher Master_SSL_Key MYSQL_TEST_DIR/std_data/client-key.pem -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert Yes -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. drop table t1; diff --git a/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result b/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result index 74031af1dde..61fee130d49 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result +++ b/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result @@ -12,16 +12,12 @@ create table t4 (a int); insert into t4 select * from t3; rename table t1 to t5, t2 to t1; flush no_write_to_binlog tables; -SHOW BINLOG EVENTS FROM 656 ; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; rename table t1 to t5, t2 to t1 +master-bin.000001 # Query # # use `test`; rename table t1 to t5, t2 to t1 select * from t3; a flush tables; -SHOW BINLOG EVENTS FROM 656 ; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; rename table t1 to t5, t2 to t1 -master-bin.000001 # Query 1 # use `test`; flush tables select * from t3; a stop slave; diff --git a/mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result b/mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result index 5ca0ea2b780..1bed2058687 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result +++ b/mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result @@ -52,18 +52,18 @@ CREATE TABLE t1(a int, UNIQUE(a)); INSERT DELAYED IGNORE INTO t1 VALUES(1); INSERT DELAYED IGNORE INTO t1 VALUES(1); flush table t1; -show binlog events in 'master-bin.000002' LIMIT 2,2; +show binlog events in 'master-bin.000002' from limit 1,2; Log_name Pos Event_type Server_id End_log_pos Info -x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) -x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) +master-bin.000002 # Query # # use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) +master-bin.000002 # Query # # use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) select * from t1; a 1 On slave -show binlog events in 'slave-bin.000002' LIMIT 2,2; +show binlog events in 'slave-bin.000002' from limit 1,2; Log_name Pos Event_type Server_id End_log_pos Info -x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) -x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) +slave-bin.000002 # Query # # use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) +slave-bin.000002 # Query # # use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) select * from t1; a 1 @@ -112,24 +112,14 @@ id name USE test; DROP SCHEMA mysqlslap; use test; -FLUSH LOGS; -FLUSH LOGS; CREATE TABLE t1(a int, UNIQUE(a)); INSERT DELAYED IGNORE INTO t1 VALUES(1); INSERT DELAYED IGNORE INTO t1 VALUES(1); flush table t1; -show binlog events in 'master-bin.000002' LIMIT 2,2; -Log_name Pos Event_type Server_id End_log_pos Info -x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) -x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) select * from t1; a 1 On slave -show binlog events in 'slave-bin.000002' LIMIT 2,2; -Log_name Pos Event_type Server_id End_log_pos Info -x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) -x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1) select * from t1; a 1 diff --git a/mysql-test/suite/rpl/r/rpl_stm_log.result b/mysql-test/suite/rpl/r/rpl_stm_log.result index 47556a33e97..d73a689969f 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_log.result +++ b/mysql-test/suite/rpl/r/rpl_stm_log.result @@ -7,7 +7,7 @@ start slave; include/stop_slave.inc reset master; reset slave; -start slave; +include/start_slave.inc create table t1(n int not null auto_increment primary key)ENGINE=MyISAM; insert into t1 values (NULL); drop table t1; @@ -16,26 +16,25 @@ load data infile 'LOAD_FILE' into table t1 ignore 1 lines; select count(*) from t1; count(*) 69 -show binlog events; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM -master-bin.000001 # Intvar 1 # INSERT_ID=1 -master-bin.000001 # Query 1 # use `test`; insert into t1 values (NULL) -master-bin.000001 # Query 1 # use `test`; drop table t1 -master-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM -master-bin.000001 # Begin_load_query 1 # ;file_id=1;block_len=581 -master-bin.000001 # Execute_load_query 1 # use `test`; LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=1 -show binlog events from 106 limit 1; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM +master-bin.000001 # Intvar # # INSERT_ID=1 +master-bin.000001 # Query # # use `test`; insert into t1 values (NULL) +master-bin.000001 # Query # # use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM +master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# +master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=# +show binlog events from limit 1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM -show binlog events from 106 limit 2; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM +show binlog events from limit 2; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM -master-bin.000001 # Intvar 1 # INSERT_ID=1 -show binlog events from 106 limit 2,1; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM +master-bin.000001 # Intvar # # INSERT_ID=1 +show binlog events from limit 2,1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; insert into t1 values (NULL) +master-bin.000001 # Query # # use `test`; insert into t1 values (NULL) flush logs; create table t3 (a int)ENGINE=MyISAM; select * from t1 order by 1 asc; @@ -195,12 +194,11 @@ master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not nul master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=# master-bin.000001 # Rotate # # master-bin.000002;pos=4 -show binlog events in 'master-bin.000002'; +show binlog events in 'master-bin.000002' from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 -master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=MyISAM -master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM -master-bin.000002 # Query 1 # use `test`; insert into t2 values (1) +master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=MyISAM +master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=MyISAM +master-bin.000002 # Query # # use `test`; insert into t2 values (1) show binary logs; Log_name File_size master-bin.000001 # @@ -209,62 +207,22 @@ show binary logs; Log_name File_size slave-bin.000001 # slave-bin.000002 # -show binlog events in 'slave-bin.000001' from 4; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM -slave-bin.000001 # Intvar 1 # INSERT_ID=1 -slave-bin.000001 # Query 1 # use `test`; insert into t1 values (NULL) -slave-bin.000001 # Query 1 # use `test`; drop table t1 -slave-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM -slave-bin.000001 # Begin_load_query 1 # ;file_id=1;block_len=581 -slave-bin.000001 # Execute_load_query 1 # use `test`; LOAD DATA INFILE '../../tmp/SQL_LOAD-2-1-1.data' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=1 -slave-bin.000001 # Query 1 # use `test`; create table t3 (a int)ENGINE=MyISAM -slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4 -show binlog events in 'slave-bin.000002' from 4; +slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM +slave-bin.000001 # Intvar # # INSERT_ID=1 +slave-bin.000001 # Query # # use `test`; insert into t1 values (NULL) +slave-bin.000001 # Query # # use `test`; drop table t1 +slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM +slave-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# +slave-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../tmp/SQL_LOAD-2-1-1.data' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=# +slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=MyISAM +slave-bin.000001 # Rotate # # slave-bin.000002;pos=4 +show binlog events in 'slave-bin.000002' from ; Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM -slave-bin.000002 # Query 1 # use `test`; insert into t2 values (1) -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000002 -Read_Master_Log_Pos 392 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000002 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 392 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=MyISAM +slave-bin.000002 # Query # # use `test`; insert into t2 values (1) +Checking that both slave threads are running. show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log DROP TABLE t1; diff --git a/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result b/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result index 2215b34814e..db06cb6d3de 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result +++ b/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result @@ -21,45 +21,7 @@ select @@global.max_relay_log_size; @@global.max_relay_log_size 4096 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 2 # @@ -69,45 +31,7 @@ set global max_relay_log_size=(5*4096); select @@global.max_relay_log_size; @@global.max_relay_log_size 20480 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 3: max_relay_log_size = 0 # @@ -117,90 +41,13 @@ set global max_relay_log_size=0; select @@global.max_relay_log_size; @@global.max_relay_log_size 0 start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions # stop slave; reset slave; flush logs; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error # # Test 5 # @@ -208,89 +55,13 @@ reset slave; start slave; flush logs; create table t1 (a int); -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. # # Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated # flush logs; drop table t1; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. flush logs; show master status; File Position Binlog_Do_DB Binlog_Ignore_DB diff --git a/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result b/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result index 78d9d7c41eb..1fc189975ef 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result +++ b/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result @@ -4,196 +4,37 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -stop slave; +Master_Host 127.0.0.1 +include/stop_slave.inc change master to master_user='test'; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 Master_User test -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -reset slave; -SHOW SLAVE STATUS; -Slave_IO_State # Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -start slave; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -stop slave; reset slave; -start slave; +Master_User root +Master_Host 127.0.0.1 +include/start_slave.inc +Master_User root +Master_Host 127.0.0.1 +include/stop_slave.inc +reset slave; +include/start_slave.inc create temporary table t1 (a int); -stop slave; +include/stop_slave.inc reset slave; -start slave; +include/start_slave.inc show status like 'slave_open_temp_tables'; Variable_name Value Slave_open_temp_tables 1 -stop slave; +include/stop_slave.inc reset slave; -*** errno must be zero: 0 *** change master to master_user='impossible_user_name'; start slave; -ONE -1 include/stop_slave.inc change master to master_user='root'; include/start_slave.inc -*** last errno must be zero: 0 *** -*** last error must be blank: *** include/stop_slave.inc change master to master_user='impossible_user_name'; start slave; -ONE -1 include/stop_slave.inc reset slave; -*** io last errno must be zero: 0 *** -*** io last error must be blank: *** -*** sql last errno must be zero: 0 *** -*** sql last error must be blank: *** diff --git a/mysql-test/suite/rpl/r/rpl_stm_until.result b/mysql-test/suite/rpl/r/rpl_stm_until.result index 644baba0335..118d31d78c8 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_until.result +++ b/mysql-test/suite/rpl/r/rpl_stm_until.result @@ -17,199 +17,43 @@ insert into t2 values (3),(4); drop table t2; ==== Replicate one event at a time on slave ==== [on slave] -start slave until master_log_file='master-bin.000001', master_log_pos=323; +start slave until master_log_file='MASTER_LOG_FILE', master_log_pos=MASTER_LOG_POS; select * from t1; n 1 2 3 4 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition Master -Until_Log_File master-bin.000001 -Until_Log_Pos 323 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291; +start slave until master_log_file='master-no-such-bin.000001', master_log_pos=MASTER_LOG_POS; select * from t1; n 1 2 3 4 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition Master -Until_Log_File master-no-such-bin.000001 -Until_Log_Pos 291 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error -start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=746; +start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=RELAY_LOG_POS; select * from t2; n 1 2 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition Relay -Until_Log_File slave-relay-bin.000004 -Until_Log_Pos 746 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error start slave; [on master] [on slave] include/stop_slave.inc -start slave until master_log_file='master-bin.000001', master_log_pos=776; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition Master -Until_Log_File master-bin.000001 -Until_Log_Pos 776 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +start slave until master_log_file='MASTER_LOG_FILE', master_log_pos=MASTER_LOG_POS; ==== Test various error conditions ==== -start slave until master_log_file='master-bin', master_log_pos=561; +start slave until master_log_file='master-bin', master_log_pos=MASTER_LOG_POS; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL -start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12; +start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS, relay_log_pos=RELAY_LOG_POS; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL start slave until master_log_file='master-bin.000001'; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL start slave until relay_log_file='slave-relay-bin.000002'; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL -start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561; +start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=MASTER_LOG_POS; ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL start slave sql_thread; -start slave until master_log_file='master-bin.000001', master_log_pos=776; +start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS; Warnings: Note 1254 Slave is already running include/stop_slave.inc @@ -230,7 +74,7 @@ insert into t1 set a=null; select count(*) as two from t1; two 2 -start slave until master_log_file='master-bin.000001', master_log_pos= UNTIL_POS;; +start slave until master_log_file='MASTER_LOG_FILE', master_log_pos= UNTIL_POS;; slave stopped at the prescribed position select 0 as zero; zero diff --git a/mysql-test/suite/rpl/r/rpl_temporary_errors.result b/mysql-test/suite/rpl/r/rpl_temporary_errors.result index d14380a6369..d261becc409 100644 --- a/mysql-test/suite/rpl/r/rpl_temporary_errors.result +++ b/mysql-test/suite/rpl/r/rpl_temporary_errors.result @@ -40,45 +40,7 @@ a b 2 2 3 3 4 4 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. DROP TABLE t1; **** On Master **** DROP TABLE t1; diff --git a/mysql-test/suite/rpl/t/rpl_000015-slave.opt b/mysql-test/suite/rpl/t/rpl_000015-slave.opt deleted file mode 100644 index 28bc753dd56..00000000000 --- a/mysql-test/suite/rpl/t/rpl_000015-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---server-id=22 --master-connect-retry=7 diff --git a/mysql-test/suite/rpl/t/rpl_000015.cnf b/mysql-test/suite/rpl/t/rpl_000015.cnf deleted file mode 100644 index 46f8af242c2..00000000000 --- a/mysql-test/suite/rpl/t/rpl_000015.cnf +++ /dev/null @@ -1,2 +0,0 @@ -!include ../rpl_1slave_base.cnf - diff --git a/mysql-test/suite/rpl/t/rpl_000015.test b/mysql-test/suite/rpl/t/rpl_000015.test deleted file mode 100644 index 45a43cd38d0..00000000000 --- a/mysql-test/suite/rpl/t/rpl_000015.test +++ /dev/null @@ -1,40 +0,0 @@ --- source include/have_log_bin.inc -##################### -# Change Author: JBM -# Change Date: 2006-01-17 -# Change: added order by in select -##################### - -connect (master,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK); -connect (slave,localhost,root,,test,$SLAVE_MYPORT,$SLAVE_MYSOCK); -connection master; -reset master; -source include/show_master_status.inc; -save_master_pos; -connection slave; -reset slave; -source include/show_slave_status2.inc; - -change master to master_host='127.0.0.1'; -# The following needs to be cleaned up when change master is fixed -source include/show_slave_status2.inc; ---replace_result $MASTER_MYPORT MASTER_PORT -eval change master to master_host='127.0.0.1',master_user='root', - master_password='',master_port=$MASTER_MYPORT; -source include/show_slave_status2.inc; -start slave; -sync_with_master; -source include/show_slave_status2.inc; -connection master; ---disable_warnings -drop table if exists t1; ---enable_warnings -create table t1 (n int, PRIMARY KEY(n)); -insert into t1 values (10),(45),(90); -sync_slave_with_master; -connection slave; -SELECT * FROM t1 ORDER BY n; -connection master; -SELECT * FROM t1 ORDER BY n; -drop table t1; -sync_slave_with_master; diff --git a/mysql-test/suite/rpl/t/rpl_binlog_grant.test b/mysql-test/suite/rpl/t/rpl_binlog_grant.test index 31163927ce2..4c6402359fe 100644 --- a/mysql-test/suite/rpl/t/rpl_binlog_grant.test +++ b/mysql-test/suite/rpl/t/rpl_binlog_grant.test @@ -20,26 +20,24 @@ set @@autocommit=0; start transaction; insert into t values (1); grant select on t to x@y; +let $wait_binlog_event= grant select; +source include/wait_for_binlog_event.inc; # # There is no active transaction here # rollback; show grants for x@y; ---replace_result $VERSION VERSION ---replace_regex /\/\* xid=.* \*\//\/* XID *\// -show binlog events; start transaction; insert into t values (2); revoke select on t from x@y; +let $wait_binlog_event= revoke select; +source include/wait_for_binlog_event.inc; # # There is no active transaction here # commit; select * from t; show grants for x@y; ---replace_result $VERSION VERSION ---replace_regex /\/\* xid=.* \*\//\/* XID *\// -show binlog events; drop user x@y; drop database d1; --sync_slave_with_master diff --git a/mysql-test/suite/rpl/t/rpl_bug33931.test b/mysql-test/suite/rpl/t/rpl_bug33931.test index 1316ddb7401..3327a36622c 100644 --- a/mysql-test/suite/rpl/t/rpl_bug33931.test +++ b/mysql-test/suite/rpl/t/rpl_bug33931.test @@ -37,9 +37,10 @@ connection slave; # source include/wait_for_slave_to_stop.inc; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 8 # 9 # 19 # 23 # 33 # 37 # -query_vertical show slave status; +# 1593 = ER_SLAVE_FATAL_ERROR +--let $slave_sql_errno= 1593 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc # # Cleanup diff --git a/mysql-test/suite/rpl/t/rpl_change_master.test b/mysql-test/suite/rpl/t/rpl_change_master.test index d0cd40e2e11..33bd9d51b11 100644 --- a/mysql-test/suite/rpl/t/rpl_change_master.test +++ b/mysql-test/suite/rpl/t/rpl_change_master.test @@ -19,10 +19,26 @@ let $slave_param= Read_Master_Log_Pos; let $slave_param_value= query_get_value(SHOW MASTER STATUS, Position, 1); connection slave; source include/wait_for_slave_param.inc; -stop slave; -source include/show_slave_status2.inc; +source include/stop_slave.inc; + +let $read_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1); +let $exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1); +if (`SELECT $read_pos = $exec_pos`) +{ + source include/show_rpl_debug_info.inc; + echo 'Read_Master_Log_Pos: $read_pos' == 'Exec_Master_Log_Pos: $exec_pos'; + die Failed because Read_Master_Log_Pos is equal to Exec_Master_Log_Pos; +} change master to master_user='root'; -source include/show_slave_status2.inc; +let $read_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1); +let $exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1); +if (`SELECT $read_pos <> $exec_pos`) +{ + source include/show_rpl_debug_info.inc; + echo 'Read_Master_Log_Pos: $read_pos' <> 'Exec_Master_Log_Pos: $exec_pos'; + die Failed because Read_Master_Log_Pos is not equal to Exec_Master_Log_Pos; +} + start slave; sync_with_master; select * from t1; diff --git a/mysql-test/suite/rpl/t/rpl_critical_errors.test b/mysql-test/suite/rpl/t/rpl_critical_errors.test index b35cd305f92..aa1f251b738 100644 --- a/mysql-test/suite/rpl/t/rpl_critical_errors.test +++ b/mysql-test/suite/rpl/t/rpl_critical_errors.test @@ -53,15 +53,13 @@ KILL QUERY 2; connection slave; # Here the slave will only stop if the query above actually started -# inserting some rows into t2. Otherwise, it will hang forever. ---source include/wait_for_slave_to_stop.inc +# inserting some rows into t2. Otherwise, it will hang forever. ... and there +# the error code should be 1317 (ER_QUERY_INTERRUPTED) +--let $slave_sql_errno= 1317 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc # The following should be 0 SELECT COUNT(*) FROM t2; -# ... and there the error code should be 1317 (ER_QUERY_INTERRUPTED) ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 7 # 8 # 9 # 20 # 22 # 23 # 33 # -query_vertical SHOW SLAVE STATUS; - enable_parsing; diff --git a/mysql-test/suite/rpl/t/rpl_dual_pos_advance.test b/mysql-test/suite/rpl/t/rpl_dual_pos_advance.test index 9efb3d16d2b..ab1de6a2e9f 100644 --- a/mysql-test/suite/rpl/t/rpl_dual_pos_advance.test +++ b/mysql-test/suite/rpl/t/rpl_dual_pos_advance.test @@ -21,52 +21,51 @@ connection master; --replace_result $SLAVE_MYPORT SLAVE_PORT eval change master to master_host="127.0.0.1",master_port=$SLAVE_MYPORT,master_user="root"; -start slave; +source include/start_slave.inc; # now we test it connection slave; create table t1 (n int); +let $master_log_file= query_get_value(SHOW MASTER STATUS, File, 1); +let $master_log_pos_1= query_get_value(SHOW MASTER STATUS, Position, 1); +let $master_log_pos_1= `SELECT $master_log_pos_1 + 3`; -save_master_pos; -connection master; -sync_with_master; +sync_slave_with_master master; # # BUG#13861 - START SLAVE UNTIL may stop 1 evnt too late if # log-slave-updates and circul repl # -stop slave; +source include/stop_slave.inc; create table t2 (n int); # create one ignored event -save_master_pos; -connection slave; -sync_with_master; - -connection slave; +sync_slave_with_master; show tables; -save_master_pos; - create table t3 (n int) engine=innodb; +let $master_log_pos_2= query_get_value(SHOW MASTER STATUS, Position, 1); +let $master_log_pos_2= `SELECT $master_log_pos_2 + 5`; set @a=1; insert into t3 values(@a); +let $master_log_pos_3= query_get_value(SHOW MASTER STATUS, Position, 1); +let $master_log_pos_3= `SELECT $master_log_pos_3 + 5`; begin; insert into t3 values(2); insert into t3 values(3); commit; insert into t3 values(4); - connection master; # bug is that START SLAVE UNTIL may stop too late, we test that by # asking it to stop before creation of t3. -start slave until master_log_file="slave-bin.000001",master_log_pos=195; +--replace_result $master_log_file MASTER_LOG_FILE $master_log_pos_1 MASTER_LOG_POS +eval start slave until master_log_file="$master_log_file",master_log_pos=$master_log_pos_1; --source include/wait_for_slave_sql_to_stop.inc # then BUG#13861 causes t3 to show up below (because stopped too @@ -75,16 +74,18 @@ start slave until master_log_file="slave-bin.000001",master_log_pos=195; show tables; # ensure that we do not break set @a=1; insert into t3 values(@a); -start slave until master_log_file="slave-bin.000001",master_log_pos=438; +--replace_result $master_log_file MASTER_LOG_FILE $master_log_pos_2 MASTER_LOG_POS +eval start slave until master_log_file="$master_log_file",master_log_pos=$master_log_pos_2; --source include/wait_for_slave_sql_to_stop.inc select * from t3; # ensure that we do not break transaction -start slave until master_log_file="slave-bin.000001",master_log_pos=663; +--replace_result $master_log_file MASTER_LOG_FILE $master_log_pos_3 MASTER_LOG_POS +eval start slave until master_log_file="$master_log_file",master_log_pos=$master_log_pos_3; --source include/wait_for_slave_sql_to_stop.inc select * from t3; -start slave; +source include/start_slave.inc; # BUG#13023 is that Exec_master_log_pos may stay too low "forever": @@ -94,31 +95,20 @@ create table t4 (n int); # create 3 ignored events create table t5 (n int); create table t6 (n int); -save_master_pos; -connection slave; -sync_with_master; - -connection slave; - -save_master_pos; - -connection master; +sync_slave_with_master; +sync_slave_with_master master; # then BUG#13023 caused hang below ("master" looks behind, while it's # not in terms of updates done). -sync_with_master; - show tables; # cleanup -stop slave; +source include/stop_slave.inc; reset slave; drop table t1,t2,t3,t4,t5,t6; -save_master_pos; -connection slave; -sync_with_master; +sync_slave_with_master; # End of 4.1 tests diff --git a/mysql-test/suite/rpl/t/rpl_empty_master_crash.test b/mysql-test/suite/rpl/t/rpl_empty_master_crash.test index f8e7870ae3c..863b450a6d9 100644 --- a/mysql-test/suite/rpl/t/rpl_empty_master_crash.test +++ b/mysql-test/suite/rpl/t/rpl_empty_master_crash.test @@ -1,7 +1,5 @@ source include/master-slave.inc; -source include/show_slave_status.inc; - # # Load table should not succeed on the master as this is not a slave # diff --git a/mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test b/mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test index bf71ffbfd1e..aa2dee0fe57 100644 --- a/mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test +++ b/mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test @@ -126,7 +126,7 @@ connection master; # Parameters for include/wait_for_slave_sql_error_and_skip.inc: # Ask it to show SQL error message. -let $show_sql_error= 1; +let $show_slave_sql_error= 1; # The expected error will always be 1146 (ER_NO_SUCH_TABLE). let $slave_sql_errno= 1146; diff --git a/mysql-test/suite/rpl/t/rpl_flushlog_loop.test b/mysql-test/suite/rpl/t/rpl_flushlog_loop.test index a8befe612c2..487f910ba2b 100644 --- a/mysql-test/suite/rpl/t/rpl_flushlog_loop.test +++ b/mysql-test/suite/rpl/t/rpl_flushlog_loop.test @@ -36,7 +36,6 @@ source include/start_slave.inc; # 2. Insert into t1 on slave (2nd) when the event (1st) for t1 replicated. # 3. Master waits until the event (2nd) for t1 will be replicated. ---disable_query_log CREATE TABLE t1 (a INT KEY) ENGINE= MyISAM; let $wait_binlog_event= CREATE TABLE t1; --source include/wait_for_binlog_event.inc @@ -44,31 +43,20 @@ sync_slave_with_master; connection master; INSERT INTO t1 VALUE(1); ---enable_query_log FLUSH LOGS; -let $slave_param_value= query_get_value(SHOW MASTER STATUS, Position, 1); +sync_slave_with_master; -connection slave; -let $slave_param= Exec_Master_Log_Pos; -source include/wait_for_slave_param.inc; - ---disable_query_log INSERT INTO t1 VALUE(2); let $slave_param_value= query_get_value(SHOW MASTER STATUS, Position, 1); ---enable_query_log - -connection master; -let $slave_param= Exec_Master_Log_Pos; -source include/wait_for_slave_param.inc; - ---enable_query_log +sync_slave_with_master master; # -# Show status of slave +# Check that the master server's slave threads are still running and show +# Relay_Log_File # ---replace_result $SLAVE_MYPORT SLAVE_PORT $slave_param_value POSITION ---replace_column 1 # 8 # 9 # 16 # 23 # 33 # 34 # 35 # ---query_vertical SHOW SLAVE STATUS +--source include/check_slave_is_running.inc +--let status_items= Relay_Log_File +--source include/show_slave_status.inc --disable_query_log connection master; diff --git a/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test b/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test index 4a9276d9880..28f13c17042 100644 --- a/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test +++ b/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test @@ -57,14 +57,10 @@ source include/stop_slave.inc; eval change master to master_port=$SLAVE_MYPORT; start slave; -let $slave_param= Last_IO_Errno; -let $slave_param_value= 1593; -source include/wait_for_slave_param.inc; --echo *** must be having the replicate-same-server-id IO thread error *** -let $last_io_errno= query_get_value("show slave status", Last_IO_Errno, 1); -let $last_io_error= query_get_value("show slave status", Last_IO_Error, 1); -echo Slave_IO_Errno= $last_io_errno; -echo Slave_IO_Error= $last_io_error; +let $slave_io_errno= 1593; +let $show_slave_io_error= 1; +source include/wait_for_slave_io_error.inc; # cleanup diff --git a/mysql-test/suite/rpl/t/rpl_grant.test b/mysql-test/suite/rpl/t/rpl_grant.test index 50b243eab92..6fbdafc0f9c 100644 --- a/mysql-test/suite/rpl/t/rpl_grant.test +++ b/mysql-test/suite/rpl/t/rpl_grant.test @@ -36,5 +36,3 @@ sync_slave_with_master; --echo **** On Slave **** SELECT user,host FROM mysql.user WHERE user like 'dummy%'; SELECT COUNT(*) FROM mysql.user WHERE user like 'dummy%'; - -source include/show_slave_status2.inc; diff --git a/mysql-test/suite/rpl/t/rpl_incident.test b/mysql-test/suite/rpl/t/rpl_incident.test index 66893ebb93f..08096d03c11 100644 --- a/mysql-test/suite/rpl/t/rpl_incident.test +++ b/mysql-test/suite/rpl/t/rpl_incident.test @@ -16,6 +16,7 @@ SELECT * FROM t1; connection slave; # Wait until SQL thread stops with error LOST_EVENT on master let $slave_sql_errno= 1590; +let $show_slave_sql_error= 1; source include/wait_for_slave_sql_error.inc; # The 4 should not be inserted into the table, since the incident log @@ -23,10 +24,6 @@ source include/wait_for_slave_sql_error.inc; --echo **** On Slave **** SELECT * FROM t1; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 6 # 7 # 8 # 9 # 22 # 23 # 33 # ---query_vertical SHOW SLAVE STATUS - SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; --sync_with_master @@ -35,9 +32,7 @@ START SLAVE; # should be running. We should also have rotated to a new binary log. SELECT * FROM t1; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 6 # 7 # 8 # 9 # 22 # 23 # 33 # ---query_vertical SHOW SLAVE STATUS +source include/check_slave_is_running.inc; connection master; DROP TABLE t1; diff --git a/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test b/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test index b300603f454..5b31b094b62 100644 --- a/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test +++ b/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test @@ -26,9 +26,11 @@ INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10; SELECT * FROM t1; connection slave; --source include/wait_for_slave_sql_to_stop.inc -# show the error message ---replace_column 1 # 4 # 7 # 8 # 9 # 23 # 33 # ---query_vertical show slave status; +# show the error message +#1105 = ER_UNKNOWN_ERROR +--let $slave_sql_errno= 1105 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc # show that it was not replicated SELECT * FROM t1; @@ -81,8 +83,10 @@ SELECT * FROM t1; connection slave; --source include/wait_for_slave_sql_to_stop.inc # show the error message ---replace_column 1 # 4 # 7 # 8 # 9 # 23 # 33 # ---query_vertical show slave status; +#1105 = ER_UNKNOWN_ERROR +--let $slave_sql_errno= 1105 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc # show that it was not replicated SELECT * FROM t1; connection master; diff --git a/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test b/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test index b7d9995c834..e80fc160d8f 100644 --- a/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test +++ b/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test @@ -8,7 +8,6 @@ connection master; CREATE TABLE t1 (a INT, b INT); INSERT INTO t1 VALUES (1,10); sync_slave_with_master; -source include/show_slave_status.inc; # Now we feed it a load data infile, which should make it stop with a # fatal error. @@ -16,12 +15,9 @@ connection master; LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1; connection slave; -wait_for_slave_to_stop; -source include/show_slave_status.inc; - -connection slave; -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; -START SLAVE; +let $slave_sql_errno= 1593; +let $show_slave_sql_error= 1; +source include/wait_for_slave_sql_error_and_skip.inc; connection master; DROP TABLE t1; diff --git a/mysql-test/suite/rpl/t/rpl_log_pos.test b/mysql-test/suite/rpl/t/rpl_log_pos.test index 48effa00b64..239ddc5c8d4 100644 --- a/mysql-test/suite/rpl/t/rpl_log_pos.test +++ b/mysql-test/suite/rpl/t/rpl_log_pos.test @@ -16,14 +16,16 @@ source include/show_master_status.inc; sync_slave_with_master; source include/stop_slave.inc; +--replace_result 75 MASTER_LOG_POS change master to master_log_pos=75; -source include/show_slave_status2.inc; +let $status_items= Read_Master_Log_Pos; +source include/show_slave_status.inc; start slave; -source include/wait_for_slave_sql_to_start.inc; -source include/wait_for_slave_io_to_stop.inc; +let $slave_io_errno= 1236; +let $show_slave_io_error= 1; +source include/wait_for_slave_io_error.inc; source include/stop_slave.inc; -source include/show_slave_status.inc; connection master; source include/show_master_status.inc; create table if not exists t1 (n int); @@ -32,6 +34,7 @@ create table t1 (n int); insert into t1 values (1),(2),(3); save_master_pos; connection slave; +--replace_result 4 MASTER_LOG_POS change master to master_log_pos=4; start slave; sync_with_master; diff --git a/mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test b/mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test index 8863c9d4ac7..ec50311fc7c 100644 --- a/mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test +++ b/mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test @@ -15,20 +15,10 @@ SELECT @@GLOBAL.BINLOG_FORMAT, @@SESSION.BINLOG_FORMAT; CREATE TABLE t1 (a INT, b LONG); INSERT INTO t1 VALUES (1,1), (2,2); INSERT INTO t1 VALUES (3,UUID()), (4,UUID()); -let $VERSION=`select version()`; ---replace_result $VERSION VERSION ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS; +source include/show_binlog_events.inc; sync_slave_with_master; --echo **** On Slave **** ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 8 # 9 # 23 # 33 # 34 # 35 # ---query_vertical SHOW SLAVE STATUS ---replace_result $VERSION VERSION ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS; +source include/show_binlog_events.inc; --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_master.sql --exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_slave.sql diff --git a/mysql-test/suite/rpl/t/rpl_replicate_do.test b/mysql-test/suite/rpl/t/rpl_replicate_do.test index fea168ee9f1..382e198aaf9 100644 --- a/mysql-test/suite/rpl/t/rpl_replicate_do.test +++ b/mysql-test/suite/rpl/t/rpl_replicate_do.test @@ -31,10 +31,8 @@ save_master_pos; connection slave; sync_with_master; # show slave status, just to see of it prints replicate-do-table ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # -query_vertical SHOW SLAVE STATUS; - +let $status_items= Replicate_Do_Table; +source include/show_slave_status.inc; # # BUG#12542 # TEST: "SET ONE_SHOT should always be executed on slave" diff --git a/mysql-test/suite/rpl/t/rpl_rotate_logs.test b/mysql-test/suite/rpl/t/rpl_rotate_logs.test index e06099fd707..a2f7b522f1f 100644 --- a/mysql-test/suite/rpl/t/rpl_rotate_logs.test +++ b/mysql-test/suite/rpl/t/rpl_rotate_logs.test @@ -66,7 +66,9 @@ insert into temp_table values ("testing temporary tables"); create table t1 (s text); insert into t1 values('Could not break slave'),('Tried hard'); sync_slave_with_master; -source include/show_slave_status2.inc; +let $status_items= Master_Log_File, Relay_Master_Log_File; +source include/show_slave_status.inc; +source include/check_slave_is_running.inc; select * from t1; connection master; flush logs; @@ -136,7 +138,8 @@ purge master logs before (@time_for_purge); source include/show_binary_logs.inc; insert into t2 values (65); sync_slave_with_master; -source include/show_slave_status2.inc; +source include/show_slave_status.inc; +source include/check_slave_is_running.inc; select * from t2; # @@ -166,7 +169,8 @@ connection slave; sync_with_master; select * from t4; -source include/show_slave_status2.inc; +source include/show_slave_status.inc; +source include/check_slave_is_running.inc; # because of concurrent insert, the table may not be up to date # if we do not lock lock tables t3 read; diff --git a/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test b/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test index 5904585a050..b1f37e0bfe4 100644 --- a/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test +++ b/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test @@ -48,9 +48,7 @@ DELETE FROM t1; INSERT INTO t1 VALUES (1),(2); DELETE FROM t1 WHERE a = 0; UPDATE t1 SET a=99 WHERE a = 0; ---replace_result $SERVER_VERSION SERVER_VERSION ---replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS; +source include/show_binlog_events.inc; DROP TABLE t1; diff --git a/mysql-test/suite/rpl/t/rpl_row_create_table.test b/mysql-test/suite/rpl/t/rpl_row_create_table.test index e30982da605..a72ca75e975 100644 --- a/mysql-test/suite/rpl/t/rpl_row_create_table.test +++ b/mysql-test/suite/rpl/t/rpl_row_create_table.test @@ -36,9 +36,7 @@ CREATE TABLE t1 (a INT, b INT); CREATE TABLE t2 (a INT, b INT) ENGINE=Merge; CREATE TABLE t3 (a INT, b INT) CHARSET=utf8; CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8; ---replace_column 1 # 4 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ ---query_vertical SHOW BINLOG EVENTS FROM 106 +--source include/show_binlog_events.inc --echo **** On Master **** --query_vertical SHOW CREATE TABLE t1 --query_vertical SHOW CREATE TABLE t2 @@ -74,9 +72,7 @@ connection master; --error ER_DUP_ENTRY CREATE TABLE t7 (UNIQUE(b)) SELECT a,b FROM tt3; # Shouldn't be written to the binary log ---replace_column 1 # 4 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 106; +--source include/show_binlog_events.inc # Test that INSERT-SELECT works the same way as for SBR. CREATE TABLE t7 (a INT, b INT UNIQUE); @@ -84,9 +80,7 @@ CREATE TABLE t7 (a INT, b INT UNIQUE); INSERT INTO t7 SELECT a,b FROM tt3; SELECT * FROM t7 ORDER BY a,b; # Should be written to the binary log ---replace_column 1 # 4 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 106; +--source include/show_binlog_events.inc sync_slave_with_master; SELECT * FROM t7 ORDER BY a,b; @@ -98,9 +92,7 @@ INSERT INTO tt4 VALUES (4,8), (5,10), (6,12); BEGIN; INSERT INTO t7 SELECT a,b FROM tt4; ROLLBACK; ---replace_column 1 # 4 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 106; +--source include/show_binlog_events.inc SELECT * FROM t7 ORDER BY a,b; sync_slave_with_master; SELECT * FROM t7 ORDER BY a,b; @@ -116,9 +108,7 @@ CREATE TEMPORARY TABLE tt7 SELECT 1; --echo **** On Master **** --query_vertical SHOW CREATE TABLE t8 --query_vertical SHOW CREATE TABLE t9 ---replace_column 1 # 4 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 106; +--source include/show_binlog_events.inc sync_slave_with_master; --echo **** On Slave **** --query_vertical SHOW CREATE TABLE t8 @@ -160,9 +150,7 @@ SELECT * FROM t1 ORDER BY a; SELECT * FROM t2 ORDER BY a; SELECT * FROM t3 ORDER BY a; SELECT * FROM t4 ORDER BY a; ---replace_column 1 # 4 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /Server ver: .*, Binlog ver: .*/Server ver: #, Binlog ver: #/ /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 106; +--source include/show_binlog_events.inc sync_slave_with_master; SHOW TABLES; SELECT * FROM t1 ORDER BY a; @@ -202,9 +190,7 @@ INSERT INTO t2 SELECT a+2 FROM tt1; COMMIT; SELECT * FROM t2 ORDER BY a; ---replace_column 1 # 4 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /Server ver: .*, Binlog ver: .*/Server ver: #, Binlog ver: #/ /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 106; +--source include/show_binlog_events.inc sync_slave_with_master; SELECT * FROM t2 ORDER BY a; @@ -225,9 +211,7 @@ INSERT INTO t2 SELECT a+2 FROM tt2; ROLLBACK; SELECT * FROM t2 ORDER BY a; ---replace_column 1 # 4 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /Server ver: .*, Binlog ver: .*/Server ver: #, Binlog ver: #/ /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS FROM 106; +source include/show_binlog_events.inc; sync_slave_with_master; SELECT * FROM t2 ORDER BY a; diff --git a/mysql-test/suite/rpl/t/rpl_row_drop.test b/mysql-test/suite/rpl/t/rpl_row_drop.test index 20c217a7c3a..d18ebc2846b 100644 --- a/mysql-test/suite/rpl/t/rpl_row_drop.test +++ b/mysql-test/suite/rpl/t/rpl_row_drop.test @@ -30,10 +30,7 @@ connection master; --echo **** On Master **** # Should drop the non-temporary table t1 and the temporary table t2 DROP TABLE t1,t2; -let $VERSION=`select version()`; ---replace_result $VERSION VERSION ---replace_regex /table_id: [0-9]+/table_id: #/ -SHOW BINLOG EVENTS; +source include/show_binlog_events.inc; SHOW TABLES; sync_slave_with_master; --echo **** On Slave **** diff --git a/mysql-test/suite/rpl/t/rpl_row_until.test b/mysql-test/suite/rpl/t/rpl_row_until.test index fe859218ed3..9e3cbbd325a 100644 --- a/mysql-test/suite/rpl/t/rpl_row_until.test +++ b/mysql-test/suite/rpl/t/rpl_row_until.test @@ -15,6 +15,7 @@ DROP TABLE t1; # Save master log postion for query DROP TABLE t1 save_master_pos; let $master_pos_drop_t1= query_get_value(SHOW BINLOG EVENTS, Pos, 7); +let $master_log_file= query_get_value(SHOW BINLOG EVENTS, Log_name, 7); CREATE TABLE t2(n INT NOT NULL AUTO_INCREMENT PRIMARY KEY); # Save master log postion for query CREATE TABLE t2 @@ -46,26 +47,28 @@ eval CHANGE MASTER TO MASTER_USER='root', MASTER_CONNECT_RETRY=1, MASTER_HOST='1 # Try to replicate all queries until drop of t1 connection slave; -echo START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=master_pos_drop_t1; +echo START SLAVE UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=master_pos_drop_t1; --disable_query_log -eval START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=$master_pos_drop_t1; +eval START SLAVE UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=$master_pos_drop_t1; --enable_query_log --source include/wait_for_slave_sql_to_stop.inc # Here table should be still not deleted SELECT * FROM t1; ---replace_result $master_pos_drop_t1 MASTER_POS_DROP_T1 ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 23 # 33 # 35 # 36 # -query_vertical SHOW SLAVE STATUS; +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $master_pos_drop_t1 +--source include/check_slave_param.inc # This should fail right after start +--replace_result 291 MASTER_LOG_POS START SLAVE UNTIL MASTER_LOG_FILE='master-no-such-bin.000001', MASTER_LOG_POS=291; --source include/wait_for_slave_sql_to_stop.inc # again this table should be still not deleted SELECT * FROM t1; ---replace_result $master_pos_drop_t1 MASTER_POS_DROP_T1 ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 23 # 33 # 35 # 36 # -query_vertical SHOW SLAVE STATUS; + +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $master_pos_drop_t1 +--source include/check_slave_param.inc # Try replicate all up to and not including the second insert to t2; echo START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', RELAY_LOG_POS=relay_pos_insert1_t2; @@ -74,9 +77,10 @@ eval START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', RELAY_LOG_POS=$r --enable_query_log --source include/wait_for_slave_sql_to_stop.inc SELECT * FROM t2; ---replace_result $relay_pos_insert1_t2 RELAY_POS_INSERT1_T2 $master_pos_insert1_t2 MASTER_POS_INSERT1_T2 ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 23 # 33 # 35 # 36 # -query_vertical SHOW SLAVE STATUS; + +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $master_pos_insert1_t2 +--source include/check_slave_param.inc # clean up START SLAVE; @@ -86,31 +90,34 @@ sync_slave_with_master; --source include/stop_slave.inc # This should stop immediately as we are already there -echo START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=master_pos_create_t2; +echo START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=master_pos_create_t2; --disable_query_log -eval START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=$master_pos_create_t2; +eval START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=$master_pos_create_t2; --enable_query_log let $slave_param= Until_Log_Pos; let $slave_param_value= $master_pos_create_t2; --source include/wait_for_slave_param.inc --source include/wait_for_slave_sql_to_stop.inc # here the sql slave thread should be stopped ---replace_result bin.000005 bin.000004 bin.000006 bin.000004 bin.000007 bin.000004 ---replace_result $master_pos_create_t2 MASTER_POS_CREATE_T2 $master_pos_drop_t2 MASTER_POS_DROP_T2 ---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 23 # 33 # 35 # 36 # -query_vertical SHOW SLAVE STATUS; +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $master_pos_drop_t2 +--source include/check_slave_param.inc #testing various error conditions +--replace_result 561 MASTER_LOG_POS --error 1277 START SLAVE UNTIL MASTER_LOG_FILE='master-bin', MASTER_LOG_POS=561; +--replace_result 561 MASTER_LOG_POS 12 RELAY_LOG_POS --error 1277 START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=561, RELAY_LOG_POS=12; --error 1277 START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001'; --error 1277 START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000009'; +--replace_result 561 MASTER_LOG_POS --error 1277 START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', MASTER_LOG_POS=561; # Warning should be given for second command START SLAVE; +--replace_result 740 MASTER_LOG_POS START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=740; diff --git a/mysql-test/suite/rpl/t/rpl_skip_error.test b/mysql-test/suite/rpl/t/rpl_skip_error.test index 9c6aa3dcb57..8d176ac0c3b 100644 --- a/mysql-test/suite/rpl/t/rpl_skip_error.test +++ b/mysql-test/suite/rpl/t/rpl_skip_error.test @@ -55,7 +55,7 @@ insert into t1 values (7), (8), (9); --echo [on slave] sync_slave_with_master; select * from t1 order by n; -source include/show_slave_status2.inc; +source include/check_slave_is_running.inc; --echo ==== Clean Up ==== connection master; @@ -78,7 +78,7 @@ insert into t1 values (1), (2), (3); --echo [on slave] sync_slave_with_master; select * from t1; -source include/show_slave_status2.inc; +source include/check_slave_is_running.inc; --echo ==== Clean Up ==== diff --git a/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test b/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test index 437e1ebb92d..22309c33724 100644 --- a/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test +++ b/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test @@ -31,12 +31,9 @@ commit; # Catch Error ########################################################################## connection slave; -source include/wait_for_slave_sql_to_stop.inc; - ---replace_result $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # ---replace_regex /SQL_LOAD-[0-9]-[0-9]-[0-9]*/SQL_LOAD/ -query_vertical show slave status; +# Errno 9 is what we get although it's wrong (see BUG#52768). +--let $slave_sql_errno= 9 +--source include/wait_for_slave_sql_error.inc ########################################################################## # Clean up diff --git a/mysql-test/suite/rpl/t/rpl_slave_skip.test b/mysql-test/suite/rpl/t/rpl_slave_skip.test index c5ee6793277..4c5930d74fe 100644 --- a/mysql-test/suite/rpl/t/rpl_slave_skip.test +++ b/mysql-test/suite/rpl/t/rpl_slave_skip.test @@ -14,6 +14,7 @@ CREATE TABLE t1 (a INT, b INT); CREATE TABLE t2 (c INT, d INT); INSERT INTO t1 VALUES (1,1),(2,4),(3,9); INSERT INTO t2 VALUES (1,1),(2,8),(3,27); +let $master_log_pos= query_get_value(SHOW MASTER STATUS, Position, 1); UPDATE t1,t2 SET b = d, d = b * 2 WHERE a = c; source include/show_binlog_events.inc; @@ -21,16 +22,17 @@ source include/show_binlog_events.inc; SELECT * FROM t1; SELECT * FROM t2; save_master_pos; - --echo **** On Slave **** connection slave; # Stop when reaching the the first table map event. -START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=762; +--replace_result $master_log_pos MASTER_LOG_POS +eval START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=$master_log_pos; source include/wait_for_slave_sql_to_stop.inc; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 8 # 9 # 23 # 33 # 35 # 36 # -query_vertical SHOW SLAVE STATUS; +let $slave_param= Exec_Master_Log_Pos; +let $slave_param_value= $master_log_pos; +source include/check_slave_param.inc; +source include/check_slave_no_error.inc; # Now we skip *one* table map event. If the execution starts right # after that table map event, *one* of the involved tables will be @@ -53,19 +55,18 @@ RESET MASTER; SET SESSION BINLOG_FORMAT=STATEMENT; SET @foo = 12; +let $master_log_pos= query_get_value(SHOW MASTER STATUS, Position, 1); INSERT INTO t1 VALUES(@foo, 2*@foo); save_master_pos; source include/show_binlog_events.inc; connection slave; -START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=106; +--replace_result $master_log_pos MASTER_LOG_POS +eval START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=$master_log_pos; source include/wait_for_slave_sql_to_stop.inc; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; sync_with_master; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 8 # 9 # 23 # 33 # 35 # 36 # -query_vertical SHOW SLAVE STATUS; --echo **** On Master **** connection master; diff --git a/mysql-test/suite/rpl/t/rpl_sp.test b/mysql-test/suite/rpl/t/rpl_sp.test index 9be630e9ae8..243136a0d38 100644 --- a/mysql-test/suite/rpl/t/rpl_sp.test +++ b/mysql-test/suite/rpl/t/rpl_sp.test @@ -568,9 +568,7 @@ connection master; # Final inspection which verifies how all statements of this test file # were written to the binary log. ---replace_column 2 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ -show binlog events in 'master-bin.000001' from 106; +--source include/show_binlog_events.inc # Restore log_bin_trust_function_creators to its original value. diff --git a/mysql-test/suite/rpl/t/rpl_ssl.test b/mysql-test/suite/rpl/t/rpl_ssl.test index 7e256390e25..803b08eeec5 100644 --- a/mysql-test/suite/rpl/t/rpl_ssl.test +++ b/mysql-test/suite/rpl/t/rpl_ssl.test @@ -30,9 +30,9 @@ select * from t1; # The slave is synced and waiting/reading from master # SHOW SLAVE STATUS will show "Waiting for master to send event" ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # -query_vertical show slave status; +let $status_items= Master_SSL_Allowed, Master_SSL_CA_Path, Master_SSL_CA_File, Master_SSL_Cert, Master_SSL_Key; +source include/show_slave_status.inc; +source include/check_slave_is_running.inc; # Stop the slave, as reported in bug#21871 it would hang STOP SLAVE; @@ -70,9 +70,8 @@ let $master_count= `select count(*) from t1`; sync_slave_with_master; --source include/wait_for_slave_to_start.inc ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # -query_vertical show slave status; +source include/show_slave_status.inc; +source include/check_slave_is_running.inc; let $slave_count= `select count(*) from t1`; diff --git a/mysql-test/suite/rpl/t/rpl_ssl1.test b/mysql-test/suite/rpl/t/rpl_ssl1.test index b5355d737d5..eca6a8cf46e 100644 --- a/mysql-test/suite/rpl/t/rpl_ssl1.test +++ b/mysql-test/suite/rpl/t/rpl_ssl1.test @@ -45,9 +45,9 @@ sync_with_master; select * from t1; #checking show slave status ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 6 # 7 # 8 # 9 # 10 # 11 # 16 # 22 # 23 # 33 # 35 # 36 # -query_vertical show slave status; +let $status_items= Master_SSL_Allowed, Master_SSL_CA_Path, Master_SSL_CA_File, Master_SSL_Cert, Master_SSL_Key; +source include/show_slave_status.inc; +source include/check_slave_is_running.inc; #checking if replication works without ssl also performing clean up stop slave; @@ -59,10 +59,8 @@ drop table t1; save_master_pos; connection slave; sync_with_master; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 6 # 7 # 8 # 9 # 10 # 11 # 16 # 22 # 23 # 33 # 35 # 36 # -query_vertical show slave status; - +source include/show_slave_status.inc; +source include/check_slave_is_running.inc; # End of 4.1 tests # Start replication with ssl_verify_server_cert turned on @@ -89,9 +87,8 @@ echo on slave; select * from t1; #checking show slave status ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT ---replace_column 1 # 6 # 7 # 8 # 9 # 10 # 11 # 16 # 22 # 23 # 33 # 35 # 36 # -query_vertical show slave status; +source include/show_slave_status.inc; +--source include/check_slave_is_running.inc connection master; drop table t1; diff --git a/mysql-test/suite/rpl/t/rpl_stm_until.test b/mysql-test/suite/rpl/t/rpl_stm_until.test index ae03ebe8b76..ee9501681a1 100644 --- a/mysql-test/suite/rpl/t/rpl_stm_until.test +++ b/mysql-test/suite/rpl/t/rpl_stm_until.test @@ -34,9 +34,12 @@ sync_slave_with_master; connection master; create table t1(n int not null auto_increment primary key); insert into t1 values (1),(2),(3),(4); +let $master_log_pos_1= query_get_value(SHOW MASTER STATUS, Position, 1); +let $master_log_file= query_get_value(SHOW MASTER STATUS, File, 1); drop table t1; create table t2(n int not null auto_increment primary key); insert into t2 values (1),(2); +let $master_log_pos_2= query_get_value(SHOW MASTER STATUS, Position, 1); insert into t2 values (3),(4); drop table t2; @@ -45,27 +48,39 @@ drop table t2; # try to replicate all queries until drop of t1 --echo [on slave] connection slave; -start slave until master_log_file='master-bin.000001', master_log_pos=323; +--replace_result $master_log_file MASTER_LOG_FILE $master_log_pos_1 MASTER_LOG_POS +eval start slave until master_log_file='$master_log_file', master_log_pos=$master_log_pos_1; --source include/wait_for_slave_io_to_start.inc --source include/wait_for_slave_sql_to_stop.inc # here table should be still not deleted select * from t1; -source include/show_slave_status2.inc; +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $master_log_pos_1 +--source include/check_slave_param.inc # this should fail right after start +--replace_result 291 MASTER_LOG_POS start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291; --source include/wait_for_slave_io_to_start.inc --source include/wait_for_slave_sql_to_stop.inc # again this table should be still not deleted select * from t1; -source include/show_slave_status2.inc; +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $master_log_pos_1 +--source include/check_slave_param.inc +let $relay_log_file= slave-relay-bin.000004; +let $master_log_pos= $master_log_pos_2; +source include/get_relay_log_pos.inc; # try replicate all up to and not including the second insert to t2; -start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=746; +--replace_result $relay_log_pos RELAY_LOG_POS +eval start slave until relay_log_file='$relay_log_file', relay_log_pos=$relay_log_pos; --source include/wait_for_slave_io_to_start.inc --source include/wait_for_slave_sql_to_stop.inc select * from t2; -source include/show_slave_status2.inc; +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $master_log_pos +--source include/check_slave_param.inc # clean up start slave; @@ -75,27 +90,34 @@ connection master; sync_slave_with_master; --source include/stop_slave.inc +--let $exec_log_pos_1= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1) # this should stop immediately as we are already there -start slave until master_log_file='master-bin.000001', master_log_pos=776; +--replace_result $master_log_file MASTER_LOG_FILE $master_log_pos_2 MASTER_LOG_POS +eval start slave until master_log_file='$master_log_file', master_log_pos=$master_log_pos_2; --source include/wait_for_slave_io_to_start.inc --source include/wait_for_slave_sql_to_stop.inc ---replace_result bin.000005 bin.000004 bin.000006 bin.000004 bin.000007 bin.000004 -source include/show_slave_status2.inc; +--let $slave_param= Exec_Master_Log_Pos +--let $slave_param_value= $exec_log_pos_1 +--source include/check_slave_param.inc --echo ==== Test various error conditions ==== +--replace_result 561 MASTER_LOG_POS --error 1277 start slave until master_log_file='master-bin', master_log_pos=561; +--replace_result 561 MASTER_LOG_POS 12 RELAY_LOG_POS --error 1277 start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12; --error 1277 start slave until master_log_file='master-bin.000001'; --error 1277 start slave until relay_log_file='slave-relay-bin.000002'; +--replace_result 561 MASTER_LOG_POS --error 1277 start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561; # Warning should be given for second command start slave sql_thread; +--replace_result 776 MASTER_LOG_POS start slave until master_log_file='master-bin.000001', master_log_pos=776; # @@ -144,8 +166,8 @@ insert into t1 set a=null; select count(*) as two from t1; connection slave; ---replace_result $until_pos UNTIL_POS; -eval start slave until master_log_file='master-bin.000001', master_log_pos= $until_pos; +--replace_result $master_log_file MASTER_LOG_FILE $until_pos UNTIL_POS; +eval start slave until master_log_file='$master_log_file', master_log_pos= $until_pos; source include/wait_for_slave_sql_to_stop.inc; let $slave_exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1); --echo slave stopped at the prescribed position diff --git a/mysql-test/suite/rpl/t/rpl_temporary_errors.test b/mysql-test/suite/rpl/t/rpl_temporary_errors.test index 3b373e00a62..b3f62943689 100644 --- a/mysql-test/suite/rpl/t/rpl_temporary_errors.test +++ b/mysql-test/suite/rpl/t/rpl_temporary_errors.test @@ -25,7 +25,7 @@ sync_slave_with_master; set @@global.slave_exec_mode= default; SHOW STATUS LIKE 'Slave_retried_transactions'; SELECT * FROM t1; -source include/show_slave_status2.inc; +source include/check_slave_is_running.inc; DROP TABLE t1; --echo **** On Master **** diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result index b16a63ec5ad..d43165e2b5e 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result @@ -140,45 +140,7 @@ set GLOBAL slave_transaction_retries=1; **** On Master **** UPDATE t1 SET `nom`="DEAD" WHERE `nid`=1; **** On Slave **** -SHOW SLAVE STATUS;; -Slave_IO_State -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos -Relay_Log_File -Relay_Log_Pos -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos -Relay_Log_Space -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno -Last_SQL_Error +Last_SQL_Error = Could not execute Write_rows event on table test.t1; Got temporary error 266 'Time-out in NDB, probably caused by deadlock' from NDB, Error_code: 1297; Lock wait timeout exceeded; try restarting transaction, Error_code: 1205; handler error HA_ERR_LOCK_WAIT_TIMEOUT; the event's master log master-bin.000001, end_log_pos 6834 set GLOBAL slave_transaction_retries=10; include/start_slave.inc select * from t1 order by nid; diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result index 2daacb351a9..dfbd7a37d8e 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result @@ -17,87 +17,11 @@ SELECT * FROM t1 ORDER BY a; a b 1 2 2 3 -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. SELECT * FROM t1 ORDER BY a; a b 1 2 2 3 -show slave status;; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 60 -Master_Log_File slave-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File slave-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. STOP SLAVE; DROP TABLE t1; diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result index b6f32668c42..99438d663bb 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result @@ -14,45 +14,7 @@ INSERT INTO t1 VALUES (2,3); STOP SLAVE; CHANGE MASTER TO MASTER_HOST="127.0.0.1",MASTER_PORT=SLAVE_PORT,MASTER_USER="root"; START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port SLAVE_PORT -Connect_Retry 60 -Master_Log_File slave-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File slave-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. SELECT * FROM t1 ORDER BY a; a b 1 2 @@ -63,43 +25,5 @@ SELECT * FROM t1 ORDER BY a; a b 1 2 2 3 -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. DROP TABLE t1; diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result index f514bf7a75b..642fc078918 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result @@ -54,45 +54,7 @@ a b c 3 4 QA TESTING *** Start Slave *** START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size. -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size. STOP SLAVE; RESET SLAVE; SELECT * FROM t2 ORDER BY a; @@ -121,47 +83,10 @@ INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TEST ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t3 *** DROP TABLE t3; *** Create t4 on slave *** @@ -183,47 +108,10 @@ INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'), ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t4 *** DROP TABLE t4; *** Create t5 on slave *** @@ -245,47 +133,10 @@ INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098), ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t5 *** DROP TABLE t5; *** Create t6 on slave *** @@ -306,45 +157,7 @@ INSERT INTO t6 () VALUES(1,'Kyle',200.23,1), ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 +Last_SQL_Error = Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3; *** Drop t6 *** DROP TABLE t6; @@ -418,47 +231,10 @@ INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t10 *** DROP TABLE t10; *** Create t11 on slave *** @@ -479,47 +255,10 @@ INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc *** Drop t11 *** DROP TABLE t11; *** Create t12 on slave *** @@ -729,47 +468,10 @@ ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5; ******************************************** *** Expect slave to fail with Error 1060 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1060 -Last_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5' -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1060 -Last_SQL_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5' -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5' +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 1; +include/start_slave.inc *** Try to insert in master **** INSERT INTO t15 () VALUES(5,2.00,'Replication Testing',@b1,'Buda',2); SELECT * FROM t15 ORDER BY c1; @@ -869,46 +571,9 @@ INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX'); ******************************************** *** Expect slave to fail with Error 1522 *** ******************************************** -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port # -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos # -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 1535 -Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 -Skip_Counter 0 -Exec_Master_Log_Pos # -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 1535 -Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2; -START SLAVE; +--source include/wait_for_slave_sql_error_and_skip.inc +Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 +SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2; +include/start_slave.inc ** DROP table t17 *** DROP TABLE t17; diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result index e2fee391bab..e2755c04f28 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result @@ -32,16 +32,11 @@ SELECT * FROM t1 ORDER BY c3; c1 c2 c3 row3 C 3 row4 D 4 -SHOW SLAVE STATUS; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error - 127.0.0.1 root MASTER_PORT 1 master-bin.000001 master-bin.000001 Yes Yes 0 0 None 0 No No 0 +Checking that both slave threads are running. STOP SLAVE; CHANGE MASTER TO master_log_file = 'master-bin.000001', master_log_pos = ; -SHOW SLAVE STATUS; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error - 127.0.0.1 root MASTER_PORT 1 master-bin.000001 master-bin.000001 No No 0 0 None 0 No No 0 START SLAVE; SELECT * FROM t1 ORDER BY c3; c1 c2 c3 @@ -67,7 +62,5 @@ COMMIT; SELECT * FROM t1; c1 c2 c3 row2 new on slave 2 -SHOW SLAVE STATUS; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error - 127.0.0.1 root MASTER_PORT 1 master-bin.000001 master-bin.000001 Yes Yes 0 0 None 0 No 0 +Checking that both slave threads are running. DROP TABLE IF EXISTS t1; diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result index 540c430e757..85ecb13bd66 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result @@ -7,7 +7,7 @@ start slave; include/stop_slave.inc reset master; reset slave; -start slave; +include/start_slave.inc create table t1(n int not null auto_increment primary key)ENGINE=NDB; insert into t1 values (NULL); drop table t1; @@ -16,34 +16,33 @@ load data infile 'LOAD_FILE' into table t1 ignore 1 lines; select count(*) from t1; count(*) 69 -show binlog events; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Table_map 1 # table_id: # (mysql.ndb_apply_status) -master-bin.000001 # Write_rows 1 # table_id: # -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # COMMIT -master-bin.000001 # Query 1 # use `test`; drop table t1 -master-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=NDB -master-bin.000001 # Query 1 # BEGIN -master-bin.000001 # Table_map 1 # table_id: # (test.t1) -master-bin.000001 # Table_map 1 # table_id: # (mysql.ndb_apply_status) -master-bin.000001 # Write_rows 1 # table_id: # -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000001 # Query 1 # COMMIT -show binlog events from 106 limit 1; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # use `test`; drop table t1 +master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=NDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +show binlog events from limit 1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB -show binlog events from 106 limit 2; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB +show binlog events from limit 2; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB -master-bin.000001 # Query 1 # BEGIN -show binlog events from 106 limit 2,1; +master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB +master-bin.000001 # Query # # BEGIN +show binlog events from limit 2,1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Table_map 1 # table_id: # (test.t1) +master-bin.000001 # Table_map # # table_id: # (test.t1) flush logs; create table t3 (a int)ENGINE=NDB; select * from t1 order by 1 asc; @@ -211,17 +210,16 @@ master-bin.000001 # Write_rows # # table_id: # master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Rotate # # master-bin.000002;pos=4 -show binlog events in 'master-bin.000002'; +show binlog events in 'master-bin.000002' from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4 -master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=NDB -master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=NDB -master-bin.000002 # Query 1 # BEGIN -master-bin.000002 # Table_map 1 # table_id: # (test.t2) -master-bin.000002 # Table_map 1 # table_id: # (mysql.ndb_apply_status) -master-bin.000002 # Write_rows 1 # table_id: # -master-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F -master-bin.000002 # Query 1 # COMMIT +master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=NDB +master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=NDB +master-bin.000002 # Query # # BEGIN +master-bin.000002 # Table_map # # table_id: # (test.t2) +master-bin.000002 # Table_map # # table_id: # (mysql.ndb_apply_status) +master-bin.000002 # Write_rows # # table_id: # +master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000002 # Query # # COMMIT show binary logs; Log_name File_size master-bin.000001 # @@ -230,75 +228,35 @@ show binary logs; Log_name File_size slave-bin.000001 # slave-bin.000002 # -show binlog events in 'slave-bin.000001' from 4; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB -slave-bin.000001 # Query 2 # BEGIN -slave-bin.000001 # Table_map 2 # table_id: # (test.t1) -slave-bin.000001 # Table_map 2 # table_id: # (mysql.ndb_apply_status) -slave-bin.000001 # Write_rows 2 # table_id: # -slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -slave-bin.000001 # Query 2 # COMMIT -slave-bin.000001 # Query 1 # use `test`; drop table t1 -slave-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=NDB -slave-bin.000001 # Query 2 # BEGIN -slave-bin.000001 # Table_map 2 # table_id: # (test.t1) -slave-bin.000001 # Table_map 2 # table_id: # (mysql.ndb_apply_status) -slave-bin.000001 # Write_rows 2 # table_id: # -slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F -slave-bin.000001 # Query 2 # COMMIT -slave-bin.000001 # Query 1 # use `test`; create table t3 (a int)ENGINE=NDB -slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4 -show binlog events in 'slave-bin.000002' from 4; +slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) +slave-bin.000001 # Write_rows # # table_id: # +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Query # # COMMIT +slave-bin.000001 # Query # # use `test`; drop table t1 +slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=NDB +slave-bin.000001 # Query # # BEGIN +slave-bin.000001 # Table_map # # table_id: # (test.t1) +slave-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) +slave-bin.000001 # Write_rows # # table_id: # +slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000001 # Query # # COMMIT +slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=NDB +slave-bin.000001 # Rotate # # slave-bin.000002;pos=4 +show binlog events in 'slave-bin.000002' from ; Log_name Pos Event_type Server_id End_log_pos Info -slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4 -slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=NDB -slave-bin.000002 # Query 2 # BEGIN -slave-bin.000002 # Table_map 2 # table_id: # (test.t2) -slave-bin.000002 # Table_map 2 # table_id: # (mysql.ndb_apply_status) -slave-bin.000002 # Write_rows 2 # table_id: # -slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F -slave-bin.000002 # Query 2 # COMMIT -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000002 -Read_Master_Log_Pos 623 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File master-bin.000002 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 623 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno # -Last_IO_Error # -Last_SQL_Errno 0 -Last_SQL_Error +slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=NDB +slave-bin.000002 # Query # # BEGIN +slave-bin.000002 # Table_map # # table_id: # (test.t2) +slave-bin.000002 # Table_map # # table_id: # (mysql.ndb_apply_status) +slave-bin.000002 # Write_rows # # table_id: # +slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F +slave-bin.000002 # Query # # COMMIT +Checking that both slave threads are running. show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log DROP TABLE t1; diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result index f8eb5ebdd89..05524ae1ae3 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result @@ -29,8 +29,8 @@ FROM mysql.ndb_binlog_index WHERE epoch = ; 106 master-bin.000001 CHANGE MASTER TO master_port=, -master_log_file = 'master-bin.000001', -master_log_pos = 106 ; +master_log_file = 'MASTER_LOG_FILE', +master_log_pos = MASTER_LOG_POS ; start slave; INSERT INTO t1 VALUES ("row2","will go away",2),("row3","will change",3),("row4","D",4); DELETE FROM t1 WHERE c3 = 1; diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result index 5327bfde7e0..367738b21e5 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result @@ -27,21 +27,21 @@ from mysql.ndb_apply_status; # since insert is done with transactional engine, expect a BEGIN # at -show binlog events from limit 1; +show binlog events from limit 1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 Query 1 # BEGIN +master-bin.000001 # Query # # BEGIN # Now the insert, one step after -show binlog events from limit 1,1; +show binlog events from limit 1,1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query 1 # use `test`; insert into t1 values (1,2) +master-bin.000001 # Query # # use `test`; insert into t1 values (1,2) # and the COMMIT should be at -show binlog events from limit 2,1; +show binlog events from limit 2,1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Xid 1 COMMIT /* XID */ +master-bin.000001 # Xid # # COMMIT /* XID */ begin; insert into t1 values (2,3); @@ -52,18 +52,18 @@ select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos from mysql.ndb_apply_status; @log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos -show binlog events from limit 1; +show binlog events from limit 1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 Query 1 # BEGIN +master-bin.000001 # Query # # BEGIN -show binlog events from limit 1,2; +show binlog events from limit 1,2; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # use `test`; insert into t1 values (2,3) master-bin.000001 # Query # # use `test`; insert into t2 values (3,4) -show binlog events from limit 3,1; +show binlog events from limit 3,1; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Xid 1 COMMIT /* XID */ +master-bin.000001 # Xid # # COMMIT /* XID */ DROP TABLE test.t1, test.t2; SHOW TABLES; diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result index 3ef5e2b7e53..49d068d5fe4 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result @@ -68,45 +68,7 @@ CHANGE MASTER TO master_log_file = 'master-bin.000001', master_log_pos = ; START SLAVE; -SHOW SLAVE STATUS; -Slave_IO_State -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos -Relay_Log_File -Relay_Log_Pos -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos -Relay_Log_Space -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master -Master_SSL_Verify_Server_Cert No -Last_IO_Errno -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error +Checking that both slave threads are running. SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3; hex(c1) hex(c2) c3 1 1 row1 diff --git a/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result b/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result index 409397cb3d1..04a75bf3479 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result @@ -436,8 +436,7 @@ DELETE FROM t1; SELECT COUNT(*) FROM t1 ORDER BY c1,c2; COUNT(*) 0 set @@global.slave_exec_mode= default; -Last_SQL_Error - +Checking that both slave threads are running. SELECT COUNT(*) FROM t1 ORDER BY c1,c2; COUNT(*) 0 **** Test for BUG#37076 **** @@ -487,8 +486,7 @@ Comparing tables master:test.t2 and slave:test.t2 [expecting slave to stop] INSERT INTO t3 VALUES (1, "", 1); INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2); -Last_SQL_Error -Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size. RESET MASTER; STOP SLAVE; RESET SLAVE; @@ -500,8 +498,7 @@ Comparing tables master:test.t4 and slave:test.t4 [expecting slave to stop] INSERT INTO t5 VALUES (1, "", 1); INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2); -Last_SQL_Error -Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size. RESET MASTER; STOP SLAVE; RESET SLAVE; @@ -509,8 +506,7 @@ START SLAVE; [expecting slave to stop] INSERT INTO t6 VALUES (1, "", 1); INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2); -Last_SQL_Error -Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size. +Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size. RESET MASTER; STOP SLAVE; RESET SLAVE; diff --git a/mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result b/mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result index d6c57aed41b..14d3baee1b0 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result @@ -27,18 +27,17 @@ SELECT * FROM t1 ORDER BY a,b; a b **** On Master **** DROP TABLE t1; -SHOW BINLOG EVENTS; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4 -master-bin.000001 106 Query 1 223 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB -master-bin.000001 223 Query 1 287 BEGIN -master-bin.000001 287 Table_map 1 330 table_id: # (test.t1) -master-bin.000001 330 Table_map 1 392 table_id: # (mysql.ndb_apply_status) -master-bin.000001 392 Write_rows 1 451 table_id: # -master-bin.000001 451 Write_rows 1 498 table_id: # flags: STMT_END_F -master-bin.000001 498 Query 1 563 COMMIT -master-bin.000001 563 Query 1 643 use `test`; TRUNCATE TABLE t1 -master-bin.000001 643 Query 1 719 use `test`; DROP TABLE t1 +master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1 +master-bin.000001 # Query # # use `test`; DROP TABLE t1 **** On Master **** CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB; INSERT INTO t1 VALUES (1,1), (2,2); @@ -63,29 +62,28 @@ a b 3 3 **** On Master **** DROP TABLE t1; -SHOW BINLOG EVENTS; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4 -master-bin.000001 106 Query 1 223 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB -master-bin.000001 223 Query 1 287 BEGIN -master-bin.000001 287 Table_map 1 330 table_id: # (test.t1) -master-bin.000001 330 Table_map 1 392 table_id: # (mysql.ndb_apply_status) -master-bin.000001 392 Write_rows 1 451 table_id: # -master-bin.000001 451 Write_rows 1 498 table_id: # flags: STMT_END_F -master-bin.000001 498 Query 1 563 COMMIT -master-bin.000001 563 Query 1 643 use `test`; TRUNCATE TABLE t1 -master-bin.000001 643 Query 1 719 use `test`; DROP TABLE t1 -master-bin.000001 719 Query 1 836 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB -master-bin.000001 836 Query 1 900 BEGIN -master-bin.000001 900 Table_map 1 943 table_id: # (test.t1) -master-bin.000001 943 Table_map 1 1005 table_id: # (mysql.ndb_apply_status) -master-bin.000001 1005 Write_rows 1 1064 table_id: # -master-bin.000001 1064 Write_rows 1 1111 table_id: # flags: STMT_END_F -master-bin.000001 1111 Query 1 1176 COMMIT -master-bin.000001 1176 Query 1 1240 BEGIN -master-bin.000001 1240 Table_map 1 1283 table_id: # (test.t1) -master-bin.000001 1283 Table_map 1 1345 table_id: # (mysql.ndb_apply_status) -master-bin.000001 1345 Write_rows 1 1404 table_id: # -master-bin.000001 1404 Delete_rows 1 1443 table_id: # flags: STMT_END_F -master-bin.000001 1443 Query 1 1508 COMMIT -master-bin.000001 1508 Query 1 1584 use `test`; DROP TABLE t1 +master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1 +master-bin.000001 # Query # # use `test`; DROP TABLE t1 +master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) +master-bin.000001 # Write_rows # # table_id: # +master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # use `test`; DROP TABLE t1 diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test index 5903cd223ad..c03738bc48b 100644 --- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test +++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test @@ -191,10 +191,11 @@ connection slave; source include/wait_for_slave_sql_to_stop.inc; # Replication should have stopped, since max retries were not enough. -# verify with show slave status ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 7 8 9 16 19 20 22 23 33 35 36 37 38 ---query_vertical SHOW SLAVE STATUS; +# verify with show slave status +# 1205 = ER_LOCK_WAIT_TIMEOUT +--let $slave_sql_errno= 1205 +--let $show_slave_sql_error= 1 +--source include/wait_for_slave_sql_error.inc # now set max retries high enough to succeed, and start slave again set GLOBAL slave_transaction_retries=10; diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test index 7b8497d8dab..e63b7c5e8ff 100644 --- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test +++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test @@ -16,9 +16,7 @@ START SLAVE; --connection slave CREATE TABLE t1 (a int key, b int) ENGINE=ndb; #CREATE TABLE t2 (a int key, b int) ENGINE=ndb; ---save_master_pos ---connection master ---sync_with_master +sync_slave_with_master master; # now we should have a table on the master as well SHOW TABLES; @@ -30,25 +28,19 @@ INSERT INTO t1 VALUES (2,3); # ensure data has propagated both ways --connection slave ---save_master_pos ---connection master ---sync_with_master +sync_slave_with_master master; --sync_slave_with_master # connect to slave and ensure data it there. --connection slave SELECT * FROM t1 ORDER BY a; #SELECT * FROM t2 ORDER BY a; -# BUG#34654 Last_IO_Errno is not reset - Mask columns 35 and 36 ---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # ---query_vertical show slave status; +source include/check_slave_is_running.inc; # connect to master and ensure data it there. --connection master SELECT * FROM t1 ORDER BY a; #SELECT * FROM t2 ORDER BY a; -# BUG#34654 Last_IO_Errno is not reset - Mask columns 35 and 36 ---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # ---query_vertical show slave status; +source include/check_slave_is_running.inc; # stop replication on "master" as not to replicate # shutdown circularly, eg drop table diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test index eb04dc2e260..8b0f869c1a3 100644 --- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test +++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test @@ -38,9 +38,7 @@ eval CHANGE MASTER TO MASTER_HOST="127.0.0.1",MASTER_PORT=$SLAVE_MYPORT,MASTER_U START SLAVE; connection slave; -save_master_pos; -connection master; -sync_with_master; +sync_slave_with_master master; # The statement is disabled since it cannot reliably show the same # info all the time. Use it for debug purposes. @@ -48,9 +46,7 @@ sync_with_master; #SHOW BINLOG EVENTS; # Check that there is no error in replication ---replace_result $SLAVE_MYPORT SLAVE_PORT ---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # -query_vertical SHOW SLAVE STATUS; +source include/check_slave_is_running.inc; # Check that we have the data on the master SELECT * FROM t1 ORDER BY a; @@ -75,9 +71,7 @@ sync_with_master; SELECT * FROM t1 ORDER BY a; # Check that there is no error in replication ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 # -query_vertical SHOW SLAVE STATUS; +source include/check_slave_is_running.inc; -- connection master DROP TABLE t1; diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test index 3133ad34f0c..99c9df40094 100644 --- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test +++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test @@ -39,12 +39,9 @@ SELECT * FROM t1 ORDER BY c3; # check that we have it on the slave --sync_slave_with_master ---connection slave SELECT * FROM t1 ORDER BY c3; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 7 8 9 16 22 23 33 35 36 -SHOW SLAVE STATUS; +source include/check_slave_is_running.inc; # stop slave and reset position to before the last changes STOP SLAVE; @@ -53,9 +50,7 @@ eval CHANGE MASTER TO master_log_file = '$the_file', master_log_pos = $the_pos ; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 7 8 9 16 22 23 33 35 36 -SHOW SLAVE STATUS; +source include/check_slave_no_error.inc; # start the slave again # -> same events should have been applied again @@ -67,7 +62,6 @@ START SLAVE; --connection master SELECT * FROM t1 ORDER BY c3; --sync_slave_with_master ---connection slave SELECT * FROM t1 ORDER BY c3; STOP SLAVE; @@ -106,9 +100,7 @@ COMMIT; --sync_slave_with_master --connection slave SELECT * FROM t1; ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 7 8 9 16 22 23 33 34 35 -SHOW SLAVE STATUS; +source include/check_slave_is_running.inc; connection master; DROP TABLE IF EXISTS t1; diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test index eb128cfa2ce..e9107fd90bd 100644 --- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test +++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test @@ -39,7 +39,7 @@ let $the_file= `SELECT @the_file` ; # now connect the slave to the _other_ "master" connection slave; ---replace_result $MASTER_MYPORT1 +--replace_result $MASTER_MYPORT1 $the_pos MASTER_LOG_POS $the_file MASTER_LOG_FILE eval CHANGE MASTER TO master_port=$MASTER_MYPORT1, master_log_file = '$the_file', diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test index 88572c3e9a2..b91ff198c51 100644 --- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test +++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test @@ -70,10 +70,7 @@ START SLAVE; # --connection master --sync_slave_with_master ---connection slave ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 7 8 9 16 22 23 33 35 36 -query_vertical SHOW SLAVE STATUS; +--source include/check_slave_is_running.inc SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3; SELECT hex(c2),hex(c3),c1 FROM t2 ORDER BY c1; @@ -85,7 +82,6 @@ SELECT hex(c2),hex(c3),c1 FROM t2 ORDER BY c1; --connection master DROP DATABASE ndbsynctest; --sync_slave_with_master ---connection slave STOP SLAVE; # diff --git a/mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test b/mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test index f8933b3744d..898bf310dc5 100644 --- a/mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test +++ b/mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test @@ -39,10 +39,7 @@ SELECT * FROM t1 ORDER BY a,b; --echo **** On Master **** connection master; DROP TABLE t1; -let SERVER_VERSION=`select version()`; ---replace_regex /\/\* xid=[0-9]+ \*\//\/* xid= *\// /table_id: [0-9]+/table_id: #/ ---replace_result $SERVER_VERSION SERVER_VERSION -SHOW BINLOG EVENTS; +source include/show_binlog_events.inc; --echo **** On Master **** connection master; @@ -64,8 +61,6 @@ SELECT * FROM t1 ORDER BY a,b; --echo **** On Master **** connection master; DROP TABLE t1; ---replace_regex /table_id: [0-9]+/table_id: #/ ---replace_result $SERVER_VERSION SERVER_VERSION -SHOW BINLOG EVENTS; +source include/show_binlog_events.inc; -- source include/master-slave-end.inc diff --git a/mysql-test/t/alter_table-big.test b/mysql-test/t/alter_table-big.test index 1dcc1f1c9bd..e007a3a55e0 100644 --- a/mysql-test/t/alter_table-big.test +++ b/mysql-test/t/alter_table-big.test @@ -31,7 +31,9 @@ create table t2 (i int); # statement execution, so we don't need many rows in 't1' to make # this test repeatable. alter table t1 disable keys; +--disable_warnings insert into t1 values (RAND()*1000, RAND()*1000, RAND()*1000); +--enable_warnings # Later we use binlog to check the order in which statements are # executed so let us reset it first. @@ -50,8 +52,7 @@ connection default; --reap set session debug="-d,sleep_alter_enable_indexes"; # Check that statements were executed/binlogged in correct order. ---replace_column 2 # 5 # -show binlog events in 'master-bin.000001' from 106; +source include/show_binlog_events.inc; # Clean up drop tables t1, t2; @@ -111,8 +112,7 @@ drop table t3; set session debug="-d,sleep_alter_before_main_binlog"; # Check that all statements were logged in correct order ---replace_column 2 # 5 # -show binlog events in 'master-bin.000001' from 106; +source include/show_binlog_events.inc; --echo End of 5.1 tests diff --git a/mysql-test/t/create-big.test b/mysql-test/t/create-big.test index 6cd6326cdb8..e1dfbbd4ac4 100644 --- a/mysql-test/t/create-big.test +++ b/mysql-test/t/create-big.test @@ -305,8 +305,7 @@ connection default; show create table t2; drop table t2; # Let us check that statements were executed/binlogged in correct order ---replace_column 2 # 5 # -show binlog events in 'master-bin.000001' from 106; +source include/show_binlog_events.inc; # Now let us check the gap between check for target table # existance and copying of .frm file. @@ -330,8 +329,7 @@ drop table t1; connection default; --reap drop table t2; ---replace_column 2 # 5 # -show binlog events in 'master-bin.000001' from 106; +source include/show_binlog_events.inc; # And now he gap between copying of .frm file and ha_create_table() call. create table t1 (i int); @@ -359,8 +357,7 @@ drop table t1; connection default; --reap drop table t2; ---replace_column 2 # 5 # -show binlog events in 'master-bin.000001' from 106; +source include/show_binlog_events.inc; # Finally we check the gap between ha_create_table() and binlogging create table t1 (i int); @@ -386,7 +383,6 @@ drop table t1; connection default; --reap drop table t2; ---replace_column 2 # 5 # -show binlog events in 'master-bin.000001' from 106; +source include/show_binlog_events.inc; set session debug="-d,sleep_create_like_before_binlogging"; diff --git a/mysql-test/t/ctype_cp932_binlog_stm.test b/mysql-test/t/ctype_cp932_binlog_stm.test index 89df33a6df5..f3038ccfa61 100644 --- a/mysql-test/t/ctype_cp932_binlog_stm.test +++ b/mysql-test/t/ctype_cp932_binlog_stm.test @@ -7,6 +7,7 @@ # # Bug#18293: Values in stored procedure written to binlog unescaped # +let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1); delimiter |; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1, @@ -22,7 +23,7 @@ CALL bug18293("Foo's a Bar", _cp932 0xED40ED41ED42, 47.93)| SELECT HEX(s1),HEX(s2),d FROM t4| DROP PROCEDURE bug18293| DROP TABLE t4| -SHOW BINLOG EVENTS FROM 370| +source include/show_binlog_events.inc| delimiter ;| --echo End of 5.0 tests diff --git a/mysql-test/t/flush_block_commit_notembedded.test b/mysql-test/t/flush_block_commit_notembedded.test index aea38250218..b774d7ec069 100644 --- a/mysql-test/t/flush_block_commit_notembedded.test +++ b/mysql-test/t/flush_block_commit_notembedded.test @@ -28,14 +28,14 @@ INSERT t1 VALUES (1); --echo # Switch to connection con2 connection con2; FLUSH TABLES WITH READ LOCK; -SHOW MASTER STATUS; +--source include/show_binlog_events.inc --echo # Switch to connection con1 connection con1; send COMMIT; --echo # Switch to connection con2 connection con2; sleep 1; -SHOW MASTER STATUS; +--source include/show_binlog_events.inc UNLOCK TABLES; --echo # Switch to connection con1 connection con1; diff --git a/mysql-test/t/multi_update.test b/mysql-test/t/multi_update.test index 3c33a3dde35..559408eb90e 100644 --- a/mysql-test/t/multi_update.test +++ b/mysql-test/t/multi_update.test @@ -585,7 +585,8 @@ reset master; UPDATE t2,t1 SET t2.a=t1.a+2; # check select * from t2 /* must be (3,1), (4,4) */; -show master status /* there must be the UPDATE query event */; +let wait_binlog_event= UPDATE; +source include/wait_for_binlog_event.inc; # B. testing multi_update::send_error() ineffective update # (as there is a policy described at mysql_update() still go to binlog) @@ -596,7 +597,8 @@ insert into t2 values (1,2),(3,4),(4,4); reset master; --error ER_DUP_ENTRY UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a; -show master status /* there must be the UPDATE query event */; +let wait_binlog_event= UPDATE; +source include/wait_for_binlog_event.inc; # cleanup drop table t1, t2; diff --git a/mysql-test/t/sp_trans_log.test b/mysql-test/t/sp_trans_log.test index 2f2b84a9bef..5eccbf81fef 100644 --- a/mysql-test/t/sp_trans_log.test +++ b/mysql-test/t/sp_trans_log.test @@ -34,8 +34,8 @@ end| reset master| --error ER_DUP_ENTRY insert into t2 values (bug23333(),1)| ---replace_column 2 # 5 # 6 # -show binlog events from 106 /* with fixes for #23333 will show there is the query */| +# with fixes for 23333 will show there is the query */| +--source include/show_binlog_events.inc select count(*),@a from t1 /* must be 1,1 */| delimiter ;| From fc11d74d138f7ade1adf4131140281cefbc78ee8 Mon Sep 17 00:00:00 2001 From: Luis Soares Date: Mon, 24 May 2010 17:43:27 +0100 Subject: [PATCH 080/461] BUG#53657: Slave crashed with error 22 when trying to lock mutex at mf_iocache.c, line 1722 The slave crashed while two threads: IO thread and user thread raced for the same mutex (the append_buffer_lock protecting the relay log's IO_CACHE). The IO thread was trying to flush the cache, and for that was grabbing the append_buffer_lock. However, the other thread was closing and reopening the relay log when the IO thread tried to lock. Closing and reopening the log includes destroying and reinitialising the IO_CACHE mutex. Therefore, the IO thread tried to lock a destroyed mutex. We fix this by backporting patch for BUG#50364 which fixed this bug in mysql server 5.5+. The patch deploys missing synchronization when flush_master_info is called and the relay log is flushed by the IO thread. In detail the patch backports revision (from mysql-trunk): - luis.soares@sun.com-20100203165617-b1yydr0ee24ycpjm This patch already includes the post-push fix also in BUG#50364: - luis.soares@sun.com-20100222002629-0cijwqk6baxhj7gr --- sql/repl_failsafe.cc | 2 +- sql/rpl_mi.cc | 27 ++++++++++++++++++++++----- sql/rpl_mi.h | 5 +++-- sql/rpl_rli.cc | 2 +- sql/slave.cc | 4 ++-- sql/sql_repl.cc | 2 +- 6 files changed, 30 insertions(+), 12 deletions(-) diff --git a/sql/repl_failsafe.cc b/sql/repl_failsafe.cc index c6a05e93bf4..c25d43ea5ba 100644 --- a/sql/repl_failsafe.cc +++ b/sql/repl_failsafe.cc @@ -976,7 +976,7 @@ bool load_master_data(THD* thd) host was specified; there could have been a problem when replication started, which led to relay log's IO_CACHE to not be inited. */ - if (flush_master_info(active_mi, 0)) + if (flush_master_info(active_mi, FALSE, FALSE)) sql_print_error("Failed to flush master info file"); } mysql_free_result(master_status_res); diff --git a/sql/rpl_mi.cc b/sql/rpl_mi.cc index 5e46837e948..63f1f21c957 100644 --- a/sql/rpl_mi.cc +++ b/sql/rpl_mi.cc @@ -312,7 +312,7 @@ file '%s')", fname); mi->inited = 1; // now change cache READ -> WRITE - must do this before flush_master_info reinit_io_cache(&mi->file, WRITE_CACHE, 0L, 0, 1); - if ((error=test(flush_master_info(mi, 1)))) + if ((error=test(flush_master_info(mi, TRUE, TRUE)))) sql_print_error("Failed to flush master info file"); pthread_mutex_unlock(&mi->data_lock); DBUG_RETURN(error); @@ -338,10 +338,13 @@ err: 1 - flush master info failed 0 - all ok */ -int flush_master_info(Master_info* mi, bool flush_relay_log_cache) +int flush_master_info(Master_info* mi, + bool flush_relay_log_cache, + bool need_lock_relay_log) { IO_CACHE* file = &mi->file; char lbuf[22]; + int err= 0; DBUG_ENTER("flush_master_info"); DBUG_PRINT("enter",("master_pos: %ld", (long) mi->master_log_pos)); @@ -358,9 +361,23 @@ int flush_master_info(Master_info* mi, bool flush_relay_log_cache) When we come to this place in code, relay log may or not be initialized; the caller is responsible for setting 'flush_relay_log_cache' accordingly. */ - if (flush_relay_log_cache && - flush_io_cache(mi->rli.relay_log.get_log_file())) - DBUG_RETURN(2); + if (flush_relay_log_cache) + { + pthread_mutex_t *log_lock= mi->rli.relay_log.get_log_lock(); + IO_CACHE *log_file= mi->rli.relay_log.get_log_file(); + + if (need_lock_relay_log) + pthread_mutex_lock(log_lock); + + safe_mutex_assert_owner(log_lock); + err= flush_io_cache(log_file); + + if (need_lock_relay_log) + pthread_mutex_unlock(log_lock); + + if (err) + DBUG_RETURN(2); + } /* We flushed the relay log BEFORE the master.info file, because if we crash diff --git a/sql/rpl_mi.h b/sql/rpl_mi.h index 93fb0a98198..023879f84fa 100644 --- a/sql/rpl_mi.h +++ b/sql/rpl_mi.h @@ -108,7 +108,8 @@ int init_master_info(Master_info* mi, const char* master_info_fname, bool abort_if_no_master_info_file, int thread_mask); void end_master_info(Master_info* mi); -int flush_master_info(Master_info* mi, bool flush_relay_log_cache); - +int flush_master_info(Master_info* mi, + bool flush_relay_log_cache, + bool need_lock_relay_log); #endif /* HAVE_REPLICATION */ #endif /* RPL_MI_H */ diff --git a/sql/rpl_rli.cc b/sql/rpl_rli.cc index 1263b7c52d9..316e26f7e40 100644 --- a/sql/rpl_rli.cc +++ b/sql/rpl_rli.cc @@ -120,7 +120,7 @@ int init_relay_log_info(Relay_log_info* rli, /* The relay log will now be opened, as a SEQ_READ_APPEND IO_CACHE. Note that the I/O thread flushes it to disk after writing every - event, in flush_master_info(mi, 1). + event, in flush_master_info(mi, 1, ?). */ /* diff --git a/sql/slave.cc b/sql/slave.cc index 2e4642d179e..af53bc65c0e 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -1480,7 +1480,7 @@ static void write_ignored_events_info_to_relay_log(THD *thd, Master_info *mi) " to the relay log, SHOW SLAVE STATUS may be" " inaccurate"); rli->relay_log.harvest_bytes_written(&rli->log_space_total); - if (flush_master_info(mi, 1)) + if (flush_master_info(mi, TRUE, TRUE)) sql_print_error("Failed to flush master info file"); delete ev; } @@ -2731,7 +2731,7 @@ Stopping slave I/O thread due to out-of-memory error from master"); "could not queue event from master"); goto err; } - if (flush_master_info(mi, 1)) + if (flush_master_info(mi, TRUE, TRUE)) { sql_print_error("Failed to flush master info file"); goto err; diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index c220f609c09..75a738a0073 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -1282,7 +1282,7 @@ bool change_master(THD* thd, Master_info* mi) Relay log's IO_CACHE may not be inited, if rli->inited==0 (server was never a slave before). */ - if (flush_master_info(mi, 0)) + if (flush_master_info(mi, FALSE, FALSE)) { my_error(ER_RELAY_LOG_INIT, MYF(0), "Failed to flush master info file"); unlock_slave_threads(mi); From 8f8e1d6fb85d4be1e8e44beb22b26a72f76ac84e Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 25 May 2010 11:39:45 +0800 Subject: [PATCH 081/461] Postfix BUG#49741 --- mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test | 14 +++++++------- mysql-test/suite/rpl/r/rpl_extraCol_innodb.result | 14 +++++++------- mysql-test/suite/rpl/r/rpl_extraCol_myisam.result | 14 +++++++------- mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result | 14 +++++++------- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test index 0317aa79891..3b8e7663ec7 100644 --- a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test +++ b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test @@ -145,7 +145,7 @@ set @b1 = concat(@b1,@b1); INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING'); --echo ******************************************** ---echo *** Expect slave to fail with Error 1522 *** +--echo *** Expect slave to fail with Error 1535 *** --echo ******************************************** connection slave; --let $slave_sql_errno= 1535 @@ -188,7 +188,7 @@ INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'), (30000.22,4,'QA TESTING'); --echo ******************************************** ---echo *** Expect slave to fail with Error 1522 *** +--echo *** Expect slave to fail with Error 1535 *** --echo ******************************************** connection slave; --let $slave_sql_errno= 1535 @@ -231,7 +231,7 @@ INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098), (2,'JOE',300.01,0,'b2b2',1.0000009); --echo ******************************************** ---echo *** Expect slave to fail with Error 1522 *** +--echo *** Expect slave to fail with Error 1535 *** --echo ******************************************** connection slave; --let $slave_sql_errno= 1535 @@ -275,7 +275,7 @@ INSERT INTO t6 () VALUES(1,'Kyle',200.23,1), (2,'JOE',300.01,0); --echo ******************************************** ---echo *** Expect slave to fail with Error 1522 *** +--echo *** Expect slave to fail with Error 1535 *** --echo ******************************************** connection slave; --let $slave_sql_errno= 1535 @@ -479,7 +479,7 @@ set @b1 = concat(@b1,@b1); INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); --echo ******************************************** ---echo *** Expect slave to fail with Error 1522 *** +--echo *** Expect slave to fail with Error 1535 *** --echo ******************************************** connection slave; --let $slave_sql_errno= 1535 @@ -521,7 +521,7 @@ set @b1 = concat(@b1,@b1); INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); --echo ******************************************** ---echo *** Expect slave to fail with Error 1522 *** +--echo *** Expect slave to fail with Error 1535 *** --echo ******************************************** connection slave; --let $slave_sql_errno= 1535 @@ -900,7 +900,7 @@ connection master; INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX'); --echo ******************************************** ---echo *** Expect slave to fail with Error 1522 *** +--echo *** Expect slave to fail with Error 1535 *** --echo ******************************************** connection slave; --let $slave_sql_errno= 1535 diff --git a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result index 025da75581c..48fd0366c26 100644 --- a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result +++ b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result @@ -81,7 +81,7 @@ set @b1 = 'b1'; set @b1 = concat(@b1,@b1); INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 @@ -106,7 +106,7 @@ START SLAVE; INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'), (30000.22,4,'QA TESTING'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 @@ -131,7 +131,7 @@ START SLAVE; INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098), (2,'JOE',300.01,0,'b2b2',1.0000009); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 @@ -155,7 +155,7 @@ START SLAVE; INSERT INTO t6 () VALUES(1,'Kyle',200.23,1), (2,'JOE',300.01,0); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** Last_SQL_Error = Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3; @@ -253,7 +253,7 @@ set @b1 = 'b1b1b1b1'; set @b1 = concat(@b1,@b1); INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 @@ -277,7 +277,7 @@ set @b1 = 'b1b1b1b1'; set @b1 = concat(@b1,@b1); INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 @@ -593,7 +593,7 @@ START SLAVE; *** Master Data Insert *** INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 diff --git a/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result index 8dc726db84c..80b18ee4bd7 100644 --- a/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result +++ b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result @@ -81,7 +81,7 @@ set @b1 = 'b1'; set @b1 = concat(@b1,@b1); INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 @@ -106,7 +106,7 @@ START SLAVE; INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'), (30000.22,4,'QA TESTING'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 @@ -131,7 +131,7 @@ START SLAVE; INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098), (2,'JOE',300.01,0,'b2b2',1.0000009); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 @@ -155,7 +155,7 @@ START SLAVE; INSERT INTO t6 () VALUES(1,'Kyle',200.23,1), (2,'JOE',300.01,0); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** Last_SQL_Error = Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3; @@ -253,7 +253,7 @@ set @b1 = 'b1b1b1b1'; set @b1 = concat(@b1,@b1); INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 @@ -277,7 +277,7 @@ set @b1 = 'b1b1b1b1'; set @b1 = concat(@b1,@b1); INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 @@ -593,7 +593,7 @@ START SLAVE; *** Master Data Insert *** INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result index 642fc078918..1a79affabe6 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result @@ -81,7 +81,7 @@ set @b1 = 'b1'; set @b1 = concat(@b1,@b1); INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3 @@ -106,7 +106,7 @@ START SLAVE; INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'), (30000.22,4,'QA TESTING'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3 @@ -131,7 +131,7 @@ START SLAVE; INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098), (2,'JOE',300.01,0,'b2b2',1.0000009); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246 @@ -155,7 +155,7 @@ START SLAVE; INSERT INTO t6 () VALUES(1,'Kyle',200.23,1), (2,'JOE',300.01,0); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** Last_SQL_Error = Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3; @@ -229,7 +229,7 @@ set @b1 = 'b1b1b1b1'; set @b1 = concat(@b1,@b1); INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5 @@ -253,7 +253,7 @@ set @b1 = 'b1b1b1b1'; set @b1 = concat(@b1,@b1); INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252 @@ -569,7 +569,7 @@ START SLAVE; *** Master Data Insert *** INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX'); ******************************************** -*** Expect slave to fail with Error 1522 *** +*** Expect slave to fail with Error 1535 *** ******************************************** --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2 From 10f9434f1216e744d98cd071f92a27fb33cb361d Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Tue, 25 May 2010 11:01:03 +0300 Subject: [PATCH 082/461] Fix comments on row_merge_write() This is a port of vasil.dimov@oracle.com-20100521175337-c1b1lqxgizqegb0w and vasil.dimov@oracle.com-20100521180951-mef23h24k023xuwq from mysql-trunk-innodb --- storage/innodb_plugin/row/row0merge.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/storage/innodb_plugin/row/row0merge.c b/storage/innodb_plugin/row/row0merge.c index f3a695071d3..1f6851bf63c 100644 --- a/storage/innodb_plugin/row/row0merge.c +++ b/storage/innodb_plugin/row/row0merge.c @@ -717,14 +717,16 @@ row_merge_read( } /********************************************************************//** -Read a merge block from the file system. +Write a merge block to the file system. @return TRUE if request was successful, FALSE if fail */ static ibool row_merge_write( /*============*/ int fd, /*!< in: file descriptor */ - ulint offset, /*!< in: offset where to write */ + ulint offset, /*!< in: offset where to read + in number of row_merge_block_t + elements */ const void* buf) /*!< in: data */ { ib_uint64_t ofs = ((ib_uint64_t) offset) From 4ecd80297e769f96b0150e4830740119f696b0f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 25 May 2010 15:37:48 +0300 Subject: [PATCH 083/461] Suppress bogus Valgrind warnings about buf_buddy_relocate() accessing uninitialized memory in Valgrind-instrumented builds. --- mysql-test/valgrind.supp | 5 +++++ storage/innodb_plugin/buf/buf0buddy.c | 14 +++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp index 6b10e4cb544..d082b750de9 100644 --- a/mysql-test/valgrind.supp +++ b/mysql-test/valgrind.supp @@ -722,3 +722,8 @@ fun:pthread_create* } +{ + buf_buddy_relocate peeking (space,page) in potentially free blocks + Memcheck:Addr1 + fun:buf_buddy_relocate +} diff --git a/storage/innodb_plugin/buf/buf0buddy.c b/storage/innodb_plugin/buf/buf0buddy.c index 07753cb8a60..ee5a569c3ff 100644 --- a/storage/innodb_plugin/buf/buf0buddy.c +++ b/storage/innodb_plugin/buf/buf0buddy.c @@ -442,11 +442,15 @@ buf_buddy_relocate( pool), so there is nothing wrong about this. The mach_read_from_4() calls here will only trigger bogus Valgrind memcheck warnings in UNIV_DEBUG_VALGRIND builds. */ - bpage = buf_page_hash_get( - mach_read_from_4((const byte*) src - + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID), - mach_read_from_4((const byte*) src - + FIL_PAGE_OFFSET)); + ulint space = mach_read_from_4( + (const byte*) src + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); + ulint page_no = mach_read_from_4( + (const byte*) src + FIL_PAGE_OFFSET); + /* Suppress Valgrind warnings about conditional jump + on uninitialized value. */ + UNIV_MEM_VALID(&space, sizeof space); + UNIV_MEM_VALID(&page_no, sizeof page_no); + bpage = buf_page_hash_get(space, page_no); if (!bpage || bpage->zip.data != src) { /* The block has probably been freshly From 268e38753b55dee8822324cf105b7f16ed79bffc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 25 May 2010 15:53:52 +0300 Subject: [PATCH 084/461] row_search_for_mysql(): Add assertions to track down Bug #53627. --- storage/innodb_plugin/row/row0sel.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/storage/innodb_plugin/row/row0sel.c b/storage/innodb_plugin/row/row0sel.c index 0735215a9a9..4d19ed93a49 100644 --- a/storage/innodb_plugin/row/row0sel.c +++ b/storage/innodb_plugin/row/row0sel.c @@ -3611,6 +3611,13 @@ shortcut_fails_too_big_rec: trx->has_search_latch = FALSE; } + ut_ad(prebuilt->sql_stat_start || trx->conc_state == TRX_ACTIVE); + ut_ad(trx->conc_state == TRX_NOT_STARTED + || trx->conc_state == TRX_ACTIVE); + ut_ad(prebuilt->sql_stat_start + || prebuilt->select_lock_type != LOCK_NONE + || trx->read_view); + trx_start_if_not_started(trx); if (trx->isolation_level <= TRX_ISO_READ_COMMITTED From c42772c7f2d7ec7fb838ec3076afc6620ab24322 Mon Sep 17 00:00:00 2001 From: Jonathan Perkin Date: Tue, 25 May 2010 14:27:52 +0100 Subject: [PATCH 085/461] bug#49968: Properly define HAVE_ERRNO_AS_DEFINE for the appropriate OpenBSD releases. Apply patch from Brad Smith, thanks! --- include/my_global.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/my_global.h b/include/my_global.h index e4e53aca20a..e284acce186 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -55,6 +55,10 @@ #define USE_PRAGMA_INTERFACE #endif +#if defined(__OpenBSD__) && (OpenBSD >= 200411) +#define HAVE_ERRNO_AS_DEFINE +#endif + #if defined(i386) && !defined(__i386__) #define __i386__ #endif From 342819f1680c6821a2b495e2fa888e5291767bb7 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Tue, 25 May 2010 10:36:48 -0300 Subject: [PATCH 086/461] Bug#53908: compile failure with embedded enabled This fixes a recently introduced regression, where a variable is not defined for the embedded server. Although the embedded server is not supported in 5.0, make it at least compile. --- sql/sql_parse.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index d0a4fff442f..b9a8537b61a 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -493,6 +493,7 @@ int check_user(THD *thd, enum enum_server_command command, } send_ok(thd); thd->password= test(passwd_len); // remember for error messages +#ifndef EMBEDDED_LIBRARY /* Allow the network layer to skip big packets. Although a malicious authenticated session might use this to trick the server to read @@ -500,6 +501,7 @@ int check_user(THD *thd, enum enum_server_command command, that needs to be preserved as to not break backwards compatibility. */ thd->net.skip_big_packet= TRUE; +#endif /* Ready to handle queries */ DBUG_RETURN(0); } From 0fdd97af48190fab72ea752a7d8120d891bb49af Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Tue, 25 May 2010 15:41:00 +0200 Subject: [PATCH 087/461] Bug#49161: Out of memory; restart server and try again (needed 2 bytes) Problem was reporting wrong error Fixed by adding a new error which better explain the problem. mysql-test/r/partition_error.result: Bug#49161: Out of memory; restart server and try again (needed 2 bytes) Updated test result mysql-test/t/partition_error.test: Bug#49161: Out of memory; restart server and try again (needed 2 bytes) Added test case sql/ha_partition.cc: Bug#49161: Out of memory; restart server and try again (needed 2 bytes) Better error message. (used ER_UNKNOWN_ERROR to avoid merge problems in mysql-trunk+) --- mysql-test/r/partition_error.result | 16 ++++++++++++++++ mysql-test/t/partition_error.test | 22 ++++++++++++++++++++-- sql/ha_partition.cc | 2 +- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result index e1e284556dd..16428fba4d9 100644 --- a/mysql-test/r/partition_error.result +++ b/mysql-test/r/partition_error.result @@ -1,5 +1,21 @@ drop table if exists t1; # +# Bug#49161: Out of memory; restart server and try again (needed 2 bytes) +# +CREATE TABLE t1 (a INT) PARTITION BY HASH (a); +FLUSH TABLES; +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check Error Failed to read from the .par file +test.t1 check Error Incorrect information in file: './test/t1.frm' +test.t1 check error Corrupt +SELECT * FROM t1; +ERROR HY000: Failed to read from the .par file +# Note that it is currently impossible to drop a partitioned table +# without the .par file +DROP TABLE t1; +ERROR 42S02: Unknown table 't1' +# # Bug#49477: Assertion `0' failed in ha_partition.cc:5530 # with temporary table and partitions # diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test index dbc67032a42..7f733df701b 100644 --- a/mysql-test/t/partition_error.test +++ b/mysql-test/t/partition_error.test @@ -7,7 +7,26 @@ --disable_warnings drop table if exists t1; --enable_warnings - + +let $MYSQLD_DATADIR= `SELECT @@datadir`; + +--echo # +--echo # Bug#49161: Out of memory; restart server and try again (needed 2 bytes) +--echo # +CREATE TABLE t1 (a INT) PARTITION BY HASH (a); +FLUSH TABLES; +--remove_file $MYSQLD_DATADIR/test/t1.par +CHECK TABLE t1; +--error ER_UNKNOWN_ERROR +SELECT * FROM t1; +--echo # Note that it is currently impossible to drop a partitioned table +--echo # without the .par file +--error ER_BAD_TABLE_ERROR +DROP TABLE t1; +--remove_file $MYSQLD_DATADIR/test/t1.frm +--remove_file $MYSQLD_DATADIR/test/t1#P#p0.MYI +--remove_file $MYSQLD_DATADIR/test/t1#P#p0.MYD + --echo # --echo # Bug#49477: Assertion `0' failed in ha_partition.cc:5530 --echo # with temporary table and partitions @@ -167,7 +186,6 @@ partitions 3 partition x2 tablespace ts2, partition x3 tablespace ts3); -let $MYSQLD_DATADIR= `select @@datadir`; select load_file('$MYSQLD_DATADIR/test/t1.par'); # # Partition by hash, invalid field in function diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 4fc3b2c9908..60722f0100e 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -359,7 +359,7 @@ bool ha_partition::initialize_partition(MEM_ROOT *mem_root) } else if (get_from_handler_file(table_share->normalized_path.str, mem_root)) { - mem_alloc_error(2); + my_message(ER_UNKNOWN_ERROR, "Failed to read from the .par file", MYF(0)); DBUG_RETURN(1); } /* From eef9ce8c1ab519a150cdc67552e3eb36cfeca7ff Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Tue, 25 May 2010 17:56:23 +0400 Subject: [PATCH 088/461] Fix for bug #53907: Table dump command can be abused to dump arbitrary tables. Problem: one with SELECT privilege on some table may dump other table performing COM_TABLE_DUMP command due to missed check of the table name. Fix: check the table name. sql/sql_parse.cc: Fix for bug #53907: Table dump command can be abused to dump arbitrary tables. - check given table name performing COM_TABLE_DUMP command. tests/mysql_client_test.c: Fix for bug #53907: Table dump command can be abused to dump arbitrary tables. - test case. --- sql/sql_parse.cc | 12 +++++++++--- tests/mysql_client_test.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index d0a4fff442f..70385b8b501 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1432,6 +1432,7 @@ void cleanup_items(Item *item) db database name or an empty string. If empty, the current database of the connection is used tbl_name name of the table to dump + tbl_len its length NOTES This function is written to handle one specific command only. @@ -1442,7 +1443,7 @@ void cleanup_items(Item *item) */ static -int mysql_table_dump(THD* thd, char* db, char* tbl_name) +int mysql_table_dump(THD* thd, char* db, char* tbl_name, uint tbl_len) { TABLE* table; TABLE_LIST* table_list; @@ -1461,6 +1462,11 @@ int mysql_table_dump(THD* thd, char* db, char* tbl_name) my_error(ER_WRONG_DB_NAME ,MYF(0), db ? db : "NULL"); goto err; } + if (!tbl_name || check_table_name(tbl_name, tbl_len)) + { + my_error(ER_WRONG_TABLE_NAME , MYF(0), tbl_name ? tbl_name : "NULL"); + goto err; + } if (lower_case_table_names) my_casedn_str(files_charset_info, tbl_name); remove_escape(table_list->table_name); @@ -1471,7 +1477,7 @@ int mysql_table_dump(THD* thd, char* db, char* tbl_name) if (check_one_table_access(thd, SELECT_ACL, table_list)) goto err; thd->free_list = 0; - thd->set_query(tbl_name, (uint) strlen(tbl_name)); + thd->set_query(tbl_name, tbl_len); if ((error = mysqld_dump_create_info(thd, table_list, -1))) { my_error(ER_GET_ERRNO, MYF(0), my_errno); @@ -1838,7 +1844,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, } tbl_name= strmake(db, packet + 1, db_len)+1; strmake(tbl_name, packet + db_len + 2, tbl_len); - mysql_table_dump(thd, db, tbl_name); + mysql_table_dump(thd, db, tbl_name, tbl_len); break; } case COM_CHANGE_USER: diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 5b26b96707b..b50c1efe92b 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -16720,6 +16720,43 @@ static void test_bug53371() } +static void test_bug53907() +{ + int rc; + char buf[] = "\x4test\x14../client_test_db/t1"; + + myheader("test_bug53907"); + + rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1"); + myquery(rc); + rc= mysql_query(mysql, "DROP DATABASE IF EXISTS bug53907"); + myquery(rc); + rc= mysql_query(mysql, "DROP USER 'testbug'@localhost"); + + rc= mysql_query(mysql, "CREATE TABLE t1 (a INT)"); + myquery(rc); + rc= mysql_query(mysql, "CREATE DATABASE bug53907"); + myquery(rc); + rc= mysql_query(mysql, "GRANT SELECT ON bug53907.* to 'testbug'@localhost"); + myquery(rc); + + rc= mysql_change_user(mysql, "testbug", NULL, "bug53907"); + myquery(rc); + + rc= simple_command(mysql, COM_TABLE_DUMP, buf, sizeof(buf), 0); + DIE_UNLESS(mysql_errno(mysql) == 1103); /* ER_WRONG_TABLE_NAME */ + + rc= mysql_change_user(mysql, opt_user, opt_password, current_db); + myquery(rc); + rc= mysql_query(mysql, "DROP TABLE t1"); + myquery(rc); + rc= mysql_query(mysql, "DROP DATABASE bug53907"); + myquery(rc); + rc= mysql_query(mysql, "DROP USER 'testbug'@localhost"); + myquery(rc); +} + + /* Read and parse arguments and MySQL options from my.cnf */ @@ -17024,6 +17061,7 @@ static struct my_tests_st my_tests[]= { { "test_bug20023", test_bug20023 }, { "test_bug45010", test_bug45010 }, { "test_bug53371", test_bug53371 }, + { "test_bug53907", test_bug53907 }, { 0, 0 } }; From 1d0acc7754a44613d2ad56dc2231f20a1bedf718 Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Tue, 25 May 2010 18:43:45 +0400 Subject: [PATCH 089/461] Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index)) UPDATE on an InnoDB table modifying the same index that is used to satisfy the WHERE condition could trigger a debug assertion under some circumstances. Since for engines with the HA_PRIMARY_KEY_IN_READ_INDEX flag set results of an index scan on a secondary index are appended by the primary key value, if a query involves only columns from the primary key and a secondary index, the latter is considered to be covering. That tricks mysql_update() to mark for reading only columns from the secondary index when it does an index scan to retrieve rows to update in case a part of that key is also being updated. However, there may be other columns in WHERE that are part of the primary key, but not the secondary one. What we actually want to do in this case is to add index columns to the existing WHERE columns bitmap rather than replace it. mysql-test/r/innodb_mysql.result: Test case for bug #53830. mysql-test/t/innodb_mysql.test: Test case for bug #53830. sql/sql_update.cc: Add index columns to the read_set bitmap, don't replace it. sql/table.cc: Added a new add_read_columns_used_by_index() function to st_table. sql/table.h: Added a new add_read_columns_used_by_index() function to st_table. --- mysql-test/r/innodb_mysql.result | 9 +++++++++ mysql-test/t/innodb_mysql.test | 14 ++++++++++++++ sql/sql_update.cc | 2 +- sql/table.cc | 21 +++++++++++++++++++++ sql/table.h | 1 + 5 files changed, 46 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 8257b291cf1..6590bac9c47 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -2408,4 +2408,13 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY NULL NULL NULL 1 Impossible ON condition 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where DROP TABLE t1,t2; +# +# Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index)) +# +CREATE TABLE t1 (a INT, b INT, c INT, d INT, +PRIMARY KEY(a,b,c), KEY(b,d)) +ENGINE=InnoDB; +INSERT INTO t1 VALUES (0, 77, 1, 3); +UPDATE t1 SET d = 0 WHERE b = 77 AND c = 25; +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index f179f3960a9..52a30d2fbb4 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -649,4 +649,18 @@ EXPLAIN SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0 DROP TABLE t1,t2; + +--echo # +--echo # Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index)) +--echo # + +CREATE TABLE t1 (a INT, b INT, c INT, d INT, + PRIMARY KEY(a,b,c), KEY(b,d)) + ENGINE=InnoDB; +INSERT INTO t1 VALUES (0, 77, 1, 3); + +UPDATE t1 SET d = 0 WHERE b = 77 AND c = 25; + +DROP TABLE t1; + --echo End of 5.1 tests diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 69f3a29e923..7df0898e841 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -397,7 +397,7 @@ int mysql_update(THD *thd, matching rows before updating the table! */ if (used_index < MAX_KEY && old_covering_keys.is_set(used_index)) - table->mark_columns_used_by_index(used_index); + table->add_read_columns_used_by_index(used_index); else { table->use_all_columns(); diff --git a/sql/table.cc b/sql/table.cc index 8b97dd36170..0fef7fa639a 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -4377,6 +4377,27 @@ void st_table::mark_columns_used_by_index(uint index) } +/* + Add fields used by a specified index to the table's read_set. + + NOTE: + The original state can be restored with + restore_column_maps_after_mark_index(). +*/ + +void st_table::add_read_columns_used_by_index(uint index) +{ + MY_BITMAP *bitmap= &tmp_set; + DBUG_ENTER("st_table::add_read_columns_used_by_index"); + + set_keyread(TRUE); + bitmap_copy(bitmap, read_set); + mark_columns_used_by_index_no_reset(index, bitmap); + column_bitmaps_set(bitmap, write_set); + DBUG_VOID_RETURN; +} + + /* Restore to use normal column maps after key read diff --git a/sql/table.h b/sql/table.h index bddb0731625..4125c252427 100644 --- a/sql/table.h +++ b/sql/table.h @@ -865,6 +865,7 @@ struct st_table { void prepare_for_position(void); void mark_columns_used_by_index_no_reset(uint index, MY_BITMAP *map); void mark_columns_used_by_index(uint index); + void add_read_columns_used_by_index(uint index); void restore_column_maps_after_mark_index(); void mark_auto_increment_column(void); void mark_columns_needed_for_update(void); From 602bb5c0fe0fa9f2df6425efe566d3e11452da69 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Tue, 25 May 2010 22:31:27 -0700 Subject: [PATCH 090/461] Fix Bug #53592 in plugin code, "crash replacing duplicates into table after fast alter table added unique key". Look up MySQL index number should go through index translation table. rb://347, approved by Marko --- .../innodb_plugin/r/innodb_bug53592.result | 26 +++++++ .../innodb_plugin/t/innodb_bug53592.test | 59 ++++++++++++++++ storage/innodb_plugin/handler/ha_innodb.cc | 67 ++++++++++++++++++- storage/innodb_plugin/include/row0mysql.h | 9 --- storage/innodb_plugin/row/row0mysql.c | 31 --------- storage/innodb_plugin/setup.sh | 2 +- 6 files changed, 150 insertions(+), 44 deletions(-) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug53592.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug53592.test diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug53592.result b/mysql-test/suite/innodb_plugin/r/innodb_bug53592.result new file mode 100644 index 00000000000..18906568613 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug53592.result @@ -0,0 +1,26 @@ +set old_alter_table=0; +create table bug53592(a int) engine=innodb row_format=compact; +alter table bug53592 add column b text charset utf8; +alter table bug53592 add column c blob not null; +create index bug53592_b on bug53592(b(81)); +create unique index bug53592_c on bug53592(c(1)); +replace into bug53592 values (),(); +Warnings: +Warning 1364 Field 'c' doesn't have a default value +check table bug53592; +Table Op Msg_type Msg_text +test.bug53592 check status OK +drop table bug53592; +set old_alter_table=1; +create table bug53592(a int) engine=innodb row_format=compact; +alter table bug53592 add column b text charset utf8; +alter table bug53592 add column c blob not null; +create index bug53592_b on bug53592(b(81)); +create unique index bug53592_c on bug53592(c(1)); +replace into bug53592 values (),(); +Warnings: +Warning 1364 Field 'c' doesn't have a default value +check table bug53592; +Table Op Msg_type Msg_text +test.bug53592 check status OK +drop table bug53592; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53592.test b/mysql-test/suite/innodb_plugin/t/innodb_bug53592.test new file mode 100644 index 00000000000..ca2bd41b137 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53592.test @@ -0,0 +1,59 @@ +# Testcase for Bug #53592 - "crash replacing duplicates into +# table after fast alter table added unique key". The fix is to make +# sure index number lookup should go through "index translation table". + +--source include/have_innodb.inc + +# Use FIC for index creation +set old_alter_table=0; + +create table bug53592(a int) engine=innodb row_format=compact; + +alter table bug53592 add column b text charset utf8; + +alter table bug53592 add column c blob not null; + +# Create a non-unique nonclustered index +create index bug53592_b on bug53592(b(81)); + +# Create a unique index, this unique index should have smaller +# index number than bug53592_b, since unique index ranks higher +# than regular index does +create unique index bug53592_c on bug53592(c(1)); + +# This will trigger a dup key error and will require fetching +# the index number through a index structure for the error reporting. +# To get the correct index number, the code should go through index +# translation table. Otherwise, it will get the wrong index +# number and later trigger a server crash. +replace into bug53592 values (),(); + +check table bug53592; + +drop table bug53592; + +# Running the same set of test when "old_alter_table" is turned on +set old_alter_table=1; + +create table bug53592(a int) engine=innodb row_format=compact; + +alter table bug53592 add column b text charset utf8; + +alter table bug53592 add column c blob not null; + +# Create a non-unique nonclustered index +create index bug53592_b on bug53592(b(81)); + +# Create a unique index +create unique index bug53592_c on bug53592(c(1)); + +# This will trigger a dup key error and will require fetching +# the index number through a index structure for the error reporting. +# To get the correct index number, the code should go through index +# translation table. Otherwise, it will get the wrong index +# number and later trigger a server crash. +replace into bug53592 values (),(); + +check table bug53592; + +drop table bug53592; diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index bd0618b7424..f753e2d1cbd 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -6673,7 +6673,7 @@ ha_innobase::create( (int) form->s->primary_key : -1); - /* Our function row_get_mysql_key_number_for_index assumes + /* Our function innobase_get_mysql_key_number_for_index assumes the primary key is always number 0, if it exists */ ut_a(primary_key_no == -1 || primary_key_no == 0); @@ -7389,6 +7389,67 @@ ha_innobase::read_time( return(ranges + (double) rows / (double) total_rows * time_for_scan); } +/*********************************************************************//** +Calculates the key number used inside MySQL for an Innobase index. We will +first check the "index translation table" for a match of the index to get +the index number. If there does not exist an "index translation table", +or not able to find the index in the translation table, then we will fall back +to the traditional way of looping through dict_index_t list to find a +match. In this case, we have to take into account if we generated a +default clustered index for the table +@return the key number used inside MySQL */ +static +unsigned int +innobase_get_mysql_key_number_for_index( +/*====================================*/ + INNOBASE_SHARE* share, /*!< in: share structure for index + translation table. */ + const TABLE* table, /*!< in: table in MySQL data + dictionary */ + dict_table_t* ib_table,/*!< in: table in Innodb data + dictionary */ + const dict_index_t* index) /*!< in: index */ +{ + const dict_index_t* ind; + unsigned int i; + + ut_ad(index); + ut_ad(ib_table); + ut_ad(table); + ut_ad(share); + + /* If index translation table exists, we will first check + the index through index translation table for a match. */ + if (share->idx_trans_tbl.index_mapping) { + for (i = 0; i < share->idx_trans_tbl.index_count; i++) { + if (share->idx_trans_tbl.index_mapping[i] == index) { + return(i); + } + } + + /* Print an error message if we cannot find the index + ** in the "index translation table". */ + sql_print_error("Cannot find index %s in InnoDB index " + "translation table.", index->name); + } + + /* If we do not have an "index translation table", or not able + to find the index in the translation table, we'll directly find + matching index in the dict_index_t list */ + for (i = 0; i < table->s->keys; i++) { + ind = dict_table_get_index_on_name( + ib_table, table->key_info[i].name); + + if (index == ind) { + return(i); + } + } + + sql_print_error("Cannot find matching index number for index %s " + "in InnoDB index list.", index->name); + + return(0); +} /*********************************************************************//** Returns statistics information of the table to the MySQL interpreter, in various fields of the handle object. */ @@ -7658,8 +7719,8 @@ ha_innobase::info( err_index = trx_get_error_info(prebuilt->trx); if (err_index) { - errkey = (unsigned int) - row_get_mysql_key_number_for_index(err_index); + errkey = innobase_get_mysql_key_number_for_index( + share, table, ib_table, err_index); } else { errkey = (unsigned int) prebuilt->trx->error_key_num; } diff --git a/storage/innodb_plugin/include/row0mysql.h b/storage/innodb_plugin/include/row0mysql.h index bf9cda1ba80..e90742abe7c 100644 --- a/storage/innodb_plugin/include/row0mysql.h +++ b/storage/innodb_plugin/include/row0mysql.h @@ -253,15 +253,6 @@ row_table_got_default_clust_index( /*==============================*/ const dict_table_t* table); /*!< in: table */ /*********************************************************************//** -Calculates the key number used inside MySQL for an Innobase index. We have -to take into account if we generated a default clustered index for the table -@return the key number used inside MySQL */ -UNIV_INTERN -ulint -row_get_mysql_key_number_for_index( -/*===============================*/ - const dict_index_t* index); /*!< in: index */ -/*********************************************************************//** Does an update or delete of a row for MySQL. @return error code or DB_SUCCESS */ UNIV_INTERN diff --git a/storage/innodb_plugin/row/row0mysql.c b/storage/innodb_plugin/row/row0mysql.c index a98dd8d2900..8d47d0f25fc 100644 --- a/storage/innodb_plugin/row/row0mysql.c +++ b/storage/innodb_plugin/row/row0mysql.c @@ -1645,37 +1645,6 @@ row_table_got_default_clust_index( return(dict_index_get_nth_col(clust_index, 0)->mtype == DATA_SYS); } -/*********************************************************************//** -Calculates the key number used inside MySQL for an Innobase index. We have -to take into account if we generated a default clustered index for the table -@return the key number used inside MySQL */ -UNIV_INTERN -ulint -row_get_mysql_key_number_for_index( -/*===============================*/ - const dict_index_t* index) /*!< in: index */ -{ - const dict_index_t* ind; - ulint i; - - ut_a(index); - - i = 0; - ind = dict_table_get_first_index(index->table); - - while (index != ind) { - ind = dict_table_get_next_index(ind); - i++; - } - - if (row_table_got_default_clust_index(index->table)) { - ut_a(i > 0); - i--; - } - - return(i); -} - /*********************************************************************//** Locks the data dictionary in shared mode from modifications, for performing foreign key check, rollback, or other operation invisible to MySQL. */ diff --git a/storage/innodb_plugin/setup.sh b/storage/innodb_plugin/setup.sh index 23fe729a406..b5d8299d411 100755 --- a/storage/innodb_plugin/setup.sh +++ b/storage/innodb_plugin/setup.sh @@ -21,7 +21,7 @@ set -eu -TARGETDIR=../storage/innobase +TARGETDIR=../storage/innodb_plugin # link the build scripts BUILDSCRIPTS="compile-innodb compile-innodb-debug" From e20e3a2426d4fbe2b7f188b0c2a8dc87459cc9c9 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Tue, 25 May 2010 22:38:14 -0700 Subject: [PATCH 091/461] Update ChangeLog for bug fix regarding 53582. --- storage/innodb_plugin/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 8b5a9bf2d7e..89823642957 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-05-25 The InnoDB Team + + * handler/ha_innodb.cc, include/row0mysql.h, row/row0mysql.c: + Fix Bug#53592: crash replacing duplicates into table after fast + alter table added unique key + 2010-05-24 The InnoDB Team * dict/dict0boot.c, dict/dict0crea.c, fil/fil0fil.c, From b01407461b684560784416abdf3537225ba8e7dc Mon Sep 17 00:00:00 2001 From: Kristofer Pettersson Date: Wed, 26 May 2010 17:13:02 +0200 Subject: [PATCH 092/461] Bug#52107 Comment in sql/net_serv.cc still makes "GPL protocol" claim Removed misleading comments. --- sql/net_serv.cc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sql/net_serv.cc b/sql/net_serv.cc index 15c0c581108..c55c4246750 100644 --- a/sql/net_serv.cc +++ b/sql/net_serv.cc @@ -16,11 +16,7 @@ /** @file - This file is the net layer API for the MySQL client/server protocol, - which is a tightly coupled, proprietary protocol owned by MySQL AB. - @note - Any re-implementations of this protocol must also be under GPL - unless one has got an license from MySQL AB stating otherwise. + This file is the net layer API for the MySQL client/server protocol. Write and read of logical packets to/from socket. From 8ede529b361b0c86121879700de580d797fddd4c Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Thu, 27 May 2010 19:13:53 +0400 Subject: [PATCH 093/461] Bug#52005 'JOIN_TAB->dependent' may be incorrectly propageted for multilevel outer joins There are two problems: 1. In simplify_joins function we calculate table dependencies. If STRAIGHT_JOIN hint is used for whole SELECT we do not count it and as result some dependendecies might be lost. It leads to incorrect table order which is returned by join_tab_cmp_straight() function. 2. make_join_statistics() calculate the transitive closure for relations a particular JOIN_TAB is 'dependent on'. We aggregate the dependent table_map of a JOIN_TAB by adding dependencies from other tables which we depend on. However, this may also cause new dependencies to be available after we have completed processing a certain JOIN_TAB. Both these problems affect condition pushdown and as result condition might be pushed into wrong table which leads to crash or even omitted which leads to wrong result. The fix: 1. Use modified 'transitive closure' algorithm provided by Ole John Aske 2. Update table dependences in simplify_joins according to global STRAIGHT_JOIN hint. Note: the patch also fixes bugs 46091 & 51492 mysql-test/r/join_outer.result: test case mysql-test/t/join_outer.test: test case sql/sql_select.cc: 1. Use modified 'transitive closure' algorithm provided by Ole John Aske 2. Update table dependences in simplify_joins according to global STRAIGHT_JOIN hint. --- mysql-test/r/join_outer.result | 59 ++++++++++++++++++++++++++++++++++ mysql-test/t/join_outer.test | 45 ++++++++++++++++++++++++++ sql/sql_select.cc | 43 +++++++++++++++++++------ 3 files changed, 137 insertions(+), 10 deletions(-) diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result index 6fe0faacb00..e81389f2735 100644 --- a/mysql-test/r/join_outer.result +++ b/mysql-test/r/join_outer.result @@ -1338,4 +1338,63 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE tt9 ALL NULL NULL NULL NULL 2 Using join buffer SET optimizer_search_depth = DEFAULT; DROP TABLE t1; +# +# Bug#46091 STRAIGHT_JOIN + RIGHT JOIN returns different result +# +CREATE TABLE t1 (f1 INT NOT NULL); +INSERT INTO t1 VALUES (9),(0); +CREATE TABLE t2 (f1 INT NOT NULL); +INSERT INTO t2 VALUES +(5),(3),(0),(3),(1),(0),(1),(7),(1),(0),(0),(8),(4),(9),(0),(2),(0),(8),(5),(1); +SELECT STRAIGHT_JOIN COUNT(*) FROM t1 TA1 +RIGHT JOIN t2 TA2 JOIN t2 TA3 ON TA2.f1 ON TA3.f1; +COUNT(*) +476 +EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t1 TA1 +RIGHT JOIN t2 TA2 JOIN t2 TA3 ON TA2.f1 ON TA3.f1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE TA2 ALL NULL NULL NULL NULL 20 Using where +1 SIMPLE TA3 ALL NULL NULL NULL NULL 20 Using join buffer +1 SIMPLE TA1 ALL NULL NULL NULL NULL 2 +DROP TABLE t1, t2; +# +# Bug#48971 Segfault in add_found_match_trig_cond () at sql_select.cc:5990 +# +CREATE TABLE t1(f1 INT, PRIMARY KEY (f1)); +INSERT INTO t1 VALUES (1),(2); +EXPLAIN EXTENDED SELECT STRAIGHT_JOIN T1.f1 FROM t1 AS T1 +LEFT JOIN t1 AS T2 +RIGHT JOIN t1 AS T3 +JOIN t1 AS T4 ON 1 +LEFT JOIN t1 AS T5 ON 1 +ON 1 +RIGHT JOIN t1 AS T6 ON T6.f1 +ON 1; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE T1 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE T6 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE T3 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE T4 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE T5 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE T2 index NULL PRIMARY 4 NULL 2 100.00 Using index +Warnings: +Note 1003 select straight_join `test`.`T1`.`f1` AS `f1` from `test`.`t1` `T1` left join (`test`.`t1` `T6` left join (`test`.`t1` `T3` join `test`.`t1` `T4` left join `test`.`t1` `T5` on(1) left join `test`.`t1` `T2` on(1)) on((`test`.`T6`.`f1` and 1))) on(1) where 1 +EXPLAIN EXTENDED SELECT STRAIGHT_JOIN T1.f1 FROM t1 AS T1 +RIGHT JOIN t1 AS T2 +RIGHT JOIN t1 AS T3 +JOIN t1 AS T4 ON 1 +LEFT JOIN t1 AS T5 ON 1 +ON 1 +RIGHT JOIN t1 AS T6 ON T6.f1 +ON 1; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE T6 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE T3 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE T4 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE T5 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE T2 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE T1 index NULL PRIMARY 4 NULL 2 100.00 Using index +Warnings: +Note 1003 select straight_join `test`.`T1`.`f1` AS `f1` from `test`.`t1` `T6` left join (`test`.`t1` `T3` join `test`.`t1` `T4` left join `test`.`t1` `T5` on(1) left join `test`.`t1` `T2` on(1)) on((`test`.`T6`.`f1` and 1)) left join `test`.`t1` `T1` on(1) where 1 +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/t/join_outer.test b/mysql-test/t/join_outer.test index aaea8b3120b..e7bc5cf6317 100644 --- a/mysql-test/t/join_outer.test +++ b/mysql-test/t/join_outer.test @@ -936,4 +936,49 @@ FROM t1 tt3 LEFT OUTER JOIN t1 tt4 ON 1 SET optimizer_search_depth = DEFAULT; DROP TABLE t1; + +--echo # +--echo # Bug#46091 STRAIGHT_JOIN + RIGHT JOIN returns different result +--echo # +CREATE TABLE t1 (f1 INT NOT NULL); +INSERT INTO t1 VALUES (9),(0); + +CREATE TABLE t2 (f1 INT NOT NULL); +INSERT INTO t2 VALUES +(5),(3),(0),(3),(1),(0),(1),(7),(1),(0),(0),(8),(4),(9),(0),(2),(0),(8),(5),(1); + +SELECT STRAIGHT_JOIN COUNT(*) FROM t1 TA1 +RIGHT JOIN t2 TA2 JOIN t2 TA3 ON TA2.f1 ON TA3.f1; + +EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t1 TA1 +RIGHT JOIN t2 TA2 JOIN t2 TA3 ON TA2.f1 ON TA3.f1; + +DROP TABLE t1, t2; + +--echo # +--echo # Bug#48971 Segfault in add_found_match_trig_cond () at sql_select.cc:5990 +--echo # +CREATE TABLE t1(f1 INT, PRIMARY KEY (f1)); +INSERT INTO t1 VALUES (1),(2); + +EXPLAIN EXTENDED SELECT STRAIGHT_JOIN T1.f1 FROM t1 AS T1 + LEFT JOIN t1 AS T2 + RIGHT JOIN t1 AS T3 + JOIN t1 AS T4 ON 1 + LEFT JOIN t1 AS T5 ON 1 + ON 1 + RIGHT JOIN t1 AS T6 ON T6.f1 + ON 1; + +EXPLAIN EXTENDED SELECT STRAIGHT_JOIN T1.f1 FROM t1 AS T1 + RIGHT JOIN t1 AS T2 + RIGHT JOIN t1 AS T3 + JOIN t1 AS T4 ON 1 + LEFT JOIN t1 AS T5 ON 1 + ON 1 + RIGHT JOIN t1 AS T6 ON T6.f1 + ON 1; + +DROP TABLE t1; + --echo End of 5.1 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 6f128cb8181..ccb63dc0ed0 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -2709,31 +2709,53 @@ make_join_statistics(JOIN *join, TABLE_LIST *tables_arg, COND *conds, /* Build transitive closure for relation 'to be dependent on'. This will speed up the plan search for many cases with outer joins, - as well as allow us to catch illegal cross references/ + as well as allow us to catch illegal cross references. Warshall's algorithm is used to build the transitive closure. - As we use bitmaps to represent the relation the complexity - of the algorithm is O((number of tables)^2). + As we may restart the outer loop upto 'table_count' times, the + complexity of the algorithm is O((number of tables)^3). + However, most of the iterations will be shortcircuited when + there are no pedendencies to propogate. */ - for (i= 0, s= stat ; i < table_count ; i++, s++) + for (i= 0 ; i < table_count ; i++) { - for (uint j= 0 ; j < table_count ; j++) + uint j; + table= stat[i].table; + + if (!table->reginfo.join_tab->dependent) + continue; + + /* Add my dependencies to other tables depending on me */ + for (j= 0, s= stat ; j < table_count ; j++, s++) { - table= stat[j].table; if (s->dependent & table->map) + { + table_map was_dependent= s->dependent; s->dependent |= table->reginfo.join_tab->dependent; + /* + If we change dependencies for a table we already have + processed: Redo dependency propagation from this table. + */ + if (i > j && s->dependent != was_dependent) + { + i = j-1; + break; + } + } } - if (outer_join & s->table->map) - s->table->maybe_null= 1; } - /* Catch illegal cross references for outer joins */ + for (i= 0, s= stat ; i < table_count ; i++, s++) { + /* Catch illegal cross references for outer joins */ if (s->dependent & s->table->map) { join->tables=0; // Don't use join->table my_message(ER_WRONG_OUTER_JOIN, ER(ER_WRONG_OUTER_JOIN), MYF(0)); goto error; } + + if (outer_join & s->table->map) + s->table->maybe_null= 1; s->key_dependent= s->dependent; } } @@ -8704,6 +8726,7 @@ simplify_joins(JOIN *join, List *join_list, COND *conds, bool top) NESTED_JOIN *nested_join; TABLE_LIST *prev_table= 0; List_iterator li(*join_list); + bool straight_join= test(join->select_options & SELECT_STRAIGHT_JOIN); DBUG_ENTER("simplify_joins"); /* @@ -8814,7 +8837,7 @@ simplify_joins(JOIN *join, List *join_list, COND *conds, bool top) if (prev_table) { /* The order of tables is reverse: prev_table follows table */ - if (prev_table->straight) + if (prev_table->straight || straight_join) prev_table->dep_tables|= used_tables; if (prev_table->on_expr) { From 6734ce935e0c7aad8122ecfb45cfc4ffde392648 Mon Sep 17 00:00:00 2001 From: Inaam Rana Date: Thu, 27 May 2010 12:31:00 -0400 Subject: [PATCH 094/461] Fix the printout in for long semaphore waits to not list a thread doing a wait_ex as an s-lock waiter. --- storage/innodb_plugin/sync/sync0arr.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/storage/innodb_plugin/sync/sync0arr.c b/storage/innodb_plugin/sync/sync0arr.c index ed9e25bf2f2..3c825e2202b 100644 --- a/storage/innodb_plugin/sync/sync0arr.c +++ b/storage/innodb_plugin/sync/sync0arr.c @@ -498,7 +498,9 @@ sync_array_cell_print( || type == RW_LOCK_WAIT_EX || type == RW_LOCK_SHARED) { - fputs(type == RW_LOCK_EX ? "X-lock on" : "S-lock on", file); + fputs(type == RW_LOCK_EX ? "X-lock on" + : type == RW_LOCK_WAIT_EX ? "X-lock (wait_ex) on" + : "S-lock on", file); rwlock = cell->old_wait_rw_lock; From 0a35e5bd18951a59aec6977a7a1f34d87c10ca88 Mon Sep 17 00:00:00 2001 From: Dmitry Lenev Date: Fri, 28 May 2010 00:07:40 +0400 Subject: [PATCH 095/461] A 5.1-only version of fix for bug #46947 "Embedded SELECT without FOR UPDATE is causing a lock". SELECT statements with subqueries referencing InnoDB tables were acquiring shared locks on rows in these tables when they were executed in REPEATABLE-READ mode and with statement or mixed mode binary logging turned on. This was a regression which were introduced when fixing bug 39843. The problem was that for tables belonging to subqueries parser set TL_READ_DEFAULT as a lock type. In cases when statement/mixed binary logging at open_tables() time this type of lock was converted to TL_READ_NO_INSERT lock at open_tables() time and caused InnoDB engine to acquire shared locks on reads from these tables. Although in some cases such behavior was correct (e.g. for subqueries in DELETE) in case of SELECT it has caused unnecessary locking. This patch implements minimal version of the fix for the specific problem described in the bug-report which supposed to be not too risky for pushing into 5.1 tree. The 5.5 tree already contains a more appropriate solution which also addresses other related issues like bug 53921 "Wrong locks for SELECTs used stored functions may lead to broken SBR". This patch tries to solve the problem by ensuring that TL_READ_DEFAULT lock which is set in the parser for tables participating in subqueries at open_tables() time is interpreted as TL_READ_NO_INSERT or TL_READ. TL_READ is used only if we know that this is a SELECT and that this particular table is not used by a stored function. Test coverage is added for both InnoDB and MyISAM. This patch introduces an "incompatible" change in locking scheme for subqueries used in SELECT ... FOR UPDATE and SELECT .. IN SHARE MODE. In 4.1 (as well as in 5.0 and 5.1 before fix for bug 39843) the server would use a snapshot InnoDB read for subqueries in SELECT FOR UPDATE and SELECT .. IN SHARE MODE statements, regardless of whether the binary log is on or off. If the user required a different type of read (i.e. locking read), he/she could request so explicitly by providing FOR UPDATE/IN SHARE MODE clause for each individual subquery. The patch for bug 39843 broke this behaviour (which was not documented or tested), and started to use locking reads for all subqueries in SELECT ... FOR UPDATE/IN SHARE MODE. This patch restores 4.1 behaviour. This patch should be mostly null-merged into 5.5 tree. mysql-test/include/check_concurrent_insert.inc: Added auxiliary script which allows to check if statement reading table allows concurrent inserts in it. mysql-test/include/check_no_concurrent_insert.inc: Added auxiliary script which allows to check that statement reading table doesn't allow concurrent inserts in it. mysql-test/include/check_no_row_lock.inc: Added auxiliary script which allows to check if statement reading table doesn't take locks on its rows. mysql-test/include/check_shared_row_lock.inc: Added auxiliary script which allows to check if statement reading table takes shared locks on some of its rows. mysql-test/r/bug39022.result: After bug #46947 'Embedded SELECT without FOR UPDATE is causing a lock' was fixed test case for bug 39022 has to be adjusted in order to trigger execution path on which original problem was encountered. mysql-test/r/innodb_mysql_lock2.result: Added coverage for handling of locking in various cases when we read data from InnoDB tables (includes test case for bug #46947 'Embedded SELECT without FOR UPDATE is causing a lock'). mysql-test/r/lock_sync.result: Added coverage for handling of locking in various cases when we read data from MyISAM tables. mysql-test/t/bug39022.test: After bug #46947 'Embedded SELECT without FOR UPDATE is causing a lock' was fixed test case for bug 39022 has to be adjusted in order to trigger execution path on which original problem was encountered. mysql-test/t/innodb_mysql_lock2.test: Added coverage for handling of locking in various cases when we read data from InnoDB tables (includes test case for bug #46947 'Embedded SELECT without FOR UPDATE is causing a lock'). mysql-test/t/lock_sync.test: Added coverage for handling of locking in various cases when we read data from MyISAM tables. sql/mysql_priv.h: Function read_lock_type_for_table() now takes pointers to LEX and TABLE_LIST elements as its arguments since to correctly determine lock type it needs to know what statement is being performed and whether table element for which lock type to be determined belongs to prelocking list. sql/sql_base.cc: Changed read_lock_type_for_table() to return a weak TL_READ type of lock in cases when we are executing SELECT (and so won't update tables directly) and table doesn't belong to statement's prelocking list and thus can't be used by a stored function. It is OK to do so since in this case table won't be used by statement or function call which will be written to the binary log, so serializability requirements for it can be relaxed. One of results from this change is that SELECTs on InnoDB tables no longer takes shared row locks for tables which are used in subqueries (i.e. bug #46947 is fixed). Another result is that for similar SELECTs on MyISAM tables concurrent inserts are allowed. In order to implement this change signature of read_lock_type_for_table() function was changed to take pointers to LEX and TABLE_LIST objects. sql/sql_update.cc: Function read_lock_type_for_table() now takes pointers to LEX and TABLE_LIST elements as its arguments since to correctly determine lock type it needs to know what statement is being performed and whether table element for which lock type to be determined belongs to prelocking list. --- .../include/check_concurrent_insert.inc | 96 ++ .../include/check_no_concurrent_insert.inc | 81 ++ mysql-test/include/check_no_row_lock.inc | 71 ++ mysql-test/include/check_shared_row_lock.inc | 61 ++ mysql-test/r/bug39022.result | 6 +- mysql-test/r/innodb_mysql_lock2.result | 601 ++++++++++++ mysql-test/r/lock_sync.result | 631 +++++++++++++ mysql-test/t/bug39022.test | 6 +- mysql-test/t/innodb_mysql_lock2.test | 803 ++++++++++++++++ mysql-test/t/lock_sync.test | 867 ++++++++++++++++++ sql/mysql_priv.h | 3 +- sql/sql_base.cc | 34 +- sql/sql_update.cc | 2 +- 13 files changed, 3245 insertions(+), 17 deletions(-) create mode 100644 mysql-test/include/check_concurrent_insert.inc create mode 100644 mysql-test/include/check_no_concurrent_insert.inc create mode 100644 mysql-test/include/check_no_row_lock.inc create mode 100644 mysql-test/include/check_shared_row_lock.inc create mode 100644 mysql-test/r/innodb_mysql_lock2.result create mode 100644 mysql-test/r/lock_sync.result create mode 100644 mysql-test/t/innodb_mysql_lock2.test create mode 100644 mysql-test/t/lock_sync.test diff --git a/mysql-test/include/check_concurrent_insert.inc b/mysql-test/include/check_concurrent_insert.inc new file mode 100644 index 00000000000..f4bec3c9cdb --- /dev/null +++ b/mysql-test/include/check_concurrent_insert.inc @@ -0,0 +1,96 @@ +# +# SUMMARY +# Check if statement reading table '$table' allows concurrent +# inserts in it. +# +# PARAMETERS +# $table Table in which concurrent inserts should be allowed. +# $con_aux1 Name of the first auxiliary connection to be used by this +# script. +# $con_aux2 Name of the second auxiliary connection to be used by this +# script. +# $statement Statement to be checked. +# $restore_table Table which might be modified by statement to be checked +# and thus needs backing up before its execution and +# restoring after it (can be empty). +# +# EXAMPLE +# lock_sync.test +# +--disable_result_log +--disable_query_log + +# Reset DEBUG_SYNC facility for safety. +set debug_sync= "RESET"; + +if (`SELECT '$restore_table' <> ''`) +{ +--eval create temporary table t_backup select * from $restore_table; +} + +connection $con_aux1; +set debug_sync='after_lock_tables_takes_lock SIGNAL parked WAIT_FOR go'; +--send_eval $statement; + +connection $con_aux2; +set debug_sync='now WAIT_FOR parked'; +--send_eval insert into $table (i) values (0); + +--enable_result_log +--enable_query_log +connection default; +# Wait until concurrent insert is successfully executed while +# statement being checked has its tables locked. +# We use wait_condition.inc instead of simply reaping +# concurrent insert here in order to avoid deadlocks if test +# fails and to time out gracefully instead. +let $wait_condition= + select count(*) = 0 from information_schema.processlist + where info = "insert into $table (i) values (0)"; +--source include/wait_condition.inc + +--disable_result_log +--disable_query_log + +if ($success) +{ +# Apparently concurrent insert was successfully executed. +# To be safe against wait_condition.inc succeeding due to +# races let us first reap concurrent insert to ensure that +# it has really been successfully executed. +connection $con_aux2; +--reap +connection default; +set debug_sync= 'now SIGNAL go'; +connection $con_aux1; +--reap +connection default; +--echo Success: '$statement' allows concurrent inserts into '$table'. +} +if (!$success) +{ +# Waiting has timed out. Apparently concurrent insert was blocked. +# So to be able to continue we need to end our statement first. +set debug_sync= 'now SIGNAL go'; +connection $con_aux1; +--reap +connection $con_aux2; +--reap +connection default; +--echo Error: '$statement' doesn't allow concurrent inserts into '$table'! +} + +--eval delete from $table where i = 0; + +if (`SELECT '$restore_table' <> ''`) +{ +--eval truncate table $restore_table; +--eval insert into $restore_table select * from t_backup; +drop temporary table t_backup; +} + +# Clean-up. Reset DEBUG_SYNC facility after use. +set debug_sync= "RESET"; + +--enable_result_log +--enable_query_log diff --git a/mysql-test/include/check_no_concurrent_insert.inc b/mysql-test/include/check_no_concurrent_insert.inc new file mode 100644 index 00000000000..f60401bcad1 --- /dev/null +++ b/mysql-test/include/check_no_concurrent_insert.inc @@ -0,0 +1,81 @@ +# +# SUMMARY +# Check that statement reading table '$table' doesn't allow concurrent +# inserts in it. +# +# PARAMETERS +# $table Table in which concurrent inserts should be disallowed. +# $con_aux1 Name of the first auxiliary connection to be used by this +# script. +# $con_aux2 Name of the second auxiliary connection to be used by this +# script. +# $statement Statement to be checked. +# $restore_table Table which might be modified by statement to be checked +# and thus needs backing up before its execution and +# restoring after it (can be empty). +# +# EXAMPLE +# lock_sync.test +# +--disable_result_log +--disable_query_log + +# Reset DEBUG_SYNC facility for safety. +set debug_sync= "RESET"; + +if (`SELECT '$restore_table' <> ''`) +{ +--eval create temporary table t_backup select * from $restore_table; +} + +connection $con_aux1; +set debug_sync='after_lock_tables_takes_lock SIGNAL parked WAIT_FOR go'; +--send_eval $statement; + +connection $con_aux2; +set debug_sync='now WAIT_FOR parked'; +--send_eval insert into $table (i) values (0); + +--enable_result_log +--enable_query_log +connection default; +# Wait until concurrent insert is successfully blocked because +# of our statement. +let $wait_condition= + select count(*) = 1 from information_schema.processlist + where state = "Locked" and info = "insert into $table (i) values (0)"; +--source include/wait_condition.inc + +--disable_result_log +--disable_query_log + +set debug_sync= 'now SIGNAL go'; +connection $con_aux1; +--reap +connection $con_aux2; +--reap +connection default; + +if ($success) +{ +--echo Success: '$statement' doesn't allow concurrent inserts into '$table'. +} +if (!$success) +{ +--echo Error: '$statement' allows concurrent inserts into '$table'! +} + +--eval delete from $table where i = 0; + +if (`SELECT '$restore_table' <> ''`) +{ +--eval truncate table $restore_table; +--eval insert into $restore_table select * from t_backup; +drop temporary table t_backup; +} + +# Clean-up. Reset DEBUG_SYNC facility after use. +set debug_sync= "RESET"; + +--enable_result_log +--enable_query_log diff --git a/mysql-test/include/check_no_row_lock.inc b/mysql-test/include/check_no_row_lock.inc new file mode 100644 index 00000000000..c08e7f35b10 --- /dev/null +++ b/mysql-test/include/check_no_row_lock.inc @@ -0,0 +1,71 @@ +# +# SUMMARY +# Check if statement affecting or reading table '$table' doesn't +# take any kind of locks on its rows. +# +# PARAMETERS +# $table Table for which presence of row locks should be checked. +# $con_aux Name of auxiliary connection to be used by this script. +# $statement Statement to be checked. +# +# EXAMPLE +# innodb_mysql_lock2.test +# +--disable_result_log +--disable_query_log + +connection default; +begin; +--eval select * from $table for update; + +connection $con_aux; +begin; +--send_eval $statement; + +--enable_result_log +--enable_query_log + +connection default; +# Wait until statement is successfully executed while +# all rows in table are X-locked. This means that it +# does not acquire any row locks. +# We use wait_condition.inc instead of simply reaping +# statement here in order to avoid deadlocks if test +# fails and to time out gracefully instead. +let $wait_condition= + select count(*) = 0 from information_schema.processlist + where info = "$statement"; +--source include/wait_condition.inc + +--disable_result_log +--disable_query_log + +if ($success) +{ +# Apparently statement was successfully executed and thus it +# has not required any row locks. +# To be safe against wait_condition.inc succeeding due to +# races let us first reap the statement being checked to +# ensure that it has been successfully executed. +connection $con_aux; +--reap +rollback; +connection default; +rollback; +--echo Success: '$statement' doesn't take row locks on '$table'. +} +if (!$success) +{ +# Waiting has timed out. Apparently statement was blocked on +# some row lock. So to be able to continue we need to unlock +# rows first. +rollback; +connection $con_aux; +--reap +rollback; +connection default; +--echo Error: '$statement' takes some row locks on '$table'! +} + +--enable_result_log +--enable_query_log diff --git a/mysql-test/include/check_shared_row_lock.inc b/mysql-test/include/check_shared_row_lock.inc new file mode 100644 index 00000000000..efc7e13b3aa --- /dev/null +++ b/mysql-test/include/check_shared_row_lock.inc @@ -0,0 +1,61 @@ +# +# SUMMARY +# Check if statement reading table '$table' takes shared locks +# on some of its rows. +# +# PARAMETERS +# $table Table for which presence of row locks should be checked. +# $con_aux Name of auxiliary connection to be used by this script. +# $statement Statement to be checked. +# $wait_statement Sub-statement which is supposed to acquire locks (should +# be the same as $statement for ordinary statements). +# +# EXAMPLE +# innodb_mysql_lock2.test +# +--disable_result_log +--disable_query_log + +connection default; +begin; +--eval select * from $table for update; + +connection $con_aux; +begin; +--send_eval $statement; + +--enable_result_log +--enable_query_log + +connection default; +# Wait until statement is successfully blocked because +# all rows in table are X-locked. This means that at +# least it acquires S-locks on some of rows. +let $wait_condition= + select count(*) = 1 from information_schema.processlist + where state in ("Sending data","statistics", "preparing") and + info = "$wait_statement"; +--source include/wait_condition.inc + +--disable_result_log +--disable_query_log + +rollback; + +connection $con_aux; +--reap +rollback; + +connection default; +--enable_result_log +--enable_query_log + +if ($success) +{ +--echo Success: '$statement' takes shared row locks on '$table'. +} + +if (!$success) +{ +--echo Error: '$statement' hasn't taken shared row locks on '$table'! +} diff --git a/mysql-test/r/bug39022.result b/mysql-test/r/bug39022.result index 5963709aa2a..75899ed686b 100644 --- a/mysql-test/r/bug39022.result +++ b/mysql-test/r/bug39022.result @@ -12,7 +12,7 @@ INSERT INTO t2 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10), START TRANSACTION; # in thread2 REPLACE INTO t2 VALUES (-17); -SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d); +SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE; d # in thread1 REPLACE INTO t1(a,b) VALUES (67,20); @@ -21,10 +21,10 @@ COMMIT; START TRANSACTION; REPLACE INTO t1(a,b) VALUES (65,-50); REPLACE INTO t2 VALUES (-91); -SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d); +SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE; # in thread1 # should not crash -SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d); +SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE; ERROR 40001: Deadlock found when trying to get lock; try restarting transaction # in thread2 d diff --git a/mysql-test/r/innodb_mysql_lock2.result b/mysql-test/r/innodb_mysql_lock2.result new file mode 100644 index 00000000000..79606ea8bdc --- /dev/null +++ b/mysql-test/r/innodb_mysql_lock2.result @@ -0,0 +1,601 @@ +# +# Test how do we handle locking in various cases when +# we read data from InnoDB tables. +# +# In fact by performing this test we check two things: +# 1) That SQL-layer correctly determine type of thr_lock.c +# lock to be acquired/passed to InnoDB engine. +# 2) That InnoDB engine correctly interprets this lock +# type and takes necessary row locks or does not +# take them if they are not necessary. +# +# This test makes sense only in REPEATABLE-READ mode as +# in SERIALIZABLE mode all statements that read data take +# shared lock on them to enforce its semantics. +select @@session.tx_isolation; +@@session.tx_isolation +REPEATABLE-READ +# Prepare playground by creating tables, views, +# routines and triggers used in tests. +drop table if exists t0, t1, t2, t3, t4, t5, te; +drop view if exists v1, v2; +drop procedure if exists p1; +drop procedure if exists p2; +drop function if exists f1; +drop function if exists f2; +drop function if exists f3; +drop function if exists f4; +drop function if exists f5; +drop function if exists f6; +drop function if exists f7; +drop function if exists f8; +drop function if exists f9; +drop function if exists f10; +drop function if exists f11; +drop function if exists f12; +drop function if exists f13; +drop function if exists f14; +drop function if exists f15; +create table t1 (i int primary key) engine=innodb; +insert into t1 values (1), (2), (3), (4), (5); +create table t2 (j int primary key) engine=innodb; +insert into t2 values (1), (2), (3), (4), (5); +create table t3 (k int primary key) engine=innodb; +insert into t3 values (1), (2), (3); +create table t4 (l int primary key) engine=innodb; +insert into t4 values (1); +create table t5 (l int primary key) engine=innodb; +insert into t5 values (1); +create table te(e int primary key); +insert into te values (1); +create view v1 as select i from t1; +create view v2 as select j from t2 where j in (select i from t1); +create procedure p1(k int) insert into t2 values (k); +create function f1() returns int +begin +declare j int; +select i from t1 where i = 1 into j; +return j; +end| +create function f2() returns int +begin +declare k int; +select i from t1 where i = 1 into k; +insert into t2 values (k + 5); +return 0; +end| +create function f3() returns int +begin +return (select i from t1 where i = 3); +end| +create function f4() returns int +begin +if (select i from t1 where i = 3) then +return 1; +else +return 0; +end if; +end| +create function f5() returns int +begin +insert into t2 values ((select i from t1 where i = 1) + 5); +return 0; +end| +create function f6() returns int +begin +declare k int; +select i from v1 where i = 1 into k; +return k; +end| +create function f7() returns int +begin +declare k int; +select j from v2 where j = 1 into k; +return k; +end| +create function f8() returns int +begin +declare k int; +select i from v1 where i = 1 into k; +insert into t2 values (k+5); +return k; +end| +create function f9() returns int +begin +update v2 set j=j+10 where j=1; +return 1; +end| +create function f10() returns int +begin +return f1(); +end| +create function f11() returns int +begin +declare k int; +set k= f1(); +insert into t2 values (k+5); +return k; +end| +create function f12(p int) returns int +begin +insert into t2 values (p); +return p; +end| +create function f13(p int) returns int +begin +return p; +end| +create procedure p2(inout p int) +begin +select i from t1 where i = 1 into p; +end| +create function f14() returns int +begin +declare k int; +call p2(k); +insert into t2 values (k+5); +return k; +end| +create function f15() returns int +begin +declare k int; +call p2(k); +return k; +end| +create trigger t4_bi before insert on t4 for each row +begin +declare k int; +select i from t1 where i=1 into k; +set new.l= k+1; +end| +create trigger t4_bu before update on t4 for each row +begin +if (select i from t1 where i=1) then +set new.l= 2; +end if; +end| +# Trigger below uses insertion of duplicate key in 'te' +# table as a way to abort delete operation. +create trigger t4_bd before delete on t4 for each row +begin +if !(select i from v1 where i=1) then +insert into te values (1); +end if; +end| +create trigger t5_bi before insert on t5 for each row +begin +set new.l= f1()+1; +end| +create trigger t5_bu before update on t5 for each row +begin +declare j int; +call p2(j); +set new.l= j + 1; +end| +# +# Set common variables to be used by scripts called below. +# +# +# 1. Statements that read tables and do not use subqueries. +# +# +# 1.1 Simple SELECT statement. +# +# No locks are necessary as this statement won't be written +# to the binary log and InnoDB supports snapshots. +Success: 'select * from t1' doesn't take row locks on 't1'. +# +# 1.2 Multi-UPDATE statement. +# +# Has to take shared locks on rows in the table being read as this +# statement will be written to the binary log and therefore should +# be serialized with concurrent statements. +Success: 'update t2, t1 set j= j - 1 where i = j' takes shared row locks on 't1'. +# +# 1.3 Multi-DELETE statement. +# +# The above is true for this statement as well. +Success: 'delete t2 from t1, t2 where i = j' takes shared row locks on 't1'. +# +# 1.4 DESCRIBE statement. +# +# This statement does not really read data from the +# target table and thus does not take any lock on it. +# We check this for completeness of coverage. +Success: 'describe t1' doesn't take row locks on 't1'. +# +# 1.5 SHOW statements. +# +# The above is true for SHOW statements as well. +Success: 'show create table t1' doesn't take row locks on 't1'. +Success: 'show keys from t1' doesn't take row locks on 't1'. +# +# 2. Statements which read tables through subqueries. +# +# +# 2.1 CALL with a subquery. +# +# A strong lock is not necessary as this statement is not +# written to the binary log as a whole (it is written +# statement-by-statement) and thanks to MVCC we can always get +# versions of rows prior to the update that has locked them. +# But in practice InnoDB does locking reads for all statements +# other than SELECT (unless it is a READ-COMITTED mode or +# innodb_locks_unsafe_for_binlog is ON). +Success: 'call p1((select i + 5 from t1 where i = 1))' takes shared row locks on 't1'. +# +# 2.2 CREATE TABLE with a subquery. +# +# Has to take shared locks on rows in the table being read as +# this statement is written to the binary log and therefore +# should be serialized with concurrent statements. +Success: 'create table t0 engine=innodb select * from t1' takes shared row locks on 't1'. +drop table t0; +Success: 'create table t0 engine=innodb select j from t2 where j in (select i from t1)' takes shared row locks on 't1'. +drop table t0; +# +# 2.3 DELETE with a subquery. +# +# The above is true for this statement as well. +Success: 'delete from t2 where j in (select i from t1)' takes shared row locks on 't1'. +# +# 2.4 MULTI-DELETE with a subquery. +# +# Same is true for this statement as well. +Success: 'delete t2 from t3, t2 where k = j and j in (select i from t1)' takes shared row locks on 't1'. +# +# 2.5 DO with a subquery. +# +# In theory should not take row locks as it is not logged. +# In practice InnoDB takes shared row locks. +Success: 'do (select i from t1 where i = 1)' takes shared row locks on 't1'. +# +# 2.6 INSERT with a subquery. +# +# Has to take shared locks on rows in the table being read as +# this statement is written to the binary log and therefore +# should be serialized with concurrent statements. +Success: 'insert into t2 select i+5 from t1' takes shared row locks on 't1'. +Success: 'insert into t2 values ((select i+5 from t1 where i = 4))' takes shared row locks on 't1'. +# +# 2.7 LOAD DATA with a subquery. +# +# The above is true for this statement as well. +Success: 'load data infile '../../std_data/rpl_loaddata.dat' into table t2 (@a, @b) set j= @b + (select i from t1 where i = 1)' takes shared row locks on 't1'. +# +# 2.8 REPLACE with a subquery. +# +# Same is true for this statement as well. +Success: 'replace into t2 select i+5 from t1' takes shared row locks on 't1'. +Success: 'replace into t2 values ((select i+5 from t1 where i = 4))' takes shared row locks on 't1'. +# +# 2.9 SELECT with a subquery. +# +# Locks are not necessary as this statement is not written +# to the binary log and thanks to MVCC we can always get +# versions of rows prior to the update that has locked them. +# +# Also serves as a test case for bug #46947 "Embedded SELECT +# without FOR UPDATE is causing a lock". +Success: 'select * from t2 where j in (select i from t1)' doesn't take row locks on 't1'. +# +# 2.10 SET with a subquery. +# +# In theory should not require locking as it is not written +# to the binary log. In practice InnoDB acquires shared row +# locks. +Success: 'set @a:= (select i from t1 where i = 1)' takes shared row locks on 't1'. +# +# 2.11 SHOW with a subquery. +# +# Similarly to the previous case, in theory should not require locking +# as it is not written to the binary log. In practice InnoDB +# acquires shared row locks. +Success: 'show tables from test where Tables_in_test = 't2' and (select i from t1 where i = 1)' takes shared row locks on 't1'. +Success: 'show columns from t2 where (select i from t1 where i = 1)' takes shared row locks on 't1'. +# +# 2.12 UPDATE with a subquery. +# +# Has to take shared locks on rows in the table being read as +# this statement is written to the binary log and therefore +# should be serialized with concurrent statements. +Success: 'update t2 set j= j-10 where j in (select i from t1)' takes shared row locks on 't1'. +# +# 2.13 MULTI-UPDATE with a subquery. +# +# Same is true for this statement as well. +Success: 'update t2, t3 set j= j -10 where j=k and j in (select i from t1)' takes shared row locks on 't1'. +# +# 3. Statements which read tables through a view. +# +# +# 3.1 SELECT statement which uses some table through a view. +# +# Since this statement is not written to the binary log +# and old version of rows are accessible thanks to MVCC, +# no locking is necessary. +Success: 'select * from v1' doesn't take row locks on 't1'. +Success: 'select * from v2' doesn't take row locks on 't1'. +Success: 'select * from t2 where j in (select i from v1)' doesn't take row locks on 't1'. +Success: 'select * from t3 where k in (select j from v2)' doesn't take row locks on 't1'. +# +# 3.2 Statements which modify a table and use views. +# +# Since such statements are going to be written to the binary +# log they need to be serialized against concurrent statements +# and therefore should take shared row locks on data read. +Success: 'update t2 set j= j-10 where j in (select i from v1)' takes shared row locks on 't1'. +Success: 'update t3 set k= k-10 where k in (select j from v2)' takes shared row locks on 't1'. +Success: 'update t2, v1 set j= j-10 where j = i' takes shared row locks on 't1'. +Success: 'update v2 set j= j-10 where j = 3' takes shared row locks on 't1'. +# +# 4. Statements which read tables through stored functions. +# +# +# 4.1 SELECT/SET with a stored function which does not +# modify data and uses SELECT in its turn. +# +# Calls to such functions won't get into the binary log and +# thus don't need to acquire strong locks. +# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +# used stored functions may lead to broken SBR" strong locks +# are taken (we accepted it as a trade-off for this fix). +Success: 'select f1()' doesn't take row locks on 't1'. +Success: 'set @a:= f1()' doesn't take row locks on 't1'. +# +# 4.2 INSERT (or other statement which modifies data) with +# a stored function which does not modify data and uses +# SELECT. +# +# Since such statement is written to the binary log it should +# be serialized with concurrent statements affecting the data +# it uses. Therefore it should take row locks on the data +# it reads. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken. +Success: 'insert into t2 values (f1() + 5)' doesn't take row locks on 't1'. +# +# 4.3 SELECT/SET with a stored function which +# reads and modifies data. +# +# Since a call to such function is written to the binary log, +# it should be serialized with concurrent statements affecting +# the data it uses. Hence, row locks on the data read +# should be taken. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken. +Success: 'select f2()' doesn't take row locks on 't1'. +Success: 'set @a:= f2()' doesn't take row locks on 't1'. +# +# 4.4. SELECT/SET with a stored function which does not +# modify data and reads a table through subselect +# in a control construct. +# +# Again, in theory a call to this function won't get to the +# binary log and thus no locking is needed. But in practice +# we don't detect this fact early enough (get_lock_type_for_table()) +# to avoid taking row locks. +Success: 'select f3()' takes shared row locks on 't1'. +Success: 'set @a:= f3()' takes shared row locks on 't1'. +Success: 'select f4()' takes shared row locks on 't1'. +Success: 'set @a:= f4()' takes shared row locks on 't1'. +# +# 4.5. INSERT (or other statement which modifies data) with +# a stored function which does not modify data and reads +# the table through a subselect in one of its control +# constructs. +# +# Since such statement is written to the binary log it should +# be serialized with concurrent statements affecting data it +# uses. Therefore it should take row locks on the data +# it reads. +Success: 'insert into t2 values (f3() + 5)' takes shared row locks on 't1'. +Success: 'insert into t2 values (f4() + 6)' takes shared row locks on 't1'. +# +# 4.6 SELECT/SET which uses a stored function with +# DML which reads a table via a subquery. +# +# Since call to such function is written to the binary log +# it should be serialized with concurrent statements. +# Hence reads should take row locks. +Success: 'select f5()' takes shared row locks on 't1'. +Success: 'set @a:= f5()' takes shared row locks on 't1'. +# +# 4.7 SELECT/SET which uses a stored function which +# doesn't modify data and reads tables through +# a view. +# +# Once again, in theory, calls to such functions won't +# get into the binary log and thus don't need row +# locks. In practice this fact is discovered +# too late to have any effect. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken +# in case of simple SELECT. +Success: 'select f6()' doesn't take row locks on 't1'. +Success: 'set @a:= f6()' doesn't take row locks on 't1'. +Success: 'select f7()' takes shared row locks on 't1'. +Success: 'set @a:= f7()' takes shared row locks on 't1'. +# +# 4.8 INSERT which uses stored function which +# doesn't modify data and reads a table +# through a view. +# +# Since such statement is written to the binary log and +# should be serialized with concurrent statements affecting +# the data it uses. Therefore it should take row locks on +# the rows it reads. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken +# in case of simple SELECT. +Success: 'insert into t3 values (f6() + 5)' doesn't take row locks on 't1'. +Success: 'insert into t3 values (f7() + 5)' takes shared row locks on 't1'. +# +# 4.9 SELECT which uses a stored function which +# modifies data and reads tables through a view. +# +# Since a call to such function is written to the binary log +# it should be serialized with concurrent statements. +# Hence, reads should take row locks. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken +# in case of simple SELECT. +Success: 'select f8()' doesn't take row locks on 't1'. +Success: 'select f9()' takes shared row locks on 't1'. +# +# 4.10 SELECT which uses stored function which doesn't modify +# data and reads a table indirectly, by calling another +# function. +# +# Calls to such functions won't get into the binary log and +# thus don't need to acquire strong locks. +# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +# used stored functions may lead to broken SBR" strong locks +# are taken (we accepted it as a trade-off for this fix). +Success: 'select f10()' doesn't take row locks on 't1'. +# +# 4.11 INSERT which uses a stored function which doesn't modify +# data and reads a table indirectly, by calling another +# function. +# +# Since such statement is written to the binary log, it should +# be serialized with concurrent statements affecting the data it +# uses. Therefore it should take row locks on data it reads. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken. +Success: 'insert into t2 values (f10() + 5)' doesn't take row locks on 't1'. +# +# 4.12 SELECT which uses a stored function which modifies +# data and reads a table indirectly, by calling another +# function. +# +# Since a call to such function is written to the binary log +# it should be serialized from concurrent statements. +# Hence, reads should take row locks. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken. +Success: 'select f11()' doesn't take row locks on 't1'. +# +# 4.13 SELECT that reads a table through a subquery passed +# as a parameter to a stored function which modifies +# data. +# +# Even though a call to this function is written to the +# binary log, values of its parameters are written as literals. +# So there is no need to acquire row locks on rows used in +# the subquery. +# But due to the fact that in 5.1 for prelocked statements +# THD::in_lock_tables is set to TRUE we acquire strong locks +# (see also bug#44613 "SELECT statement inside FUNCTION takes +# a shared lock" [sic!!!]). +Success: 'select f12((select i+10 from t1 where i=1))' takes shared row locks on 't1'. +# +# 4.14 INSERT that reads a table via a subquery passed +# as a parameter to a stored function which doesn't +# modify data. +# +# Since this statement is written to the binary log it should +# be serialized with concurrent statements affecting the data it +# uses. Therefore it should take row locks on the data it reads. +Success: 'insert into t2 values (f13((select i+10 from t1 where i=1)))' takes shared row locks on 't1'. +# +# 5. Statements that read tables through stored procedures. +# +# +# 5.1 CALL statement which reads a table via SELECT. +# +# Since neither this statement nor its components are +# written to the binary log, there is no need to take +# row locks on the data it reads. +Success: 'call p2(@a)' doesn't take row locks on 't1'. +# +# 5.2 Function that modifies data and uses CALL, +# which reads a table through SELECT. +# +# Since a call to such function is written to the binary +# log, it should be serialized with concurrent statements. +# Hence, in this case reads should take row locks on data. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken. +Success: 'select f14()' doesn't take row locks on 't1'. +# +# 5.3 SELECT that calls a function that doesn't modify data and +# uses a CALL statement that reads a table via SELECT. +# +# Calls to such functions won't get into the binary log and +# thus don't need to acquire strong locks. +# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +# used stored functions may lead to broken SBR" strong locks +# are taken (we accepted it as a trade-off for this fix). +Success: 'select f15()' doesn't take row locks on 't1'. +# +# 5.4 INSERT which calls function which doesn't modify data and +# uses CALL statement which reads table through SELECT. +# +# Since such statement is written to the binary log it should +# be serialized with concurrent statements affecting data it +# uses. Therefore it should take row locks on data it reads. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken. +Success: 'insert into t2 values (f15()+5)' doesn't take row locks on 't1'. +# +# 6. Statements that use triggers. +# +# +# 6.1 Statement invoking a trigger that reads table via SELECT. +# +# Since this statement is written to the binary log it should +# be serialized with concurrent statements affecting the data +# it uses. Therefore, it should take row locks on the data +# it reads. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken. +Success: 'insert into t4 values (2)' doesn't take row locks on 't1'. +# +# 6.2 Statement invoking a trigger that reads table through +# a subquery in a control construct. +# +# The above is true for this statement as well. +Success: 'update t4 set l= 2 where l = 1' takes shared row locks on 't1'. +# +# 6.3 Statement invoking a trigger that reads a table through +# a view. +# +# And for this statement. +Success: 'delete from t4 where l = 1' takes shared row locks on 't1'. +# +# 6.4 Statement invoking a trigger that reads a table through +# a stored function. +# +# And for this statement. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken. +Success: 'insert into t5 values (2)' doesn't take row locks on 't1'. +# +# 6.5 Statement invoking a trigger that reads a table through +# stored procedure. +# +# And for this statement. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" no lock is taken. +Success: 'update t5 set l= 2 where l = 1' doesn't take row locks on 't1'. +# Clean-up. +drop function f1; +drop function f2; +drop function f3; +drop function f4; +drop function f5; +drop function f6; +drop function f7; +drop function f8; +drop function f9; +drop function f10; +drop function f11; +drop function f12; +drop function f13; +drop function f14; +drop function f15; +drop view v1, v2; +drop procedure p1; +drop procedure p2; +drop table t1, t2, t3, t4, t5, te; diff --git a/mysql-test/r/lock_sync.result b/mysql-test/r/lock_sync.result new file mode 100644 index 00000000000..752f278a2b4 --- /dev/null +++ b/mysql-test/r/lock_sync.result @@ -0,0 +1,631 @@ +# +# Test how we handle locking in various cases when +# we read data from MyISAM tables. +# +# In this test we mostly check that the SQL-layer correctly +# determines the type of thr_lock.c lock for a table being +# read. +# I.e. that it disallows concurrent inserts when the statement +# is going to be written to the binary log and therefore +# should be serialized, and allows concurrent inserts when +# such serialization is not necessary (e.g. when +# the statement is not written to binary log). +# +# Force concurrent inserts to be performed even if the table +# has gaps. This allows to simplify clean up in scripts +# used below (instead of backing up table being inserted +# into and then restoring it from backup at the end of the +# script we can simply delete rows which were inserted). +set @old_concurrent_insert= @@global.concurrent_insert; +set @@global.concurrent_insert= 2; +select @@global.concurrent_insert; +@@global.concurrent_insert +2 +# Prepare playground by creating tables, views, +# routines and triggers used in tests. +drop table if exists t0, t1, t2, t3, t4, t5, te; +drop view if exists v1, v2; +drop procedure if exists p1; +drop procedure if exists p2; +drop function if exists f1; +drop function if exists f2; +drop function if exists f3; +drop function if exists f4; +drop function if exists f5; +drop function if exists f6; +drop function if exists f7; +drop function if exists f8; +drop function if exists f9; +drop function if exists f10; +drop function if exists f11; +drop function if exists f12; +drop function if exists f13; +drop function if exists f14; +drop function if exists f15; +create table t1 (i int primary key); +insert into t1 values (1), (2), (3), (4), (5); +create table t2 (j int primary key); +insert into t2 values (1), (2), (3), (4), (5); +create table t3 (k int primary key); +insert into t3 values (1), (2), (3); +create table t4 (l int primary key); +insert into t4 values (1); +create table t5 (l int primary key); +insert into t5 values (1); +create table te(e int primary key); +insert into te values (1); +create view v1 as select i from t1; +create view v2 as select j from t2 where j in (select i from t1); +create procedure p1(k int) insert into t2 values (k); +create function f1() returns int +begin +declare j int; +select i from t1 where i = 1 into j; +return j; +end| +create function f2() returns int +begin +declare k int; +select i from t1 where i = 1 into k; +insert into t2 values (k + 5); +return 0; +end| +create function f3() returns int +begin +return (select i from t1 where i = 3); +end| +create function f4() returns int +begin +if (select i from t1 where i = 3) then +return 1; +else +return 0; +end if; +end| +create function f5() returns int +begin +insert into t2 values ((select i from t1 where i = 1) + 5); +return 0; +end| +create function f6() returns int +begin +declare k int; +select i from v1 where i = 1 into k; +return k; +end| +create function f7() returns int +begin +declare k int; +select j from v2 where j = 1 into k; +return k; +end| +create function f8() returns int +begin +declare k int; +select i from v1 where i = 1 into k; +insert into t2 values (k+5); +return k; +end| +create function f9() returns int +begin +update v2 set j=j+10 where j=1; +return 1; +end| +create function f10() returns int +begin +return f1(); +end| +create function f11() returns int +begin +declare k int; +set k= f1(); +insert into t2 values (k+5); +return k; +end| +create function f12(p int) returns int +begin +insert into t2 values (p); +return p; +end| +create function f13(p int) returns int +begin +return p; +end| +create procedure p2(inout p int) +begin +select i from t1 where i = 1 into p; +end| +create function f14() returns int +begin +declare k int; +call p2(k); +insert into t2 values (k+5); +return k; +end| +create function f15() returns int +begin +declare k int; +call p2(k); +return k; +end| +create trigger t4_bi before insert on t4 for each row +begin +declare k int; +select i from t1 where i=1 into k; +set new.l= k+1; +end| +create trigger t4_bu before update on t4 for each row +begin +if (select i from t1 where i=1) then +set new.l= 2; +end if; +end| +# Trigger below uses insertion of duplicate key in 'te' +# table as a way to abort delete operation. +create trigger t4_bd before delete on t4 for each row +begin +if !(select i from v1 where i=1) then +insert into te values (1); +end if; +end| +create trigger t5_bi before insert on t5 for each row +begin +set new.l= f1()+1; +end| +create trigger t5_bu before update on t5 for each row +begin +declare j int; +call p2(j); +set new.l= j + 1; +end| +# +# Set common variables to be used by the scripts +# called below. +# +# Switch to connection 'con1'. +# Cache all functions used in the tests below so statements +# calling them won't need to open and lock mysql.proc table +# and we can assume that each statement locks its tables +# once during its execution. +show create procedure p1; +show create procedure p2; +show create function f1; +show create function f2; +show create function f3; +show create function f4; +show create function f5; +show create function f6; +show create function f7; +show create function f8; +show create function f9; +show create function f10; +show create function f11; +show create function f12; +show create function f13; +show create function f14; +show create function f15; +# Switch back to connection 'default'. +# +# 1. Statements that read tables and do not use subqueries. +# +# +# 1.1 Simple SELECT statement. +# +# No locks are necessary as this statement won't be written +# to the binary log and thanks to how MyISAM works SELECT +# will see version of the table prior to concurrent insert. +Success: 'select * from t1' allows concurrent inserts into 't1'. +# +# 1.2 Multi-UPDATE statement. +# +# Has to take shared locks on rows in the table being read as this +# statement will be written to the binary log and therefore should +# be serialized with concurrent statements. +Success: 'update t2, t1 set j= j - 1 where i = j' doesn't allow concurrent inserts into 't1'. +# +# 1.3 Multi-DELETE statement. +# +# The above is true for this statement as well. +Success: 'delete t2 from t1, t2 where i = j' doesn't allow concurrent inserts into 't1'. +# +# 1.4 DESCRIBE statement. +# +# This statement does not really read data from the +# target table and thus does not take any lock on it. +# We check this for completeness of coverage. +lock table t1 write; +# Switching to connection 'con1'. +# This statement should not be blocked. +describe t1; +# Switching to connection 'default'. +unlock tables; +# +# 1.5 SHOW statements. +# +# The above is true for SHOW statements as well. +lock table t1 write; +# Switching to connection 'con1'. +# These statements should not be blocked. +show keys from t1; +# Switching to connection 'default'. +unlock tables; +# +# 2. Statements which read tables through subqueries. +# +# +# 2.1 CALL with a subquery. +# +# In theory strong lock is not necessary as this statement +# is not written to the binary log as a whole (it is written +# statement-by-statement). But in practice in 5.1 for +# almost everything except SELECT we take strong lock. +Success: 'call p1((select i + 5 from t1 where i = 1))' doesn't allow concurrent inserts into 't1'. +# +# 2.2 CREATE TABLE with a subquery. +# +# Has to take a strong lock on the table being read as +# this statement is written to the binary log and therefore +# should be serialized with concurrent statements. +Success: 'create table t0 select * from t1' doesn't allow concurrent inserts into 't1'. +drop table t0; +Success: 'create table t0 select j from t2 where j in (select i from t1)' doesn't allow concurrent inserts into 't1'. +drop table t0; +# +# 2.3 DELETE with a subquery. +# +# The above is true for this statement as well. +Success: 'delete from t2 where j in (select i from t1)' doesn't allow concurrent inserts into 't1'. +# +# 2.4 MULTI-DELETE with a subquery. +# +# Same is true for this statement as well. +Success: 'delete t2 from t3, t2 where k = j and j in (select i from t1)' doesn't allow concurrent inserts into 't1'. +# +# 2.5 DO with a subquery. +# +# In theory strong lock is not necessary as it is not logged. +# But in practice in 5.1 for almost everything except SELECT +# we take strong lock. +Success: 'do (select i from t1 where i = 1)' doesn't allow concurrent inserts into 't1'. +# +# 2.6 INSERT with a subquery. +# +# Has to take a strong lock on the table being read as +# this statement is written to the binary log and therefore +# should be serialized with concurrent inserts. +Success: 'insert into t2 select i+5 from t1' doesn't allow concurrent inserts into 't1'. +Success: 'insert into t2 values ((select i+5 from t1 where i = 4))' doesn't allow concurrent inserts into 't1'. +# +# 2.7 LOAD DATA with a subquery. +# +# The above is true for this statement as well. +Success: 'load data infile '../../std_data/rpl_loaddata.dat' into table t2 (@a, @b) set j= @b + (select i from t1 where i = 1)' doesn't allow concurrent inserts into 't1'. +# +# 2.8 REPLACE with a subquery. +# +# Same is true for this statement as well. +Success: 'replace into t2 select i+5 from t1' doesn't allow concurrent inserts into 't1'. +Success: 'replace into t2 values ((select i+5 from t1 where i = 4))' doesn't allow concurrent inserts into 't1'. +# +# 2.9 SELECT with a subquery. +# +# Strong locks are not necessary as this statement is not written +# to the binary log and thanks to how MyISAM works this statement +# sees a version of the table prior to the concurrent insert. +Success: 'select * from t2 where j in (select i from t1)' allows concurrent inserts into 't1'. +# +# 2.10 SET with a subquery. +# +# In theory the same is true for this statement as well. +# But in practice in 5.1 we acquire strong lock in this +# case as well. +Success: 'set @a:= (select i from t1 where i = 1)' doesn't allow concurrent inserts into 't1'. +# +# 2.11 SHOW with a subquery. +# +# The same is true for this statement too. +Success: 'show tables from test where Tables_in_test = 't2' and (select i from t1 where i = 1)' doesn't allow concurrent inserts into 't1'. +Success: 'show columns from t2 where (select i from t1 where i = 1)' doesn't allow concurrent inserts into 't1'. +# +# 2.12 UPDATE with a subquery. +# +# Has to take a strong lock on the table being read as +# this statement is written to the binary log and therefore +# should be serialized with concurrent inserts. +Success: 'update t2 set j= j-10 where j in (select i from t1)' doesn't allow concurrent inserts into 't1'. +# +# 2.13 MULTI-UPDATE with a subquery. +# +# Same is true for this statement as well. +Success: 'update t2, t3 set j= j -10 where j=k and j in (select i from t1)' doesn't allow concurrent inserts into 't1'. +# +# 3. Statements which read tables through a view. +# +# +# 3.1 SELECT statement which uses some table through a view. +# +# Since this statement is not written to the binary log and +# an old version of the table is accessible thanks to how MyISAM +# handles concurrent insert, no locking is necessary. +Success: 'select * from v1' allows concurrent inserts into 't1'. +Success: 'select * from v2' allows concurrent inserts into 't1'. +Success: 'select * from t2 where j in (select i from v1)' allows concurrent inserts into 't1'. +Success: 'select * from t3 where k in (select j from v2)' allows concurrent inserts into 't1'. +# +# 3.2 Statements which modify a table and use views. +# +# Since such statements are going to be written to the binary +# log they need to be serialized against concurrent statements +# and therefore should take strong locks on the data read. +Success: 'update t2 set j= j-10 where j in (select i from v1)' doesn't allow concurrent inserts into 't1'. +Success: 'update t3 set k= k-10 where k in (select j from v2)' doesn't allow concurrent inserts into 't1'. +Success: 'update t2, v1 set j= j-10 where j = i' doesn't allow concurrent inserts into 't1'. +Success: 'update v2 set j= j-10 where j = 3' doesn't allow concurrent inserts into 't1'. +# +# 4. Statements which read tables through stored functions. +# +# +# 4.1 SELECT/SET with a stored function which does not +# modify data and uses SELECT in its turn. +# +# Calls to such functions won't get into the binary log and +# thus don't need to acquire strong locks. +# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +# used stored functions may lead to broken SBR" strong locks +# are taken (we accepted it as a trade-off for this fix). +Success: 'select f1()' allows concurrent inserts into 't1'. +Success: 'set @a:= f1()' allows concurrent inserts into 't1'. +# +# 4.2 INSERT (or other statement which modifies data) with +# a stored function which does not modify data and uses +# SELECT. +# +# Since such statement is written to the binary log it should +# be serialized with concurrent statements affecting the data +# it uses. Therefore it should take strong lock on the data +# it reads. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken. +Success: 'insert into t2 values (f1() + 5)' allows concurrent inserts into 't1'. +# +# 4.3 SELECT/SET with a stored function which +# reads and modifies data. +# +# Since a call to such function is written to the binary log, +# it should be serialized with concurrent statements affecting +# the data it uses. Hence, a strong lock on the data read +# should be taken. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken. +Success: 'select f2()' allows concurrent inserts into 't1'. +Success: 'set @a:= f2()' allows concurrent inserts into 't1'. +# +# 4.4. SELECT/SET with a stored function which does not +# modify data and reads a table through subselect +# in a control construct. +# +# Again, in theory a call to this function won't get to the +# binary log and thus no strong lock is needed. But in practice +# we don't detect this fact early enough (get_lock_type_for_table()) +# to avoid taking a strong lock. +Success: 'select f3()' doesn't allow concurrent inserts into 't1'. +Success: 'set @a:= f3()' doesn't allow concurrent inserts into 't1'. +Success: 'select f4()' doesn't allow concurrent inserts into 't1'. +Success: 'set @a:= f4()' doesn't allow concurrent inserts into 't1'. +# +# 4.5. INSERT (or other statement which modifies data) with +# a stored function which does not modify data and reads +# the table through a subselect in one of its control +# constructs. +# +# Since such statement is written to the binary log it should +# be serialized with concurrent statements affecting data it +# uses. Therefore it should take a strong lock on the data +# it reads. +Success: 'insert into t2 values (f3() + 5)' doesn't allow concurrent inserts into 't1'. +Success: 'insert into t2 values (f4() + 6)' doesn't allow concurrent inserts into 't1'. +# +# 4.6 SELECT/SET which uses a stored function with +# DML which reads a table via a subquery. +# +# Since call to such function is written to the binary log +# it should be serialized with concurrent statements. +# Hence reads should take a strong lock. +Success: 'select f5()' doesn't allow concurrent inserts into 't1'. +Success: 'set @a:= f5()' doesn't allow concurrent inserts into 't1'. +# +# 4.7 SELECT/SET which uses a stored function which +# doesn't modify data and reads tables through +# a view. +# +# Once again, in theory, calls to such functions won't +# get into the binary log and thus don't need strong +# locks. In practice this fact is discovered +# too late to have any effect. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken +# in case when simple SELECT is used. +Success: 'select f6()' allows concurrent inserts into 't1'. +Success: 'set @a:= f6()' allows concurrent inserts into 't1'. +Success: 'select f7()' doesn't allow concurrent inserts into 't1'. +Success: 'set @a:= f7()' doesn't allow concurrent inserts into 't1'. +# +# 4.8 INSERT which uses stored function which +# doesn't modify data and reads a table +# through a view. +# +# Since such statement is written to the binary log and +# should be serialized with concurrent statements affecting +# the data it uses. Therefore it should take a strong lock on +# the table it reads. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken +# in case when simple SELECT is used. +Success: 'insert into t3 values (f6() + 5)' allows concurrent inserts into 't1'. +Success: 'insert into t3 values (f7() + 5)' doesn't allow concurrent inserts into 't1'. +# +# 4.9 SELECT which uses a stored function which +# modifies data and reads tables through a view. +# +# Since a call to such function is written to the binary log +# it should be serialized with concurrent statements. +# Hence, reads should take strong locks. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken +# in case when simple SELECT is used. +Success: 'select f8()' allows concurrent inserts into 't1'. +Success: 'select f9()' doesn't allow concurrent inserts into 't1'. +# +# 4.10 SELECT which uses a stored function which doesn't modify +# data and reads a table indirectly, by calling another +# function. +# +# Calls to such functions won't get into the binary log and +# thus don't need to acquire strong locks. +# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +# used stored functions may lead to broken SBR" strong locks +# are taken (we accepted it as a trade-off for this fix). +Success: 'select f10()' allows concurrent inserts into 't1'. +# +# 4.11 INSERT which uses a stored function which doesn't modify +# data and reads a table indirectly, by calling another +# function. +# +# Since such statement is written to the binary log, it should +# be serialized with concurrent statements affecting the data it +# uses. Therefore it should take strong locks on data it reads. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken. +Success: 'insert into t2 values (f10() + 5)' allows concurrent inserts into 't1'. +# +# 4.12 SELECT which uses a stored function which modifies +# data and reads a table indirectly, by calling another +# function. +# +# Since a call to such function is written to the binary log +# it should be serialized from concurrent statements. +# Hence, read should take a strong lock. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken. +Success: 'select f11()' allows concurrent inserts into 't1'. +# +# 4.13 SELECT that reads a table through a subquery passed +# as a parameter to a stored function which modifies +# data. +# +# Even though a call to this function is written to the +# binary log, values of its parameters are written as literals. +# So there is no need to acquire strong locks for tables used in +# the subquery. +Success: 'select f12((select i+10 from t1 where i=1))' allows concurrent inserts into 't1'. +# +# 4.14 INSERT that reads a table via a subquery passed +# as a parameter to a stored function which doesn't +# modify data. +# +# Since this statement is written to the binary log it should +# be serialized with concurrent statements affecting the data it +# uses. Therefore it should take strong locks on the data it reads. +Success: 'insert into t2 values (f13((select i+10 from t1 where i=1)))' doesn't allow concurrent inserts into 't1'. +# +# 5. Statements that read tables through stored procedures. +# +# +# 5.1 CALL statement which reads a table via SELECT. +# +# Since neither this statement nor its components are +# written to the binary log, there is no need to take +# strong locks on the data it reads. +Success: 'call p2(@a)' allows concurrent inserts into 't1'. +# +# 5.2 Function that modifies data and uses CALL, +# which reads a table through SELECT. +# +# Since a call to such function is written to the binary +# log, it should be serialized with concurrent statements. +# Hence, in this case reads should take strong locks on data. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken. +Success: 'select f14()' allows concurrent inserts into 't1'. +# +# 5.3 SELECT that calls a function that doesn't modify data and +# uses a CALL statement that reads a table via SELECT. +# +# Calls to such functions won't get into the binary log and +# thus don't need to acquire strong locks. +# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +# used stored functions may lead to broken SBR" strong locks +# are taken (we accepted it as a trade-off for this fix). +Success: 'select f15()' allows concurrent inserts into 't1'. +# +# 5.4 INSERT which calls function which doesn't modify data and +# uses CALL statement which reads table through SELECT. +# +# Since such statement is written to the binary log it should +# be serialized with concurrent statements affecting data it +# uses. Therefore it should take strong locks on data it reads. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken. +Success: 'insert into t2 values (f15()+5)' allows concurrent inserts into 't1'. +# +# 6. Statements that use triggers. +# +# +# 6.1 Statement invoking a trigger that reads table via SELECT. +# +# Since this statement is written to the binary log it should +# be serialized with concurrent statements affecting the data +# it uses. Therefore, it should take strong locks on the data +# it reads. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken. +Success: 'insert into t4 values (2)' allows concurrent inserts into 't1'. +# +# 6.2 Statement invoking a trigger that reads table through +# a subquery in a control construct. +# +# The above is true for this statement as well. +Success: 'update t4 set l= 2 where l = 1' doesn't allow concurrent inserts into 't1'. +# +# 6.3 Statement invoking a trigger that reads a table through +# a view. +# +# And for this statement. +Success: 'delete from t4 where l = 1' doesn't allow concurrent inserts into 't1'. +# +# 6.4 Statement invoking a trigger that reads a table through +# a stored function. +# +# And for this statement. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken. +Success: 'insert into t5 values (2)' allows concurrent inserts into 't1'. +# +# 6.5 Statement invoking a trigger that reads a table through +# stored procedure. +# +# And for this statement. +# But due to bug #53921 "Wrong locks for SELECTs used stored +# functions may lead to broken SBR" weak locks are taken. +Success: 'update t5 set l= 2 where l = 1' allows concurrent inserts into 't1'. +# Clean-up. +drop function f1; +drop function f2; +drop function f3; +drop function f4; +drop function f5; +drop function f6; +drop function f7; +drop function f8; +drop function f9; +drop function f10; +drop function f11; +drop function f12; +drop function f13; +drop function f14; +drop function f15; +drop view v1, v2; +drop procedure p1; +drop procedure p2; +drop table t1, t2, t3, t4, t5, te; +set @@global.concurrent_insert= @old_concurrent_insert; diff --git a/mysql-test/t/bug39022.test b/mysql-test/t/bug39022.test index 268b207e0e5..6056dbf0e7b 100644 --- a/mysql-test/t/bug39022.test +++ b/mysql-test/t/bug39022.test @@ -24,7 +24,7 @@ START TRANSACTION; connection thread2; --echo # in thread2 REPLACE INTO t2 VALUES (-17); -SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d); +SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE; connection thread1; --echo # in thread1 @@ -37,14 +37,14 @@ START TRANSACTION; REPLACE INTO t1(a,b) VALUES (65,-50); REPLACE INTO t2 VALUES (-91); send; -SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d); #waits +SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE; #waits connection thread1; --echo # in thread1 --echo # should not crash --error ER_LOCK_DEADLOCK -SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d); #crashes +SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE; #crashes connection thread2; --echo # in thread2 diff --git a/mysql-test/t/innodb_mysql_lock2.test b/mysql-test/t/innodb_mysql_lock2.test new file mode 100644 index 00000000000..79698bcd898 --- /dev/null +++ b/mysql-test/t/innodb_mysql_lock2.test @@ -0,0 +1,803 @@ +# This test covers behavior for InnoDB tables. +--source include/have_innodb.inc +# This test requires statement/mixed mode binary logging. +# Row-based mode puts weaker serializability requirements +# so weaker locks are acquired for it. +--source include/have_binlog_format_mixed_or_statement.inc +# Save the initial number of concurrent sessions. +--source include/count_sessions.inc + +--echo # +--echo # Test how do we handle locking in various cases when +--echo # we read data from InnoDB tables. +--echo # +--echo # In fact by performing this test we check two things: +--echo # 1) That SQL-layer correctly determine type of thr_lock.c +--echo # lock to be acquired/passed to InnoDB engine. +--echo # 2) That InnoDB engine correctly interprets this lock +--echo # type and takes necessary row locks or does not +--echo # take them if they are not necessary. +--echo # + +--echo # This test makes sense only in REPEATABLE-READ mode as +--echo # in SERIALIZABLE mode all statements that read data take +--echo # shared lock on them to enforce its semantics. +select @@session.tx_isolation; + +--echo # Prepare playground by creating tables, views, +--echo # routines and triggers used in tests. +connect (con1, localhost, root,,); +connection default; +--disable_warnings +drop table if exists t0, t1, t2, t3, t4, t5, te; +drop view if exists v1, v2; +drop procedure if exists p1; +drop procedure if exists p2; +drop function if exists f1; +drop function if exists f2; +drop function if exists f3; +drop function if exists f4; +drop function if exists f5; +drop function if exists f6; +drop function if exists f7; +drop function if exists f8; +drop function if exists f9; +drop function if exists f10; +drop function if exists f11; +drop function if exists f12; +drop function if exists f13; +drop function if exists f14; +drop function if exists f15; +--enable_warnings +create table t1 (i int primary key) engine=innodb; +insert into t1 values (1), (2), (3), (4), (5); +create table t2 (j int primary key) engine=innodb; +insert into t2 values (1), (2), (3), (4), (5); +create table t3 (k int primary key) engine=innodb; +insert into t3 values (1), (2), (3); +create table t4 (l int primary key) engine=innodb; +insert into t4 values (1); +create table t5 (l int primary key) engine=innodb; +insert into t5 values (1); +create table te(e int primary key); +insert into te values (1); +create view v1 as select i from t1; +create view v2 as select j from t2 where j in (select i from t1); +create procedure p1(k int) insert into t2 values (k); +delimiter |; +create function f1() returns int +begin + declare j int; + select i from t1 where i = 1 into j; + return j; +end| +create function f2() returns int +begin + declare k int; + select i from t1 where i = 1 into k; + insert into t2 values (k + 5); + return 0; +end| +create function f3() returns int +begin + return (select i from t1 where i = 3); +end| +create function f4() returns int +begin + if (select i from t1 where i = 3) then + return 1; + else + return 0; + end if; +end| +create function f5() returns int +begin + insert into t2 values ((select i from t1 where i = 1) + 5); + return 0; +end| +create function f6() returns int +begin + declare k int; + select i from v1 where i = 1 into k; + return k; +end| +create function f7() returns int +begin + declare k int; + select j from v2 where j = 1 into k; + return k; +end| +create function f8() returns int +begin + declare k int; + select i from v1 where i = 1 into k; + insert into t2 values (k+5); + return k; +end| +create function f9() returns int +begin + update v2 set j=j+10 where j=1; + return 1; +end| +create function f10() returns int +begin + return f1(); +end| +create function f11() returns int +begin + declare k int; + set k= f1(); + insert into t2 values (k+5); + return k; +end| +create function f12(p int) returns int +begin + insert into t2 values (p); + return p; +end| +create function f13(p int) returns int +begin + return p; +end| +create procedure p2(inout p int) +begin + select i from t1 where i = 1 into p; +end| +create function f14() returns int +begin + declare k int; + call p2(k); + insert into t2 values (k+5); + return k; +end| +create function f15() returns int +begin + declare k int; + call p2(k); + return k; +end| +create trigger t4_bi before insert on t4 for each row +begin + declare k int; + select i from t1 where i=1 into k; + set new.l= k+1; +end| +create trigger t4_bu before update on t4 for each row +begin + if (select i from t1 where i=1) then + set new.l= 2; + end if; +end| +--echo # Trigger below uses insertion of duplicate key in 'te' +--echo # table as a way to abort delete operation. +create trigger t4_bd before delete on t4 for each row +begin + if !(select i from v1 where i=1) then + insert into te values (1); + end if; +end| +create trigger t5_bi before insert on t5 for each row +begin + set new.l= f1()+1; +end| +create trigger t5_bu before update on t5 for each row +begin + declare j int; + call p2(j); + set new.l= j + 1; +end| +delimiter ;| + +--echo # +--echo # Set common variables to be used by scripts called below. +--echo # +let $con_aux= con1; +let $table= t1; + + +--echo # +--echo # 1. Statements that read tables and do not use subqueries. +--echo # + +--echo # +--echo # 1.1 Simple SELECT statement. +--echo # +--echo # No locks are necessary as this statement won't be written +--echo # to the binary log and InnoDB supports snapshots. +let $statement= select * from t1; +--source include/check_no_row_lock.inc + +--echo # +--echo # 1.2 Multi-UPDATE statement. +--echo # +--echo # Has to take shared locks on rows in the table being read as this +--echo # statement will be written to the binary log and therefore should +--echo # be serialized with concurrent statements. +let $statement= update t2, t1 set j= j - 1 where i = j; +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 1.3 Multi-DELETE statement. +--echo # +--echo # The above is true for this statement as well. +let $statement= delete t2 from t1, t2 where i = j; +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 1.4 DESCRIBE statement. +--echo # +--echo # This statement does not really read data from the +--echo # target table and thus does not take any lock on it. +--echo # We check this for completeness of coverage. +let $statement= describe t1; +--source include/check_no_row_lock.inc + +--echo # +--echo # 1.5 SHOW statements. +--echo # +--echo # The above is true for SHOW statements as well. +let $statement= show create table t1; +--source include/check_no_row_lock.inc +let $statement= show keys from t1; +--source include/check_no_row_lock.inc + + +--echo # +--echo # 2. Statements which read tables through subqueries. +--echo # + +--echo # +--echo # 2.1 CALL with a subquery. +--echo # +--echo # A strong lock is not necessary as this statement is not +--echo # written to the binary log as a whole (it is written +--echo # statement-by-statement) and thanks to MVCC we can always get +--echo # versions of rows prior to the update that has locked them. +--echo # But in practice InnoDB does locking reads for all statements +--echo # other than SELECT (unless it is a READ-COMITTED mode or +--echo # innodb_locks_unsafe_for_binlog is ON). +let $statement= call p1((select i + 5 from t1 where i = 1)); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 2.2 CREATE TABLE with a subquery. +--echo # +--echo # Has to take shared locks on rows in the table being read as +--echo # this statement is written to the binary log and therefore +--echo # should be serialized with concurrent statements. +let $statement= create table t0 engine=innodb select * from t1; +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +drop table t0; +let $statement= create table t0 engine=innodb select j from t2 where j in (select i from t1); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +drop table t0; + +--echo # +--echo # 2.3 DELETE with a subquery. +--echo # +--echo # The above is true for this statement as well. +let $statement= delete from t2 where j in (select i from t1); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 2.4 MULTI-DELETE with a subquery. +--echo # +--echo # Same is true for this statement as well. +let $statement= delete t2 from t3, t2 where k = j and j in (select i from t1); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 2.5 DO with a subquery. +--echo # +--echo # In theory should not take row locks as it is not logged. +--echo # In practice InnoDB takes shared row locks. +let $statement= do (select i from t1 where i = 1); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 2.6 INSERT with a subquery. +--echo # +--echo # Has to take shared locks on rows in the table being read as +--echo # this statement is written to the binary log and therefore +--echo # should be serialized with concurrent statements. +let $statement= insert into t2 select i+5 from t1; +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +let $statement= insert into t2 values ((select i+5 from t1 where i = 4)); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 2.7 LOAD DATA with a subquery. +--echo # +--echo # The above is true for this statement as well. +let $statement= load data infile '../../std_data/rpl_loaddata.dat' into table t2 (@a, @b) set j= @b + (select i from t1 where i = 1); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 2.8 REPLACE with a subquery. +--echo # +--echo # Same is true for this statement as well. +let $statement= replace into t2 select i+5 from t1; +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +let $statement= replace into t2 values ((select i+5 from t1 where i = 4)); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 2.9 SELECT with a subquery. +--echo # +--echo # Locks are not necessary as this statement is not written +--echo # to the binary log and thanks to MVCC we can always get +--echo # versions of rows prior to the update that has locked them. +--echo # +--echo # Also serves as a test case for bug #46947 "Embedded SELECT +--echo # without FOR UPDATE is causing a lock". +let $statement= select * from t2 where j in (select i from t1); +--source include/check_no_row_lock.inc + +--echo # +--echo # 2.10 SET with a subquery. +--echo # +--echo # In theory should not require locking as it is not written +--echo # to the binary log. In practice InnoDB acquires shared row +--echo # locks. +let $statement= set @a:= (select i from t1 where i = 1); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 2.11 SHOW with a subquery. +--echo # +--echo # Similarly to the previous case, in theory should not require locking +--echo # as it is not written to the binary log. In practice InnoDB +--echo # acquires shared row locks. +let $statement= show tables from test where Tables_in_test = 't2' and (select i from t1 where i = 1); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +let $statement= show columns from t2 where (select i from t1 where i = 1); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 2.12 UPDATE with a subquery. +--echo # +--echo # Has to take shared locks on rows in the table being read as +--echo # this statement is written to the binary log and therefore +--echo # should be serialized with concurrent statements. +let $statement= update t2 set j= j-10 where j in (select i from t1); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 2.13 MULTI-UPDATE with a subquery. +--echo # +--echo # Same is true for this statement as well. +let $statement= update t2, t3 set j= j -10 where j=k and j in (select i from t1); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + + +--echo # +--echo # 3. Statements which read tables through a view. +--echo # + +--echo # +--echo # 3.1 SELECT statement which uses some table through a view. +--echo # +--echo # Since this statement is not written to the binary log +--echo # and old version of rows are accessible thanks to MVCC, +--echo # no locking is necessary. +let $statement= select * from v1; +--source include/check_no_row_lock.inc +let $statement= select * from v2; +--source include/check_no_row_lock.inc +let $statement= select * from t2 where j in (select i from v1); +--source include/check_no_row_lock.inc +let $statement= select * from t3 where k in (select j from v2); +--source include/check_no_row_lock.inc + +--echo # +--echo # 3.2 Statements which modify a table and use views. +--echo # +--echo # Since such statements are going to be written to the binary +--echo # log they need to be serialized against concurrent statements +--echo # and therefore should take shared row locks on data read. +let $statement= update t2 set j= j-10 where j in (select i from v1); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +let $statement= update t3 set k= k-10 where k in (select j from v2); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +let $statement= update t2, v1 set j= j-10 where j = i; +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +let $statement= update v2 set j= j-10 where j = 3; +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + + +--echo # +--echo # 4. Statements which read tables through stored functions. +--echo # + +--echo # +--echo # 4.1 SELECT/SET with a stored function which does not +--echo # modify data and uses SELECT in its turn. +--echo # +--echo # Calls to such functions won't get into the binary log and +--echo # thus don't need to acquire strong locks. +--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +--echo # used stored functions may lead to broken SBR" strong locks +--echo # are taken (we accepted it as a trade-off for this fix). +let $statement= select f1(); +let $wait_statement= select i from t1 where i = 1 into j; +--source include/check_no_row_lock.inc +let $statement= set @a:= f1(); +let $wait_statement= select i from t1 where i = 1 into j; +--source include/check_no_row_lock.inc + +--echo # +--echo # 4.2 INSERT (or other statement which modifies data) with +--echo # a stored function which does not modify data and uses +--echo # SELECT. +--echo # +--echo # Since such statement is written to the binary log it should +--echo # be serialized with concurrent statements affecting the data +--echo # it uses. Therefore it should take row locks on the data +--echo # it reads. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken. +let $statement= insert into t2 values (f1() + 5); +let $wait_statement= select i from t1 where i = 1 into j; +--source include/check_no_row_lock.inc + +--echo # +--echo # 4.3 SELECT/SET with a stored function which +--echo # reads and modifies data. +--echo # +--echo # Since a call to such function is written to the binary log, +--echo # it should be serialized with concurrent statements affecting +--echo # the data it uses. Hence, row locks on the data read +--echo # should be taken. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken. +let $statement= select f2(); +let $wait_statement= select i from t1 where i = 1 into k; +--source include/check_no_row_lock.inc +let $statement= set @a:= f2(); +let $wait_statement= select i from t1 where i = 1 into k; +--source include/check_no_row_lock.inc + +--echo # +--echo # 4.4. SELECT/SET with a stored function which does not +--echo # modify data and reads a table through subselect +--echo # in a control construct. +--echo # +--echo # Again, in theory a call to this function won't get to the +--echo # binary log and thus no locking is needed. But in practice +--echo # we don't detect this fact early enough (get_lock_type_for_table()) +--echo # to avoid taking row locks. +let $statement= select f3(); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +let $statement= set @a:= f3(); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +let $statement= select f4(); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +let $statement= set @a:= f4(); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 4.5. INSERT (or other statement which modifies data) with +--echo # a stored function which does not modify data and reads +--echo # the table through a subselect in one of its control +--echo # constructs. +--echo # +--echo # Since such statement is written to the binary log it should +--echo # be serialized with concurrent statements affecting data it +--echo # uses. Therefore it should take row locks on the data +--echo # it reads. +let $statement= insert into t2 values (f3() + 5); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc +let $statement= insert into t2 values (f4() + 6); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 4.6 SELECT/SET which uses a stored function with +--echo # DML which reads a table via a subquery. +--echo # +--echo # Since call to such function is written to the binary log +--echo # it should be serialized with concurrent statements. +--echo # Hence reads should take row locks. +let $statement= select f5(); +let $wait_statement= insert into t2 values ((select i from t1 where i = 1) + 5); +--source include/check_shared_row_lock.inc +let $statement= set @a:= f5(); +let $wait_statement= insert into t2 values ((select i from t1 where i = 1) + 5); +--source include/check_shared_row_lock.inc + +--echo # +--echo # 4.7 SELECT/SET which uses a stored function which +--echo # doesn't modify data and reads tables through +--echo # a view. +--echo # +--echo # Once again, in theory, calls to such functions won't +--echo # get into the binary log and thus don't need row +--echo # locks. In practice this fact is discovered +--echo # too late to have any effect. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken +--echo # in case of simple SELECT. +let $statement= select f6(); +let $wait_statement= select i from v1 where i = 1 into k; +--source include/check_no_row_lock.inc +let $statement= set @a:= f6(); +let $wait_statement= select i from v1 where i = 1 into k; +--source include/check_no_row_lock.inc +let $statement= select f7(); +let $wait_statement= select j from v2 where j = 1 into k; +--source include/check_shared_row_lock.inc +let $statement= set @a:= f7(); +let $wait_statement= select j from v2 where j = 1 into k; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 4.8 INSERT which uses stored function which +--echo # doesn't modify data and reads a table +--echo # through a view. +--echo # +--echo # Since such statement is written to the binary log and +--echo # should be serialized with concurrent statements affecting +--echo # the data it uses. Therefore it should take row locks on +--echo # the rows it reads. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken +--echo # in case of simple SELECT. +let $statement= insert into t3 values (f6() + 5); +let $wait_statement= select i from v1 where i = 1 into k; +--source include/check_no_row_lock.inc +let $statement= insert into t3 values (f7() + 5); +let $wait_statement= select j from v2 where j = 1 into k; +--source include/check_shared_row_lock.inc + + +--echo # +--echo # 4.9 SELECT which uses a stored function which +--echo # modifies data and reads tables through a view. +--echo # +--echo # Since a call to such function is written to the binary log +--echo # it should be serialized with concurrent statements. +--echo # Hence, reads should take row locks. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken +--echo # in case of simple SELECT. +let $statement= select f8(); +let $wait_statement= select i from v1 where i = 1 into k; +--source include/check_no_row_lock.inc +let $statement= select f9(); +let $wait_statement= update v2 set j=j+10 where j=1; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 4.10 SELECT which uses stored function which doesn't modify +--echo # data and reads a table indirectly, by calling another +--echo # function. +--echo # +--echo # Calls to such functions won't get into the binary log and +--echo # thus don't need to acquire strong locks. +--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +--echo # used stored functions may lead to broken SBR" strong locks +--echo # are taken (we accepted it as a trade-off for this fix). +let $statement= select f10(); +let $wait_statement= select i from t1 where i = 1 into j; +--source include/check_no_row_lock.inc + +--echo # +--echo # 4.11 INSERT which uses a stored function which doesn't modify +--echo # data and reads a table indirectly, by calling another +--echo # function. +--echo # +--echo # Since such statement is written to the binary log, it should +--echo # be serialized with concurrent statements affecting the data it +--echo # uses. Therefore it should take row locks on data it reads. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken. +let $statement= insert into t2 values (f10() + 5); +let $wait_statement= select i from t1 where i = 1 into j; +--source include/check_no_row_lock.inc + +--echo # +--echo # 4.12 SELECT which uses a stored function which modifies +--echo # data and reads a table indirectly, by calling another +--echo # function. +--echo # +--echo # Since a call to such function is written to the binary log +--echo # it should be serialized from concurrent statements. +--echo # Hence, reads should take row locks. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken. +let $statement= select f11(); +let $wait_statement= select i from t1 where i = 1 into j; +--source include/check_no_row_lock.inc + +--echo # +--echo # 4.13 SELECT that reads a table through a subquery passed +--echo # as a parameter to a stored function which modifies +--echo # data. +--echo # +--echo # Even though a call to this function is written to the +--echo # binary log, values of its parameters are written as literals. +--echo # So there is no need to acquire row locks on rows used in +--echo # the subquery. +--echo # But due to the fact that in 5.1 for prelocked statements +--echo # THD::in_lock_tables is set to TRUE we acquire strong locks +--echo # (see also bug#44613 "SELECT statement inside FUNCTION takes +--echo # a shared lock" [sic!!!]). +let $statement= select f12((select i+10 from t1 where i=1)); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 4.14 INSERT that reads a table via a subquery passed +--echo # as a parameter to a stored function which doesn't +--echo # modify data. +--echo # +--echo # Since this statement is written to the binary log it should +--echo # be serialized with concurrent statements affecting the data it +--echo # uses. Therefore it should take row locks on the data it reads. +let $statement= insert into t2 values (f13((select i+10 from t1 where i=1))); +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + + +--echo # +--echo # 5. Statements that read tables through stored procedures. +--echo # + +--echo # +--echo # 5.1 CALL statement which reads a table via SELECT. +--echo # +--echo # Since neither this statement nor its components are +--echo # written to the binary log, there is no need to take +--echo # row locks on the data it reads. +let $statement= call p2(@a); +--source include/check_no_row_lock.inc + +--echo # +--echo # 5.2 Function that modifies data and uses CALL, +--echo # which reads a table through SELECT. +--echo # +--echo # Since a call to such function is written to the binary +--echo # log, it should be serialized with concurrent statements. +--echo # Hence, in this case reads should take row locks on data. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken. +let $statement= select f14(); +let $wait_statement= select i from t1 where i = 1 into p; +--source include/check_no_row_lock.inc + +--echo # +--echo # 5.3 SELECT that calls a function that doesn't modify data and +--echo # uses a CALL statement that reads a table via SELECT. +--echo # +--echo # Calls to such functions won't get into the binary log and +--echo # thus don't need to acquire strong locks. +--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +--echo # used stored functions may lead to broken SBR" strong locks +--echo # are taken (we accepted it as a trade-off for this fix). +let $statement= select f15(); +let $wait_statement= select i from t1 where i = 1 into p; +--source include/check_no_row_lock.inc + +--echo # +--echo # 5.4 INSERT which calls function which doesn't modify data and +--echo # uses CALL statement which reads table through SELECT. +--echo # +--echo # Since such statement is written to the binary log it should +--echo # be serialized with concurrent statements affecting data it +--echo # uses. Therefore it should take row locks on data it reads. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken. +let $statement= insert into t2 values (f15()+5); +let $wait_statement= select i from t1 where i = 1 into p; +--source include/check_no_row_lock.inc + + +--echo # +--echo # 6. Statements that use triggers. +--echo # + +--echo # +--echo # 6.1 Statement invoking a trigger that reads table via SELECT. +--echo # +--echo # Since this statement is written to the binary log it should +--echo # be serialized with concurrent statements affecting the data +--echo # it uses. Therefore, it should take row locks on the data +--echo # it reads. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken. +let $statement= insert into t4 values (2); +let $wait_statement= select i from t1 where i=1 into k; +--source include/check_no_row_lock.inc + +--echo # +--echo # 6.2 Statement invoking a trigger that reads table through +--echo # a subquery in a control construct. +--echo # +--echo # The above is true for this statement as well. +let $statement= update t4 set l= 2 where l = 1; +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 6.3 Statement invoking a trigger that reads a table through +--echo # a view. +--echo # +--echo # And for this statement. +let $statement= delete from t4 where l = 1; +let $wait_statement= $statement; +--source include/check_shared_row_lock.inc + +--echo # +--echo # 6.4 Statement invoking a trigger that reads a table through +--echo # a stored function. +--echo # +--echo # And for this statement. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken. +let $statement= insert into t5 values (2); +let $wait_statement= select i from t1 where i = 1 into j; +--source include/check_no_row_lock.inc + +--echo # +--echo # 6.5 Statement invoking a trigger that reads a table through +--echo # stored procedure. +--echo # +--echo # And for this statement. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" no lock is taken. +let $statement= update t5 set l= 2 where l = 1; +let $wait_statement= select i from t1 where i = 1 into p; +--source include/check_no_row_lock.inc + +--echo # Clean-up. +drop function f1; +drop function f2; +drop function f3; +drop function f4; +drop function f5; +drop function f6; +drop function f7; +drop function f8; +drop function f9; +drop function f10; +drop function f11; +drop function f12; +drop function f13; +drop function f14; +drop function f15; +drop view v1, v2; +drop procedure p1; +drop procedure p2; +drop table t1, t2, t3, t4, t5, te; +disconnect con1; + +# Check that all connections opened by test cases in this file are really +# gone so execution of other tests won't be affected by their presence. +--source include/wait_until_count_sessions.inc diff --git a/mysql-test/t/lock_sync.test b/mysql-test/t/lock_sync.test new file mode 100644 index 00000000000..17f8abb75f3 --- /dev/null +++ b/mysql-test/t/lock_sync.test @@ -0,0 +1,867 @@ +# +# Locking related tests which use DEBUG_SYNC facility. +# +--source include/have_debug_sync.inc +# This test requires statement/mixed mode binary logging. +# Row-based mode puts weaker serializability requirements +# so weaker locks are acquired for it. +--source include/have_binlog_format_mixed_or_statement.inc + +# Save the initial number of concurrent sessions. +--source include/count_sessions.inc + + +--echo # +--echo # Test how we handle locking in various cases when +--echo # we read data from MyISAM tables. +--echo # +--echo # In this test we mostly check that the SQL-layer correctly +--echo # determines the type of thr_lock.c lock for a table being +--echo # read. +--echo # I.e. that it disallows concurrent inserts when the statement +--echo # is going to be written to the binary log and therefore +--echo # should be serialized, and allows concurrent inserts when +--echo # such serialization is not necessary (e.g. when +--echo # the statement is not written to binary log). +--echo # + +--echo # Force concurrent inserts to be performed even if the table +--echo # has gaps. This allows to simplify clean up in scripts +--echo # used below (instead of backing up table being inserted +--echo # into and then restoring it from backup at the end of the +--echo # script we can simply delete rows which were inserted). +set @old_concurrent_insert= @@global.concurrent_insert; +set @@global.concurrent_insert= 2; +select @@global.concurrent_insert; + +--echo # Prepare playground by creating tables, views, +--echo # routines and triggers used in tests. +connect (con1, localhost, root,,); +connect (con2, localhost, root,,); +connection default; +--disable_warnings +drop table if exists t0, t1, t2, t3, t4, t5, te; +drop view if exists v1, v2; +drop procedure if exists p1; +drop procedure if exists p2; +drop function if exists f1; +drop function if exists f2; +drop function if exists f3; +drop function if exists f4; +drop function if exists f5; +drop function if exists f6; +drop function if exists f7; +drop function if exists f8; +drop function if exists f9; +drop function if exists f10; +drop function if exists f11; +drop function if exists f12; +drop function if exists f13; +drop function if exists f14; +drop function if exists f15; +--enable_warnings +create table t1 (i int primary key); +insert into t1 values (1), (2), (3), (4), (5); +create table t2 (j int primary key); +insert into t2 values (1), (2), (3), (4), (5); +create table t3 (k int primary key); +insert into t3 values (1), (2), (3); +create table t4 (l int primary key); +insert into t4 values (1); +create table t5 (l int primary key); +insert into t5 values (1); +create table te(e int primary key); +insert into te values (1); +create view v1 as select i from t1; +create view v2 as select j from t2 where j in (select i from t1); +create procedure p1(k int) insert into t2 values (k); +delimiter |; +create function f1() returns int +begin + declare j int; + select i from t1 where i = 1 into j; + return j; +end| +create function f2() returns int +begin + declare k int; + select i from t1 where i = 1 into k; + insert into t2 values (k + 5); + return 0; +end| +create function f3() returns int +begin + return (select i from t1 where i = 3); +end| +create function f4() returns int +begin + if (select i from t1 where i = 3) then + return 1; + else + return 0; + end if; +end| +create function f5() returns int +begin + insert into t2 values ((select i from t1 where i = 1) + 5); + return 0; +end| +create function f6() returns int +begin + declare k int; + select i from v1 where i = 1 into k; + return k; +end| +create function f7() returns int +begin + declare k int; + select j from v2 where j = 1 into k; + return k; +end| +create function f8() returns int +begin + declare k int; + select i from v1 where i = 1 into k; + insert into t2 values (k+5); + return k; +end| +create function f9() returns int +begin + update v2 set j=j+10 where j=1; + return 1; +end| +create function f10() returns int +begin + return f1(); +end| +create function f11() returns int +begin + declare k int; + set k= f1(); + insert into t2 values (k+5); + return k; +end| +create function f12(p int) returns int +begin + insert into t2 values (p); + return p; +end| +create function f13(p int) returns int +begin + return p; +end| +create procedure p2(inout p int) +begin + select i from t1 where i = 1 into p; +end| +create function f14() returns int +begin + declare k int; + call p2(k); + insert into t2 values (k+5); + return k; +end| +create function f15() returns int +begin + declare k int; + call p2(k); + return k; +end| +create trigger t4_bi before insert on t4 for each row +begin + declare k int; + select i from t1 where i=1 into k; + set new.l= k+1; +end| +create trigger t4_bu before update on t4 for each row +begin + if (select i from t1 where i=1) then + set new.l= 2; + end if; +end| +--echo # Trigger below uses insertion of duplicate key in 'te' +--echo # table as a way to abort delete operation. +create trigger t4_bd before delete on t4 for each row +begin + if !(select i from v1 where i=1) then + insert into te values (1); + end if; +end| +create trigger t5_bi before insert on t5 for each row +begin + set new.l= f1()+1; +end| +create trigger t5_bu before update on t5 for each row +begin + declare j int; + call p2(j); + set new.l= j + 1; +end| +delimiter ;| + +--echo # +--echo # Set common variables to be used by the scripts +--echo # called below. +--echo # +let $con_aux1= con1; +let $con_aux2= con2; +let $table= t1; + +--echo # Switch to connection 'con1'. +connection con1; +--echo # Cache all functions used in the tests below so statements +--echo # calling them won't need to open and lock mysql.proc table +--echo # and we can assume that each statement locks its tables +--echo # once during its execution. +--disable_result_log +show create procedure p1; +show create procedure p2; +show create function f1; +show create function f2; +show create function f3; +show create function f4; +show create function f5; +show create function f6; +show create function f7; +show create function f8; +show create function f9; +show create function f10; +show create function f11; +show create function f12; +show create function f13; +show create function f14; +show create function f15; +--enable_result_log +--echo # Switch back to connection 'default'. +connection default; + +--echo # +--echo # 1. Statements that read tables and do not use subqueries. +--echo # + +--echo # +--echo # 1.1 Simple SELECT statement. +--echo # +--echo # No locks are necessary as this statement won't be written +--echo # to the binary log and thanks to how MyISAM works SELECT +--echo # will see version of the table prior to concurrent insert. +let $statement= select * from t1; +let $restore_table= ; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 1.2 Multi-UPDATE statement. +--echo # +--echo # Has to take shared locks on rows in the table being read as this +--echo # statement will be written to the binary log and therefore should +--echo # be serialized with concurrent statements. +let $statement= update t2, t1 set j= j - 1 where i = j; +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 1.3 Multi-DELETE statement. +--echo # +--echo # The above is true for this statement as well. +let $statement= delete t2 from t1, t2 where i = j; +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 1.4 DESCRIBE statement. +--echo # +--echo # This statement does not really read data from the +--echo # target table and thus does not take any lock on it. +--echo # We check this for completeness of coverage. +lock table t1 write; +--echo # Switching to connection 'con1'. +connection con1; +--echo # This statement should not be blocked. +--disable_result_log +describe t1; +--enable_result_log +--echo # Switching to connection 'default'. +connection default; +unlock tables; + +--echo # +--echo # 1.5 SHOW statements. +--echo # +--echo # The above is true for SHOW statements as well. +lock table t1 write; +--echo # Switching to connection 'con1'. +connection con1; +--echo # These statements should not be blocked. +# The below test for SHOW CREATE TABLE is disabled until bug 52593 +# "SHOW CREATE TABLE is blocked if table is locked for write by another +# connection" is fixed. +--disable_parsing +show create table t1; +--enable_parsing +--disable_result_log +show keys from t1; +--enable_result_log +--echo # Switching to connection 'default'. +connection default; +unlock tables; + + +--echo # +--echo # 2. Statements which read tables through subqueries. +--echo # + +--echo # +--echo # 2.1 CALL with a subquery. +--echo # +--echo # In theory strong lock is not necessary as this statement +--echo # is not written to the binary log as a whole (it is written +--echo # statement-by-statement). But in practice in 5.1 for +--echo # almost everything except SELECT we take strong lock. +let $statement= call p1((select i + 5 from t1 where i = 1)); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 2.2 CREATE TABLE with a subquery. +--echo # +--echo # Has to take a strong lock on the table being read as +--echo # this statement is written to the binary log and therefore +--echo # should be serialized with concurrent statements. +let $statement= create table t0 select * from t1; +let $restore_table= ; +--source include/check_no_concurrent_insert.inc +drop table t0; +let $statement= create table t0 select j from t2 where j in (select i from t1); +let $restore_table= ; +--source include/check_no_concurrent_insert.inc +drop table t0; + +--echo # +--echo # 2.3 DELETE with a subquery. +--echo # +--echo # The above is true for this statement as well. +let $statement= delete from t2 where j in (select i from t1); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 2.4 MULTI-DELETE with a subquery. +--echo # +--echo # Same is true for this statement as well. +let $statement= delete t2 from t3, t2 where k = j and j in (select i from t1); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + + +--echo # +--echo # 2.5 DO with a subquery. +--echo # +--echo # In theory strong lock is not necessary as it is not logged. +--echo # But in practice in 5.1 for almost everything except SELECT +--echo # we take strong lock. +let $statement= do (select i from t1 where i = 1); +let $restore_table= ; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 2.6 INSERT with a subquery. +--echo # +--echo # Has to take a strong lock on the table being read as +--echo # this statement is written to the binary log and therefore +--echo # should be serialized with concurrent inserts. +let $statement= insert into t2 select i+5 from t1; +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc +let $statement= insert into t2 values ((select i+5 from t1 where i = 4)); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 2.7 LOAD DATA with a subquery. +--echo # +--echo # The above is true for this statement as well. +let $statement= load data infile '../../std_data/rpl_loaddata.dat' into table t2 (@a, @b) set j= @b + (select i from t1 where i = 1); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 2.8 REPLACE with a subquery. +--echo # +--echo # Same is true for this statement as well. +let $statement= replace into t2 select i+5 from t1; +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc +let $statement= replace into t2 values ((select i+5 from t1 where i = 4)); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 2.9 SELECT with a subquery. +--echo # +--echo # Strong locks are not necessary as this statement is not written +--echo # to the binary log and thanks to how MyISAM works this statement +--echo # sees a version of the table prior to the concurrent insert. +let $statement= select * from t2 where j in (select i from t1); +let $restore_table= ; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 2.10 SET with a subquery. +--echo # +--echo # In theory the same is true for this statement as well. +--echo # But in practice in 5.1 we acquire strong lock in this +--echo # case as well. +let $statement= set @a:= (select i from t1 where i = 1); +let $restore_table= ; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 2.11 SHOW with a subquery. +--echo # +--echo # The same is true for this statement too. +let $statement= show tables from test where Tables_in_test = 't2' and (select i from t1 where i = 1); +let $restore_table= ; +--source include/check_no_concurrent_insert.inc +let $statement= show columns from t2 where (select i from t1 where i = 1); +let $restore_table= ; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 2.12 UPDATE with a subquery. +--echo # +--echo # Has to take a strong lock on the table being read as +--echo # this statement is written to the binary log and therefore +--echo # should be serialized with concurrent inserts. +let $statement= update t2 set j= j-10 where j in (select i from t1); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 2.13 MULTI-UPDATE with a subquery. +--echo # +--echo # Same is true for this statement as well. +let $statement= update t2, t3 set j= j -10 where j=k and j in (select i from t1); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + + +--echo # +--echo # 3. Statements which read tables through a view. +--echo # + +--echo # +--echo # 3.1 SELECT statement which uses some table through a view. +--echo # +--echo # Since this statement is not written to the binary log and +--echo # an old version of the table is accessible thanks to how MyISAM +--echo # handles concurrent insert, no locking is necessary. +let $statement= select * from v1; +let $restore_table= ; +--source include/check_concurrent_insert.inc +let $statement= select * from v2; +let $restore_table= ; +--source include/check_concurrent_insert.inc +let $statement= select * from t2 where j in (select i from v1); +let $restore_table= ; +--source include/check_concurrent_insert.inc +let $statement= select * from t3 where k in (select j from v2); +let $restore_table= ; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 3.2 Statements which modify a table and use views. +--echo # +--echo # Since such statements are going to be written to the binary +--echo # log they need to be serialized against concurrent statements +--echo # and therefore should take strong locks on the data read. +let $statement= update t2 set j= j-10 where j in (select i from v1); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc +let $statement= update t3 set k= k-10 where k in (select j from v2); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc +let $statement= update t2, v1 set j= j-10 where j = i; +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc +let $statement= update v2 set j= j-10 where j = 3; +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + + +--echo # +--echo # 4. Statements which read tables through stored functions. +--echo # + +--echo # +--echo # 4.1 SELECT/SET with a stored function which does not +--echo # modify data and uses SELECT in its turn. +--echo # +--echo # Calls to such functions won't get into the binary log and +--echo # thus don't need to acquire strong locks. +--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +--echo # used stored functions may lead to broken SBR" strong locks +--echo # are taken (we accepted it as a trade-off for this fix). +let $statement= select f1(); +let $restore_table= ; +--source include/check_concurrent_insert.inc +let $statement= set @a:= f1(); +let $restore_table= ; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 4.2 INSERT (or other statement which modifies data) with +--echo # a stored function which does not modify data and uses +--echo # SELECT. +--echo # +--echo # Since such statement is written to the binary log it should +--echo # be serialized with concurrent statements affecting the data +--echo # it uses. Therefore it should take strong lock on the data +--echo # it reads. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken. +let $statement= insert into t2 values (f1() + 5); +let $restore_table= t2; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 4.3 SELECT/SET with a stored function which +--echo # reads and modifies data. +--echo # +--echo # Since a call to such function is written to the binary log, +--echo # it should be serialized with concurrent statements affecting +--echo # the data it uses. Hence, a strong lock on the data read +--echo # should be taken. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken. +let $statement= select f2(); +let $restore_table= t2; +--source include/check_concurrent_insert.inc +let $statement= set @a:= f2(); +let $restore_table= t2; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 4.4. SELECT/SET with a stored function which does not +--echo # modify data and reads a table through subselect +--echo # in a control construct. +--echo # +--echo # Again, in theory a call to this function won't get to the +--echo # binary log and thus no strong lock is needed. But in practice +--echo # we don't detect this fact early enough (get_lock_type_for_table()) +--echo # to avoid taking a strong lock. +let $statement= select f3(); +let $restore_table= ; +--source include/check_no_concurrent_insert.inc +let $statement= set @a:= f3(); +let $restore_table= ; +--source include/check_no_concurrent_insert.inc +let $statement= select f4(); +let $restore_table= ; +--source include/check_no_concurrent_insert.inc +let $statement= set @a:= f4(); +let $restore_table= ; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 4.5. INSERT (or other statement which modifies data) with +--echo # a stored function which does not modify data and reads +--echo # the table through a subselect in one of its control +--echo # constructs. +--echo # +--echo # Since such statement is written to the binary log it should +--echo # be serialized with concurrent statements affecting data it +--echo # uses. Therefore it should take a strong lock on the data +--echo # it reads. +let $statement= insert into t2 values (f3() + 5); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc +let $statement= insert into t2 values (f4() + 6); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 4.6 SELECT/SET which uses a stored function with +--echo # DML which reads a table via a subquery. +--echo # +--echo # Since call to such function is written to the binary log +--echo # it should be serialized with concurrent statements. +--echo # Hence reads should take a strong lock. +let $statement= select f5(); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc +let $statement= set @a:= f5(); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 4.7 SELECT/SET which uses a stored function which +--echo # doesn't modify data and reads tables through +--echo # a view. +--echo # +--echo # Once again, in theory, calls to such functions won't +--echo # get into the binary log and thus don't need strong +--echo # locks. In practice this fact is discovered +--echo # too late to have any effect. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken +--echo # in case when simple SELECT is used. +let $statement= select f6(); +let $restore_table= t2; +--source include/check_concurrent_insert.inc +let $statement= set @a:= f6(); +let $restore_table= t2; +--source include/check_concurrent_insert.inc +let $statement= select f7(); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc +let $statement= set @a:= f7(); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 4.8 INSERT which uses stored function which +--echo # doesn't modify data and reads a table +--echo # through a view. +--echo # +--echo # Since such statement is written to the binary log and +--echo # should be serialized with concurrent statements affecting +--echo # the data it uses. Therefore it should take a strong lock on +--echo # the table it reads. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken +--echo # in case when simple SELECT is used. +let $statement= insert into t3 values (f6() + 5); +let $restore_table= t3; +--source include/check_concurrent_insert.inc +let $statement= insert into t3 values (f7() + 5); +let $restore_table= t3; +--source include/check_no_concurrent_insert.inc + + +--echo # +--echo # 4.9 SELECT which uses a stored function which +--echo # modifies data and reads tables through a view. +--echo # +--echo # Since a call to such function is written to the binary log +--echo # it should be serialized with concurrent statements. +--echo # Hence, reads should take strong locks. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken +--echo # in case when simple SELECT is used. +let $statement= select f8(); +let $restore_table= t2; +--source include/check_concurrent_insert.inc +let $statement= select f9(); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 4.10 SELECT which uses a stored function which doesn't modify +--echo # data and reads a table indirectly, by calling another +--echo # function. +--echo # +--echo # Calls to such functions won't get into the binary log and +--echo # thus don't need to acquire strong locks. +--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +--echo # used stored functions may lead to broken SBR" strong locks +--echo # are taken (we accepted it as a trade-off for this fix). +let $statement= select f10(); +let $restore_table= ; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 4.11 INSERT which uses a stored function which doesn't modify +--echo # data and reads a table indirectly, by calling another +--echo # function. +--echo # +--echo # Since such statement is written to the binary log, it should +--echo # be serialized with concurrent statements affecting the data it +--echo # uses. Therefore it should take strong locks on data it reads. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken. +let $statement= insert into t2 values (f10() + 5); +let $restore_table= t2; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 4.12 SELECT which uses a stored function which modifies +--echo # data and reads a table indirectly, by calling another +--echo # function. +--echo # +--echo # Since a call to such function is written to the binary log +--echo # it should be serialized from concurrent statements. +--echo # Hence, read should take a strong lock. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken. +let $statement= select f11(); +let $restore_table= t2; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 4.13 SELECT that reads a table through a subquery passed +--echo # as a parameter to a stored function which modifies +--echo # data. +--echo # +--echo # Even though a call to this function is written to the +--echo # binary log, values of its parameters are written as literals. +--echo # So there is no need to acquire strong locks for tables used in +--echo # the subquery. +let $statement= select f12((select i+10 from t1 where i=1)); +let $restore_table= t2; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 4.14 INSERT that reads a table via a subquery passed +--echo # as a parameter to a stored function which doesn't +--echo # modify data. +--echo # +--echo # Since this statement is written to the binary log it should +--echo # be serialized with concurrent statements affecting the data it +--echo # uses. Therefore it should take strong locks on the data it reads. +let $statement= insert into t2 values (f13((select i+10 from t1 where i=1))); +let $restore_table= t2; +--source include/check_no_concurrent_insert.inc + + +--echo # +--echo # 5. Statements that read tables through stored procedures. +--echo # + +--echo # +--echo # 5.1 CALL statement which reads a table via SELECT. +--echo # +--echo # Since neither this statement nor its components are +--echo # written to the binary log, there is no need to take +--echo # strong locks on the data it reads. +let $statement= call p2(@a); +let $restore_table= ; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 5.2 Function that modifies data and uses CALL, +--echo # which reads a table through SELECT. +--echo # +--echo # Since a call to such function is written to the binary +--echo # log, it should be serialized with concurrent statements. +--echo # Hence, in this case reads should take strong locks on data. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken. +let $statement= select f14(); +let $restore_table= t2; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 5.3 SELECT that calls a function that doesn't modify data and +--echo # uses a CALL statement that reads a table via SELECT. +--echo # +--echo # Calls to such functions won't get into the binary log and +--echo # thus don't need to acquire strong locks. +--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs +--echo # used stored functions may lead to broken SBR" strong locks +--echo # are taken (we accepted it as a trade-off for this fix). +let $statement= select f15(); +let $restore_table= ; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 5.4 INSERT which calls function which doesn't modify data and +--echo # uses CALL statement which reads table through SELECT. +--echo # +--echo # Since such statement is written to the binary log it should +--echo # be serialized with concurrent statements affecting data it +--echo # uses. Therefore it should take strong locks on data it reads. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken. +let $statement= insert into t2 values (f15()+5); +let $restore_table= t2; +--source include/check_concurrent_insert.inc + + +--echo # +--echo # 6. Statements that use triggers. +--echo # + +--echo # +--echo # 6.1 Statement invoking a trigger that reads table via SELECT. +--echo # +--echo # Since this statement is written to the binary log it should +--echo # be serialized with concurrent statements affecting the data +--echo # it uses. Therefore, it should take strong locks on the data +--echo # it reads. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken. +let $statement= insert into t4 values (2); +let $restore_table= t4; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 6.2 Statement invoking a trigger that reads table through +--echo # a subquery in a control construct. +--echo # +--echo # The above is true for this statement as well. +let $statement= update t4 set l= 2 where l = 1; +let $restore_table= t4; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 6.3 Statement invoking a trigger that reads a table through +--echo # a view. +--echo # +--echo # And for this statement. +let $statement= delete from t4 where l = 1; +let $restore_table= t4; +--source include/check_no_concurrent_insert.inc + +--echo # +--echo # 6.4 Statement invoking a trigger that reads a table through +--echo # a stored function. +--echo # +--echo # And for this statement. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken. +let $statement= insert into t5 values (2); +let $restore_table= t5; +--source include/check_concurrent_insert.inc + +--echo # +--echo # 6.5 Statement invoking a trigger that reads a table through +--echo # stored procedure. +--echo # +--echo # And for this statement. +--echo # But due to bug #53921 "Wrong locks for SELECTs used stored +--echo # functions may lead to broken SBR" weak locks are taken. +let $statement= update t5 set l= 2 where l = 1; +let $restore_table= t5; +--source include/check_concurrent_insert.inc + + +--echo # Clean-up. +drop function f1; +drop function f2; +drop function f3; +drop function f4; +drop function f5; +drop function f6; +drop function f7; +drop function f8; +drop function f9; +drop function f10; +drop function f11; +drop function f12; +drop function f13; +drop function f14; +drop function f15; +drop view v1, v2; +drop procedure p1; +drop procedure p2; +drop table t1, t2, t3, t4, t5, te; + +disconnect con1; +disconnect con2; + +set @@global.concurrent_insert= @old_concurrent_insert; + + +# Check that all connections opened by test cases in this file are really +# gone so execution of other tests won't be affected by their presence. +--source include/wait_until_count_sessions.inc diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index f61565fe6e7..44694c59447 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1288,7 +1288,8 @@ bool fix_merge_after_open(TABLE_LIST *old_child_list, TABLE_LIST **old_last, TABLE_LIST *new_child_list, TABLE_LIST **new_last); bool reopen_table(TABLE *table); bool reopen_tables(THD *thd,bool get_locks,bool in_refresh); -thr_lock_type read_lock_type_for_table(THD *thd, TABLE *table); +thr_lock_type read_lock_type_for_table(THD *thd, LEX *lex, + TABLE_LIST *table_list); void close_data_files_and_morph_locks(THD *thd, const char *db, const char *table_name); void close_handle_and_leave_table_as_lock(TABLE *table); diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 55d4ab0c20f..3a51b5c5610 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -4418,7 +4418,8 @@ bool fix_merge_after_open(TABLE_LIST *old_child_list, TABLE_LIST **old_last, Return a appropriate read lock type given a table object. @param thd Thread context - @param table TABLE object for table to be locked + @param lex LEX for the current statement. + @param table_list Table list element for table to be locked. @remark Due to a statement-based replication limitation, statements such as INSERT INTO .. SELECT FROM .. and CREATE TABLE .. SELECT FROM need @@ -4427,19 +4428,32 @@ bool fix_merge_after_open(TABLE_LIST *old_child_list, TABLE_LIST **old_last, source table. If such a statement gets applied on the slave before the INSERT .. SELECT statement finishes, data on the master could differ from data on the slave and end-up with a discrepancy between - the binary log and table state. Furthermore, this does not apply to - I_S and log tables as it's always unsafe to replicate such tables - under statement-based replication as the table on the slave might - contain other data (ie: general_log is enabled on the slave). The - statement will be marked as unsafe for SBR in decide_logging_format(). + the binary log and table state. + This also applies to SELECT/SET/DO statements which use stored + functions. Calls to such functions are going to be logged as a + whole and thus should be serialized against concurrent changes + to tables used by those functions. This can be avoided if functions + only read data but doing so requires more complex analysis than it + is done now (unfortunately, due to bug #53921 "Wrong locks for + SELECTs used stored functions may lead to broken SBR" this rule + is not followed in cases when stored function or trigger use + simple SELECT and not a subselect in their body). + Furthermore, this does not apply to I_S and log tables as it's + always unsafe to replicate such tables under statement-based + replication as the table on the slave might contain other data + (ie: general_log is enabled on the slave). The statement will + be marked as unsafe for SBR in decide_logging_format(). */ -thr_lock_type read_lock_type_for_table(THD *thd, TABLE *table) +thr_lock_type read_lock_type_for_table(THD *thd, LEX *lex, + TABLE_LIST *table_list) { bool log_on= mysql_bin_log.is_open() && (thd->options & OPTION_BIN_LOG); ulong binlog_format= thd->variables.binlog_format; if ((log_on == FALSE) || (binlog_format == BINLOG_FORMAT_ROW) || - (table->s->table_category == TABLE_CATEGORY_PERFORMANCE)) + (table_list->table->s->table_category == TABLE_CATEGORY_PERFORMANCE) || + (lex->sql_command == SQLCOM_SELECT && + ! table_list->prelocking_placeholder)) return TL_READ; else return TL_READ_NO_INSERT; @@ -4735,7 +4749,7 @@ int open_tables(THD *thd, TABLE_LIST **start, uint *counter, uint flags) tables->table->reginfo.lock_type= thd->update_lock_default; else if (tables->lock_type == TL_READ_DEFAULT) tables->table->reginfo.lock_type= - read_lock_type_for_table(thd, tables->table); + read_lock_type_for_table(thd, thd->lex, tables); else tables->table->reginfo.lock_type= tables->lock_type; } @@ -5389,6 +5403,8 @@ int lock_tables(THD *thd, TABLE_LIST *tables, uint count, bool *need_reopen) DBUG_RETURN(-1); } + DEBUG_SYNC(thd, "after_lock_tables_takes_lock"); + if (thd->lex->requires_prelocking() && thd->lex->sql_command != SQLCOM_LOCK_TABLES) { diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 7df0898e841..b2f2897c74e 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -1053,7 +1053,7 @@ reopen_tables: correct order of statements. Otherwise, we use a TL_READ lock to improve performance. */ - tl->lock_type= read_lock_type_for_table(thd, table); + tl->lock_type= read_lock_type_for_table(thd, lex, tl); tl->updating= 0; /* Update TABLE::lock_type accordingly. */ if (!tl->placeholder() && !using_lock_tables) From 3df7f6749a7448a0a55c4b122d2b921f652360dd Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 28 May 2010 10:57:45 +0800 Subject: [PATCH 096/461] Postfix for BUG#49741 Add code to waiting for a set of errors. Add code to waiting for an error instead of waiting for io thread to stop, as after 'START SLAVE', the status of io thread is still not running. But it doesn't mean slave io thread encounters an error. --- .../rpl_get_master_version_and_clock.test | 20 +++++++--------- .../include/wait_for_slave_io_error.inc | 23 ++++++++++++++----- .../r/rpl_get_master_version_and_clock.result | 2 -- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test b/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test index 6e750d57c56..66bd61a8ea9 100644 --- a/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test +++ b/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test @@ -68,19 +68,15 @@ eval SET DEBUG_SYNC=$debug_sync_action; # Show slave last IO errno connection slave; -source include/wait_for_slave_io_to_stop.inc; -let $last_io_errno= query_get_value("show slave status", Last_IO_Errno, 1); --echo Check network error happened here -if (`SELECT '$last_io_errno' = '2013' || # CR_SERVER_LOST - '$last_io_errno' = '2003' || # CR_CONN_HOST_ERROR - '$last_io_errno' = '2002' || # CR_CONNECTION_ERROR - '$last_io_errno' = '2006' || # CR_SERVER_GONE_ERROR - '$last_io_errno' = '1040' || # ER_CON_COUNT_ERROR - '$last_io_errno' = '1053' # ER_SERVER_SHUTDOWN - `) -{ - --echo NETWORK ERROR -} +# '2013' CR_SERVER_LOST +# '2003' CR_CONN_HOST_ERROR +# '2002' CR_CONNECTION_ERROR +# '2006' CR_SERVER_GONE_ERROR +# '1040' ER_CON_COUNT_ERROR +# '1053' ER_SERVER_SHUTDOWN +let $slave_io_errno= 1040, 1053, 2002, 2003, 2006, 2013; +source include/wait_for_slave_io_error.inc; # deactivate the sync point of get_master_version_and_clock() # now to avoid restarting IO-thread to re-enter it. diff --git a/mysql-test/include/wait_for_slave_io_error.inc b/mysql-test/include/wait_for_slave_io_error.inc index 101df69730c..34cbf20a73b 100644 --- a/mysql-test/include/wait_for_slave_io_error.inc +++ b/mysql-test/include/wait_for_slave_io_error.inc @@ -6,14 +6,21 @@ # # ==== Usage ==== # +# # Wait several errors. +# let $slave_io_errno= 1, 2, 3; +# source include/wait_for_slave_io_error.inc; +# +# # Print error message +# let $slave_io_errno= 1; +# let $show_slave_io_error= 1; # source include/wait_for_slave_io_error.inc; # # Parameters: # # $slave_io_errno -# The expected IO error number. This is required. +# The expected IO error numbers. This is required. # (After BUG#41956 has been fixed, this will be required to be a -# symbolic name instead of a number.) +# symbolic name instead of a numbers.) # # $show_slave_io_error # If set, will print the error to the query log. @@ -28,13 +35,17 @@ if (`SELECT '$slave_io_errno' = ''`) { --die !!!ERROR IN TEST: you must set \$slave_io_errno before sourcing wait_for_slave_io_error.inc } -let $slave_param= Slave_IO_Running; -let $slave_param_value= No; -let $slave_error_message= Failed while waiting for slave to stop the IO thread (expecting error in the IO thread); +let $old_slave_param_comparison= $slave_param_comparison; +let $slave_param= Last_IO_Errno; +let $slave_param_comparison= !=; +let $slave_param_value= 0; +let $slave_error_message= Failed while waiting for slave to produce an error in its sql thread; source include/wait_for_slave_param.inc; +let $slave_error_message= ; +let $slave_param_comparison= $old_slave_param_comparison; let $_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1); -if (`SELECT '$_error' != '$slave_io_errno'`) { +if (`SELECT $_error NOT IN ($slave_io_errno)`) { --echo **** Slave stopped with wrong error code: $_error (expected $slave_io_errno) **** source include/show_rpl_debug_info.inc; --echo **** Slave stopped with wrong error code: $_error (expected $slave_io_errno) **** diff --git a/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result b/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result index 6d3e73f787d..432bcfcc94d 100644 --- a/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result +++ b/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result @@ -14,7 +14,6 @@ slave is going to hang in get_master_version_and_clock slave is unblocked SET DEBUG_SYNC='now SIGNAL signal.get_unix_timestamp'; Check network error happened here -NETWORK ERROR set @@global.debug = "-d,'debug_lock.before_get_UNIX_TIMESTAMP'"; stop slave; SET @@global.debug= "+d,'debug_lock.before_get_SERVER_ID'"; @@ -23,7 +22,6 @@ slave is going to hang in get_master_version_and_clock slave is unblocked SET DEBUG_SYNC='now SIGNAL signal.get_server_id'; Check network error happened here -NETWORK ERROR set @@global.debug = "-d,'debug_lock.before_get_SERVER_ID'"; set global debug= ''; reset master; From d02ec3463ee7adf16b807102b8300c735221285d Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Fri, 28 May 2010 06:17:37 -0700 Subject: [PATCH 097/461] This is to fix a special case for the fix on bug #53592, where the err_index could be not a member of the share structure or prebuilt structure passed from MySQL. For now, we resort to the traditional way of scanning index->table for the index number. --- storage/innodb_plugin/handler/ha_innodb.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index f753e2d1cbd..c65ba3163fc 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -7418,6 +7418,26 @@ innobase_get_mysql_key_number_for_index( ut_ad(table); ut_ad(share); + /* If index does not belong to the table of share structure. Search + index->table instead */ + if (index->table != ib_table + && strcmp(index->table->name, share->table_name)) { + i = 0; + ind = dict_table_get_first_index(index->table); + + while (index != ind) { + ind = dict_table_get_next_index(ind); + i++; + } + + if (row_table_got_default_clust_index(index->table)) { + ut_a(i > 0); + i--; + } + + return(i); + } + /* If index translation table exists, we will first check the index through index translation table for a match. */ if (share->idx_trans_tbl.index_mapping) { From f3a83073972b510ffee922aac37434946ae0e0bc Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Sat, 29 May 2010 22:16:45 +0400 Subject: [PATCH 098/461] Bug #48537: difference of index selection between rpm binary and .tar.gz, windows vs linux.. On Intel x86 machines index selection by the MySQL query optimizer could sometimes depend on the compiler version and optimization flags used to build the server binary. The problem was a result of a known issue with floating point calculations on x86: since internal FPU precision (80 bit) differs from precision used by programs (32-bit float or 64-bit double), the result of calculating a complex expression may depend on how FPU registers are allocated by the compiler and whether intermediate values are spilled from FPU to memory. In this particular case compiler versions and optimization flags had an effect on cost calculation when choosing the best index in best_access_path(). A possible solution to this problem which has already been implemented in mysql-trunk is to limit FPU internal precision to 64 bits. So the fix is a backport of the relevant code to 5.1 from mysql-trunk. configure.in: Configure check for fpu_control.h mysql-test/r/explain.result: Test case for bug #48537. mysql-test/t/explain.test: Test case for bug #48537. sql/mysqld.cc: Backport of the code to switch FPU on x86 to 64-bit precision. --- configure.in | 4 ++-- mysql-test/r/explain.result | 13 +++++++++++++ mysql-test/t/explain.test | 15 +++++++++++++++ sql/mysqld.cc | 36 +++++++++++++++++++++++++++++++++++- 4 files changed, 65 insertions(+), 3 deletions(-) diff --git a/configure.in b/configure.in index 7148c26187a..cb48710f5c6 100644 --- a/configure.in +++ b/configure.in @@ -838,8 +838,8 @@ AC_TYPE_SIZE_T AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_SYS_WAIT -AC_CHECK_HEADERS(fcntl.h fenv.h float.h floatingpoint.h ieeefp.h limits.h \ - memory.h pwd.h select.h \ +AC_CHECK_HEADERS(fcntl.h fenv.h float.h floatingpoint.h fpu_control.h \ + ieeefp.h limits.h memory.h pwd.h select.h \ stdlib.h stddef.h \ strings.h string.h synch.h sys/mman.h sys/socket.h netinet/in.h arpa/inet.h \ sys/timeb.h sys/types.h sys/un.h sys/vadvise.h sys/wait.h term.h \ diff --git a/mysql-test/r/explain.result b/mysql-test/r/explain.result index 8f2d704b312..f46fe8daaad 100644 --- a/mysql-test/r/explain.result +++ b/mysql-test/r/explain.result @@ -238,4 +238,17 @@ id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables DROP TABLE t1, t2; +# +# Bug #48573: difference of index selection between rpm binary and +# .tar.gz, windows vs linux.. +# +CREATE TABLE t1(c1 INT, c2 INT, c4 INT, c5 INT, KEY(c2, c5), KEY(c2, c4, c5)); +INSERT INTO t1 VALUES(4, 1, 1, 1); +INSERT INTO t1 VALUES(3, 1, 1, 1); +INSERT INTO t1 VALUES(2, 1, 1, 1); +INSERT INTO t1 VALUES(1, 1, 1, 1); +EXPLAIN SELECT c1 FROM t1 WHERE c2 = 1 AND c4 = 1 AND c5 = 1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ref c2,c2_2 c2 10 const,const 3 Using where +DROP TABLE t1; End of 5.1 tests. diff --git a/mysql-test/t/explain.test b/mysql-test/t/explain.test index ba6be72dbdc..b635a1b2968 100644 --- a/mysql-test/t/explain.test +++ b/mysql-test/t/explain.test @@ -213,4 +213,19 @@ EXPLAIN SELECT 1 FROM t1 WHERE a = (SELECT 1 FROM t1 t JOIN t2 WHERE b <= 1 AND DROP TABLE t1, t2; +--echo # +--echo # Bug #48573: difference of index selection between rpm binary and +--echo # .tar.gz, windows vs linux.. +--echo # + +CREATE TABLE t1(c1 INT, c2 INT, c4 INT, c5 INT, KEY(c2, c5), KEY(c2, c4, c5)); +INSERT INTO t1 VALUES(4, 1, 1, 1); +INSERT INTO t1 VALUES(3, 1, 1, 1); +INSERT INTO t1 VALUES(2, 1, 1, 1); +INSERT INTO t1 VALUES(1, 1, 1, 1); + +EXPLAIN SELECT c1 FROM t1 WHERE c2 = 1 AND c4 = 1 AND c5 = 1; + +DROP TABLE t1; + --echo End of 5.1 tests. diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 3664f46995f..3ffc1a21e9c 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -183,6 +183,21 @@ typedef fp_except fp_except_t; /* for IRIX to use set_fpc_csr() */ #include #endif +#ifdef HAVE_FPU_CONTROL_H +#include +#endif +#if defined(__i386__) && !defined(HAVE_FPU_CONTROL_H) +# define fpu_control_t unsigned int +# define _FPU_EXTENDED 0x300 +# define _FPU_DOUBLE 0x200 +# ifdef __GNUC__ +# define _FPU_GETCW(cw) __asm__ __volatile__("fnstcw %0" : "=m" (*&cw)) +# define _FPU_SETCW(cw) __asm__ __volatile__("fldcw %0" : : "m" (*&cw)) +# else +# define _FPU_GETCW(cw) (cw= 0) +# define _FPU_SETCW(cw) +# endif +#endif inline void setup_fpu() { @@ -204,7 +219,26 @@ inline void setup_fpu() /* Set FPU rounding mode to "round-to-nearest" */ fesetround(FE_TONEAREST); #endif /* HAVE_FESETROUND */ - + + /* + x86 (32-bit) requires FPU precision to be explicitly set to 64 bit + (double precision) for portable results of floating point operations. + However, there is no need to do so if compiler is using SSE2 for floating + point, double values will be stored and processed in 64 bits anyway. + */ +#if defined(__i386__) && !defined(__SSE2_MATH__) +#if defined(_WIN32) +#if !defined(_WIN64) + _control87(_PC_53, MCW_PC); +#endif /* !_WIN64 */ +#else /* !_WIN32 */ + fpu_control_t cw; + _FPU_GETCW(cw); + cw= (cw & ~_FPU_EXTENDED) | _FPU_DOUBLE; + _FPU_SETCW(cw); +#endif /* _WIN32 && */ +#endif /* __i386__ */ + #if defined(__sgi) && defined(HAVE_SYS_FPU_H) /* Enable denormalized DOUBLE values support for IRIX */ union fpc_csr n; From 89b83c05e0946e0fdd7cf9392a5e5b7e7a78957e Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Mon, 31 May 2010 13:25:11 +0400 Subject: [PATCH 099/461] Bug#53942 valgrind warnings with timestamp() function and incomplete datetime values Field_time::get_date method does not initialize MYSQL_TIME::time_type field. The fix is to init this field. mysql-test/r/type_time.result: test case mysql-test/t/type_time.test: test case sql/field.cc: --use Field_time::get_time in Field_time::get_date --removed duplicated code in Field_time::get_date method --- mysql-test/r/type_time.result | 10 ++++++++++ mysql-test/t/type_time.test | 12 +++++++++++- sql/field.cc | 15 +-------------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/mysql-test/r/type_time.result b/mysql-test/r/type_time.result index e4b90196c2d..86712bebfa1 100644 --- a/mysql-test/r/type_time.result +++ b/mysql-test/r/type_time.result @@ -138,3 +138,13 @@ CAST(c AS TIME) 00:00:00 DROP TABLE t1; End of 5.0 tests +# +# Bug#53942 valgrind warnings with timestamp() function and incomplete datetime values +# +CREATE TABLE t1(f1 TIME); +INSERT INTO t1 VALUES ('23:38:57'); +SELECT TIMESTAMP(f1,'1') FROM t1; +TIMESTAMP(f1,'1') +NULL +DROP TABLE t1; +End of 5.1 tests diff --git a/mysql-test/t/type_time.test b/mysql-test/t/type_time.test index 5bb521601e5..34331b72688 100644 --- a/mysql-test/t/type_time.test +++ b/mysql-test/t/type_time.test @@ -88,5 +88,15 @@ INSERT INTO t1 VALUES ('0:00:00'); SELECT CAST(c AS TIME) FROM t1; DROP TABLE t1; - --echo End of 5.0 tests + +--echo # +--echo # Bug#53942 valgrind warnings with timestamp() function and incomplete datetime values +--echo # + +CREATE TABLE t1(f1 TIME); +INSERT INTO t1 VALUES ('23:38:57'); +SELECT TIMESTAMP(f1,'1') FROM t1; +DROP TABLE t1; + +--echo End of 5.1 tests diff --git a/sql/field.cc b/sql/field.cc index b203a42a918..7360a013ffb 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5312,7 +5312,6 @@ String *Field_time::val_str(String *val_buffer, bool Field_time::get_date(MYSQL_TIME *ltime, uint fuzzydate) { - long tmp; THD *thd= table ? table->in_use : current_thd; if (!(fuzzydate & TIME_FUZZY_DATE)) { @@ -5322,19 +5321,7 @@ bool Field_time::get_date(MYSQL_TIME *ltime, uint fuzzydate) thd->row_count); return 1; } - tmp=(long) sint3korr(ptr); - ltime->neg=0; - if (tmp < 0) - { - ltime->neg= 1; - tmp=-tmp; - } - ltime->hour=tmp/10000; - tmp-=ltime->hour*10000; - ltime->minute= tmp/100; - ltime->second= tmp % 100; - ltime->year= ltime->month= ltime->day= ltime->second_part= 0; - return 0; + return Field_time::get_time(ltime); } From da0b6d611fcbe15e18fd888e9bf3578855caca09 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Mon, 31 May 2010 19:35:40 +0300 Subject: [PATCH 100/461] Merge a change from mysql-trunk-innodb: ------------------------------------------------------------ revno: 3127 revision-id: vasil.dimov@oracle.com-20100531152341-x2d4hma644icamh1 parent: vasil.dimov@oracle.com-20100531105923-kpjwl4rbgfpfj13c committer: Vasil Dimov branch nick: mysql-trunk-innodb timestamp: Mon 2010-05-31 18:23:41 +0300 message: Fix Bug #53947 InnoDB: Assertion failure in thread 4224 in file .\sync\sync0sync.c line 324 Destroy the rw-lock object before freeing the memory it is occupying. If we do not do this, then the mutex that is contained in the rw-lock object btr_search_latch_temp->mutex gets "freed" and subsequently mutex_free() from sync_close() hits a mutex whose memory has been freed and crashes. Approved by: Heikki (via IRC) Discussed with: Calvin --- storage/innodb_plugin/btr/btr0sea.c | 1 + 1 file changed, 1 insertion(+) diff --git a/storage/innodb_plugin/btr/btr0sea.c b/storage/innodb_plugin/btr/btr0sea.c index ef7afeb1039..c91afa31bf0 100644 --- a/storage/innodb_plugin/btr/btr0sea.c +++ b/storage/innodb_plugin/btr/btr0sea.c @@ -182,6 +182,7 @@ void btr_search_sys_free(void) /*=====================*/ { + rw_lock_free(&btr_search_latch); mem_free(btr_search_latch_temp); btr_search_latch_temp = NULL; mem_heap_free(btr_search_sys->hash_index->heap); From 310f4438b5d9fe4482ccaf313de274180c9bf19c Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Tue, 1 Jun 2010 08:40:36 +0200 Subject: [PATCH 101/461] Disable the old innobase again --- storage/innobase/{CMakeLists.txt => CMakeLists.txt.disabled} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename storage/innobase/{CMakeLists.txt => CMakeLists.txt.disabled} (100%) diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt.disabled similarity index 100% rename from storage/innobase/CMakeLists.txt rename to storage/innobase/CMakeLists.txt.disabled From 8cef6205048a0522f966e7dccf14ce2ffdd37fe8 Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Tue, 1 Jun 2010 09:02:28 +0200 Subject: [PATCH 102/461] post push fix for bug#49161 result file differs on embedded --- mysql-test/t/partition_error.test | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test index 7f733df701b..434392c2e28 100644 --- a/mysql-test/t/partition_error.test +++ b/mysql-test/t/partition_error.test @@ -16,6 +16,7 @@ let $MYSQLD_DATADIR= `SELECT @@datadir`; CREATE TABLE t1 (a INT) PARTITION BY HASH (a); FLUSH TABLES; --remove_file $MYSQLD_DATADIR/test/t1.par +--replace_result $MYSQLD_DATADIR ./ CHECK TABLE t1; --error ER_UNKNOWN_ERROR SELECT * FROM t1; From 4d0177180779130c8f9dc950c682723fa2e22a9e Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Tue, 1 Jun 2010 11:54:06 +0400 Subject: [PATCH 103/461] test case fix --- mysql-test/r/join_outer.result | 52 +++++++++++++++++----------------- mysql-test/t/join_outer.test | 24 ++++++++-------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result index e81389f2735..8e438934b23 100644 --- a/mysql-test/r/join_outer.result +++ b/mysql-test/r/join_outer.result @@ -1362,39 +1362,39 @@ DROP TABLE t1, t2; # CREATE TABLE t1(f1 INT, PRIMARY KEY (f1)); INSERT INTO t1 VALUES (1),(2); -EXPLAIN EXTENDED SELECT STRAIGHT_JOIN T1.f1 FROM t1 AS T1 -LEFT JOIN t1 AS T2 -RIGHT JOIN t1 AS T3 -JOIN t1 AS T4 ON 1 -LEFT JOIN t1 AS T5 ON 1 +EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1 +LEFT JOIN t1 AS jt2 +RIGHT JOIN t1 AS jt3 +JOIN t1 AS jt4 ON 1 +LEFT JOIN t1 AS jt5 ON 1 ON 1 -RIGHT JOIN t1 AS T6 ON T6.f1 +RIGHT JOIN t1 AS jt6 ON jt6.f1 ON 1; id select_type table type possible_keys key key_len ref rows filtered Extra -1 SIMPLE T1 index NULL PRIMARY 4 NULL 2 100.00 Using index -1 SIMPLE T6 index NULL PRIMARY 4 NULL 2 100.00 Using index -1 SIMPLE T3 index NULL PRIMARY 4 NULL 2 100.00 Using index -1 SIMPLE T4 index NULL PRIMARY 4 NULL 2 100.00 Using index -1 SIMPLE T5 index NULL PRIMARY 4 NULL 2 100.00 Using index -1 SIMPLE T2 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt1 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt6 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt3 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt4 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt5 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using index Warnings: -Note 1003 select straight_join `test`.`T1`.`f1` AS `f1` from `test`.`t1` `T1` left join (`test`.`t1` `T6` left join (`test`.`t1` `T3` join `test`.`t1` `T4` left join `test`.`t1` `T5` on(1) left join `test`.`t1` `T2` on(1)) on((`test`.`T6`.`f1` and 1))) on(1) where 1 -EXPLAIN EXTENDED SELECT STRAIGHT_JOIN T1.f1 FROM t1 AS T1 -RIGHT JOIN t1 AS T2 -RIGHT JOIN t1 AS T3 -JOIN t1 AS T4 ON 1 -LEFT JOIN t1 AS T5 ON 1 +Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt1` left join (`test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1))) on(1) where 1 +EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1 +RIGHT JOIN t1 AS jt2 +RIGHT JOIN t1 AS jt3 +JOIN t1 AS jt4 ON 1 +LEFT JOIN t1 AS jt5 ON 1 ON 1 -RIGHT JOIN t1 AS T6 ON T6.f1 +RIGHT JOIN t1 AS jt6 ON jt6.f1 ON 1; id select_type table type possible_keys key key_len ref rows filtered Extra -1 SIMPLE T6 index NULL PRIMARY 4 NULL 2 100.00 Using index -1 SIMPLE T3 index NULL PRIMARY 4 NULL 2 100.00 Using index -1 SIMPLE T4 index NULL PRIMARY 4 NULL 2 100.00 Using index -1 SIMPLE T5 index NULL PRIMARY 4 NULL 2 100.00 Using index -1 SIMPLE T2 index NULL PRIMARY 4 NULL 2 100.00 Using index -1 SIMPLE T1 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt6 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt3 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt4 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt5 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using index +1 SIMPLE jt1 index NULL PRIMARY 4 NULL 2 100.00 Using index Warnings: -Note 1003 select straight_join `test`.`T1`.`f1` AS `f1` from `test`.`t1` `T6` left join (`test`.`t1` `T3` join `test`.`t1` `T4` left join `test`.`t1` `T5` on(1) left join `test`.`t1` `T2` on(1)) on((`test`.`T6`.`f1` and 1)) left join `test`.`t1` `T1` on(1) where 1 +Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1)) left join `test`.`t1` `jt1` on(1) where 1 DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/t/join_outer.test b/mysql-test/t/join_outer.test index e7bc5cf6317..cf881e6aaa2 100644 --- a/mysql-test/t/join_outer.test +++ b/mysql-test/t/join_outer.test @@ -961,22 +961,22 @@ DROP TABLE t1, t2; CREATE TABLE t1(f1 INT, PRIMARY KEY (f1)); INSERT INTO t1 VALUES (1),(2); -EXPLAIN EXTENDED SELECT STRAIGHT_JOIN T1.f1 FROM t1 AS T1 - LEFT JOIN t1 AS T2 - RIGHT JOIN t1 AS T3 - JOIN t1 AS T4 ON 1 - LEFT JOIN t1 AS T5 ON 1 +EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1 + LEFT JOIN t1 AS jt2 + RIGHT JOIN t1 AS jt3 + JOIN t1 AS jt4 ON 1 + LEFT JOIN t1 AS jt5 ON 1 ON 1 - RIGHT JOIN t1 AS T6 ON T6.f1 + RIGHT JOIN t1 AS jt6 ON jt6.f1 ON 1; -EXPLAIN EXTENDED SELECT STRAIGHT_JOIN T1.f1 FROM t1 AS T1 - RIGHT JOIN t1 AS T2 - RIGHT JOIN t1 AS T3 - JOIN t1 AS T4 ON 1 - LEFT JOIN t1 AS T5 ON 1 +EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1 + RIGHT JOIN t1 AS jt2 + RIGHT JOIN t1 AS jt3 + JOIN t1 AS jt4 ON 1 + LEFT JOIN t1 AS jt5 ON 1 ON 1 - RIGHT JOIN t1 AS T6 ON T6.f1 + RIGHT JOIN t1 AS jt6 ON jt6.f1 ON 1; DROP TABLE t1; From 2caade505362cb2ab66514c64ac9424af775cbf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 1 Jun 2010 13:37:38 +0300 Subject: [PATCH 104/461] Bug#53812: assert row/row0umod.c line 660 in txn rollback after crash recovery row_undo_mod_upd_exist_sec(): Tolerate a failure to build the index entry for a DYNAMIC or COMPRESSED table during crash recovery. --- storage/innodb_plugin/row/row0umod.c | 64 ++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/storage/innodb_plugin/row/row0umod.c b/storage/innodb_plugin/row/row0umod.c index e7245dbee41..c497c469aae 100644 --- a/storage/innodb_plugin/row/row0umod.c +++ b/storage/innodb_plugin/row/row0umod.c @@ -657,24 +657,55 @@ row_undo_mod_upd_exist_sec( /* Build the newest version of the index entry */ entry = row_build_index_entry(node->row, node->ext, index, heap); - ut_a(entry); - /* NOTE that if we updated the fields of a - delete-marked secondary index record so that - alphabetically they stayed the same, e.g., - 'abc' -> 'aBc', we cannot return to the original - values because we do not know them. But this should - not cause problems because in row0sel.c, in queries - we always retrieve the clustered index record or an - earlier version of it, if the secondary index record - through which we do the search is delete-marked. */ + if (UNIV_UNLIKELY(!entry)) { + /* The server must have crashed in + row_upd_clust_rec_by_insert(), in + row_ins_index_entry_low() before + btr_store_big_rec_extern_fields() + has written the externally stored columns + (BLOBs) of the new clustered index entry. */ - err = row_undo_mod_del_mark_or_remove_sec(node, thr, - index, - entry); - if (err != DB_SUCCESS) { - mem_heap_free(heap); + /* The table must be in DYNAMIC or COMPRESSED + format. REDUNDANT and COMPACT formats + store a local 768-byte prefix of each + externally stored column. */ + ut_a(dict_table_get_format(index->table) + >= DICT_TF_FORMAT_ZIP); - return(err); + /* This is only legitimate when + rolling back an incomplete transaction + after crash recovery. */ + ut_a(thr_get_trx(thr)->is_recovered); + + /* The server must have crashed before + completing the insert of the new + clustered index entry and before + inserting to the secondary indexes. + Because node->row was not yet written + to this index, we can ignore it. But + we must restore node->undo_row. */ + } else { + /* NOTE that if we updated the fields of a + delete-marked secondary index record so that + alphabetically they stayed the same, e.g., + 'abc' -> 'aBc', we cannot return to the + original values because we do not know them. + But this should not cause problems because + in row0sel.c, in queries we always retrieve + the clustered index record or an earlier + version of it, if the secondary index record + through which we do the search is + delete-marked. */ + + err = row_undo_mod_del_mark_or_remove_sec( + node, thr, index, entry); + if (err != DB_SUCCESS) { + mem_heap_free(heap); + + return(err); + } + + mem_heap_empty(heap); } /* We may have to update the delete mark in the @@ -683,7 +714,6 @@ row_undo_mod_upd_exist_sec( the secondary index record if we updated its fields but alphabetically they stayed the same, e.g., 'abc' -> 'aBc'. */ - mem_heap_empty(heap); entry = row_build_index_entry(node->undo_row, node->undo_ext, index, heap); From dd201037c2f4c2c5a740c0dfc8a2deb3cfe6733b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 1 Jun 2010 15:05:21 +0300 Subject: [PATCH 105/461] Document the Bug #53812 fix. --- storage/innodb_plugin/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 89823642957..a53f765aac6 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-06-01 The InnoDB Team + + * row/row0umod.c: + Fix Bug#53812 assert row/row0umod.c line 660 in txn rollback + after crash recovery + 2010-05-25 The InnoDB Team * handler/ha_innodb.cc, include/row0mysql.h, row/row0mysql.c: From 90cb7fa43208d76fcc2e15caa40054f5d754dd58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 1 Jun 2010 15:07:51 +0300 Subject: [PATCH 106/461] Minor cleanup. lock_rec_unlock(): Cache first_lock and rewrite while() loops as for(). btr_cur_optimistic_update(): Use common error handling return. row_create_prebuilt(): Add Valgrind instrumentation. --- storage/innodb_plugin/btr/btr0cur.c | 10 +++---- storage/innodb_plugin/lock/lock0lock.c | 40 +++++++++++--------------- storage/innodb_plugin/row/row0mysql.c | 2 ++ 3 files changed, 23 insertions(+), 29 deletions(-) diff --git a/storage/innodb_plugin/btr/btr0cur.c b/storage/innodb_plugin/btr/btr0cur.c index 6270aa6a727..50531ad3bd7 100644 --- a/storage/innodb_plugin/btr/btr0cur.c +++ b/storage/innodb_plugin/btr/btr0cur.c @@ -1959,9 +1959,8 @@ any_extern: err = btr_cur_upd_lock_and_undo(flags, cursor, update, cmpl_info, thr, mtr, &roll_ptr); if (err != DB_SUCCESS) { -err_exit: - mem_heap_free(heap); - return(err); + + goto err_exit; } /* Ok, we may do the replacement. Store on the page infimum the @@ -2007,9 +2006,10 @@ err_exit: page_cur_move_to_next(page_cursor); + err = DB_SUCCESS; +err_exit: mem_heap_free(heap); - - return(DB_SUCCESS); + return(err); } /*************************************************************//** diff --git a/storage/innodb_plugin/lock/lock0lock.c b/storage/innodb_plugin/lock/lock0lock.c index 04e5fe1a65a..d6d9f6668da 100644 --- a/storage/innodb_plugin/lock/lock0lock.c +++ b/storage/innodb_plugin/lock/lock0lock.c @@ -3935,8 +3935,8 @@ lock_rec_unlock( const rec_t* rec, /*!< in: record */ enum lock_mode lock_mode)/*!< in: LOCK_S or LOCK_X */ { + lock_t* first_lock; lock_t* lock; - lock_t* release_lock = NULL; ulint heap_no; ut_ad(trx && rec); @@ -3946,48 +3946,40 @@ lock_rec_unlock( mutex_enter(&kernel_mutex); - lock = lock_rec_get_first(block, heap_no); + first_lock = lock_rec_get_first(block, heap_no); /* Find the last lock with the same lock_mode and transaction from the record. */ - while (lock != NULL) { + for (lock = first_lock; lock != NULL; + lock = lock_rec_get_next(heap_no, lock)) { if (lock->trx == trx && lock_get_mode(lock) == lock_mode) { - release_lock = lock; ut_a(!lock_get_wait(lock)); + lock_rec_reset_nth_bit(lock, heap_no); + goto released; } - - lock = lock_rec_get_next(heap_no, lock); } - /* If a record lock is found, release the record lock */ + mutex_exit(&kernel_mutex); + ut_print_timestamp(stderr); + fprintf(stderr, + " InnoDB: Error: unlock row could not" + " find a %lu mode lock on the record\n", + (ulong) lock_mode); - if (UNIV_LIKELY(release_lock != NULL)) { - lock_rec_reset_nth_bit(release_lock, heap_no); - } else { - mutex_exit(&kernel_mutex); - ut_print_timestamp(stderr); - fprintf(stderr, - " InnoDB: Error: unlock row could not" - " find a %lu mode lock on the record\n", - (ulong) lock_mode); - - return; - } + return; +released: /* Check if we can now grant waiting lock requests */ - lock = lock_rec_get_first(block, heap_no); - - while (lock != NULL) { + for (lock = first_lock; lock != NULL; + lock = lock_rec_get_next(heap_no, lock)) { if (lock_get_wait(lock) && !lock_rec_has_to_wait_in_queue(lock)) { /* Grant the lock */ lock_grant(lock); } - - lock = lock_rec_get_next(heap_no, lock); } mutex_exit(&kernel_mutex); diff --git a/storage/innodb_plugin/row/row0mysql.c b/storage/innodb_plugin/row/row0mysql.c index 8d47d0f25fc..c093925fc73 100644 --- a/storage/innodb_plugin/row/row0mysql.c +++ b/storage/innodb_plugin/row/row0mysql.c @@ -625,6 +625,8 @@ row_create_prebuilt( prebuilt->select_lock_type = LOCK_NONE; prebuilt->stored_select_lock_type = 99999999; + UNIV_MEM_INVALID(&prebuilt->stored_select_lock_type, + sizeof prebuilt->stored_select_lock_type); prebuilt->search_tuple = dtuple_create( heap, 2 * dict_table_get_n_cols(table)); From 5b685c000e6c86be8e76950e91423756c2fc6413 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Tue, 1 Jun 2010 15:14:38 +0300 Subject: [PATCH 107/461] Bug #54138 : making main.sp and rpl.rpl_row_sp011 experimental on solaris --- mysql-test/collections/default.experimental | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/collections/default.experimental b/mysql-test/collections/default.experimental index d791686cd62..c123e400f17 100644 --- a/mysql-test/collections/default.experimental +++ b/mysql-test/collections/default.experimental @@ -14,11 +14,13 @@ funcs_2.ndb_charset # joro : NDB tests marked as experiment main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists main.plugin_load @solaris # Bug#42144 +main.sp @solaris # joro : Bug#54138 main.outfile_loaddata @solaris # joro : Bug #46895 ndb.* # joro : NDB tests marked as experimental as agreed with bochklin rpl.rpl_innodb_bug28430* @solaris # Bug#46029 +rpl.rpl_row_sp011 @solaris # Joro : Bug #54138 rpl_ndb.* # joro : NDB tests marked as experimental as agreed with bochklin rpl_ndb.rpl_ndb_log # Bug#38998 From 6bd49855192c08306b8a6be3f6d19004de9da63c Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Tue, 1 Jun 2010 15:16:35 +0300 Subject: [PATCH 108/461] Bug#40928 : make main.func_str experimental on Solaris --- mysql-test/collections/default.experimental | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/collections/default.experimental b/mysql-test/collections/default.experimental index c123e400f17..11c6613a9f7 100644 --- a/mysql-test/collections/default.experimental +++ b/mysql-test/collections/default.experimental @@ -13,6 +13,7 @@ funcs_1.ndb* # joro : NDB tests marked as experiment funcs_2.ndb_charset # joro : NDB tests marked as experimental as agreed with bochklin main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists +main.func_str @solaris # joro: Bug#40928 main.plugin_load @solaris # Bug#42144 main.sp @solaris # joro : Bug#54138 main.outfile_loaddata @solaris # joro : Bug #46895 From 6e569dd209bc2ca82886df6379baa1de3293b803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 1 Jun 2010 16:43:35 +0300 Subject: [PATCH 109/461] Bug#48197: Concurrent rw_lock_free may cause assertion failure rw_lock_t: Remove magic_n unless UNIV_DEBUG is defined. rw_lock_free(): Invalidate magic_n only after removing from rw_lock_list. --- storage/innodb_plugin/include/sync0rw.h | 5 +++-- storage/innodb_plugin/sync/sync0rw.c | 24 ++++++++++-------------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/storage/innodb_plugin/include/sync0rw.h b/storage/innodb_plugin/include/sync0rw.h index 6f7e13220c1..175f3deb77c 100644 --- a/storage/innodb_plugin/include/sync0rw.h +++ b/storage/innodb_plugin/include/sync0rw.h @@ -555,11 +555,12 @@ struct rw_lock_struct { unsigned cline:14; /*!< Line where created */ unsigned last_s_line:14; /*!< Line number where last time s-locked */ unsigned last_x_line:14; /*!< Line number where last time x-locked */ +#ifdef UNIV_DEBUG ulint magic_n; /*!< RW_LOCK_MAGIC_N */ -}; - /** Value of rw_lock_struct::magic_n */ #define RW_LOCK_MAGIC_N 22643 +#endif /* UNIV_DEBUG */ +}; #ifdef UNIV_SYNC_DEBUG /** The structure for storing debug info of an rw-lock */ diff --git a/storage/innodb_plugin/sync/sync0rw.c b/storage/innodb_plugin/sync/sync0rw.c index d231b6acdf7..52eaa5d0f43 100644 --- a/storage/innodb_plugin/sync/sync0rw.c +++ b/storage/innodb_plugin/sync/sync0rw.c @@ -267,7 +267,7 @@ rw_lock_create_func( lock->level = level; #endif /* UNIV_SYNC_DEBUG */ - lock->magic_n = RW_LOCK_MAGIC_N; + ut_d(lock->magic_n = RW_LOCK_MAGIC_N); lock->cfile_name = cfile_name; lock->cline = (unsigned int) cline; @@ -282,10 +282,8 @@ rw_lock_create_func( mutex_enter(&rw_lock_list_mutex); - if (UT_LIST_GET_LEN(rw_lock_list) > 0) { - ut_a(UT_LIST_GET_FIRST(rw_lock_list)->magic_n - == RW_LOCK_MAGIC_N); - } + ut_ad(UT_LIST_GET_FIRST(rw_lock_list) == NULL + || UT_LIST_GET_FIRST(rw_lock_list)->magic_n == RW_LOCK_MAGIC_N); UT_LIST_ADD_FIRST(list, rw_lock_list, lock); @@ -305,8 +303,6 @@ rw_lock_free( ut_ad(rw_lock_validate(lock)); ut_a(lock->lock_word == X_LOCK_DECR); - lock->magic_n = 0; - #ifndef INNODB_RW_LOCKS_USE_ATOMICS mutex_free(rw_lock_get_mutex(lock)); #endif /* INNODB_RW_LOCKS_USE_ATOMICS */ @@ -316,16 +312,16 @@ rw_lock_free( os_event_free(lock->wait_ex_event); - if (UT_LIST_GET_PREV(list, lock)) { - ut_a(UT_LIST_GET_PREV(list, lock)->magic_n == RW_LOCK_MAGIC_N); - } - if (UT_LIST_GET_NEXT(list, lock)) { - ut_a(UT_LIST_GET_NEXT(list, lock)->magic_n == RW_LOCK_MAGIC_N); - } + ut_ad(UT_LIST_GET_PREV(list, lock) == NULL + || UT_LIST_GET_PREV(list, lock)->magic_n == RW_LOCK_MAGIC_N); + ut_ad(UT_LIST_GET_NEXT(list, lock) == NULL + || UT_LIST_GET_NEXT(list, lock)->magic_n == RW_LOCK_MAGIC_N); UT_LIST_REMOVE(list, rw_lock_list, lock); mutex_exit(&rw_lock_list_mutex); + + ut_d(lock->magic_n = 0); } #ifdef UNIV_DEBUG @@ -344,7 +340,7 @@ rw_lock_validate( ulint waiters = rw_lock_get_waiters(lock); lint lock_word = lock->lock_word; - ut_a(lock->magic_n == RW_LOCK_MAGIC_N); + ut_ad(lock->magic_n == RW_LOCK_MAGIC_N); ut_a(waiters == 0 || waiters == 1); ut_a(lock_word > -X_LOCK_DECR ||(-lock_word) % X_LOCK_DECR == 0); From 9f278a36822455c36e525617b5822e0061dfe9ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 1 Jun 2010 16:58:02 +0300 Subject: [PATCH 110/461] Document Bug #48197 fix --- storage/innodb_plugin/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index a53f765aac6..c90b401f0f8 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,8 @@ +2010-06-01 The InnoDB Team + + * include/sync0rw.h, sync/sync0rw.c: + Fix Bug#48197 Concurrent rw_lock_free may cause assertion failure + 2010-06-01 The InnoDB Team * row/row0umod.c: From 742e8c2ad94f60bcb33420948025c54d442e107c Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Wed, 2 Jun 2010 11:42:37 +0300 Subject: [PATCH 111/461] changed the tree name --- .bzr-mysql/default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bzr-mysql/default.conf b/.bzr-mysql/default.conf index 557df1b1ffe..f79c1cd6319 100644 --- a/.bzr-mysql/default.conf +++ b/.bzr-mysql/default.conf @@ -1,4 +1,4 @@ [MYSQL] post_commit_to = "commits@lists.mysql.com" post_push_to = "commits@lists.mysql.com" -tree_name = "mysql-5.0-bugteam" +tree_name = "mysql-5.0" From b55ec587016db5af04acd6800eb04c6a427527b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 2 Jun 2010 13:19:40 +0300 Subject: [PATCH 112/461] fil_print_orphaned_tablespaces(): Unused function, remove. --- storage/innodb_plugin/fil/fil0fil.c | 33 ------------------------- storage/innodb_plugin/include/fil0fil.h | 10 -------- 2 files changed, 43 deletions(-) diff --git a/storage/innodb_plugin/fil/fil0fil.c b/storage/innodb_plugin/fil/fil0fil.c index af85e14f226..219eb5f500f 100644 --- a/storage/innodb_plugin/fil/fil0fil.c +++ b/storage/innodb_plugin/fil/fil0fil.c @@ -3542,39 +3542,6 @@ next_datadir_item: return(err); } -/********************************************************************//** -If we need crash recovery, and we have called -fil_load_single_table_tablespaces() and dict_load_single_table_tablespaces(), -we can call this function to print an error message of orphaned .ibd files -for which there is not a data dictionary entry with a matching table name -and space id. */ -UNIV_INTERN -void -fil_print_orphaned_tablespaces(void) -/*================================*/ -{ - fil_space_t* space; - - mutex_enter(&fil_system->mutex); - - space = UT_LIST_GET_FIRST(fil_system->space_list); - - while (space) { - if (space->purpose == FIL_TABLESPACE && space->id != 0 - && !space->mark) { - fputs("InnoDB: Warning: tablespace ", stderr); - ut_print_filename(stderr, space->name); - fprintf(stderr, " of id %lu has no matching table in\n" - "InnoDB: the InnoDB data dictionary.\n", - (ulong) space->id); - } - - space = UT_LIST_GET_NEXT(space_list, space); - } - - mutex_exit(&fil_system->mutex); -} - /*******************************************************************//** Returns TRUE if a single-table tablespace does not exist in the memory cache, or is being deleted there. diff --git a/storage/innodb_plugin/include/fil0fil.h b/storage/innodb_plugin/include/fil0fil.h index 10c3ff025ac..c894875b352 100644 --- a/storage/innodb_plugin/include/fil0fil.h +++ b/storage/innodb_plugin/include/fil0fil.h @@ -506,16 +506,6 @@ UNIV_INTERN ulint fil_load_single_table_tablespaces(void); /*===================================*/ -/********************************************************************//** -If we need crash recovery, and we have called -fil_load_single_table_tablespaces() and dict_load_single_table_tablespaces(), -we can call this function to print an error message of orphaned .ibd files -for which there is not a data dictionary entry with a matching table name -and space id. */ -UNIV_INTERN -void -fil_print_orphaned_tablespaces(void); -/*================================*/ /*******************************************************************//** Returns TRUE if a single-table tablespace does not exist in the memory cache, or is being deleted there. From 306e1338a5c4480d057e7647943aa1eb150e4cef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 2 Jun 2010 13:26:37 +0300 Subject: [PATCH 113/461] Bug#53674: InnoDB: Error: unlock row could not find a 4 mode lock on the record In semi-consistent read, only unlock freshly locked non-matching records. Define DB_SUCCESS_LOCKED_REC for indicating a successful operation where a record lock was created. lock_rec_lock_fast(): Return LOCK_REC_SUCCESS, LOCK_REC_SUCCESS_CREATED, or LOCK_REC_FAIL instead of TRUE/FALSE. lock_sec_rec_read_check_and_lock(), lock_clust_rec_read_check_and_lock(), lock_rec_enqueue_waiting(), lock_rec_lock_slow(), lock_rec_lock(), row_ins_set_shared_rec_lock(), row_ins_set_exclusive_rec_lock(), sel_set_rec_lock(), row_sel_get_clust_rec_for_mysql(): Return DB_SUCCESS_LOCKED_REC if a new record lock was created. Adjust callers. row_unlock_for_mysql(): Correct the function documentation. row_prebuilt_t::new_rec_locks: Correct the documentation. --- .../suite/innodb/r/innodb_bug53674.result | 11 ++ .../suite/innodb/t/innodb_bug53674-master.opt | 1 + .../suite/innodb/t/innodb_bug53674.test | 8 + storage/innobase/include/db0err.h | 2 + storage/innobase/include/lock0lock.h | 12 +- storage/innobase/include/row0mysql.h | 43 +++--- storage/innobase/lock/lock0lock.c | 138 ++++++++++------- storage/innobase/row/row0ins.c | 146 +++++++++--------- storage/innobase/row/row0mysql.c | 20 ++- storage/innobase/row/row0sel.c | 124 ++++++++++----- 10 files changed, 295 insertions(+), 210 deletions(-) create mode 100644 mysql-test/suite/innodb/r/innodb_bug53674.result create mode 100644 mysql-test/suite/innodb/t/innodb_bug53674-master.opt create mode 100644 mysql-test/suite/innodb/t/innodb_bug53674.test diff --git a/mysql-test/suite/innodb/r/innodb_bug53674.result b/mysql-test/suite/innodb/r/innodb_bug53674.result new file mode 100644 index 00000000000..c4021c2e7cd --- /dev/null +++ b/mysql-test/suite/innodb/r/innodb_bug53674.result @@ -0,0 +1,11 @@ +create table bug53674(a int)engine=innodb; +insert into bug53674 values (1),(2); +start transaction; +select * from bug53674 for update; +a +1 +2 +select * from bug53674 where a=(select a from bug53674 where a > 1); +a +2 +drop table bug53674; diff --git a/mysql-test/suite/innodb/t/innodb_bug53674-master.opt b/mysql-test/suite/innodb/t/innodb_bug53674-master.opt new file mode 100644 index 00000000000..f1cfd7ab6c7 --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_bug53674-master.opt @@ -0,0 +1 @@ +--log-bin --innodb-locks-unsafe-for-binlog --binlog-format=mixed diff --git a/mysql-test/suite/innodb/t/innodb_bug53674.test b/mysql-test/suite/innodb/t/innodb_bug53674.test new file mode 100644 index 00000000000..47f67f109c3 --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_bug53674.test @@ -0,0 +1,8 @@ +-- source include/have_innodb.inc + +create table bug53674(a int)engine=innodb; +insert into bug53674 values (1),(2); +start transaction; +select * from bug53674 for update; +select * from bug53674 where a=(select a from bug53674 where a > 1); +drop table bug53674; diff --git a/storage/innobase/include/db0err.h b/storage/innobase/include/db0err.h index b1461689d38..2be6005622d 100644 --- a/storage/innobase/include/db0err.h +++ b/storage/innobase/include/db0err.h @@ -10,6 +10,8 @@ Created 5/24/1996 Heikki Tuuri #define db0err_h +#define DB_SUCCESS_LOCKED_REC 9 /* like DB_SUCCESS, but a new + explicit record lock was created */ #define DB_SUCCESS 10 /* The following are error codes */ diff --git a/storage/innobase/include/lock0lock.h b/storage/innobase/include/lock0lock.h index beaf17eda01..70b141eafeb 100644 --- a/storage/innobase/include/lock0lock.h +++ b/storage/innobase/include/lock0lock.h @@ -292,14 +292,15 @@ lock_sec_rec_modify_check_and_lock( dict_index_t* index, /* in: secondary index */ que_thr_t* thr); /* in: query thread */ /************************************************************************* -Like the counterpart for a clustered index below, but now we read a +Like lock_clust_rec_read_check_and_lock(), but reads a secondary index record. */ ulint lock_sec_rec_read_check_and_lock( /*=============================*/ - /* out: DB_SUCCESS, DB_LOCK_WAIT, - DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */ + /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC, + DB_LOCK_WAIT, DB_DEADLOCK, + or DB_QUE_THR_SUSPENDED */ ulint flags, /* in: if BTR_NO_LOCKING_FLAG bit is set, does nothing */ rec_t* rec, /* in: user record or page supremum record @@ -324,8 +325,9 @@ lock on the record. */ ulint lock_clust_rec_read_check_and_lock( /*===============================*/ - /* out: DB_SUCCESS, DB_LOCK_WAIT, - DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */ + /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC, + DB_LOCK_WAIT, DB_DEADLOCK, + or DB_QUE_THR_SUSPENDED */ ulint flags, /* in: if BTR_NO_LOCKING_FLAG bit is set, does nothing */ rec_t* rec, /* in: user record or page supremum record diff --git a/storage/innobase/include/row0mysql.h b/storage/innobase/include/row0mysql.h index 40fcdbb9548..488177791a4 100644 --- a/storage/innobase/include/row0mysql.h +++ b/storage/innobase/include/row0mysql.h @@ -246,22 +246,20 @@ row_update_for_mysql( row_prebuilt_t* prebuilt); /* in: prebuilt struct in MySQL handle */ /************************************************************************* -This can only be used when srv_locks_unsafe_for_binlog is TRUE or -session is using a READ COMMITTED isolation level. Before -calling this function we must use trx_reset_new_rec_lock_info() and -trx_register_new_rec_lock() to store the information which new record locks -really were set. This function removes a newly set lock under prebuilt->pcur, -and also under prebuilt->clust_pcur. Currently, this is only used and tested -in the case of an UPDATE or a DELETE statement, where the row lock is of the -LOCK_X type. -Thus, this implements a 'mini-rollback' that releases the latest record -locks we set. */ +This can only be used when srv_locks_unsafe_for_binlog is TRUE or this +session is using a READ COMMITTED or READ UNCOMMITTED isolation level. +Before calling this function row_search_for_mysql() must have +initialized prebuilt->new_rec_locks to store the information which new +record locks really were set. This function removes a newly set +clustered index record lock under prebuilt->pcur or +prebuilt->clust_pcur. Thus, this implements a 'mini-rollback' that +releases the latest clustered index record lock we set. */ int row_unlock_for_mysql( /*=================*/ /* out: error code or DB_SUCCESS */ - row_prebuilt_t* prebuilt, /* in: prebuilt struct in MySQL + row_prebuilt_t* prebuilt, /* in/out: prebuilt struct in MySQL handle */ ibool has_latches_on_recs);/* TRUE if called so that we have the latches on the records under pcur @@ -660,18 +658,17 @@ struct row_prebuilt_struct { ulint new_rec_locks; /* normally 0; if srv_locks_unsafe_for_binlog is TRUE or session is using READ - COMMITTED isolation level, in a - cursor search, if we set a new - record lock on an index, this is - incremented; this is used in - releasing the locks under the - cursors if we are performing an - UPDATE and we determine after - retrieving the row that it does - not need to be locked; thus, - these can be used to implement a - 'mini-rollback' that releases - the latest record locks */ + COMMITTED or READ UNCOMMITTED + isolation level, set in + row_search_for_mysql() if we set a new + record lock on the secondary + or clustered index; this is + used in row_unlock_for_mysql() + when releasing the lock under + the cursor if we determine + after retrieving the row that + it does not need to be locked + ('mini-rollback') */ ulint mysql_prefix_len;/* byte offset of the end of the last requested column */ ulint mysql_row_len; /* length in bytes of a row in the diff --git a/storage/innobase/lock/lock0lock.c b/storage/innobase/lock/lock0lock.c index 7df8ea50887..04240960b3a 100644 --- a/storage/innobase/lock/lock0lock.c +++ b/storage/innobase/lock/lock0lock.c @@ -1739,11 +1739,12 @@ ulint lock_rec_enqueue_waiting( /*=====================*/ /* out: DB_LOCK_WAIT, DB_DEADLOCK, or - DB_QUE_THR_SUSPENDED, or DB_SUCCESS; - DB_SUCCESS means that there was a deadlock, - but another transaction was chosen as a - victim, and we got the lock immediately: - no need to wait then */ + DB_QUE_THR_SUSPENDED, or DB_SUCCESS_LOCKED_REC; + DB_SUCCESS_LOCKED_REC means that there + was a deadlock, but another + transaction was chosen as a victim, + and we got the lock immediately: no + need to wait then */ ulint type_mode,/* in: lock mode this transaction is requesting: LOCK_S or LOCK_X, possibly ORed with LOCK_GAP or LOCK_REC_NOT_GAP, ORed @@ -1804,7 +1805,7 @@ lock_rec_enqueue_waiting( if (trx->wait_lock == NULL) { - return(DB_SUCCESS); + return(DB_SUCCESS_LOCKED_REC); } trx->que_state = TRX_QUE_LOCK_WAIT; @@ -1903,6 +1904,16 @@ lock_rec_add_to_queue( return(lock_rec_create(type_mode, rec, index, trx)); } +/** Record locking request status */ +enum lock_rec_req_status { + /** Failed to acquire a lock */ + LOCK_REC_FAIL, + /** Succeeded in acquiring a lock (implicit or already acquired) */ + LOCK_REC_SUCCESS, + /** Explicitly created a new lock */ + LOCK_REC_SUCCESS_CREATED +}; + /************************************************************************* This is a fast routine for locking a record in the most common cases: there are no explicit locks on the page, or there is just one lock, owned @@ -1911,10 +1922,10 @@ which does NOT look at implicit locks! Checks lock compatibility within explicit locks. This function sets a normal next-key lock, or in the case of a page supremum record, a gap type lock. */ UNIV_INLINE -ibool +enum lock_rec_req_status lock_rec_lock_fast( /*===============*/ - /* out: TRUE if locking succeeded */ + /* out: whether the locking succeeded */ ibool impl, /* in: if TRUE, no lock is set if no wait is necessary: we assume that the caller will set an implicit lock */ @@ -1950,19 +1961,19 @@ lock_rec_lock_fast( lock_rec_create(mode, rec, index, trx); } - return(TRUE); + return(LOCK_REC_SUCCESS_CREATED); } if (lock_rec_get_next_on_page(lock)) { - return(FALSE); + return(LOCK_REC_FAIL); } if (lock->trx != trx || lock->type_mode != (mode | LOCK_REC) || lock_rec_get_n_bits(lock) <= heap_no) { - return(FALSE); + return(LOCK_REC_FAIL); } if (!impl) { @@ -1971,10 +1982,11 @@ lock_rec_lock_fast( if (!lock_rec_get_nth_bit(lock, heap_no)) { lock_rec_set_nth_bit(lock, heap_no); + return(LOCK_REC_SUCCESS_CREATED); } } - return(TRUE); + return(LOCK_REC_SUCCESS); } /************************************************************************* @@ -1986,8 +1998,9 @@ static ulint lock_rec_lock_slow( /*===============*/ - /* out: DB_SUCCESS, DB_LOCK_WAIT, or error - code */ + /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC, + DB_LOCK_WAIT, DB_DEADLOCK, + or DB_QUE_THR_SUSPENDED */ ibool impl, /* in: if TRUE, no lock is set if no wait is necessary: we assume that the caller will set an implicit lock */ @@ -1998,7 +2011,6 @@ lock_rec_lock_slow( que_thr_t* thr) /* in: query thread */ { trx_t* trx; - ulint err; ut_ad(mutex_own(&kernel_mutex)); ut_ad((LOCK_MODE_MASK & mode) != LOCK_S @@ -2017,26 +2029,21 @@ lock_rec_lock_slow( /* The trx already has a strong enough lock on rec: do nothing */ - err = DB_SUCCESS; } else if (lock_rec_other_has_conflicting(mode, rec, trx)) { /* If another transaction has a non-gap conflicting request in the queue, as this transaction does not have a lock strong enough already granted on the record, we have to wait. */ - err = lock_rec_enqueue_waiting(mode, rec, index, thr); - } else { - if (!impl) { - /* Set the requested lock on the record */ + return(lock_rec_enqueue_waiting(mode, rec, index, thr)); + } else if (!impl) { + /* Set the requested lock on the record */ - lock_rec_add_to_queue(LOCK_REC | mode, rec, index, - trx); - } - - err = DB_SUCCESS; + lock_rec_add_to_queue(LOCK_REC | mode, rec, index, trx); + return(DB_SUCCESS_LOCKED_REC); } - return(err); + return(DB_SUCCESS); } /************************************************************************* @@ -2049,8 +2056,9 @@ static ulint lock_rec_lock( /*==========*/ - /* out: DB_SUCCESS, DB_LOCK_WAIT, or error - code */ + /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC, + DB_LOCK_WAIT, DB_DEADLOCK, or + DB_QUE_THR_SUSPENDED */ ibool impl, /* in: if TRUE, no lock is set if no wait is necessary: we assume that the caller will set an implicit lock */ @@ -2060,8 +2068,6 @@ lock_rec_lock( dict_index_t* index, /* in: index of record */ que_thr_t* thr) /* in: query thread */ { - ulint err; - ut_ad(mutex_own(&kernel_mutex)); ut_ad((LOCK_MODE_MASK & mode) != LOCK_S || lock_table_has(thr_get_trx(thr), index->table, LOCK_IS)); @@ -2073,17 +2079,19 @@ lock_rec_lock( || mode - (LOCK_MODE_MASK & mode) == LOCK_REC_NOT_GAP || mode - (LOCK_MODE_MASK & mode) == 0); - if (lock_rec_lock_fast(impl, mode, rec, index, thr)) { - - /* We try a simplified and faster subroutine for the most - common cases */ - - err = DB_SUCCESS; - } else { - err = lock_rec_lock_slow(impl, mode, rec, index, thr); + /* We try a simplified and faster subroutine for the most + common cases */ + switch (lock_rec_lock_fast(impl, mode, rec, index, thr)) { + case LOCK_REC_SUCCESS: + return(DB_SUCCESS); + case LOCK_REC_SUCCESS_CREATED: + return(DB_SUCCESS_LOCKED_REC); + case LOCK_REC_FAIL: + return(lock_rec_lock_slow(impl, mode, rec, index, thr)); } - return(err); + ut_error; + return(DB_ERROR); } /************************************************************************* @@ -4832,7 +4840,7 @@ lock_rec_insert_check_and_lock( lock = lock_rec_get_first(next_rec); - if (lock == NULL) { + if (UNIV_LIKELY(lock == NULL)) { /* We optimize CPU time usage in the simplest case */ lock_mutex_exit_kernel(); @@ -4840,8 +4848,7 @@ lock_rec_insert_check_and_lock( if (!(index->type & DICT_CLUSTERED)) { /* Update the page max trx id field */ - page_update_max_trx_id(buf_frame_align(rec), - thr_get_trx(thr)->id); + page_update_max_trx_id(buf_frame_align(rec), trx->id); } return(DB_SUCCESS); @@ -4873,11 +4880,16 @@ lock_rec_insert_check_and_lock( lock_mutex_exit_kernel(); - if (!(index->type & DICT_CLUSTERED) && (err == DB_SUCCESS)) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + /* fall through */ + case DB_SUCCESS: + if (index->type & DICT_CLUSTERED) { + break; + } /* Update the page max trx id field */ - page_update_max_trx_id(buf_frame_align(rec), - thr_get_trx(thr)->id); + page_update_max_trx_id(buf_frame_align(rec), trx->id); } #ifdef UNIV_DEBUG @@ -4984,6 +4996,10 @@ lock_clust_rec_modify_check_and_lock( ut_ad(lock_rec_queue_validate(rec, index, offsets)); + if (UNIV_UNLIKELY(err == DB_SUCCESS_LOCKED_REC)) { + err = DB_SUCCESS; + } + return(err); } @@ -5043,25 +5059,29 @@ lock_sec_rec_modify_check_and_lock( } #endif /* UNIV_DEBUG */ - if (err == DB_SUCCESS) { + if (err == DB_SUCCESS || err == DB_SUCCESS_LOCKED_REC) { /* Update the page max trx id field */ - + /* It might not be necessary to do this if + err == DB_SUCCESS (no new lock created), + but it should not cost too much performance. */ page_update_max_trx_id(buf_frame_align(rec), thr_get_trx(thr)->id); + err = DB_SUCCESS; } return(err); } /************************************************************************* -Like the counterpart for a clustered index below, but now we read a +Like lock_clust_rec_read_check_and_lock(), but reads a secondary index record. */ ulint lock_sec_rec_read_check_and_lock( /*=============================*/ - /* out: DB_SUCCESS, DB_LOCK_WAIT, - DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */ + /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC, + DB_LOCK_WAIT, DB_DEADLOCK, + or DB_QUE_THR_SUSPENDED */ ulint flags, /* in: if BTR_NO_LOCKING_FLAG bit is set, does nothing */ rec_t* rec, /* in: user record or page supremum record @@ -5126,8 +5146,9 @@ lock on the record. */ ulint lock_clust_rec_read_check_and_lock( /*===============================*/ - /* out: DB_SUCCESS, DB_LOCK_WAIT, - DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */ + /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC, + DB_LOCK_WAIT, DB_DEADLOCK, + or DB_QUE_THR_SUSPENDED */ ulint flags, /* in: if BTR_NO_LOCKING_FLAG bit is set, does nothing */ rec_t* rec, /* in: user record or page supremum record @@ -5206,16 +5227,21 @@ lock_clust_rec_read_check_and_lock_alt( mem_heap_t* tmp_heap = NULL; ulint offsets_[REC_OFFS_NORMAL_SIZE]; ulint* offsets = offsets_; - ulint ret; + ulint err; *offsets_ = (sizeof offsets_) / sizeof *offsets_; offsets = rec_get_offsets(rec, index, offsets, ULINT_UNDEFINED, &tmp_heap); - ret = lock_clust_rec_read_check_and_lock(flags, rec, index, + err = lock_clust_rec_read_check_and_lock(flags, rec, index, offsets, mode, gap_mode, thr); if (tmp_heap) { mem_heap_free(tmp_heap); } - return(ret); + + if (UNIV_UNLIKELY(err == DB_SUCCESS_LOCKED_REC)) { + err = DB_SUCCESS; + } + + return(err); } diff --git a/storage/innobase/row/row0ins.c b/storage/innobase/row/row0ins.c index 51c295b5098..9786f90fd39 100644 --- a/storage/innobase/row/row0ins.c +++ b/storage/innobase/row/row0ins.c @@ -1114,7 +1114,8 @@ static ulint row_ins_set_shared_rec_lock( /*========================*/ - /* out: DB_SUCCESS or error code */ + /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC, + or error code */ ulint type, /* in: LOCK_ORDINARY, LOCK_GAP, or LOCK_REC_NOT_GAP type lock */ rec_t* rec, /* in: record */ @@ -1145,7 +1146,8 @@ static ulint row_ins_set_exclusive_rec_lock( /*===========================*/ - /* out: DB_SUCCESS or error code */ + /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC, + or error code */ ulint type, /* in: LOCK_ORDINARY, LOCK_GAP, or LOCK_REC_NOT_GAP type lock */ rec_t* rec, /* in: record */ @@ -1195,9 +1197,7 @@ row_ins_check_foreign_constraint( dict_table_t* check_table; dict_index_t* check_index; ulint n_fields_cmp; - rec_t* rec; btr_pcur_t pcur; - ibool moved; int cmp; ulint err; ulint i; @@ -1328,12 +1328,12 @@ run_again: /* Scan index records and check if there is a matching record */ - for (;;) { - rec = btr_pcur_get_rec(&pcur); + do { + rec_t* rec = btr_pcur_get_rec(&pcur); if (page_rec_is_infimum(rec)) { - goto next_rec; + continue; } offsets = rec_get_offsets(rec, check_index, @@ -1343,12 +1343,13 @@ run_again: err = row_ins_set_shared_rec_lock( LOCK_ORDINARY, rec, check_index, offsets, thr); - if (err != DB_SUCCESS) { - - break; + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + continue; + default: + goto end_scan; } - - goto next_rec; } cmp = cmp_dtuple_rec(entry, rec, offsets); @@ -1359,9 +1360,12 @@ run_again: err = row_ins_set_shared_rec_lock( LOCK_ORDINARY, rec, check_index, offsets, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: break; + default: + goto end_scan; } } else { /* Found a matching record. Lock only @@ -1372,15 +1376,18 @@ run_again: LOCK_REC_NOT_GAP, rec, check_index, offsets, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: break; + default: + goto end_scan; } if (check_ref) { err = DB_SUCCESS; - break; + goto end_scan; } else if (foreign->type != 0) { /* There is an ON UPDATE or ON DELETE condition: check them in a separate @@ -1406,7 +1413,7 @@ run_again: err = DB_FOREIGN_DUPLICATE_KEY; } - break; + goto end_scan; } } else { row_ins_foreign_report_err( @@ -1414,48 +1421,39 @@ run_again: thr, foreign, rec, entry); err = DB_ROW_IS_REFERENCED; - break; + goto end_scan; } } - } + } else { + ut_a(cmp < 0); - if (cmp < 0) { err = row_ins_set_shared_rec_lock( LOCK_GAP, rec, check_index, offsets, thr); - if (err != DB_SUCCESS) { - - break; + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + if (check_ref) { + err = DB_NO_REFERENCED_ROW; + row_ins_foreign_report_add_err( + trx, foreign, rec, entry); + } else { + err = DB_SUCCESS; + } } - if (check_ref) { - err = DB_NO_REFERENCED_ROW; - row_ins_foreign_report_add_err( - trx, foreign, rec, entry); - } else { - err = DB_SUCCESS; - } - - break; + goto end_scan; } + } while (btr_pcur_move_to_next(&pcur, &mtr)); - ut_a(cmp == 0); -next_rec: - moved = btr_pcur_move_to_next(&pcur, &mtr); - - if (!moved) { - if (check_ref) { - rec = btr_pcur_get_rec(&pcur); - row_ins_foreign_report_add_err( - trx, foreign, rec, entry); - err = DB_NO_REFERENCED_ROW; - } else { - err = DB_SUCCESS; - } - - break; - } + if (check_ref) { + row_ins_foreign_report_add_err( + trx, foreign, btr_pcur_get_rec(&pcur), entry); + err = DB_NO_REFERENCED_ROW; + } else { + err = DB_SUCCESS; } +end_scan: btr_pcur_close(&pcur); mtr_commit(&mtr); @@ -1641,10 +1639,8 @@ row_ins_scan_sec_index_for_duplicate( ulint i; int cmp; ulint n_fields_cmp; - rec_t* rec; btr_pcur_t pcur; ulint err = DB_SUCCESS; - ibool moved; unsigned allow_duplicates; mtr_t mtr; mem_heap_t* heap = NULL; @@ -1680,12 +1676,12 @@ row_ins_scan_sec_index_for_duplicate( /* Scan index records and check if there is a duplicate */ - for (;;) { - rec = btr_pcur_get_rec(&pcur); + do { + rec_t* rec = btr_pcur_get_rec(&pcur); if (page_rec_is_infimum(rec)) { - goto next_rec; + continue; } offsets = rec_get_offsets(rec, index, offsets, @@ -1706,14 +1702,18 @@ row_ins_scan_sec_index_for_duplicate( LOCK_ORDINARY, rec, index, offsets, thr); } - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + case DB_SUCCESS: break; + default: + goto end_scan; } if (page_rec_is_supremum(rec)) { - goto next_rec; + continue; } cmp = cmp_dtuple_rec(entry, rec, offsets); @@ -1725,23 +1725,15 @@ row_ins_scan_sec_index_for_duplicate( thr_get_trx(thr)->error_info = index; - break; + goto end_scan; } + } else { + ut_a(cmp < 0); + goto end_scan; } + } while (btr_pcur_move_to_next(&pcur, &mtr)); - if (cmp < 0) { - break; - } - - ut_a(cmp == 0); -next_rec: - moved = btr_pcur_move_to_next(&pcur, &mtr); - - if (!moved) { - break; - } - } - +end_scan: if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -1837,7 +1829,11 @@ row_ins_duplicate_error_in_clust( cursor->index, offsets, thr); } - if (err != DB_SUCCESS) { + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + break; + default: goto func_exit; } @@ -1875,7 +1871,11 @@ row_ins_duplicate_error_in_clust( cursor->index, offsets, thr); } - if (err != DB_SUCCESS) { + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + break; + default: goto func_exit; } diff --git a/storage/innobase/row/row0mysql.c b/storage/innobase/row/row0mysql.c index b4ce31575c7..4a834c4efc2 100644 --- a/storage/innobase/row/row0mysql.c +++ b/storage/innobase/row/row0mysql.c @@ -1455,22 +1455,20 @@ run_again: } /************************************************************************* -This can only be used when srv_locks_unsafe_for_binlog is TRUE or -this session is using a READ COMMITTED isolation level. Before -calling this function we must use trx_reset_new_rec_lock_info() and -trx_register_new_rec_lock() to store the information which new record locks -really were set. This function removes a newly set lock under prebuilt->pcur, -and also under prebuilt->clust_pcur. Currently, this is only used and tested -in the case of an UPDATE or a DELETE statement, where the row lock is of the -LOCK_X type. -Thus, this implements a 'mini-rollback' that releases the latest record -locks we set. */ +This can only be used when srv_locks_unsafe_for_binlog is TRUE or this +session is using a READ COMMITTED or READ UNCOMMITTED isolation level. +Before calling this function row_search_for_mysql() must have +initialized prebuilt->new_rec_locks to store the information which new +record locks really were set. This function removes a newly set +clustered index record lock under prebuilt->pcur or +prebuilt->clust_pcur. Thus, this implements a 'mini-rollback' that +releases the latest clustered index record lock we set. */ int row_unlock_for_mysql( /*=================*/ /* out: error code or DB_SUCCESS */ - row_prebuilt_t* prebuilt, /* in: prebuilt struct in MySQL + row_prebuilt_t* prebuilt, /* in/out: prebuilt struct in MySQL handle */ ibool has_latches_on_recs)/* TRUE if called so that we have the latches on the records under pcur diff --git a/storage/innobase/row/row0sel.c b/storage/innobase/row/row0sel.c index 6912a489f75..fcc95aec9af 100644 --- a/storage/innobase/row/row0sel.c +++ b/storage/innobase/row/row0sel.c @@ -754,8 +754,14 @@ row_sel_get_clust_rec( 0, clust_rec, index, offsets, node->row_lock_mode, lock_type, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS: + case DB_SUCCESS_LOCKED_REC: + /* Declare the variable uninitialized in Valgrind. + It should be set to DB_SUCCESS at func_exit. */ + UNIV_MEM_INVALID(&err, sizeof err); + break; + default: goto err_exit; } } else { @@ -826,7 +832,8 @@ UNIV_INLINE ulint sel_set_rec_lock( /*=============*/ - /* out: DB_SUCCESS or error code */ + /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC, + or error code */ rec_t* rec, /* in: record */ dict_index_t* index, /* in: index */ const ulint* offsets,/* in: rec_get_offsets(rec, index) */ @@ -1374,11 +1381,15 @@ rec_loop: node->row_lock_mode, lock_type, thr); - if (err != DB_SUCCESS) { + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + case DB_SUCCESS: + break; + default: /* Note that in this case we will store in pcur the PREDECESSOR of the record we are waiting the lock for */ - goto lock_wait_or_error; } } @@ -1429,8 +1440,12 @@ skip_lock: err = sel_set_rec_lock(rec, index, offsets, node->row_lock_mode, lock_type, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + case DB_SUCCESS: + break; + default: goto lock_wait_or_error; } } @@ -2745,7 +2760,8 @@ static ulint row_sel_get_clust_rec_for_mysql( /*============================*/ - /* out: DB_SUCCESS or error code */ + /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC, + or error code */ row_prebuilt_t* prebuilt,/* in: prebuilt struct in the handle */ dict_index_t* sec_index,/* in: secondary index where rec resides */ rec_t* rec, /* in: record in a non-clustered index; if @@ -2826,6 +2842,7 @@ row_sel_get_clust_rec_for_mysql( clust_rec = NULL; + err = DB_SUCCESS; goto func_exit; } @@ -2840,8 +2857,11 @@ row_sel_get_clust_rec_for_mysql( err = lock_clust_rec_read_check_and_lock( 0, clust_rec, clust_index, *offsets, prebuilt->select_lock_type, LOCK_REC_NOT_GAP, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS: + case DB_SUCCESS_LOCKED_REC: + break; + default: goto err_exit; } } else { @@ -2900,6 +2920,8 @@ row_sel_get_clust_rec_for_mysql( rec, sec_index, clust_rec, clust_index)); #endif } + + err = DB_SUCCESS; } func_exit: @@ -2912,7 +2934,6 @@ func_exit: btr_pcur_store_position(prebuilt->clust_pcur, mtr); } - err = DB_SUCCESS; err_exit: return(err); } @@ -3626,8 +3647,12 @@ shortcut_fails_too_big_rec: prebuilt->select_lock_type, LOCK_GAP, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + case DB_SUCCESS: + break; + default: goto lock_wait_or_error; } } @@ -3724,8 +3749,12 @@ rec_loop: prebuilt->select_lock_type, LOCK_ORDINARY, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + case DB_SUCCESS: + break; + default: goto lock_wait_or_error; } } @@ -3856,8 +3885,11 @@ wrong_offs: prebuilt->select_lock_type, LOCK_GAP, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + break; + default: goto lock_wait_or_error; } } @@ -3891,8 +3923,11 @@ wrong_offs: prebuilt->select_lock_type, LOCK_GAP, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + break; + default: goto lock_wait_or_error; } } @@ -3961,15 +3996,21 @@ no_gap_lock: switch (err) { rec_t* old_vers; - case DB_SUCCESS: + case DB_SUCCESS_LOCKED_REC: if (srv_locks_unsafe_for_binlog - || trx->isolation_level <= TRX_ISO_READ_COMMITTED) { + || trx->isolation_level + <= TRX_ISO_READ_COMMITTED) { /* Note that a record of prebuilt->index was locked. */ prebuilt->new_rec_locks = 1; } + err = DB_SUCCESS; + case DB_SUCCESS: break; case DB_LOCK_WAIT: + /* Never unlock rows that were part of a conflict. */ + prebuilt->new_rec_locks = 0; + if (UNIV_LIKELY(prebuilt->row_read_type != ROW_READ_TRY_SEMI_CONSISTENT) || unique_search @@ -3999,7 +4040,6 @@ no_gap_lock: if (UNIV_LIKELY(trx->wait_lock != NULL)) { lock_cancel_waiting_and_release( trx->wait_lock); - prebuilt->new_rec_locks = 0; } else { mutex_exit(&kernel_mutex); @@ -4011,9 +4051,6 @@ no_gap_lock: ULINT_UNDEFINED, &heap); err = DB_SUCCESS; - /* Note that a record of - prebuilt->index was locked. */ - prebuilt->new_rec_locks = 1; break; } mutex_exit(&kernel_mutex); @@ -4151,27 +4188,30 @@ requires_clust_rec: err = row_sel_get_clust_rec_for_mysql(prebuilt, index, rec, thr, &clust_rec, &offsets, &heap, &mtr); - if (err != DB_SUCCESS) { + switch (err) { + case DB_SUCCESS: + if (clust_rec == NULL) { + /* The record did not exist in the read view */ + ut_ad(prebuilt->select_lock_type == LOCK_NONE); + goto next_rec; + } + break; + case DB_SUCCESS_LOCKED_REC: + ut_a(clust_rec != NULL); + if (srv_locks_unsafe_for_binlog + || trx->isolation_level + <= TRX_ISO_READ_COMMITTED) { + /* Note that the clustered index record + was locked. */ + prebuilt->new_rec_locks = 2; + } + err = DB_SUCCESS; + break; + default: goto lock_wait_or_error; } - if (clust_rec == NULL) { - /* The record did not exist in the read view */ - ut_ad(prebuilt->select_lock_type == LOCK_NONE); - - goto next_rec; - } - - if ((srv_locks_unsafe_for_binlog - || trx->isolation_level <= TRX_ISO_READ_COMMITTED) - && prebuilt->select_lock_type != LOCK_NONE) { - /* Note that both the secondary index record - and the clustered index record were locked. */ - ut_ad(prebuilt->new_rec_locks == 1); - prebuilt->new_rec_locks = 2; - } - if (UNIV_UNLIKELY(rec_get_deleted_flag(clust_rec, comp))) { /* The record is delete marked: we can skip it */ From c84c4b107c7d471588433a4d1fa1c3b8b37dccf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 2 Jun 2010 13:37:14 +0300 Subject: [PATCH 114/461] Bug#53674: InnoDB: Error: unlock row could not find a 4 mode lock on the record In semi-consistent read, only unlock freshly locked non-matching records. lock_rec_lock_fast(): Return LOCK_REC_SUCCESS, LOCK_REC_SUCCESS_CREATED, or LOCK_REC_FAIL instead of TRUE/FALSE. enum db_err: Add DB_SUCCESS_LOCKED_REC for indicating a successful operation where a record lock was created. lock_sec_rec_read_check_and_lock(), lock_clust_rec_read_check_and_lock(), lock_rec_enqueue_waiting(), lock_rec_lock_slow(), lock_rec_lock(), row_ins_set_shared_rec_lock(), row_ins_set_exclusive_rec_lock(), sel_set_rec_lock(), row_sel_get_clust_rec_for_mysql(): Return DB_SUCCESS_LOCKED_REC if a new record lock was created. Adjust callers. row_unlock_for_mysql(): Correct the function documentation. row_prebuilt_t::new_rec_locks: Correct the documentation. --- .../innodb_plugin/r/innodb_bug53674.result | 11 ++ .../t/innodb_bug53674-master.opt | 1 + .../innodb_plugin/t/innodb_bug53674.test | 8 + storage/innodb_plugin/include/db0err.h | 2 + storage/innodb_plugin/include/lock0lock.h | 12 +- storage/innodb_plugin/include/row0mysql.h | 54 ++++--- storage/innodb_plugin/lock/lock0lock.c | 138 +++++++++++------- storage/innodb_plugin/row/row0ins.c | 130 +++++++++-------- storage/innodb_plugin/row/row0mysql.c | 31 ++-- storage/innodb_plugin/row/row0sel.c | 132 +++++++++++------ 10 files changed, 308 insertions(+), 211 deletions(-) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug53674.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug53674-master.opt create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug53674.test diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug53674.result b/mysql-test/suite/innodb_plugin/r/innodb_bug53674.result new file mode 100644 index 00000000000..c4021c2e7cd --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug53674.result @@ -0,0 +1,11 @@ +create table bug53674(a int)engine=innodb; +insert into bug53674 values (1),(2); +start transaction; +select * from bug53674 for update; +a +1 +2 +select * from bug53674 where a=(select a from bug53674 where a > 1); +a +2 +drop table bug53674; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53674-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_bug53674-master.opt new file mode 100644 index 00000000000..f1cfd7ab6c7 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53674-master.opt @@ -0,0 +1 @@ +--log-bin --innodb-locks-unsafe-for-binlog --binlog-format=mixed diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53674.test b/mysql-test/suite/innodb_plugin/t/innodb_bug53674.test new file mode 100644 index 00000000000..e3cbf4466a7 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53674.test @@ -0,0 +1,8 @@ +-- source include/have_innodb_plugin.inc + +create table bug53674(a int)engine=innodb; +insert into bug53674 values (1),(2); +start transaction; +select * from bug53674 for update; +select * from bug53674 where a=(select a from bug53674 where a > 1); +drop table bug53674; diff --git a/storage/innodb_plugin/include/db0err.h b/storage/innodb_plugin/include/db0err.h index 747e9b5364e..c841c2b4afe 100644 --- a/storage/innodb_plugin/include/db0err.h +++ b/storage/innodb_plugin/include/db0err.h @@ -28,6 +28,8 @@ Created 5/24/1996 Heikki Tuuri enum db_err { + DB_SUCCESS_LOCKED_REC = 9, /*!< like DB_SUCCESS, but a new + explicit record lock was created */ DB_SUCCESS = 10, /* The following are error codes */ diff --git a/storage/innodb_plugin/include/lock0lock.h b/storage/innodb_plugin/include/lock0lock.h index 7d76cbe3c75..b3e1e5c4537 100644 --- a/storage/innodb_plugin/include/lock0lock.h +++ b/storage/innodb_plugin/include/lock0lock.h @@ -340,11 +340,12 @@ lock_sec_rec_modify_check_and_lock( que_thr_t* thr, /*!< in: query thread */ mtr_t* mtr); /*!< in/out: mini-transaction */ /*********************************************************************//** -Like the counterpart for a clustered index below, but now we read a +Like lock_clust_rec_read_check_and_lock(), but reads a secondary index record. -@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */ +@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK, +or DB_QUE_THR_SUSPENDED */ UNIV_INTERN -ulint +enum db_err lock_sec_rec_read_check_and_lock( /*=============================*/ ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG @@ -371,9 +372,10 @@ if the query thread should anyway be suspended for some reason; if not, then puts the transaction and the query thread to the lock wait state and inserts a waiting request for a record lock to the lock queue. Sets the requested mode lock on the record. -@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */ +@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK, +or DB_QUE_THR_SUSPENDED */ UNIV_INTERN -ulint +enum db_err lock_clust_rec_read_check_and_lock( /*===============================*/ ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG diff --git a/storage/innodb_plugin/include/row0mysql.h b/storage/innodb_plugin/include/row0mysql.h index e90742abe7c..39ea240772c 100644 --- a/storage/innodb_plugin/include/row0mysql.h +++ b/storage/innodb_plugin/include/row0mysql.h @@ -264,27 +264,26 @@ row_update_for_mysql( row_prebuilt_t* prebuilt); /*!< in: prebuilt struct in MySQL handle */ /*********************************************************************//** -This can only be used when srv_locks_unsafe_for_binlog is TRUE or -session is using a READ COMMITTED isolation level. Before -calling this function we must use trx_reset_new_rec_lock_info() and -trx_register_new_rec_lock() to store the information which new record locks -really were set. This function removes a newly set lock under prebuilt->pcur, -and also under prebuilt->clust_pcur. Currently, this is only used and tested -in the case of an UPDATE or a DELETE statement, where the row lock is of the -LOCK_X type. -Thus, this implements a 'mini-rollback' that releases the latest record -locks we set. -@return error code or DB_SUCCESS */ +This can only be used when srv_locks_unsafe_for_binlog is TRUE or this +session is using a READ COMMITTED or READ UNCOMMITTED isolation level. +Before calling this function row_search_for_mysql() must have +initialized prebuilt->new_rec_locks to store the information which new +record locks really were set. This function removes a newly set +clustered index record lock under prebuilt->pcur or +prebuilt->clust_pcur. Thus, this implements a 'mini-rollback' that +releases the latest clustered index record lock we set. +@return error code or DB_SUCCESS */ UNIV_INTERN int row_unlock_for_mysql( /*=================*/ - row_prebuilt_t* prebuilt, /*!< in: prebuilt struct in MySQL + row_prebuilt_t* prebuilt, /*!< in/out: prebuilt struct in MySQL handle */ - ibool has_latches_on_recs);/*!< TRUE if called so that we have - the latches on the records under pcur - and clust_pcur, and we do not need to - reposition the cursors. */ + ibool has_latches_on_recs);/*!< in: TRUE if called + so that we have the latches on + the records under pcur and + clust_pcur, and we do not need + to reposition the cursors. */ /*********************************************************************//** Creates an query graph node of 'update' type to be used in the MySQL interface. @@ -702,18 +701,17 @@ struct row_prebuilt_struct { ulint new_rec_locks; /*!< normally 0; if srv_locks_unsafe_for_binlog is TRUE or session is using READ - COMMITTED isolation level, in a - cursor search, if we set a new - record lock on an index, this is - incremented; this is used in - releasing the locks under the - cursors if we are performing an - UPDATE and we determine after - retrieving the row that it does - not need to be locked; thus, - these can be used to implement a - 'mini-rollback' that releases - the latest record locks */ + COMMITTED or READ UNCOMMITTED + isolation level, set in + row_search_for_mysql() if we set a new + record lock on the secondary + or clustered index; this is + used in row_unlock_for_mysql() + when releasing the lock under + the cursor if we determine + after retrieving the row that + it does not need to be locked + ('mini-rollback') */ ulint mysql_prefix_len;/*!< byte offset of the end of the last requested column */ ulint mysql_row_len; /*!< length in bytes of a row in the diff --git a/storage/innodb_plugin/lock/lock0lock.c b/storage/innodb_plugin/lock/lock0lock.c index d6d9f6668da..77d69d11a2d 100644 --- a/storage/innodb_plugin/lock/lock0lock.c +++ b/storage/innodb_plugin/lock/lock0lock.c @@ -1733,11 +1733,11 @@ lock_rec_create( Enqueues a waiting request for a lock which cannot be granted immediately. Checks for deadlocks. @return DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED, or -DB_SUCCESS; DB_SUCCESS means that there was a deadlock, but another -transaction was chosen as a victim, and we got the lock immediately: -no need to wait then */ +DB_SUCCESS_LOCKED_REC; DB_SUCCESS_LOCKED_REC means that +there was a deadlock, but another transaction was chosen as a victim, +and we got the lock immediately: no need to wait then */ static -ulint +enum db_err lock_rec_enqueue_waiting( /*=====================*/ ulint type_mode,/*!< in: lock mode this @@ -1809,7 +1809,7 @@ lock_rec_enqueue_waiting( if (trx->wait_lock == NULL) { - return(DB_SUCCESS); + return(DB_SUCCESS_LOCKED_REC); } trx->que_state = TRX_QUE_LOCK_WAIT; @@ -1925,6 +1925,16 @@ somebody_waits: return(lock_rec_create(type_mode, block, heap_no, index, trx)); } +/** Record locking request status */ +enum lock_rec_req_status { + /** Failed to acquire a lock */ + LOCK_REC_FAIL, + /** Succeeded in acquiring a lock (implicit or already acquired) */ + LOCK_REC_SUCCESS, + /** Explicitly created a new lock */ + LOCK_REC_SUCCESS_CREATED +}; + /*********************************************************************//** This is a fast routine for locking a record in the most common cases: there are no explicit locks on the page, or there is just one lock, owned @@ -1932,9 +1942,9 @@ by this transaction, and of the right type_mode. This is a low-level function which does NOT look at implicit locks! Checks lock compatibility within explicit locks. This function sets a normal next-key lock, or in the case of a page supremum record, a gap type lock. -@return TRUE if locking succeeded */ +@return whether the locking succeeded */ UNIV_INLINE -ibool +enum lock_rec_req_status lock_rec_lock_fast( /*===============*/ ibool impl, /*!< in: if TRUE, no lock is set @@ -1973,19 +1983,19 @@ lock_rec_lock_fast( lock_rec_create(mode, block, heap_no, index, trx); } - return(TRUE); + return(LOCK_REC_SUCCESS_CREATED); } if (lock_rec_get_next_on_page(lock)) { - return(FALSE); + return(LOCK_REC_FAIL); } if (lock->trx != trx || lock->type_mode != (mode | LOCK_REC) || lock_rec_get_n_bits(lock) <= heap_no) { - return(FALSE); + return(LOCK_REC_FAIL); } if (!impl) { @@ -1994,10 +2004,11 @@ lock_rec_lock_fast( if (!lock_rec_get_nth_bit(lock, heap_no)) { lock_rec_set_nth_bit(lock, heap_no); + return(LOCK_REC_SUCCESS_CREATED); } } - return(TRUE); + return(LOCK_REC_SUCCESS); } /*********************************************************************//** @@ -2005,9 +2016,10 @@ This is the general, and slower, routine for locking a record. This is a low-level function which does NOT look at implicit locks! Checks lock compatibility within explicit locks. This function sets a normal next-key lock, or in the case of a page supremum record, a gap type lock. -@return DB_SUCCESS, DB_LOCK_WAIT, or error code */ +@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK, +or DB_QUE_THR_SUSPENDED */ static -ulint +enum db_err lock_rec_lock_slow( /*===============*/ ibool impl, /*!< in: if TRUE, no lock is set @@ -2024,7 +2036,6 @@ lock_rec_lock_slow( que_thr_t* thr) /*!< in: query thread */ { trx_t* trx; - ulint err; ut_ad(mutex_own(&kernel_mutex)); ut_ad((LOCK_MODE_MASK & mode) != LOCK_S @@ -2043,27 +2054,23 @@ lock_rec_lock_slow( /* The trx already has a strong enough lock on rec: do nothing */ - err = DB_SUCCESS; } else if (lock_rec_other_has_conflicting(mode, block, heap_no, trx)) { /* If another transaction has a non-gap conflicting request in the queue, as this transaction does not have a lock strong enough already granted on the record, we have to wait. */ - err = lock_rec_enqueue_waiting(mode, block, heap_no, - index, thr); - } else { - if (!impl) { - /* Set the requested lock on the record */ + return(lock_rec_enqueue_waiting(mode, block, heap_no, + index, thr)); + } else if (!impl) { + /* Set the requested lock on the record */ - lock_rec_add_to_queue(LOCK_REC | mode, block, - heap_no, index, trx); - } - - err = DB_SUCCESS; + lock_rec_add_to_queue(LOCK_REC | mode, block, + heap_no, index, trx); + return(DB_SUCCESS_LOCKED_REC); } - return(err); + return(DB_SUCCESS); } /*********************************************************************//** @@ -2072,9 +2079,10 @@ possible, enqueues a waiting lock request. This is a low-level function which does NOT look at implicit locks! Checks lock compatibility within explicit locks. This function sets a normal next-key lock, or in the case of a page supremum record, a gap type lock. -@return DB_SUCCESS, DB_LOCK_WAIT, or error code */ +@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK, +or DB_QUE_THR_SUSPENDED */ static -ulint +enum db_err lock_rec_lock( /*==========*/ ibool impl, /*!< in: if TRUE, no lock is set @@ -2090,8 +2098,6 @@ lock_rec_lock( dict_index_t* index, /*!< in: index of record */ que_thr_t* thr) /*!< in: query thread */ { - ulint err; - ut_ad(mutex_own(&kernel_mutex)); ut_ad((LOCK_MODE_MASK & mode) != LOCK_S || lock_table_has(thr_get_trx(thr), index->table, LOCK_IS)); @@ -2103,18 +2109,20 @@ lock_rec_lock( || mode - (LOCK_MODE_MASK & mode) == LOCK_REC_NOT_GAP || mode - (LOCK_MODE_MASK & mode) == 0); - if (lock_rec_lock_fast(impl, mode, block, heap_no, index, thr)) { - - /* We try a simplified and faster subroutine for the most - common cases */ - - err = DB_SUCCESS; - } else { - err = lock_rec_lock_slow(impl, mode, block, - heap_no, index, thr); + /* We try a simplified and faster subroutine for the most + common cases */ + switch (lock_rec_lock_fast(impl, mode, block, heap_no, index, thr)) { + case LOCK_REC_SUCCESS: + return(DB_SUCCESS); + case LOCK_REC_SUCCESS_CREATED: + return(DB_SUCCESS_LOCKED_REC); + case LOCK_REC_FAIL: + return(lock_rec_lock_slow(impl, mode, block, + heap_no, index, thr)); } - return(err); + ut_error; + return(DB_ERROR); } /*********************************************************************//** @@ -5072,7 +5080,14 @@ lock_rec_insert_check_and_lock( lock_mutex_exit_kernel(); - if ((err == DB_SUCCESS) && !dict_index_is_clust(index)) { + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + /* fall through */ + case DB_SUCCESS: + if (dict_index_is_clust(index)) { + break; + } /* Update the page max trx id field */ page_update_max_trx_id(block, buf_block_get_page_zip(block), @@ -5195,6 +5210,10 @@ lock_clust_rec_modify_check_and_lock( ut_ad(lock_rec_queue_validate(block, rec, index, offsets)); + if (UNIV_UNLIKELY(err == DB_SUCCESS_LOCKED_REC)) { + err = DB_SUCCESS; + } + return(err); } @@ -5261,22 +5280,27 @@ lock_sec_rec_modify_check_and_lock( } #endif /* UNIV_DEBUG */ - if (err == DB_SUCCESS) { + if (err == DB_SUCCESS || err == DB_SUCCESS_LOCKED_REC) { /* Update the page max trx id field */ + /* It might not be necessary to do this if + err == DB_SUCCESS (no new lock created), + but it should not cost too much performance. */ page_update_max_trx_id(block, buf_block_get_page_zip(block), thr_get_trx(thr)->id, mtr); + err = DB_SUCCESS; } return(err); } /*********************************************************************//** -Like the counterpart for a clustered index below, but now we read a +Like lock_clust_rec_read_check_and_lock(), but reads a secondary index record. -@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */ +@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK, +or DB_QUE_THR_SUSPENDED */ UNIV_INTERN -ulint +enum db_err lock_sec_rec_read_check_and_lock( /*=============================*/ ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG @@ -5297,8 +5321,8 @@ lock_sec_rec_read_check_and_lock( LOCK_REC_NOT_GAP */ que_thr_t* thr) /*!< in: query thread */ { - ulint err; - ulint heap_no; + enum db_err err; + ulint heap_no; ut_ad(!dict_index_is_clust(index)); ut_ad(block->frame == page_align(rec)); @@ -5349,9 +5373,10 @@ if the query thread should anyway be suspended for some reason; if not, then puts the transaction and the query thread to the lock wait state and inserts a waiting request for a record lock to the lock queue. Sets the requested mode lock on the record. -@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */ +@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK, +or DB_QUE_THR_SUSPENDED */ UNIV_INTERN -ulint +enum db_err lock_clust_rec_read_check_and_lock( /*===============================*/ ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG @@ -5372,8 +5397,8 @@ lock_clust_rec_read_check_and_lock( LOCK_REC_NOT_GAP */ que_thr_t* thr) /*!< in: query thread */ { - ulint err; - ulint heap_no; + enum db_err err; + ulint heap_no; ut_ad(dict_index_is_clust(index)); ut_ad(block->frame == page_align(rec)); @@ -5444,17 +5469,22 @@ lock_clust_rec_read_check_and_lock_alt( mem_heap_t* tmp_heap = NULL; ulint offsets_[REC_OFFS_NORMAL_SIZE]; ulint* offsets = offsets_; - ulint ret; + ulint err; rec_offs_init(offsets_); offsets = rec_get_offsets(rec, index, offsets, ULINT_UNDEFINED, &tmp_heap); - ret = lock_clust_rec_read_check_and_lock(flags, block, rec, index, + err = lock_clust_rec_read_check_and_lock(flags, block, rec, index, offsets, mode, gap_mode, thr); if (tmp_heap) { mem_heap_free(tmp_heap); } - return(ret); + + if (UNIV_UNLIKELY(err == DB_SUCCESS_LOCKED_REC)) { + err = DB_SUCCESS; + } + + return(err); } /*******************************************************************//** diff --git a/storage/innodb_plugin/row/row0ins.c b/storage/innodb_plugin/row/row0ins.c index 230dc45dadc..09d2ffc7431 100644 --- a/storage/innodb_plugin/row/row0ins.c +++ b/storage/innodb_plugin/row/row0ins.c @@ -1121,9 +1121,9 @@ nonstandard_exit_func: /*********************************************************************//** Sets a shared lock on a record. Used in locking possible duplicate key records and also in checking foreign key constraints. -@return DB_SUCCESS or error code */ +@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */ static -ulint +enum db_err row_ins_set_shared_rec_lock( /*========================*/ ulint type, /*!< in: LOCK_ORDINARY, LOCK_GAP, or @@ -1134,7 +1134,7 @@ row_ins_set_shared_rec_lock( const ulint* offsets,/*!< in: rec_get_offsets(rec, index) */ que_thr_t* thr) /*!< in: query thread */ { - ulint err; + enum db_err err; ut_ad(rec_offs_validate(rec, index, offsets)); @@ -1152,9 +1152,9 @@ row_ins_set_shared_rec_lock( /*********************************************************************//** Sets a exclusive lock on a record. Used in locking possible duplicate key records -@return DB_SUCCESS or error code */ +@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */ static -ulint +enum db_err row_ins_set_exclusive_rec_lock( /*===========================*/ ulint type, /*!< in: LOCK_ORDINARY, LOCK_GAP, or @@ -1165,7 +1165,7 @@ row_ins_set_exclusive_rec_lock( const ulint* offsets,/*!< in: rec_get_offsets(rec, index) */ que_thr_t* thr) /*!< in: query thread */ { - ulint err; + enum db_err err; ut_ad(rec_offs_validate(rec, index, offsets)); @@ -1205,7 +1205,6 @@ row_ins_check_foreign_constraint( dict_index_t* check_index; ulint n_fields_cmp; btr_pcur_t pcur; - ibool moved; int cmp; ulint err; ulint i; @@ -1336,13 +1335,13 @@ run_again: /* Scan index records and check if there is a matching record */ - for (;;) { + do { const rec_t* rec = btr_pcur_get_rec(&pcur); const buf_block_t* block = btr_pcur_get_block(&pcur); if (page_rec_is_infimum(rec)) { - goto next_rec; + continue; } offsets = rec_get_offsets(rec, check_index, @@ -1353,12 +1352,13 @@ run_again: err = row_ins_set_shared_rec_lock(LOCK_ORDINARY, block, rec, check_index, offsets, thr); - if (err != DB_SUCCESS) { - - break; + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + continue; + default: + goto end_scan; } - - goto next_rec; } cmp = cmp_dtuple_rec(entry, rec, offsets); @@ -1369,9 +1369,12 @@ run_again: err = row_ins_set_shared_rec_lock( LOCK_ORDINARY, block, rec, check_index, offsets, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: break; + default: + goto end_scan; } } else { /* Found a matching record. Lock only @@ -1382,15 +1385,18 @@ run_again: LOCK_REC_NOT_GAP, block, rec, check_index, offsets, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: break; + default: + goto end_scan; } if (check_ref) { err = DB_SUCCESS; - break; + goto end_scan; } else if (foreign->type != 0) { /* There is an ON UPDATE or ON DELETE condition: check them in a separate @@ -1416,7 +1422,7 @@ run_again: err = DB_FOREIGN_DUPLICATE_KEY; } - break; + goto end_scan; } /* row_ins_foreign_check_on_constraint @@ -1429,49 +1435,41 @@ run_again: thr, foreign, rec, entry); err = DB_ROW_IS_REFERENCED; - break; + goto end_scan; } } - } + } else { + ut_a(cmp < 0); - if (cmp < 0) { err = row_ins_set_shared_rec_lock( LOCK_GAP, block, rec, check_index, offsets, thr); - if (err != DB_SUCCESS) { - break; + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + if (check_ref) { + err = DB_NO_REFERENCED_ROW; + row_ins_foreign_report_add_err( + trx, foreign, rec, entry); + } else { + err = DB_SUCCESS; + } } - if (check_ref) { - err = DB_NO_REFERENCED_ROW; - row_ins_foreign_report_add_err( - trx, foreign, rec, entry); - } else { - err = DB_SUCCESS; - } - - break; + goto end_scan; } + } while (btr_pcur_move_to_next(&pcur, &mtr)); - ut_a(cmp == 0); -next_rec: - moved = btr_pcur_move_to_next(&pcur, &mtr); - - if (!moved) { - if (check_ref) { - rec = btr_pcur_get_rec(&pcur); - row_ins_foreign_report_add_err( - trx, foreign, rec, entry); - err = DB_NO_REFERENCED_ROW; - } else { - err = DB_SUCCESS; - } - - break; - } + if (check_ref) { + row_ins_foreign_report_add_err( + trx, foreign, btr_pcur_get_rec(&pcur), entry); + err = DB_NO_REFERENCED_ROW; + } else { + err = DB_SUCCESS; } +end_scan: btr_pcur_close(&pcur); mtr_commit(&mtr); @@ -1719,9 +1717,13 @@ row_ins_scan_sec_index_for_duplicate( rec, index, offsets, thr); } - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + case DB_SUCCESS: break; + default: + goto end_scan; } if (page_rec_is_supremum(rec)) { @@ -1738,17 +1740,15 @@ row_ins_scan_sec_index_for_duplicate( thr_get_trx(thr)->error_info = index; - break; + goto end_scan; } + } else { + ut_a(cmp < 0); + goto end_scan; } - - if (cmp < 0) { - break; - } - - ut_a(cmp == 0); } while (btr_pcur_move_to_next(&pcur, &mtr)); +end_scan: if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -1837,7 +1837,11 @@ row_ins_duplicate_error_in_clust( cursor->index, offsets, thr); } - if (err != DB_SUCCESS) { + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + break; + default: goto func_exit; } @@ -1877,7 +1881,11 @@ row_ins_duplicate_error_in_clust( rec, cursor->index, offsets, thr); } - if (err != DB_SUCCESS) { + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + break; + default: goto func_exit; } diff --git a/storage/innodb_plugin/row/row0mysql.c b/storage/innodb_plugin/row/row0mysql.c index c093925fc73..feeb7fc80b7 100644 --- a/storage/innodb_plugin/row/row0mysql.c +++ b/storage/innodb_plugin/row/row0mysql.c @@ -1430,27 +1430,26 @@ run_again: } /*********************************************************************//** -This can only be used when srv_locks_unsafe_for_binlog is TRUE or -this session is using a READ COMMITTED isolation level. Before -calling this function we must use trx_reset_new_rec_lock_info() and -trx_register_new_rec_lock() to store the information which new record locks -really were set. This function removes a newly set lock under prebuilt->pcur, -and also under prebuilt->clust_pcur. Currently, this is only used and tested -in the case of an UPDATE or a DELETE statement, where the row lock is of the -LOCK_X type. -Thus, this implements a 'mini-rollback' that releases the latest record -locks we set. -@return error code or DB_SUCCESS */ +This can only be used when srv_locks_unsafe_for_binlog is TRUE or this +session is using a READ COMMITTED or READ UNCOMMITTED isolation level. +Before calling this function row_search_for_mysql() must have +initialized prebuilt->new_rec_locks to store the information which new +record locks really were set. This function removes a newly set +clustered index record lock under prebuilt->pcur or +prebuilt->clust_pcur. Thus, this implements a 'mini-rollback' that +releases the latest clustered index record lock we set. +@return error code or DB_SUCCESS */ UNIV_INTERN int row_unlock_for_mysql( /*=================*/ - row_prebuilt_t* prebuilt, /*!< in: prebuilt struct in MySQL + row_prebuilt_t* prebuilt, /*!< in/out: prebuilt struct in MySQL handle */ - ibool has_latches_on_recs)/*!< TRUE if called so that we have - the latches on the records under pcur - and clust_pcur, and we do not need to - reposition the cursors. */ + ibool has_latches_on_recs)/*!< in: TRUE if called so + that we have the latches on + the records under pcur and + clust_pcur, and we do not need + to reposition the cursors. */ { btr_pcur_t* pcur = prebuilt->pcur; btr_pcur_t* clust_pcur = prebuilt->clust_pcur; diff --git a/storage/innodb_plugin/row/row0sel.c b/storage/innodb_plugin/row/row0sel.c index 4d19ed93a49..a5bf361661b 100644 --- a/storage/innodb_plugin/row/row0sel.c +++ b/storage/innodb_plugin/row/row0sel.c @@ -863,8 +863,14 @@ row_sel_get_clust_rec( clust_rec, index, offsets, node->row_lock_mode, lock_type, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS: + case DB_SUCCESS_LOCKED_REC: + /* Declare the variable uninitialized in Valgrind. + It should be set to DB_SUCCESS at func_exit. */ + UNIV_MEM_INVALID(&err, sizeof err); + break; + default: goto err_exit; } } else { @@ -934,9 +940,9 @@ err_exit: /*********************************************************************//** Sets a lock on a record. -@return DB_SUCCESS or error code */ +@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */ UNIV_INLINE -ulint +enum db_err sel_set_rec_lock( /*=============*/ const buf_block_t* block, /*!< in: buffer block of rec */ @@ -948,8 +954,8 @@ sel_set_rec_lock( LOC_REC_NOT_GAP */ que_thr_t* thr) /*!< in: query thread */ { - trx_t* trx; - ulint err; + trx_t* trx; + enum db_err err; trx = thr_get_trx(thr); @@ -1482,11 +1488,15 @@ rec_loop: node->row_lock_mode, lock_type, thr); - if (err != DB_SUCCESS) { + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + case DB_SUCCESS: + break; + default: /* Note that in this case we will store in pcur the PREDECESSOR of the record we are waiting the lock for */ - goto lock_wait_or_error; } } @@ -1538,8 +1548,12 @@ skip_lock: rec, index, offsets, node->row_lock_mode, lock_type, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + case DB_SUCCESS: + break; + default: goto lock_wait_or_error; } } @@ -2801,9 +2815,9 @@ row_sel_build_prev_vers_for_mysql( Retrieves the clustered index record corresponding to a record in a non-clustered index. Does the necessary locking. Used in the MySQL interface. -@return DB_SUCCESS or error code */ +@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */ static -ulint +enum db_err row_sel_get_clust_rec_for_mysql( /*============================*/ row_prebuilt_t* prebuilt,/*!< in: prebuilt struct in the handle */ @@ -2830,7 +2844,7 @@ row_sel_get_clust_rec_for_mysql( dict_index_t* clust_index; const rec_t* clust_rec; rec_t* old_vers; - ulint err; + enum db_err err; trx_t* trx; *out_rec = NULL; @@ -2889,6 +2903,7 @@ row_sel_get_clust_rec_for_mysql( clust_rec = NULL; + err = DB_SUCCESS; goto func_exit; } @@ -2904,8 +2919,11 @@ row_sel_get_clust_rec_for_mysql( 0, btr_pcur_get_block(prebuilt->clust_pcur), clust_rec, clust_index, *offsets, prebuilt->select_lock_type, LOCK_REC_NOT_GAP, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS: + case DB_SUCCESS_LOCKED_REC: + break; + default: goto err_exit; } } else { @@ -2965,6 +2983,8 @@ row_sel_get_clust_rec_for_mysql( rec, sec_index, clust_rec, clust_index)); #endif } + + err = DB_SUCCESS; } func_exit: @@ -2977,7 +2997,6 @@ func_exit: btr_pcur_store_position(prebuilt->clust_pcur, mtr); } - err = DB_SUCCESS; err_exit: return(err); } @@ -3702,8 +3721,12 @@ shortcut_fails_too_big_rec: prebuilt->select_lock_type, LOCK_GAP, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + case DB_SUCCESS: + break; + default: goto lock_wait_or_error; } } @@ -3801,8 +3824,12 @@ rec_loop: prebuilt->select_lock_type, LOCK_ORDINARY, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + err = DB_SUCCESS; + case DB_SUCCESS: + break; + default: goto lock_wait_or_error; } } @@ -3932,8 +3959,11 @@ wrong_offs: prebuilt->select_lock_type, LOCK_GAP, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + break; + default: goto lock_wait_or_error; } } @@ -3968,8 +3998,11 @@ wrong_offs: prebuilt->select_lock_type, LOCK_GAP, thr); - if (err != DB_SUCCESS) { - + switch (err) { + case DB_SUCCESS_LOCKED_REC: + case DB_SUCCESS: + break; + default: goto lock_wait_or_error; } } @@ -4039,15 +4072,21 @@ no_gap_lock: switch (err) { const rec_t* old_vers; - case DB_SUCCESS: + case DB_SUCCESS_LOCKED_REC: if (srv_locks_unsafe_for_binlog - || trx->isolation_level <= TRX_ISO_READ_COMMITTED) { + || trx->isolation_level + <= TRX_ISO_READ_COMMITTED) { /* Note that a record of prebuilt->index was locked. */ prebuilt->new_rec_locks = 1; } + err = DB_SUCCESS; + case DB_SUCCESS: break; case DB_LOCK_WAIT: + /* Never unlock rows that were part of a conflict. */ + prebuilt->new_rec_locks = 0; + if (UNIV_LIKELY(prebuilt->row_read_type != ROW_READ_TRY_SEMI_CONSISTENT) || unique_search @@ -4077,7 +4116,6 @@ no_gap_lock: if (UNIV_LIKELY(trx->wait_lock != NULL)) { lock_cancel_waiting_and_release( trx->wait_lock); - prebuilt->new_rec_locks = 0; } else { mutex_exit(&kernel_mutex); @@ -4089,9 +4127,6 @@ no_gap_lock: ULINT_UNDEFINED, &heap); err = DB_SUCCESS; - /* Note that a record of - prebuilt->index was locked. */ - prebuilt->new_rec_locks = 1; break; } mutex_exit(&kernel_mutex); @@ -4228,27 +4263,30 @@ requires_clust_rec: err = row_sel_get_clust_rec_for_mysql(prebuilt, index, rec, thr, &clust_rec, &offsets, &heap, &mtr); - if (err != DB_SUCCESS) { + switch (err) { + case DB_SUCCESS: + if (clust_rec == NULL) { + /* The record did not exist in the read view */ + ut_ad(prebuilt->select_lock_type == LOCK_NONE); + goto next_rec; + } + break; + case DB_SUCCESS_LOCKED_REC: + ut_a(clust_rec != NULL); + if (srv_locks_unsafe_for_binlog + || trx->isolation_level + <= TRX_ISO_READ_COMMITTED) { + /* Note that the clustered index record + was locked. */ + prebuilt->new_rec_locks = 2; + } + err = DB_SUCCESS; + break; + default: goto lock_wait_or_error; } - if (clust_rec == NULL) { - /* The record did not exist in the read view */ - ut_ad(prebuilt->select_lock_type == LOCK_NONE); - - goto next_rec; - } - - if ((srv_locks_unsafe_for_binlog - || trx->isolation_level <= TRX_ISO_READ_COMMITTED) - && prebuilt->select_lock_type != LOCK_NONE) { - /* Note that both the secondary index record - and the clustered index record were locked. */ - ut_ad(prebuilt->new_rec_locks == 1); - prebuilt->new_rec_locks = 2; - } - if (UNIV_UNLIKELY(rec_get_deleted_flag(clust_rec, comp))) { /* The record is delete marked: we can skip it */ From 3ac0b6f2031fbc3cbcc79c420909d9521eb64e36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 2 Jun 2010 13:39:03 +0300 Subject: [PATCH 115/461] Document the Bug #53674 fix in the InnoDB Plugin --- storage/innodb_plugin/ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index c90b401f0f8..20775b41ca8 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,10 @@ +2010-06-02 The InnoDB Team + + * include/db0err.h, include/lock0lock.h, include/row0mysql.h, + lock/lock0lock.c, row/row0ins.c, row/row0mysql.c, row/row0sel.c: + Fix Bug#53674 InnoDB: Error: unlock row could not find a + 4 mode lock on the record + 2010-06-01 The InnoDB Team * include/sync0rw.h, sync/sync0rw.c: From 1d9ab18a1a77d9323ac09512627e4b10f64e74ae Mon Sep 17 00:00:00 2001 From: Luis Soares Date: Wed, 2 Jun 2010 12:20:43 +0100 Subject: [PATCH 116/461] BUG#54161: MTR: disabled.def lists don't work with FQ test names MTR will ignore fully qualified test name entries in disabled.def lists. Therefore, it would still run the test case, even if it is listed. This patch fix this by extending the check when marking the test case as disabled to take into consideration not only the cases that contain the simple test name but also those that contain fully qualified test names. --- mysql-test/lib/mtr_cases.pm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mysql-test/lib/mtr_cases.pm b/mysql-test/lib/mtr_cases.pm index cf84c0ad31f..ea3a1efce55 100644 --- a/mysql-test/lib/mtr_cases.pm +++ b/mysql-test/lib/mtr_cases.pm @@ -768,11 +768,13 @@ sub collect_one_test_case { # Check for disabled tests # ---------------------------------------------------------------------- my $marked_as_disabled= 0; - if ( $disabled->{$tname} ) + if ( $disabled->{$tname} or $disabled->{"$suitename.$tname"} ) { # Test was marked as disabled in suites disabled.def file $marked_as_disabled= 1; - $tinfo->{'comment'}= $disabled->{$tname}; + # Test name may have been disabled with or without suite name part + $tinfo->{'comment'}= $disabled->{$tname} || + $disabled->{"$suitename.$tname"}; } my $disabled_file= "$testdir/$tname.disabled"; From 1b27674429a5c6f639eeff07ce952de3703d2f10 Mon Sep 17 00:00:00 2001 From: Luis Soares Date: Wed, 2 Jun 2010 23:26:12 +0100 Subject: [PATCH 117/461] BUG#53893: RBR: nullable unique key can lead to out-of-sync slave When using Unique Keys with nullable parts in RBR, the slave can choose the wrong row to update. This happens because a table with an unique key containing nullable parts cannot strictly guarantee uniqueness. As stated in the manual, for all engines, a UNIQUE index allows multiple NULL values for columns that can contain NULL. We fix this at the slave by extending the checks before assuming that the row found through an unique index is is the correct one. This means that when a record (R) is fetched from the storage engine and a key that is not primary (K) is used, the server does the following: - If K is unique and has no nullable parts, it returns R; - Otherwise, if any field in the before image that is part of K is null do an index scan; - If there is no NULL field in the BI part of K, then return R. A side change: renamed the existing test case file and added a test case covering the changes in this patch. --- ...ave_key.result => rpl_row_find_row.result} | 12 +++++++ ...d_slave_key.test => rpl_row_find_row.test} | 31 +++++++++++++++++ sql/log_event.cc | 34 +++++++++++++++++-- sql/log_event_old.cc | 34 +++++++++++++++++-- 4 files changed, 107 insertions(+), 4 deletions(-) rename mysql-test/suite/rpl/r/{rpl_row_disabled_slave_key.result => rpl_row_find_row.result} (62%) rename mysql-test/suite/rpl/t/{rpl_row_disabled_slave_key.test => rpl_row_find_row.test} (64%) diff --git a/mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result b/mysql-test/suite/rpl/r/rpl_row_find_row.result similarity index 62% rename from mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result rename to mysql-test/suite/rpl/r/rpl_row_find_row.result index 01e3dfd6508..69516b47b7d 100644 --- a/mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result +++ b/mysql-test/suite/rpl/r/rpl_row_find_row.result @@ -24,3 +24,15 @@ INSERT INTO t VALUES (1,2,4); INSERT INTO t VALUES (4,3,4); DELETE FROM t; DROP TABLE t; +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +CREATE TABLE t1 (c1 INT NOT NULL, c2 INT NOT NULL, c3 INT, UNIQUE KEY(c1,c3), KEY(c2)); +INSERT INTO t1(c1,c2) VALUES(1,1); +INSERT INTO t1(c1,c2) VALUES(1,2); +UPDATE t1 SET c1=1000 WHERE c2=2; +Comparing tables master:test.t1 and slave:test.t1 +DROP TABLE t1; diff --git a/mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test b/mysql-test/suite/rpl/t/rpl_row_find_row.test similarity index 64% rename from mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test rename to mysql-test/suite/rpl/t/rpl_row_find_row.test index 1d7e134f4f4..9163ab54406 100644 --- a/mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test +++ b/mysql-test/suite/rpl/t/rpl_row_find_row.test @@ -71,3 +71,34 @@ DELETE FROM t; DROP TABLE t; -- sync_slave_with_master + +# +# BUG#53893: RBR: nullable unique key can lead to out-of-sync slave +# + +# +# We insert two rows. Both with part of UNIQUE KEY set to null. +# Then we update the last row inserted. On master the correct +# row is updated. On the slave the wrong row would be updated +# because the engine would look it up by the NULL Unique KEY. +# As a consquence, the wrong row would be updated. +# + +-- connection master +-- source include/master-slave-reset.inc +-- connection master + +CREATE TABLE t1 (c1 INT NOT NULL, c2 INT NOT NULL, c3 INT, UNIQUE KEY(c1,c3), KEY(c2)); +INSERT INTO t1(c1,c2) VALUES(1,1); +INSERT INTO t1(c1,c2) VALUES(1,2); +UPDATE t1 SET c1=1000 WHERE c2=2; +-- sync_slave_with_master + +-- let $diff_table_1=master:test.t1 +-- let $diff_table_2=slave:test.t1 +-- source include/diff_tables.inc + +-- connection master +DROP TABLE t1; +-- sync_slave_with_master + diff --git a/sql/log_event.cc b/sql/log_event.cc index 2cc594d85b4..c07bb573188 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -9015,8 +9015,38 @@ int Rows_log_event::find_row(const Relay_log_info *rli) */ if (table->key_info->flags & HA_NOSAME) { - table->file->ha_index_end(); - goto ok; + /* Unique does not have non nullable part */ + if (!(table->key_info->flags & (HA_NULL_PART_KEY))) + { + table->file->ha_index_end(); + goto ok; + } + else + { + KEY *keyinfo= table->key_info; + /* + Unique has nullable part. We need to check if there is any field in the + BI image that is null and part of UNNI. + */ + bool null_found= FALSE; + + for (uint i=0, fieldnr= keyinfo->key_part[i].fieldnr - 1 ; + (i < keyinfo->key_parts) && !null_found ; + i++, fieldnr= keyinfo->key_part[i].fieldnr - 1) + { + Field **f= table->field+fieldnr; + if ((*f)->is_null()) + null_found= TRUE; + } + + if (!null_found) + { + table->file->ha_index_end(); + goto ok; + } + + /* else fall through to index scan */ + } } /* diff --git a/sql/log_event_old.cc b/sql/log_event_old.cc index 60b0df5253a..5f2d55d6477 100644 --- a/sql/log_event_old.cc +++ b/sql/log_event_old.cc @@ -2428,8 +2428,38 @@ int Old_rows_log_event::find_row(const Relay_log_info *rli) */ if (table->key_info->flags & HA_NOSAME) { - table->file->ha_index_end(); - DBUG_RETURN(0); + /* Unique does not have non nullable part */ + if (!(table->key_info->flags & (HA_NULL_PART_KEY))) + { + table->file->ha_index_end(); + DBUG_RETURN(0); + } + else + { + KEY *keyinfo= table->key_info; + /* + Unique has nullable part. We need to check if there is any field in the + BI image that is null and part of UNNI. + */ + bool null_found= FALSE; + + for (uint i=0, fieldnr= keyinfo->key_part[i].fieldnr - 1 ; + (i < keyinfo->key_parts) && !null_found ; + i++, fieldnr= keyinfo->key_part[i].fieldnr - 1) + { + Field **f= table->field+fieldnr; + if ((*f)->is_null()) + null_found= TRUE; + } + + if (!null_found) + { + table->file->ha_index_end(); + DBUG_RETURN(0); + } + + /* else fall through to index scan */ + } } /* From 5c6a9a5f6fb1c57ad99ac3a14a56ade38684d631 Mon Sep 17 00:00:00 2001 From: "Horst.Hunger" Date: Thu, 3 Jun 2010 10:31:26 +0200 Subject: [PATCH 118/461] Patch for bug#52913 including all review results and changes of date format. --- mysql-test/collections/default.experimental | 2 + mysql-test/include/mysqlhotcopy.inc | 116 ++++++++++++++ mysql-test/lib/mtr_misc.pl | 22 +++ mysql-test/mysql-test-run.pl | 9 ++ mysql-test/r/mysqlhotcopy_archive.result | 118 ++++++++++++++ mysql-test/r/mysqlhotcopy_myisam.result | 164 ++++++++++++++++++++ mysql-test/t/mysqlhotcopy_archive.test | 8 + mysql-test/t/mysqlhotcopy_myisam.test | 7 + 8 files changed, 446 insertions(+) create mode 100644 mysql-test/include/mysqlhotcopy.inc create mode 100644 mysql-test/r/mysqlhotcopy_archive.result create mode 100644 mysql-test/r/mysqlhotcopy_myisam.result create mode 100644 mysql-test/t/mysqlhotcopy_archive.test create mode 100644 mysql-test/t/mysqlhotcopy_myisam.test diff --git a/mysql-test/collections/default.experimental b/mysql-test/collections/default.experimental index 11c6613a9f7..f84337660ea 100644 --- a/mysql-test/collections/default.experimental +++ b/mysql-test/collections/default.experimental @@ -42,3 +42,5 @@ parts.partition_mgm_lc1_ndb # joro : NDB tests marked as experiment parts.partition_mgm_lc2_ndb # joro : NDB tests marked as experimental as agreed with bochklin parts.partition_syntax_ndb # joro : NDB tests marked as experimental as agreed with bochklin parts.partition_value_ndb # joro : NDB tests marked as experimental as agreed with bochklin +main.mysqlhotcopy_myisam # horst: due to bug#54129 +main.mysqlhotcopy_archive # horst: due to bug#54129 diff --git a/mysql-test/include/mysqlhotcopy.inc b/mysql-test/include/mysqlhotcopy.inc new file mode 100644 index 00000000000..585f8c13e74 --- /dev/null +++ b/mysql-test/include/mysqlhotcopy.inc @@ -0,0 +1,116 @@ +# Test of mysqlhotcopy (perl script) +# Author: Horst Hunger +# Created: 2010-05-10 + +--source include/not_windows.inc +--source include/not_embedded.inc + +let $MYSQLD_DATADIR= `SELECT @@datadir`; +--disable_warnings +DROP DATABASE IF EXISTS hotcopy_test; +--enable_warnings +CREATE DATABASE hotcopy_test; +USE hotcopy_test; +eval CREATE TABLE t1 (c1 int, c2 varchar(20)) ENGINE=$engine; +eval CREATE TABLE t2 (c1 int, c2 varchar(20)) ENGINE=$engine; +eval CREATE TABLE t3 (c1 int, c2 varchar(20)) ENGINE=$engine; + +INSERT INTO t1 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); +INSERT INTO t2 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); +INSERT INTO t3 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); + +--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR +--list_files $MYSQLD_DATADIR/hotcopy_test + +# backup into another database in the same directory +--replace_result $MASTER_MYSOCK MASTER_MYSOCK +--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save + +--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR +--list_files $MYSQLD_DATADIR/hotcopy_save + +USE hotcopy_save; +SELECT * FROM t1; +SELECT * FROM t2; +SELECT * FROM t3; + +# restore data into the original database with mysqlhotcopy +if(`SELECT engine= 'MyISAM' FROM information_schema.tables WHERE table_name='t1'`) +{ +USE hotcopy_test; +DELETE FROM t1; +SELECT * FROM t1; + +--replace_result $MASTER_MYSOCK MASTER_MYSOCK +--exec $MYSQLHOTCOPY --quiet --addtodest -S $MASTER_MYSOCK -u root hotcopy_save hotcopy_test + +USE hotcopy_save; +SELECT * FROM t1; +SELECT * FROM t2; +SELECT * FROM t3; +} + +USE hotcopy_test; +DROP TABLE t2; +--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR +--list_files $MYSQLD_DATADIR/hotcopy_test + +--replace_result $MASTER_MYSOCK MASTER_MYSOCK +--exec $MYSQLHOTCOPY --quiet --addtodest -S $MASTER_MYSOCK -u root hotcopy_save hotcopy_test + +FLUSH TABLES; +SELECT * FROM t1; +SELECT * FROM t2; +SELECT * FROM t3; + +# backup of db into a directory +USE hotcopy_test; +--replace_result $MASTER_MYSOCK MASTER_MYSOCK $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test $MYSQLTEST_VARDIR/tmp +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--list_files $MYSQLTEST_VARDIR/tmp/hotcopy_test +#--exec rm -rf $MYSQLTEST_VARDIR/tmp/hotcopy_test +--remove_files_wildcard $MYSQLTEST_VARDIR/tmp/hotcopy_test * +--rmdir $MYSQLTEST_VARDIR/tmp/hotcopy_test + +# backup without full index files +# reproduction of bug#53556, "--list_files" shows MYI files, which is wrong. +DROP DATABASE hotcopy_save; +--replace_result $MASTER_MYSOCK MASTER_MYSOCK +--exec $MYSQLHOTCOPY --quiet --noindices -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save +--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR +--list_files $MYSQLD_DATADIR/hotcopy_save + +# test of option "allowold" +DROP DATABASE hotcopy_save; +--replace_result $MASTER_MYSOCK MASTER_MYSOCK +--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save +--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR +--list_files $MYSQLD_DATADIR/hotcopy_save +--replace_result $MASTER_MYSOCK MASTER_MYSOCK +--error 9,2304 +--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save +--replace_result $MASTER_MYSOCK MASTER_MYSOCK +--exec $MYSQLHOTCOPY --quiet --allowold -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save +--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR +--list_files $MYSQLD_DATADIR/hotcopy_save + +# test of option "keepold" +--replace_result $MASTER_MYSOCK MASTER_MYSOCK +--exec $MYSQLHOTCOPY --quiet --keepold -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save +--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR +--list_files $MYSQLD_DATADIR/hotcopy_save_old +--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR +--list_files $MYSQLD_DATADIR/hotcopy_save + +# test of option "suffix" +--replace_result $MASTER_MYSOCK MASTER_MYSOCK +--exec $MYSQLHOTCOPY --quiet --suffix=_cpy -S $MASTER_MYSOCK -u root hotcopy_test +--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR +--list_files $MYSQLD_DATADIR/hotcopy_test_cpy +DROP DATABASE hotcopy_test_cpy; + +DROP DATABASE hotcopy_test; +DROP DATABASE hotcopy_save; +DROP DATABASE hotcopy_save_old; + diff --git a/mysql-test/lib/mtr_misc.pl b/mysql-test/lib/mtr_misc.pl index 97eb693b52e..32960d866ce 100644 --- a/mysql-test/lib/mtr_misc.pl +++ b/mysql-test/lib/mtr_misc.pl @@ -147,6 +147,28 @@ sub mtr_exe_maybe_exists (@) { } +# +# NOTE! More specific paths should be given before less specific. +# +sub mtr_pl_maybe_exists (@) { + my @path= @_; + + map {$_.= ".pl"} @path if IS_WINDOWS; + foreach my $path ( @path ) + { + if(IS_WINDOWS) + { + return $path if -f $path; + } + else + { + return $path if -x $path; + } + } + return ""; +} + + # # NOTE! More specific paths should be given before less specific. # For example /client/debug should be listed before /client diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index a35741bebda..820650b120e 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -2039,6 +2039,15 @@ sub environment_setup { "$basedir/storage/myisam/myisampack", "$basedir/myisam/myisampack")); + # ---------------------------------------------------- + # mysqlhotcopy + # ---------------------------------------------------- + my $mysqlhotcopy= + mtr_pl_maybe_exists("$basedir/scripts/mysqlhotcopy"); + # Since mysqltest interprets the real path as "false" in an if, + # use 1 ("true") to indicate "not exists" so it can be tested for + $ENV{'MYSQLHOTCOPY'}= $mysqlhotcopy || 1; + # ---------------------------------------------------- # perror # ---------------------------------------------------- diff --git a/mysql-test/r/mysqlhotcopy_archive.result b/mysql-test/r/mysqlhotcopy_archive.result new file mode 100644 index 00000000000..bea78597336 --- /dev/null +++ b/mysql-test/r/mysqlhotcopy_archive.result @@ -0,0 +1,118 @@ +DROP DATABASE IF EXISTS hotcopy_test; +CREATE DATABASE hotcopy_test; +USE hotcopy_test; +CREATE TABLE t1 (c1 int, c2 varchar(20)) ENGINE=archive; +CREATE TABLE t2 (c1 int, c2 varchar(20)) ENGINE=archive; +CREATE TABLE t3 (c1 int, c2 varchar(20)) ENGINE=archive; +INSERT INTO t1 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); +Warnings: +Warning 1265 Data truncated for column 'c2' at row 2 +INSERT INTO t2 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); +Warnings: +Warning 1265 Data truncated for column 'c2' at row 2 +INSERT INTO t3 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); +Warnings: +Warning 1265 Data truncated for column 'c2' at row 2 +db.opt +t1.ARZ +t1.frm +t2.ARZ +t2.frm +t3.ARZ +t3.frm +db.opt +t1.ARZ +t1.frm +t2.ARZ +t2.frm +t3.ARZ +t3.frm +USE hotcopy_save; +SELECT * FROM t1; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +SELECT * FROM t2; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +SELECT * FROM t3; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +USE hotcopy_test; +DROP TABLE t2; +db.opt +t1.ARZ +t1.frm +t3.ARZ +t3.frm +FLUSH TABLES; +SELECT * FROM t1; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +SELECT * FROM t2; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +SELECT * FROM t3; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +USE hotcopy_test; +db.opt +t1.ARZ +t1.frm +t2.ARZ +t2.frm +t3.ARZ +t3.frm +DROP DATABASE hotcopy_save; +db.opt +t1.ARZ +t1.frm +t2.ARZ +t2.frm +t3.ARZ +t3.frm +DROP DATABASE hotcopy_save; +db.opt +t1.ARZ +t1.frm +t2.ARZ +t2.frm +t3.ARZ +t3.frm +db.opt +t1.ARZ +t1.frm +t2.ARZ +t2.frm +t3.ARZ +t3.frm +db.opt +t1.ARZ +t1.frm +t2.ARZ +t2.frm +t3.ARZ +t3.frm +db.opt +t1.ARZ +t1.frm +t2.ARZ +t2.frm +t3.ARZ +t3.frm +db.opt +t1.ARZ +t1.frm +t2.ARZ +t2.frm +t3.ARZ +t3.frm +DROP DATABASE hotcopy_test_cpy; +DROP DATABASE hotcopy_test; +DROP DATABASE hotcopy_save; +DROP DATABASE hotcopy_save_old; diff --git a/mysql-test/r/mysqlhotcopy_myisam.result b/mysql-test/r/mysqlhotcopy_myisam.result new file mode 100644 index 00000000000..52aeffce5cf --- /dev/null +++ b/mysql-test/r/mysqlhotcopy_myisam.result @@ -0,0 +1,164 @@ +DROP DATABASE IF EXISTS hotcopy_test; +CREATE DATABASE hotcopy_test; +USE hotcopy_test; +CREATE TABLE t1 (c1 int, c2 varchar(20)) ENGINE=MyISAM; +CREATE TABLE t2 (c1 int, c2 varchar(20)) ENGINE=MyISAM; +CREATE TABLE t3 (c1 int, c2 varchar(20)) ENGINE=MyISAM; +INSERT INTO t1 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); +Warnings: +Warning 1265 Data truncated for column 'c2' at row 2 +INSERT INTO t2 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); +Warnings: +Warning 1265 Data truncated for column 'c2' at row 2 +INSERT INTO t3 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb'); +Warnings: +Warning 1265 Data truncated for column 'c2' at row 2 +db.opt +t1.MYD +t1.MYI +t1.frm +t2.MYD +t2.MYI +t2.frm +t3.MYD +t3.MYI +t3.frm +db.opt +t1.MYD +t1.MYI +t1.frm +t2.MYD +t2.MYI +t2.frm +t3.MYD +t3.MYI +t3.frm +USE hotcopy_save; +SELECT * FROM t1; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +SELECT * FROM t2; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +SELECT * FROM t3; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +USE hotcopy_test; +DELETE FROM t1; +SELECT * FROM t1; +c1 c2 +USE hotcopy_save; +SELECT * FROM t1; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +SELECT * FROM t2; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +SELECT * FROM t3; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +USE hotcopy_test; +DROP TABLE t2; +db.opt +t1.MYD +t1.MYI +t1.frm +t3.MYD +t3.MYI +t3.frm +FLUSH TABLES; +SELECT * FROM t1; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +SELECT * FROM t2; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +SELECT * FROM t3; +c1 c2 +1 aaaaaaaaaaaaaaaaaaaa +2 bbbbbbbbbbbbbbbbbbbb +USE hotcopy_test; +db.opt +t1.MYD +t1.MYI +t1.frm +t2.MYD +t2.MYI +t2.frm +t3.MYD +t3.MYI +t3.frm +DROP DATABASE hotcopy_save; +db.opt +t1.MYD +t1.MYI +t1.frm +t2.MYD +t2.MYI +t2.frm +t3.MYD +t3.MYI +t3.frm +DROP DATABASE hotcopy_save; +db.opt +t1.MYD +t1.MYI +t1.frm +t2.MYD +t2.MYI +t2.frm +t3.MYD +t3.MYI +t3.frm +db.opt +t1.MYD +t1.MYI +t1.frm +t2.MYD +t2.MYI +t2.frm +t3.MYD +t3.MYI +t3.frm +db.opt +t1.MYD +t1.MYI +t1.frm +t2.MYD +t2.MYI +t2.frm +t3.MYD +t3.MYI +t3.frm +db.opt +t1.MYD +t1.MYI +t1.frm +t2.MYD +t2.MYI +t2.frm +t3.MYD +t3.MYI +t3.frm +db.opt +t1.MYD +t1.MYI +t1.frm +t2.MYD +t2.MYI +t2.frm +t3.MYD +t3.MYI +t3.frm +DROP DATABASE hotcopy_test_cpy; +DROP DATABASE hotcopy_test; +DROP DATABASE hotcopy_save; +DROP DATABASE hotcopy_save_old; diff --git a/mysql-test/t/mysqlhotcopy_archive.test b/mysql-test/t/mysqlhotcopy_archive.test new file mode 100644 index 00000000000..4bfad3ce138 --- /dev/null +++ b/mysql-test/t/mysqlhotcopy_archive.test @@ -0,0 +1,8 @@ +# Test of mysqlhotcopy (perl script) +# Author: Horst Hunger +# Created: 2010-05-10 + +--source include/have_archive.inc +let $engine= archive; +--source include/mysqlhotcopy.inc +--exit diff --git a/mysql-test/t/mysqlhotcopy_myisam.test b/mysql-test/t/mysqlhotcopy_myisam.test new file mode 100644 index 00000000000..adf26e42245 --- /dev/null +++ b/mysql-test/t/mysqlhotcopy_myisam.test @@ -0,0 +1,7 @@ +# Test of mysqlhotcopy (perl script) +# Author: Horst Hunger +# Created: 2010-05-10 + +let $engine= MyISAM; +--source include/mysqlhotcopy.inc +--exit From dbafe6be280113636ae647add0978c64c96985e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 3 Jun 2010 12:45:34 +0300 Subject: [PATCH 119/461] Add innodb_plugin to mysql-test-run default suites. --- mysql-test/mysql-test-run.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index a35741bebda..01d1fbfe319 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -129,7 +129,7 @@ my $path_config_file; # The generated config file, var/my.cnf # executables will be used by the test suite. our $opt_vs_config = $ENV{'MTR_VS_CONFIG'}; -my $DEFAULT_SUITES= "main,binlog,federated,rpl,rpl_ndb,ndb,innodb"; +my $DEFAULT_SUITES= "main,binlog,federated,rpl,rpl_ndb,ndb,innodb,innodb_plugin"; my $opt_suites; our $opt_verbose= 0; # Verbose output, enable with --verbose From 05bf36cbb0deccf2da84e3ef251d817db416f055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 3 Jun 2010 12:46:37 +0300 Subject: [PATCH 120/461] Source have_innodb_plugin.inc in the plugin tests. --- mysql-test/suite/innodb_plugin/t/innodb_bug53592.test | 2 +- mysql-test/suite/innodb_plugin/t/innodb_multi_update.test | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53592.test b/mysql-test/suite/innodb_plugin/t/innodb_bug53592.test index ca2bd41b137..aec331e031b 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb_bug53592.test +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53592.test @@ -2,7 +2,7 @@ # table after fast alter table added unique key". The fix is to make # sure index number lookup should go through "index translation table". ---source include/have_innodb.inc +--source include/have_innodb_plugin.inc # Use FIC for index creation set old_alter_table=0; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_multi_update.test b/mysql-test/suite/innodb_plugin/t/innodb_multi_update.test index 7ab17ccf70a..890889301e6 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb_multi_update.test +++ b/mysql-test/suite/innodb_plugin/t/innodb_multi_update.test @@ -1,4 +1,4 @@ --- source include/have_innodb.inc +-- source include/have_innodb_plugin.inc # # Test multi update with different join methods From afb7f96b068e7fcd1e1dafc53384fd98f938a46a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 3 Jun 2010 12:48:59 +0300 Subject: [PATCH 121/461] Copy built-in InnoDB tests to mysql-test/suite/innodb_plugin. --- .../r/innodb-autoinc-optimize.result | 9 + .../suite/innodb_plugin/r/innodb-ucs2.result | 314 +++ .../r/innodb_autoinc_lock_mode_zero.result | 39 + .../innodb_plugin/r/innodb_bug30919.result | 1043 ++++++++ .../innodb_plugin/r/innodb_bug42419.result | 17 + .../suite/innodb_plugin/r/innodb_gis.result | 589 ++++ .../r/innodb_lock_wait_timeout_1.result | 375 +++ .../suite/innodb_plugin/r/innodb_mysql.result | 2381 +++++++++++++++++ .../innodb_plugin/r/innodb_mysql_rbk.result | 21 + .../innodb_plugin/r/innodb_notembedded.result | 23 + .../r/innodb_timeout_rollback.result | 36 + .../t/innodb-autoinc-optimize.test | 19 + .../suite/innodb_plugin/t/innodb-ucs2.test | 230 ++ .../innodb_autoinc_lock_mode_zero-master.opt | 1 + .../t/innodb_autoinc_lock_mode_zero.test | 44 + .../t/innodb_bug30919-master.opt | 1 + .../innodb_plugin/t/innodb_bug30919.test | 68 + .../innodb_plugin/t/innodb_bug42419.test | 78 + .../suite/innodb_plugin/t/innodb_gis.test | 10 + .../t/innodb_lock_wait_timeout_1-master.opt | 1 + .../t/innodb_lock_wait_timeout_1.test | 264 ++ .../innodb_plugin/t/innodb_mysql-master.opt | 1 + .../suite/innodb_plugin/t/innodb_mysql.test | 622 +++++ .../t/innodb_mysql_rbk-master.opt | 1 + .../innodb_plugin/t/innodb_mysql_rbk.test | 35 + .../innodb_plugin/t/innodb_notembedded.test | 50 + .../t/innodb_timeout_rollback-master.opt | 1 + .../t/innodb_timeout_rollback.test | 5 + 28 files changed, 6278 insertions(+) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb-autoinc-optimize.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb-ucs2.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_autoinc_lock_mode_zero.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug30919.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug42419.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_gis.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_lock_wait_timeout_1.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_mysql.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_mysql_rbk.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_notembedded.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_timeout_rollback.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb-autoinc-optimize.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb-ucs2.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero-master.opt create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug30919-master.opt create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug30919.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug42419.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_gis.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1-master.opt create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_mysql-master.opt create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_mysql.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk-master.opt create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_notembedded.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback-master.opt create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback.test diff --git a/mysql-test/suite/innodb_plugin/r/innodb-autoinc-optimize.result b/mysql-test/suite/innodb_plugin/r/innodb-autoinc-optimize.result new file mode 100644 index 00000000000..c6da43555b2 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb-autoinc-optimize.result @@ -0,0 +1,9 @@ +drop table if exists t1; +create table t1(a int not null auto_increment primary key) engine=innodb; +insert into t1 set a = -1; +optimize table t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +==== clean up ==== +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_plugin/r/innodb-ucs2.result b/mysql-test/suite/innodb_plugin/r/innodb-ucs2.result new file mode 100644 index 00000000000..b6bff7d5f42 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb-ucs2.result @@ -0,0 +1,314 @@ +drop table if exists t1, t2; +create table t1 ( +a int, b char(10), c char(10), filler char(10), primary key(a, b(2)), unique key (a, c(2)) +) character set utf8 engine = innodb; +create table t2 ( +a int, b char(10), c char(10), filler char(10), primary key(a, b(2)), unique key (a, c(2)) +) character set ucs2 engine = innodb; +insert into t1 values (1,'abcdefg','abcdefg','one'); +insert into t1 values (2,'ijkilmn','ijkilmn','two'); +insert into t1 values (3,'qrstuvw','qrstuvw','three'); +insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four'); +insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five'); +insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six'); +insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven'); +insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight'); +insert into t2 values (1,'abcdefg','abcdefg','one'); +insert into t2 values (2,'ijkilmn','ijkilmn','two'); +insert into t2 values (3,'qrstuvw','qrstuvw','three'); +insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four'); +insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five'); +insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six'); +insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven'); +insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight'); +insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten'); +insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven'); +insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point'); +insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken'); +update t1 set filler = 'boo' where a = 1; +update t2 set filler ='email' where a = 4; +select a,hex(b),hex(c),filler from t1 order by filler; +a hex(b) hex(c) filler +1 61626364656667 61626364656667 boo +4 D0B1 D0B1 eight +4 5B 5B five +4 E880BD E880BD four +4 E880BDD0B1E880BD E880BDD0B1E880BD seven +4 E880BDE880BD E880BDE880BD six +3 71727374757677 71727374757677 three +2 696A6B696C6D6E 696A6B696C6D6E two +select a,hex(b),hex(c),filler from t2 order by filler; +a hex(b) hex(c) filler +4 05630563 05630563 email +4 0563 0563 email +4 05612020 05612020 email +4 01FC 01FC email +4 0120 0120 email +4 00640065 00640065 email +4 00E400E50068 00E400E50068 email +4 0000E400 0000E400 email +4 0000563001FC0563 0000563001FC0563 email +1 0061006200630064006500660067 0061006200630064006500660067 one +3 0071007200730074007500760077 0071007200730074007500760077 three +2 0069006A006B0069006C006D006E 0069006A006B0069006C006D006E two +drop table t1; +drop table t2; +create table t1 ( +a int, b varchar(10), c varchar(10), filler varchar(10), primary key(a, b(2)), unique key (a, c(2)) +) character set utf8 engine = innodb; +create table t2 ( +a int, b varchar(10), c varchar(10), filler varchar(10), primary key(a, b(2)), unique key (a, c(2)) +) character set ucs2 engine = innodb; +insert into t1 values (1,'abcdefg','abcdefg','one'); +insert into t1 values (2,'ijkilmn','ijkilmn','two'); +insert into t1 values (3,'qrstuvw','qrstuvw','three'); +insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four'); +insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five'); +insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six'); +insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven'); +insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight'); +insert into t2 values (1,'abcdefg','abcdefg','one'); +insert into t2 values (2,'ijkilmn','ijkilmn','two'); +insert into t2 values (3,'qrstuvw','qrstuvw','three'); +insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four'); +insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five'); +insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six'); +insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven'); +insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight'); +insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten'); +insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven'); +insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point'); +insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken'); +update t1 set filler = 'boo' where a = 1; +update t2 set filler ='email' where a = 4; +select a,hex(b),hex(c),filler from t1 order by filler; +a hex(b) hex(c) filler +1 61626364656667 61626364656667 boo +4 D0B1 D0B1 eight +4 5B 5B five +4 E880BD E880BD four +4 E880BDD0B1E880BD E880BDD0B1E880BD seven +4 E880BDE880BD E880BDE880BD six +3 71727374757677 71727374757677 three +2 696A6B696C6D6E 696A6B696C6D6E two +select a,hex(b),hex(c),filler from t2 order by filler; +a hex(b) hex(c) filler +4 05630563 05630563 email +4 0563 0563 email +4 05612020 05612020 email +4 01FC 01FC email +4 0120 0120 email +4 00640065 00640065 email +4 00E400E50068 00E400E50068 email +4 0000E400 0000E400 email +4 0000563001FC0563 0000563001FC0563 email +1 0061006200630064006500660067 0061006200630064006500660067 one +3 0071007200730074007500760077 0071007200730074007500760077 three +2 0069006A006B0069006C006D006E 0069006A006B0069006C006D006E two +drop table t1; +drop table t2; +create table t1 ( +a int, b text(10), c text(10), filler text(10), primary key(a, b(2)), unique key (a, c(2)) +) character set utf8 engine = innodb; +create table t2 ( +a int, b text(10), c text(10), filler text(10), primary key(a, b(2)), unique key (a, c(2)) +) character set ucs2 engine = innodb; +insert into t1 values (1,'abcdefg','abcdefg','one'); +insert into t1 values (2,'ijkilmn','ijkilmn','two'); +insert into t1 values (3,'qrstuvw','qrstuvw','three'); +insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four'); +insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five'); +insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six'); +insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven'); +insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight'); +insert into t2 values (1,'abcdefg','abcdefg','one'); +insert into t2 values (2,'ijkilmn','ijkilmn','two'); +insert into t2 values (3,'qrstuvw','qrstuvw','three'); +insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four'); +insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five'); +insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six'); +insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven'); +insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight'); +insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten'); +insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven'); +insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point'); +insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken'); +update t1 set filler = 'boo' where a = 1; +update t2 set filler ='email' where a = 4; +select a,hex(b),hex(c),filler from t1 order by filler; +a hex(b) hex(c) filler +1 61626364656667 61626364656667 boo +4 D0B1 D0B1 eight +4 5B 5B five +4 E880BD E880BD four +4 E880BDD0B1E880BD E880BDD0B1E880BD seven +4 E880BDE880BD E880BDE880BD six +3 71727374757677 71727374757677 three +2 696A6B696C6D6E 696A6B696C6D6E two +select a,hex(b),hex(c),filler from t2 order by filler; +a hex(b) hex(c) filler +4 0120 0120 email +4 01FC 01FC email +4 0563 0563 email +4 0000563001FC0563 0000563001FC0563 email +4 0000E400 0000E400 email +4 00640065 00640065 email +4 00E400E50068 00E400E50068 email +4 05612020 05612020 email +4 05630563 05630563 email +1 0061006200630064006500660067 0061006200630064006500660067 one +3 0071007200730074007500760077 0071007200730074007500760077 three +2 0069006A006B0069006C006D006E 0069006A006B0069006C006D006E two +drop table t1; +drop table t2; +create table t1 ( +a int, b blob(10), c blob(10), filler blob(10), primary key(a, b(2)), unique key (a, c(2)) +) character set utf8 engine = innodb; +create table t2 ( +a int, b blob(10), c blob(10), filler blob(10), primary key(a, b(2)), unique key (a, c(2)) +) character set ucs2 engine = innodb; +insert into t1 values (1,'abcdefg','abcdefg','one'); +insert into t1 values (2,'ijkilmn','ijkilmn','two'); +insert into t1 values (3,'qrstuvw','qrstuvw','three'); +insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four'); +insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five'); +insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight'); +insert into t2 values (1,'abcdefg','abcdefg','one'); +insert into t2 values (2,'ijkilmn','ijkilmn','two'); +insert into t2 values (3,'qrstuvw','qrstuvw','three'); +insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four'); +insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five'); +insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six'); +insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven'); +insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight'); +insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten'); +insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken'); +update t1 set filler = 'boo' where a = 1; +update t2 set filler ='email' where a = 4; +select a,hex(b),hex(c),filler from t1 order by filler; +a hex(b) hex(c) filler +1 61626364656667 61626364656667 boo +4 D0B1 D0B1 eight +4 5B 5B five +4 E880BD E880BD four +3 71727374757677 71727374757677 three +2 696A6B696C6D6E 696A6B696C6D6E two +select a,hex(b),hex(c),filler from t2 order by filler; +a hex(b) hex(c) filler +4 0000E400 0000E400 email +4 00640065 00640065 email +4 00E400E50068 00E400E50068 email +4 0120 0120 email +4 01FC 01FC email +4 05612020 05612020 email +4 0563 0563 email +1 61626364656667 61626364656667 one +3 71727374757677 71727374757677 three +2 696A6B696C6D6E 696A6B696C6D6E two +drop table t1; +drop table t2; +commit; +CREATE TABLE t1 ( +ind enum('0','1','2') NOT NULL default '0', +string1 varchar(250) NOT NULL, +PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE t2 ( +ind enum('0','1','2') NOT NULL default '0', +string1 varchar(250) NOT NULL, +PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=ucs2; +INSERT INTO t1 VALUES ('1', ''),('2', ''); +INSERT INTO t2 VALUES ('1', ''),('2', ''); +SELECT hex(ind),hex(string1) FROM t1 ORDER BY string1; +hex(ind) hex(string1) +31 +32 +SELECT hex(ind),hex(string1) FROM t2 ORDER BY string1; +hex(ind) hex(string1) +0031 +0032 +drop table t1,t2; +CREATE TABLE t1 ( +ind set('0','1','2') NOT NULL default '0', +string1 varchar(250) NOT NULL, +PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE t2 ( +ind set('0','1','2') NOT NULL default '0', +string1 varchar(250) NOT NULL, +PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=ucs2; +INSERT INTO t1 VALUES ('1', ''),('2', ''); +INSERT INTO t2 VALUES ('1', ''),('2', ''); +SELECT hex(ind),hex(string1) FROM t1 ORDER BY string1; +hex(ind) hex(string1) +31 +32 +SELECT hex(ind),hex(string1) FROM t2 ORDER BY string1; +hex(ind) hex(string1) +0031 +0032 +drop table t1,t2; +CREATE TABLE t1 ( +ind bit not null, +string1 varchar(250) NOT NULL, +PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE t2 ( +ind bit not null, +string1 varchar(250) NOT NULL, +PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=ucs2; +insert into t1 values(0,''),(1,''); +insert into t2 values(0,''),(1,''); +select hex(ind),hex(string1) from t1 order by string1; +hex(ind) hex(string1) +0 +1 +select hex(ind),hex(string1) from t2 order by string1; +hex(ind) hex(string1) +0 +1 +drop table t1,t2; +create table t2 ( +a int, b char(10), filler char(10), primary key(a, b(2)) +) character set utf8 engine = innodb; +insert into t2 values (1,'abcdefg','one'); +insert into t2 values (2,'ijkilmn','two'); +insert into t2 values (3, 'qrstuvw','three'); +update t2 set a=5, filler='booo' where a=1; +drop table t2; +create table t2 ( +a int, b char(10), filler char(10), primary key(a, b(2)) +) character set ucs2 engine = innodb; +insert into t2 values (1,'abcdefg','one'); +insert into t2 values (2,'ijkilmn','two'); +insert into t2 values (3, 'qrstuvw','three'); +update t2 set a=5, filler='booo' where a=1; +drop table t2; +create table t1(a int not null, b char(110),primary key(a,b(100))) engine=innodb default charset=utf8; +insert into t1 values(1,'abcdefg'),(2,'defghijk'); +insert into t1 values(6,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1); +insert into t1 values(7,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2); +select a,hex(b) from t1 order by b; +a hex(b) +1 61626364656667 +2 6465666768696A6B +6 D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1 +7 D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2 +update t1 set b = 'three' where a = 6; +drop table t1; +create table t1(a int not null, b text(110),primary key(a,b(100))) engine=innodb default charset=utf8; +insert into t1 values(1,'abcdefg'),(2,'defghijk'); +insert into t1 values(6,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1); +insert into t1 values(7,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2); +select a,hex(b) from t1 order by b; +a hex(b) +1 61626364656667 +2 6465666768696A6B +6 D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1 +7 D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2 +update t1 set b = 'three' where a = 6; +drop table t1; +End of 5.0 tests diff --git a/mysql-test/suite/innodb_plugin/r/innodb_autoinc_lock_mode_zero.result b/mysql-test/suite/innodb_plugin/r/innodb_autoinc_lock_mode_zero.result new file mode 100644 index 00000000000..3d016684338 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_autoinc_lock_mode_zero.result @@ -0,0 +1,39 @@ +drop table if exists t1; +CREATE TABLE t1 ( +id int(11) NOT NULL auto_increment, +ggid varchar(32) binary DEFAULT '' NOT NULL, +email varchar(64) DEFAULT '' NOT NULL, +passwd varchar(32) binary DEFAULT '' NOT NULL, +PRIMARY KEY (id), +UNIQUE ggid (ggid) +) ENGINE=innodb; +insert into t1 (ggid,passwd) values ('test1','xxx'); +insert into t1 (ggid,passwd) values ('test2','yyy'); +insert into t1 (ggid,passwd) values ('test2','this will fail'); +ERROR 23000: Duplicate entry 'test2' for key 'ggid' +insert into t1 (ggid,id) values ('this will fail',1); +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' +select * from t1 where ggid='test1'; +id ggid email passwd +1 test1 xxx +select * from t1 where passwd='xxx'; +id ggid email passwd +1 test1 xxx +select * from t1 where id=2; +id ggid email passwd +2 test2 yyy +replace into t1 (ggid,id) values ('this will work',1); +replace into t1 (ggid,passwd) values ('test2','this will work'); +update t1 set id=100,ggid='test2' where id=1; +ERROR 23000: Duplicate entry 'test2' for key 'ggid' +select * from t1; +id ggid email passwd +1 this will work +3 test2 this will work +select * from t1 where id=1; +id ggid email passwd +1 this will work +select * from t1 where id=999; +id ggid email passwd +drop table t1; +End of tests diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug30919.result b/mysql-test/suite/innodb_plugin/r/innodb_bug30919.result new file mode 100644 index 00000000000..42aa4ff302b --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug30919.result @@ -0,0 +1,1043 @@ +use test; +CREATE TABLE test.part_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, +dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB, +fkid MEDIUMINT, filler VARCHAR(255), +PRIMARY KEY(id)) ENGINE='innodb' +PARTITION BY RANGE(id) +SUBPARTITION BY hash(id) subpartitions 2 +(PARTITION pa3 values less than (42), +PARTITION pa6 values less than (60), +PARTITION pa7 values less than (70), +PARTITION pa8 values less than (80), +PARTITION pa9 values less than (90), +PARTITION pa10 values less than (100), +PARTITION pa11 values less than MAXVALUE); +CREATE PROCEDURE test.proc_part() +BEGIN +DECLARE ins_count INT DEFAULT 1000; +DECLARE del_count INT; +DECLARE cur_user VARCHAR(255); +DECLARE local_uuid VARCHAR(255); +DECLARE local_time TIMESTAMP; +SET local_time= NOW(); +SET cur_user= CURRENT_USER(); +SET local_uuid= UUID(); +WHILE ins_count > 0 DO +INSERT INTO test.part_tbl VALUES (NULL, NOW(), USER() , UUID(), +ins_count,'Going to test MBR for MySQL'); +SET ins_count = ins_count - 1; +END WHILE; +SELECT MAX(id) FROM test.part_tbl INTO del_count; +WHILE del_count > 0 DO +DELETE FROM test.part_tbl WHERE id = del_count; +select count(*) as internal_count, del_count -- these two lines are for +FROM test.part_tbl; -- debug to show the problem +SET del_count = del_count - 2; +END WHILE; +END| +CALL test.proc_part(); +internal_count del_count +999 1000 +internal_count del_count +998 998 +internal_count del_count +997 996 +internal_count del_count +996 994 +internal_count del_count +995 992 +internal_count del_count +994 990 +internal_count del_count +993 988 +internal_count del_count +992 986 +internal_count del_count +991 984 +internal_count del_count +990 982 +internal_count del_count +989 980 +internal_count del_count +988 978 +internal_count del_count +987 976 +internal_count del_count +986 974 +internal_count del_count +985 972 +internal_count del_count +984 970 +internal_count del_count +983 968 +internal_count del_count +982 966 +internal_count del_count +981 964 +internal_count del_count +980 962 +internal_count del_count +979 960 +internal_count del_count +978 958 +internal_count del_count +977 956 +internal_count del_count +976 954 +internal_count del_count +975 952 +internal_count del_count +974 950 +internal_count del_count +973 948 +internal_count del_count +972 946 +internal_count del_count +971 944 +internal_count del_count +970 942 +internal_count del_count +969 940 +internal_count del_count +968 938 +internal_count del_count +967 936 +internal_count del_count +966 934 +internal_count del_count +965 932 +internal_count del_count +964 930 +internal_count del_count +963 928 +internal_count del_count +962 926 +internal_count del_count +961 924 +internal_count del_count +960 922 +internal_count del_count +959 920 +internal_count del_count +958 918 +internal_count del_count +957 916 +internal_count del_count +956 914 +internal_count del_count +955 912 +internal_count del_count +954 910 +internal_count del_count +953 908 +internal_count del_count +952 906 +internal_count del_count +951 904 +internal_count del_count +950 902 +internal_count del_count +949 900 +internal_count del_count +948 898 +internal_count del_count +947 896 +internal_count del_count +946 894 +internal_count del_count +945 892 +internal_count del_count +944 890 +internal_count del_count +943 888 +internal_count del_count +942 886 +internal_count del_count +941 884 +internal_count del_count +940 882 +internal_count del_count +939 880 +internal_count del_count +938 878 +internal_count del_count +937 876 +internal_count del_count +936 874 +internal_count del_count +935 872 +internal_count del_count +934 870 +internal_count del_count +933 868 +internal_count del_count +932 866 +internal_count del_count +931 864 +internal_count del_count +930 862 +internal_count del_count +929 860 +internal_count del_count +928 858 +internal_count del_count +927 856 +internal_count del_count +926 854 +internal_count del_count +925 852 +internal_count del_count +924 850 +internal_count del_count +923 848 +internal_count del_count +922 846 +internal_count del_count +921 844 +internal_count del_count +920 842 +internal_count del_count +919 840 +internal_count del_count +918 838 +internal_count del_count +917 836 +internal_count del_count +916 834 +internal_count del_count +915 832 +internal_count del_count +914 830 +internal_count del_count +913 828 +internal_count del_count +912 826 +internal_count del_count +911 824 +internal_count del_count +910 822 +internal_count del_count +909 820 +internal_count del_count +908 818 +internal_count del_count +907 816 +internal_count del_count +906 814 +internal_count del_count +905 812 +internal_count del_count +904 810 +internal_count del_count +903 808 +internal_count del_count +902 806 +internal_count del_count +901 804 +internal_count del_count +900 802 +internal_count del_count +899 800 +internal_count del_count +898 798 +internal_count del_count +897 796 +internal_count del_count +896 794 +internal_count del_count +895 792 +internal_count del_count +894 790 +internal_count del_count +893 788 +internal_count del_count +892 786 +internal_count del_count +891 784 +internal_count del_count +890 782 +internal_count del_count +889 780 +internal_count del_count +888 778 +internal_count del_count +887 776 +internal_count del_count +886 774 +internal_count del_count +885 772 +internal_count del_count +884 770 +internal_count del_count +883 768 +internal_count del_count +882 766 +internal_count del_count +881 764 +internal_count del_count +880 762 +internal_count del_count +879 760 +internal_count del_count +878 758 +internal_count del_count +877 756 +internal_count del_count +876 754 +internal_count del_count +875 752 +internal_count del_count +874 750 +internal_count del_count +873 748 +internal_count del_count +872 746 +internal_count del_count +871 744 +internal_count del_count +870 742 +internal_count del_count +869 740 +internal_count del_count +868 738 +internal_count del_count +867 736 +internal_count del_count +866 734 +internal_count del_count +865 732 +internal_count del_count +864 730 +internal_count del_count +863 728 +internal_count del_count +862 726 +internal_count del_count +861 724 +internal_count del_count +860 722 +internal_count del_count +859 720 +internal_count del_count +858 718 +internal_count del_count +857 716 +internal_count del_count +856 714 +internal_count del_count +855 712 +internal_count del_count +854 710 +internal_count del_count +853 708 +internal_count del_count +852 706 +internal_count del_count +851 704 +internal_count del_count +850 702 +internal_count del_count +849 700 +internal_count del_count +848 698 +internal_count del_count +847 696 +internal_count del_count +846 694 +internal_count del_count +845 692 +internal_count del_count +844 690 +internal_count del_count +843 688 +internal_count del_count +842 686 +internal_count del_count +841 684 +internal_count del_count +840 682 +internal_count del_count +839 680 +internal_count del_count +838 678 +internal_count del_count +837 676 +internal_count del_count +836 674 +internal_count del_count +835 672 +internal_count del_count +834 670 +internal_count del_count +833 668 +internal_count del_count +832 666 +internal_count del_count +831 664 +internal_count del_count +830 662 +internal_count del_count +829 660 +internal_count del_count +828 658 +internal_count del_count +827 656 +internal_count del_count +826 654 +internal_count del_count +825 652 +internal_count del_count +824 650 +internal_count del_count +823 648 +internal_count del_count +822 646 +internal_count del_count +821 644 +internal_count del_count +820 642 +internal_count del_count +819 640 +internal_count del_count +818 638 +internal_count del_count +817 636 +internal_count del_count +816 634 +internal_count del_count +815 632 +internal_count del_count +814 630 +internal_count del_count +813 628 +internal_count del_count +812 626 +internal_count del_count +811 624 +internal_count del_count +810 622 +internal_count del_count +809 620 +internal_count del_count +808 618 +internal_count del_count +807 616 +internal_count del_count +806 614 +internal_count del_count +805 612 +internal_count del_count +804 610 +internal_count del_count +803 608 +internal_count del_count +802 606 +internal_count del_count +801 604 +internal_count del_count +800 602 +internal_count del_count +799 600 +internal_count del_count +798 598 +internal_count del_count +797 596 +internal_count del_count +796 594 +internal_count del_count +795 592 +internal_count del_count +794 590 +internal_count del_count +793 588 +internal_count del_count +792 586 +internal_count del_count +791 584 +internal_count del_count +790 582 +internal_count del_count +789 580 +internal_count del_count +788 578 +internal_count del_count +787 576 +internal_count del_count +786 574 +internal_count del_count +785 572 +internal_count del_count +784 570 +internal_count del_count +783 568 +internal_count del_count +782 566 +internal_count del_count +781 564 +internal_count del_count +780 562 +internal_count del_count +779 560 +internal_count del_count +778 558 +internal_count del_count +777 556 +internal_count del_count +776 554 +internal_count del_count +775 552 +internal_count del_count +774 550 +internal_count del_count +773 548 +internal_count del_count +772 546 +internal_count del_count +771 544 +internal_count del_count +770 542 +internal_count del_count +769 540 +internal_count del_count +768 538 +internal_count del_count +767 536 +internal_count del_count +766 534 +internal_count del_count +765 532 +internal_count del_count +764 530 +internal_count del_count +763 528 +internal_count del_count +762 526 +internal_count del_count +761 524 +internal_count del_count +760 522 +internal_count del_count +759 520 +internal_count del_count +758 518 +internal_count del_count +757 516 +internal_count del_count +756 514 +internal_count del_count +755 512 +internal_count del_count +754 510 +internal_count del_count +753 508 +internal_count del_count +752 506 +internal_count del_count +751 504 +internal_count del_count +750 502 +internal_count del_count +749 500 +internal_count del_count +748 498 +internal_count del_count +747 496 +internal_count del_count +746 494 +internal_count del_count +745 492 +internal_count del_count +744 490 +internal_count del_count +743 488 +internal_count del_count +742 486 +internal_count del_count +741 484 +internal_count del_count +740 482 +internal_count del_count +739 480 +internal_count del_count +738 478 +internal_count del_count +737 476 +internal_count del_count +736 474 +internal_count del_count +735 472 +internal_count del_count +734 470 +internal_count del_count +733 468 +internal_count del_count +732 466 +internal_count del_count +731 464 +internal_count del_count +730 462 +internal_count del_count +729 460 +internal_count del_count +728 458 +internal_count del_count +727 456 +internal_count del_count +726 454 +internal_count del_count +725 452 +internal_count del_count +724 450 +internal_count del_count +723 448 +internal_count del_count +722 446 +internal_count del_count +721 444 +internal_count del_count +720 442 +internal_count del_count +719 440 +internal_count del_count +718 438 +internal_count del_count +717 436 +internal_count del_count +716 434 +internal_count del_count +715 432 +internal_count del_count +714 430 +internal_count del_count +713 428 +internal_count del_count +712 426 +internal_count del_count +711 424 +internal_count del_count +710 422 +internal_count del_count +709 420 +internal_count del_count +708 418 +internal_count del_count +707 416 +internal_count del_count +706 414 +internal_count del_count +705 412 +internal_count del_count +704 410 +internal_count del_count +703 408 +internal_count del_count +702 406 +internal_count del_count +701 404 +internal_count del_count +700 402 +internal_count del_count +699 400 +internal_count del_count +698 398 +internal_count del_count +697 396 +internal_count del_count +696 394 +internal_count del_count +695 392 +internal_count del_count +694 390 +internal_count del_count +693 388 +internal_count del_count +692 386 +internal_count del_count +691 384 +internal_count del_count +690 382 +internal_count del_count +689 380 +internal_count del_count +688 378 +internal_count del_count +687 376 +internal_count del_count +686 374 +internal_count del_count +685 372 +internal_count del_count +684 370 +internal_count del_count +683 368 +internal_count del_count +682 366 +internal_count del_count +681 364 +internal_count del_count +680 362 +internal_count del_count +679 360 +internal_count del_count +678 358 +internal_count del_count +677 356 +internal_count del_count +676 354 +internal_count del_count +675 352 +internal_count del_count +674 350 +internal_count del_count +673 348 +internal_count del_count +672 346 +internal_count del_count +671 344 +internal_count del_count +670 342 +internal_count del_count +669 340 +internal_count del_count +668 338 +internal_count del_count +667 336 +internal_count del_count +666 334 +internal_count del_count +665 332 +internal_count del_count +664 330 +internal_count del_count +663 328 +internal_count del_count +662 326 +internal_count del_count +661 324 +internal_count del_count +660 322 +internal_count del_count +659 320 +internal_count del_count +658 318 +internal_count del_count +657 316 +internal_count del_count +656 314 +internal_count del_count +655 312 +internal_count del_count +654 310 +internal_count del_count +653 308 +internal_count del_count +652 306 +internal_count del_count +651 304 +internal_count del_count +650 302 +internal_count del_count +649 300 +internal_count del_count +648 298 +internal_count del_count +647 296 +internal_count del_count +646 294 +internal_count del_count +645 292 +internal_count del_count +644 290 +internal_count del_count +643 288 +internal_count del_count +642 286 +internal_count del_count +641 284 +internal_count del_count +640 282 +internal_count del_count +639 280 +internal_count del_count +638 278 +internal_count del_count +637 276 +internal_count del_count +636 274 +internal_count del_count +635 272 +internal_count del_count +634 270 +internal_count del_count +633 268 +internal_count del_count +632 266 +internal_count del_count +631 264 +internal_count del_count +630 262 +internal_count del_count +629 260 +internal_count del_count +628 258 +internal_count del_count +627 256 +internal_count del_count +626 254 +internal_count del_count +625 252 +internal_count del_count +624 250 +internal_count del_count +623 248 +internal_count del_count +622 246 +internal_count del_count +621 244 +internal_count del_count +620 242 +internal_count del_count +619 240 +internal_count del_count +618 238 +internal_count del_count +617 236 +internal_count del_count +616 234 +internal_count del_count +615 232 +internal_count del_count +614 230 +internal_count del_count +613 228 +internal_count del_count +612 226 +internal_count del_count +611 224 +internal_count del_count +610 222 +internal_count del_count +609 220 +internal_count del_count +608 218 +internal_count del_count +607 216 +internal_count del_count +606 214 +internal_count del_count +605 212 +internal_count del_count +604 210 +internal_count del_count +603 208 +internal_count del_count +602 206 +internal_count del_count +601 204 +internal_count del_count +600 202 +internal_count del_count +599 200 +internal_count del_count +598 198 +internal_count del_count +597 196 +internal_count del_count +596 194 +internal_count del_count +595 192 +internal_count del_count +594 190 +internal_count del_count +593 188 +internal_count del_count +592 186 +internal_count del_count +591 184 +internal_count del_count +590 182 +internal_count del_count +589 180 +internal_count del_count +588 178 +internal_count del_count +587 176 +internal_count del_count +586 174 +internal_count del_count +585 172 +internal_count del_count +584 170 +internal_count del_count +583 168 +internal_count del_count +582 166 +internal_count del_count +581 164 +internal_count del_count +580 162 +internal_count del_count +579 160 +internal_count del_count +578 158 +internal_count del_count +577 156 +internal_count del_count +576 154 +internal_count del_count +575 152 +internal_count del_count +574 150 +internal_count del_count +573 148 +internal_count del_count +572 146 +internal_count del_count +571 144 +internal_count del_count +570 142 +internal_count del_count +569 140 +internal_count del_count +568 138 +internal_count del_count +567 136 +internal_count del_count +566 134 +internal_count del_count +565 132 +internal_count del_count +564 130 +internal_count del_count +563 128 +internal_count del_count +562 126 +internal_count del_count +561 124 +internal_count del_count +560 122 +internal_count del_count +559 120 +internal_count del_count +558 118 +internal_count del_count +557 116 +internal_count del_count +556 114 +internal_count del_count +555 112 +internal_count del_count +554 110 +internal_count del_count +553 108 +internal_count del_count +552 106 +internal_count del_count +551 104 +internal_count del_count +550 102 +internal_count del_count +549 100 +internal_count del_count +548 98 +internal_count del_count +547 96 +internal_count del_count +546 94 +internal_count del_count +545 92 +internal_count del_count +544 90 +internal_count del_count +543 88 +internal_count del_count +542 86 +internal_count del_count +541 84 +internal_count del_count +540 82 +internal_count del_count +539 80 +internal_count del_count +538 78 +internal_count del_count +537 76 +internal_count del_count +536 74 +internal_count del_count +535 72 +internal_count del_count +534 70 +internal_count del_count +533 68 +internal_count del_count +532 66 +internal_count del_count +531 64 +internal_count del_count +530 62 +internal_count del_count +529 60 +internal_count del_count +528 58 +internal_count del_count +527 56 +internal_count del_count +526 54 +internal_count del_count +525 52 +internal_count del_count +524 50 +internal_count del_count +523 48 +internal_count del_count +522 46 +internal_count del_count +521 44 +internal_count del_count +520 42 +internal_count del_count +519 40 +internal_count del_count +518 38 +internal_count del_count +517 36 +internal_count del_count +516 34 +internal_count del_count +515 32 +internal_count del_count +514 30 +internal_count del_count +513 28 +internal_count del_count +512 26 +internal_count del_count +511 24 +internal_count del_count +510 22 +internal_count del_count +509 20 +internal_count del_count +508 18 +internal_count del_count +507 16 +internal_count del_count +506 14 +internal_count del_count +505 12 +internal_count del_count +504 10 +internal_count del_count +503 8 +internal_count del_count +502 6 +internal_count del_count +501 4 +internal_count del_count +500 2 +select count(*) as Part from test.part_tbl; +Part +500 +DROP PROCEDURE test.proc_part; +DROP TABLE test.part_tbl; diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug42419.result b/mysql-test/suite/innodb_plugin/r/innodb_bug42419.result new file mode 100644 index 00000000000..f304bb634cb --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug42419.result @@ -0,0 +1,17 @@ +CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b INT) ENGINE = InnoDB; +INSERT INTO t1 VALUES (1,1),(2,2),(3,3); +COMMIT; +SET AUTOCOMMIT = 0; +CREATE TEMPORARY TABLE t1_tmp ( b INT ); +INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 3; +INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 2; +SET AUTOCOMMIT = 0; +CREATE TEMPORARY TABLE t2_tmp ( a int, new_a int ); +INSERT INTO t2_tmp VALUES (1,51),(2,52),(3,53); +UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 1; +UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 2; +INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +Reap the server message for connection user2 UPDATE t1 ... +UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 3; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_plugin/r/innodb_gis.result b/mysql-test/suite/innodb_plugin/r/innodb_gis.result new file mode 100644 index 00000000000..c6c775afc9f --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_gis.result @@ -0,0 +1,589 @@ +SET storage_engine=innodb; +DROP TABLE IF EXISTS t1, gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry; +CREATE TABLE gis_point (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g POINT); +CREATE TABLE gis_line (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g LINESTRING); +CREATE TABLE gis_polygon (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g POLYGON); +CREATE TABLE gis_multi_point (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g MULTIPOINT); +CREATE TABLE gis_multi_line (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g MULTILINESTRING); +CREATE TABLE gis_multi_polygon (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g MULTIPOLYGON); +CREATE TABLE gis_geometrycollection (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g GEOMETRYCOLLECTION); +CREATE TABLE gis_geometry (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g GEOMETRY); +SHOW CREATE TABLE gis_point; +Table Create Table +gis_point CREATE TABLE `gis_point` ( + `fid` int(11) NOT NULL AUTO_INCREMENT, + `g` point DEFAULT NULL, + PRIMARY KEY (`fid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SHOW FIELDS FROM gis_point; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL auto_increment +g point YES NULL +SHOW FIELDS FROM gis_line; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL auto_increment +g linestring YES NULL +SHOW FIELDS FROM gis_polygon; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL auto_increment +g polygon YES NULL +SHOW FIELDS FROM gis_multi_point; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL auto_increment +g multipoint YES NULL +SHOW FIELDS FROM gis_multi_line; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL auto_increment +g multilinestring YES NULL +SHOW FIELDS FROM gis_multi_polygon; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL auto_increment +g multipolygon YES NULL +SHOW FIELDS FROM gis_geometrycollection; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL auto_increment +g geometrycollection YES NULL +SHOW FIELDS FROM gis_geometry; +Field Type Null Key Default Extra +fid int(11) NO PRI NULL auto_increment +g geometry YES NULL +INSERT INTO gis_point VALUES +(101, PointFromText('POINT(10 10)')), +(102, PointFromText('POINT(20 10)')), +(103, PointFromText('POINT(20 20)')), +(104, PointFromWKB(AsWKB(PointFromText('POINT(10 20)')))); +INSERT INTO gis_line VALUES +(105, LineFromText('LINESTRING(0 0,0 10,10 0)')), +(106, LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)')), +(107, LineStringFromWKB(LineString(Point(10, 10), Point(40, 10)))); +INSERT INTO gis_polygon VALUES +(108, PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')), +(109, PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')), +(110, PolyFromWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0))))); +INSERT INTO gis_multi_point VALUES +(111, MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')), +(112, MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)')), +(113, MPointFromWKB(MultiPoint(Point(3, 6), Point(4, 10)))); +INSERT INTO gis_multi_line VALUES +(114, MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))')), +(115, MLineFromText('MULTILINESTRING((10 48,10 21,10 0))')), +(116, MLineFromWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7))))); +INSERT INTO gis_multi_polygon VALUES +(117, MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')), +(118, MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')), +(119, MPolyFromWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3)))))); +INSERT INTO gis_geometrycollection VALUES +(120, GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')), +(121, GeometryFromWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9))))); +INSERT into gis_geometry SELECT * FROM gis_point; +INSERT into gis_geometry SELECT * FROM gis_line; +INSERT into gis_geometry SELECT * FROM gis_polygon; +INSERT into gis_geometry SELECT * FROM gis_multi_point; +INSERT into gis_geometry SELECT * FROM gis_multi_line; +INSERT into gis_geometry SELECT * FROM gis_multi_polygon; +INSERT into gis_geometry SELECT * FROM gis_geometrycollection; +SELECT fid, AsText(g) FROM gis_point ORDER by fid; +fid AsText(g) +101 POINT(10 10) +102 POINT(20 10) +103 POINT(20 20) +104 POINT(10 20) +SELECT fid, AsText(g) FROM gis_line ORDER by fid; +fid AsText(g) +105 LINESTRING(0 0,0 10,10 0) +106 LINESTRING(10 10,20 10,20 20,10 20,10 10) +107 LINESTRING(10 10,40 10) +SELECT fid, AsText(g) FROM gis_polygon ORDER by fid; +fid AsText(g) +108 POLYGON((10 10,20 10,20 20,10 20,10 10)) +109 POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10)) +110 POLYGON((0 0,30 0,30 30,0 0)) +SELECT fid, AsText(g) FROM gis_multi_point ORDER by fid; +fid AsText(g) +111 MULTIPOINT(0 0,10 10,10 20,20 20) +112 MULTIPOINT(1 1,11 11,11 21,21 21) +113 MULTIPOINT(3 6,4 10) +SELECT fid, AsText(g) FROM gis_multi_line ORDER by fid; +fid AsText(g) +114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48)) +115 MULTILINESTRING((10 48,10 21,10 0)) +116 MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7)) +SELECT fid, AsText(g) FROM gis_multi_polygon ORDER by fid; +fid AsText(g) +117 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +118 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +119 MULTIPOLYGON(((0 3,3 3,3 0,0 3))) +SELECT fid, AsText(g) FROM gis_geometrycollection ORDER by fid; +fid AsText(g) +120 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) +121 GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9)) +SELECT fid, AsText(g) FROM gis_geometry ORDER by fid; +fid AsText(g) +101 POINT(10 10) +102 POINT(20 10) +103 POINT(20 20) +104 POINT(10 20) +105 LINESTRING(0 0,0 10,10 0) +106 LINESTRING(10 10,20 10,20 20,10 20,10 10) +107 LINESTRING(10 10,40 10) +108 POLYGON((10 10,20 10,20 20,10 20,10 10)) +109 POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10)) +110 POLYGON((0 0,30 0,30 30,0 0)) +111 MULTIPOINT(0 0,10 10,10 20,20 20) +112 MULTIPOINT(1 1,11 11,11 21,21 21) +113 MULTIPOINT(3 6,4 10) +114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48)) +115 MULTILINESTRING((10 48,10 21,10 0)) +116 MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7)) +117 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +118 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18))) +119 MULTIPOLYGON(((0 3,3 3,3 0,0 3))) +120 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) +121 GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9)) +SELECT fid, Dimension(g) FROM gis_geometry ORDER by fid; +fid Dimension(g) +101 0 +102 0 +103 0 +104 0 +105 1 +106 1 +107 1 +108 2 +109 2 +110 2 +111 0 +112 0 +113 0 +114 1 +115 1 +116 1 +117 2 +118 2 +119 2 +120 1 +121 1 +SELECT fid, GeometryType(g) FROM gis_geometry ORDER by fid; +fid GeometryType(g) +101 POINT +102 POINT +103 POINT +104 POINT +105 LINESTRING +106 LINESTRING +107 LINESTRING +108 POLYGON +109 POLYGON +110 POLYGON +111 MULTIPOINT +112 MULTIPOINT +113 MULTIPOINT +114 MULTILINESTRING +115 MULTILINESTRING +116 MULTILINESTRING +117 MULTIPOLYGON +118 MULTIPOLYGON +119 MULTIPOLYGON +120 GEOMETRYCOLLECTION +121 GEOMETRYCOLLECTION +SELECT fid, IsEmpty(g) FROM gis_geometry ORDER by fid; +fid IsEmpty(g) +101 0 +102 0 +103 0 +104 0 +105 0 +106 0 +107 0 +108 0 +109 0 +110 0 +111 0 +112 0 +113 0 +114 0 +115 0 +116 0 +117 0 +118 0 +119 0 +120 0 +121 0 +SELECT fid, AsText(Envelope(g)) FROM gis_geometry ORDER by fid; +fid AsText(Envelope(g)) +101 POLYGON((10 10,10 10,10 10,10 10,10 10)) +102 POLYGON((20 10,20 10,20 10,20 10,20 10)) +103 POLYGON((20 20,20 20,20 20,20 20,20 20)) +104 POLYGON((10 20,10 20,10 20,10 20,10 20)) +105 POLYGON((0 0,10 0,10 10,0 10,0 0)) +106 POLYGON((10 10,20 10,20 20,10 20,10 10)) +107 POLYGON((10 10,40 10,40 10,10 10,10 10)) +108 POLYGON((10 10,20 10,20 20,10 20,10 10)) +109 POLYGON((0 0,50 0,50 50,0 50,0 0)) +110 POLYGON((0 0,30 0,30 30,0 30,0 0)) +111 POLYGON((0 0,20 0,20 20,0 20,0 0)) +112 POLYGON((1 1,21 1,21 21,1 21,1 1)) +113 POLYGON((3 6,4 6,4 10,3 10,3 6)) +114 POLYGON((10 0,16 0,16 48,10 48,10 0)) +115 POLYGON((10 0,10 0,10 48,10 48,10 0)) +116 POLYGON((1 2,21 2,21 8,1 8,1 2)) +117 POLYGON((28 0,84 0,84 42,28 42,28 0)) +118 POLYGON((28 0,84 0,84 42,28 42,28 0)) +119 POLYGON((0 0,3 0,3 3,0 3,0 0)) +120 POLYGON((0 0,10 0,10 10,0 10,0 0)) +121 POLYGON((3 6,44 6,44 9,3 9,3 6)) +explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_geometry ALL NULL NULL NULL NULL 21 100.00 +Warnings: +Note 1003 select dimension(`test`.`gis_geometry`.`g`) AS `Dimension(g)`,geometrytype(`test`.`gis_geometry`.`g`) AS `GeometryType(g)`,isempty(`test`.`gis_geometry`.`g`) AS `IsEmpty(g)`,astext(envelope(`test`.`gis_geometry`.`g`)) AS `AsText(Envelope(g))` from `test`.`gis_geometry` +SELECT fid, X(g) FROM gis_point ORDER by fid; +fid X(g) +101 10 +102 20 +103 20 +104 10 +SELECT fid, Y(g) FROM gis_point ORDER by fid; +fid Y(g) +101 10 +102 10 +103 20 +104 20 +explain extended select X(g),Y(g) FROM gis_point; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_point ALL NULL NULL NULL NULL 4 100.00 +Warnings: +Note 1003 select x(`test`.`gis_point`.`g`) AS `X(g)`,y(`test`.`gis_point`.`g`) AS `Y(g)` from `test`.`gis_point` +SELECT fid, AsText(StartPoint(g)) FROM gis_line ORDER by fid; +fid AsText(StartPoint(g)) +105 POINT(0 0) +106 POINT(10 10) +107 POINT(10 10) +SELECT fid, AsText(EndPoint(g)) FROM gis_line ORDER by fid; +fid AsText(EndPoint(g)) +105 POINT(10 0) +106 POINT(10 10) +107 POINT(40 10) +SELECT fid, GLength(g) FROM gis_line ORDER by fid; +fid GLength(g) +105 24.142135623731 +106 40 +107 30 +SELECT fid, NumPoints(g) FROM gis_line ORDER by fid; +fid NumPoints(g) +105 3 +106 5 +107 2 +SELECT fid, AsText(PointN(g, 2)) FROM gis_line ORDER by fid; +fid AsText(PointN(g, 2)) +105 POINT(0 10) +106 POINT(20 10) +107 POINT(40 10) +SELECT fid, IsClosed(g) FROM gis_line ORDER by fid; +fid IsClosed(g) +105 0 +106 1 +107 0 +explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_line ALL NULL NULL NULL NULL 3 100.00 +Warnings: +Note 1003 select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint(g))`,astext(endpoint(`test`.`gis_line`.`g`)) AS `AsText(EndPoint(g))`,glength(`test`.`gis_line`.`g`) AS `GLength(g)`,numpoints(`test`.`gis_line`.`g`) AS `NumPoints(g)`,astext(pointn(`test`.`gis_line`.`g`,2)) AS `AsText(PointN(g, 2))`,isclosed(`test`.`gis_line`.`g`) AS `IsClosed(g)` from `test`.`gis_line` +SELECT fid, AsText(Centroid(g)) FROM gis_polygon ORDER by fid; +fid AsText(Centroid(g)) +108 POINT(15 15) +109 POINT(25.4166666666667 25.4166666666667) +110 POINT(20 10) +SELECT fid, Area(g) FROM gis_polygon ORDER by fid; +fid Area(g) +108 100 +109 2400 +110 450 +SELECT fid, AsText(ExteriorRing(g)) FROM gis_polygon ORDER by fid; +fid AsText(ExteriorRing(g)) +108 LINESTRING(10 10,20 10,20 20,10 20,10 10) +109 LINESTRING(0 0,50 0,50 50,0 50,0 0) +110 LINESTRING(0 0,30 0,30 30,0 0) +SELECT fid, NumInteriorRings(g) FROM gis_polygon ORDER by fid; +fid NumInteriorRings(g) +108 0 +109 1 +110 0 +SELECT fid, AsText(InteriorRingN(g, 1)) FROM gis_polygon ORDER by fid; +fid AsText(InteriorRingN(g, 1)) +108 NULL +109 LINESTRING(10 10,20 10,20 20,10 20,10 10) +110 NULL +explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_polygon ALL NULL NULL NULL NULL 3 100.00 +Warnings: +Note 1003 select astext(centroid(`test`.`gis_polygon`.`g`)) AS `AsText(Centroid(g))`,area(`test`.`gis_polygon`.`g`) AS `Area(g)`,astext(exteriorring(`test`.`gis_polygon`.`g`)) AS `AsText(ExteriorRing(g))`,numinteriorrings(`test`.`gis_polygon`.`g`) AS `NumInteriorRings(g)`,astext(interiorringn(`test`.`gis_polygon`.`g`,1)) AS `AsText(InteriorRingN(g, 1))` from `test`.`gis_polygon` +SELECT fid, IsClosed(g) FROM gis_multi_line ORDER by fid; +fid IsClosed(g) +114 0 +115 0 +116 0 +SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon ORDER by fid; +fid AsText(Centroid(g)) +117 POINT(55.5885277530424 17.426536064114) +118 POINT(55.5885277530424 17.426536064114) +119 POINT(2 2) +SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid; +fid Area(g) +117 1684.5 +118 1684.5 +119 4.5 +SELECT fid, NumGeometries(g) from gis_multi_point ORDER by fid; +fid NumGeometries(g) +111 4 +112 4 +113 2 +SELECT fid, NumGeometries(g) from gis_multi_line ORDER by fid; +fid NumGeometries(g) +114 2 +115 1 +116 2 +SELECT fid, NumGeometries(g) from gis_multi_polygon ORDER by fid; +fid NumGeometries(g) +117 2 +118 2 +119 1 +SELECT fid, NumGeometries(g) from gis_geometrycollection ORDER by fid; +fid NumGeometries(g) +120 2 +121 2 +explain extended SELECT fid, NumGeometries(g) from gis_multi_point; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_multi_point ALL NULL NULL NULL NULL 3 100.00 +Warnings: +Note 1003 select `test`.`gis_multi_point`.`fid` AS `fid`,numgeometries(`test`.`gis_multi_point`.`g`) AS `NumGeometries(g)` from `test`.`gis_multi_point` +SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point ORDER by fid; +fid AsText(GeometryN(g, 2)) +111 POINT(10 10) +112 POINT(11 11) +113 POINT(4 10) +SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_line ORDER by fid; +fid AsText(GeometryN(g, 2)) +114 LINESTRING(16 0,16 23,16 48) +115 NULL +116 LINESTRING(2 5,5 8,21 7) +SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_polygon ORDER by fid; +fid AsText(GeometryN(g, 2)) +117 POLYGON((59 18,67 18,67 13,59 13,59 18)) +118 POLYGON((59 18,67 18,67 13,59 13,59 18)) +119 NULL +SELECT fid, AsText(GeometryN(g, 2)) from gis_geometrycollection ORDER by fid; +fid AsText(GeometryN(g, 2)) +120 LINESTRING(0 0,10 10) +121 LINESTRING(3 6,7 9) +SELECT fid, AsText(GeometryN(g, 1)) from gis_geometrycollection ORDER by fid; +fid AsText(GeometryN(g, 1)) +120 POINT(0 0) +121 POINT(44 6) +explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE gis_multi_point ALL NULL NULL NULL NULL 3 100.00 +Warnings: +Note 1003 select `test`.`gis_multi_point`.`fid` AS `fid`,astext(geometryn(`test`.`gis_multi_point`.`g`,2)) AS `AsText(GeometryN(g, 2))` from `test`.`gis_multi_point` +SELECT g1.fid as first, g2.fid as second, +Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o, +Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t, +Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r +FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second; +first second w c o e d t i r +120 120 1 1 0 1 0 0 1 0 +120 121 0 0 1 0 0 0 1 0 +121 120 0 0 1 0 0 0 1 0 +121 121 1 1 0 1 0 0 1 0 +explain extended SELECT g1.fid as first, g2.fid as second, +Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o, +Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t, +Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r +FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE g1 ALL NULL NULL NULL NULL 2 100.00 Using temporary; Using filesort +1 SIMPLE g2 ALL NULL NULL NULL NULL 2 100.00 Using join buffer +Warnings: +Note 1003 select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid` +DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry; +CREATE TABLE t1 ( +a INTEGER PRIMARY KEY AUTO_INCREMENT, +gp point, +ln linestring, +pg polygon, +mp multipoint, +mln multilinestring, +mpg multipolygon, +gc geometrycollection, +gm geometry +); +SHOW FIELDS FROM t1; +Field Type Null Key Default Extra +a int(11) NO PRI NULL auto_increment +gp point YES NULL +ln linestring YES NULL +pg polygon YES NULL +mp multipoint YES NULL +mln multilinestring YES NULL +mpg multipolygon YES NULL +gc geometrycollection YES NULL +gm geometry YES NULL +ALTER TABLE t1 ADD fid INT; +SHOW FIELDS FROM t1; +Field Type Null Key Default Extra +a int(11) NO PRI NULL auto_increment +gp point YES NULL +ln linestring YES NULL +pg polygon YES NULL +mp multipoint YES NULL +mln multilinestring YES NULL +mpg multipolygon YES NULL +gc geometrycollection YES NULL +gm geometry YES NULL +fid int(11) YES NULL +DROP TABLE t1; +create table t1 (pk integer primary key auto_increment, a geometry not null); +insert into t1 (a) values (GeomFromText('Point(1 2)')); +insert into t1 (a) values ('Garbage'); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +insert IGNORE into t1 (a) values ('Garbage'); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +drop table t1; +create table t1 (pk integer primary key auto_increment, fl geometry not null); +insert into t1 (fl) values (1); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +insert into t1 (fl) values (1.11); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +insert into t1 (fl) values ("qwerty"); +ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field +insert into t1 (fl) values (pointfromtext('point(1,1)')); +ERROR 23000: Column 'fl' cannot be null +drop table t1; +End of 4.1 tests +CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY); +INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))')); +INSERT INTO t1 VALUES("small", GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))')); +INSERT INTO t1 VALUES("big", GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))')); +INSERT INTO t1 VALUES("up", GeomFromText('POLYGON (( 0 1, 0 3, 2 3, 2 1, 0 1))')); +INSERT INTO t1 VALUES("up2", GeomFromText('POLYGON (( 0 2, 0 4, 2 4, 2 2, 0 2))')); +INSERT INTO t1 VALUES("up3", GeomFromText('POLYGON (( 0 3, 0 5, 2 5, 2 3, 0 3))')); +INSERT INTO t1 VALUES("down", GeomFromText('POLYGON (( 0 -1, 0 1, 2 1, 2 -1, 0 -1))')); +INSERT INTO t1 VALUES("down2", GeomFromText('POLYGON (( 0 -2, 0 0, 2 0, 2 -2, 0 -2))')); +INSERT INTO t1 VALUES("down3", GeomFromText('POLYGON (( 0 -3, 0 -1, 2 -1, 2 -3, 0 -3))')); +INSERT INTO t1 VALUES("right", GeomFromText('POLYGON (( 1 0, 1 2, 3 2, 3 0, 1 0))')); +INSERT INTO t1 VALUES("right2", GeomFromText('POLYGON (( 2 0, 2 2, 4 2, 4 0, 2 0))')); +INSERT INTO t1 VALUES("right3", GeomFromText('POLYGON (( 3 0, 3 2, 5 2, 5 0, 3 0))')); +INSERT INTO t1 VALUES("left", GeomFromText('POLYGON (( -1 0, -1 2, 1 2, 1 0, -1 0))')); +INSERT INTO t1 VALUES("left2", GeomFromText('POLYGON (( -2 0, -2 2, 0 2, 0 0, -2 0))')); +INSERT INTO t1 VALUES("left3", GeomFromText('POLYGON (( -3 0, -3 2, -1 2, -1 0, -3 0))')); +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrcontains FROM t1 a1 JOIN t1 a2 ON MBRContains( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +mbrcontains +center,small +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrdisjoint FROM t1 a1 JOIN t1 a2 ON MBRDisjoint( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +mbrdisjoint +down3,left3,right3,up3 +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrequal FROM t1 a1 JOIN t1 a2 ON MBREqual( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +mbrequal +center +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrintersect FROM t1 a1 JOIN t1 a2 ON MBRIntersects( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +mbrintersect +big,center,down,down2,left,left2,right,right2,small,up,up2 +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbroverlaps FROM t1 a1 JOIN t1 a2 ON MBROverlaps( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +mbroverlaps +down,left,right,up +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrtouches FROM t1 a1 JOIN t1 a2 ON MBRTouches( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +mbrtouches +down2,left2,right2,up2 +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrwithin FROM t1 a1 JOIN t1 a2 ON MBRWithin( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +mbrwithin +big,center +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS contains FROM t1 a1 JOIN t1 a2 ON Contains( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +contains +center,small +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS disjoint FROM t1 a1 JOIN t1 a2 ON Disjoint( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +disjoint +down3,left3,right3,up3 +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS equals FROM t1 a1 JOIN t1 a2 ON Equals( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +equals +center +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS intersect FROM t1 a1 JOIN t1 a2 ON Intersects( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +intersect +big,center,down,down2,left,left2,right,right2,small,up,up2 +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS overlaps FROM t1 a1 JOIN t1 a2 ON Overlaps( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +overlaps +down,left,right,up +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS touches FROM t1 a1 JOIN t1 a2 ON Touches( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +touches +down2,left2,right2,up2 +SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS within FROM t1 a1 JOIN t1 a2 ON Within( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name; +within +big,center +SET @vert1 = GeomFromText('POLYGON ((0 -2, 0 2, 0 -2))'); +SET @horiz1 = GeomFromText('POLYGON ((-2 0, 2 0, -2 0))'); +SET @horiz2 = GeomFromText('POLYGON ((-1 0, 3 0, -1 0))'); +SET @horiz3 = GeomFromText('POLYGON ((2 0, 3 0, 2 0))'); +SET @point1 = GeomFromText('POLYGON ((0 0))'); +SET @point2 = GeomFromText('POLYGON ((-2 0))'); +SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS overlaps FROM t1 a1 WHERE Overlaps(a1.square, @vert1) GROUP BY a1.name; +overlaps +SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS overlaps FROM t1 a1 WHERE Overlaps(a1.square, @horiz1) GROUP BY a1.name; +overlaps +SELECT Overlaps(@horiz1, @vert1) FROM DUAL; +Overlaps(@horiz1, @vert1) +0 +SELECT Overlaps(@horiz1, @horiz2) FROM DUAL; +Overlaps(@horiz1, @horiz2) +1 +SELECT Overlaps(@horiz1, @horiz3) FROM DUAL; +Overlaps(@horiz1, @horiz3) +0 +SELECT Overlaps(@horiz1, @point1) FROM DUAL; +Overlaps(@horiz1, @point1) +0 +SELECT Overlaps(@horiz1, @point2) FROM DUAL; +Overlaps(@horiz1, @point2) +0 +DROP TABLE t1; +End of 5.0 tests +CREATE TABLE t1 (p POINT); +CREATE TABLE t2 (p POINT, INDEX(p)); +INSERT INTO t1 VALUES (POINTFROMTEXT('POINT(1 2)')); +INSERT INTO t2 VALUES (POINTFROMTEXT('POINT(1 2)')); +SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)'); +COUNT(*) +1 +EXPLAIN +SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)'); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 ref p p 28 const 1 Using where +SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)'); +COUNT(*) +1 +INSERT INTO t1 VALUES (POINTFROMTEXT('POINT(1 2)')); +INSERT INTO t2 VALUES (POINTFROMTEXT('POINT(1 2)')); +EXPLAIN +SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)'); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where +SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)'); +COUNT(*) +2 +EXPLAIN +SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)'); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 ref p p 28 const 1 Using where +SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)'); +COUNT(*) +2 +EXPLAIN +SELECT COUNT(*) FROM t2 IGNORE INDEX(p) WHERE p=POINTFROMTEXT('POINT(1 2)'); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 2 Using where +SELECT COUNT(*) FROM t2 IGNORE INDEX(p) WHERE p=POINTFROMTEXT('POINT(1 2)'); +COUNT(*) +2 +DROP TABLE t1, t2; +End of 5.0 tests +create table t1 (g geometry not null, spatial gk(g)) engine=innodb; +ERROR HY000: The used table type doesn't support SPATIAL indexes diff --git a/mysql-test/suite/innodb_plugin/r/innodb_lock_wait_timeout_1.result b/mysql-test/suite/innodb_plugin/r/innodb_lock_wait_timeout_1.result new file mode 100644 index 00000000000..bd8760b8f79 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_lock_wait_timeout_1.result @@ -0,0 +1,375 @@ +# +# Bug #40113: Embedded SELECT inside UPDATE or DELETE can timeout +# without error +# +CREATE TABLE t1 (a int, b int, PRIMARY KEY (a,b)) ENGINE=InnoDB; +INSERT INTO t1 (a,b) VALUES (1070109,99); +CREATE TABLE t2 (b int, a int, PRIMARY KEY (b)) ENGINE=InnoDB; +INSERT INTO t2 (b,a) VALUES (7,1070109); +SELECT * FROM t1; +a b +1070109 99 +BEGIN; +SELECT b FROM t2 WHERE b=7 FOR UPDATE; +b +7 +BEGIN; +SELECT b FROM t2 WHERE b=7 FOR UPDATE; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +INSERT INTO t1 (a) VALUES ((SELECT a FROM t2 WHERE b=7)); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +UPDATE t1 SET a='7000000' WHERE a=(SELECT a FROM t2 WHERE b=7); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +DELETE FROM t1 WHERE a=(SELECT a FROM t2 WHERE b=7); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +SELECT * FROM t1; +a b +1070109 99 +DROP TABLE t2, t1; +# End of 5.0 tests +# +# Bug#46539 Various crashes on INSERT IGNORE SELECT + SELECT +# FOR UPDATE +# +drop table if exists t1; +create table t1 (a int primary key auto_increment, +b int, index(b)) engine=innodb; +insert into t1 (b) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10); +set autocommit=0; +begin; +select * from t1 where b=5 for update; +a b +5 5 +insert ignore into t1 (b) select a as b from t1; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +# Cleanup +# +commit; +set autocommit=default; +drop table t1; +# +# Bug #37183 insert ignore into .. select ... hangs +# after deadlock was encountered +# +create table t1(id int primary key,v int)engine=innodb; +insert into t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7); +create table t2 like t1; +begin; +update t1 set v=id*2 where id=1; +begin; +update t1 set v=id*2 where id=2; +update t1 set v=id*2 where id=2; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +insert ignore into t2 select * from t1 where id=1; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +rollback; +rollback; +drop table t1, t2; +# +# Bug#41756 Strange error messages about locks from InnoDB +# +drop table if exists t1; +# In the default transaction isolation mode, and/or with +# innodb_locks_unsafe_for_binlog=OFF, handler::unlock_row() +# in InnoDB does nothing. +# Thus in order to reproduce the condition that led to the +# warning, one needs to relax isolation by either +# setting a weaker tx_isolation value, or by turning on +# the unsafe replication switch. +# For testing purposes, choose to tweak the isolation level, +# since it's settable at runtime, unlike +# innodb_locks_unsafe_for_binlog, which is +# only a command-line switch. +# +set @@session.tx_isolation="read-committed"; +# Prepare data. We need a table with a unique index, +# for join_read_key to be used. The other column +# allows to control what passes WHERE clause filter. +create table t1 (a int primary key, b int) engine=innodb; +# Let's make sure t1 has sufficient amount of rows +# to exclude JT_ALL access method when reading it, +# i.e. make sure that JT_EQ_REF(a) is always preferred. +insert into t1 values (1,1), (2,null), (3,1), (4,1), +(5,1), (6,1), (7,1), (8,1), (9,1), (10,1), +(11,1), (12,1), (13,1), (14,1), (15,1), +(16,1), (17,1), (18,1), (19,1), (20,1); +# +# Demonstrate that for the SELECT statement +# used later in the test JT_EQ_REF access method is used. +# +explain +select 1 from t1 natural join (select 2 as a, 1 as b union all +select 2 as a, 2 as b) as t2 for update; +id 1 +select_type PRIMARY +table +type ALL +possible_keys NULL +key NULL +key_len NULL +ref NULL +rows 2 +Extra +id 1 +select_type PRIMARY +table t1 +type eq_ref +possible_keys PRIMARY +key PRIMARY +key_len 4 +ref t2.a +rows 1 +Extra Using where +id 2 +select_type DERIVED +table NULL +type NULL +possible_keys NULL +key NULL +key_len NULL +ref NULL +rows NULL +Extra No tables used +id 3 +select_type UNION +table NULL +type NULL +possible_keys NULL +key NULL +key_len NULL +ref NULL +rows NULL +Extra No tables used +id NULL +select_type UNION RESULT +table +type ALL +possible_keys NULL +key NULL +key_len NULL +ref NULL +rows NULL +Extra +# +# Demonstrate that the reported SELECT statement +# no longer produces warnings. +# +select 1 from t1 natural join (select 2 as a, 1 as b union all +select 2 as a, 2 as b) as t2 for update; +1 +commit; +# +# Demonstrate that due to lack of inter-sweep "reset" function, +# we keep some non-matching records locked, even though we know +# we could unlock them. +# To do that, show that if there is only one distinct value +# for a in t2 (a=2), we will keep record (2,null) in t1 locked. +# But if we add another value for "a" to t2, say 6, +# join_read_key cache will be pruned at least once, +# and thus record (2, null) in t1 will get unlocked. +# +begin; +select 1 from t1 natural join (select 2 as a, 1 as b union all +select 2 as a, 2 as b) as t2 for update; +1 +# +# Switching to connection con1 +# We should be able to delete all records from t1 except (2, null), +# since they were not locked. +begin; +# Delete in series of 3 records so that full scan +# is not used and we're not blocked on record (2,null) +delete from t1 where a in (1,3,4); +delete from t1 where a in (5,6,7); +delete from t1 where a in (8,9,10); +delete from t1 where a in (11,12,13); +delete from t1 where a in (14,15,16); +delete from t1 where a in (17,18); +delete from t1 where a in (19,20); +# +# Record (2, null) is locked. This is actually unnecessary, +# because the previous select returned no rows. +# Just demonstrate the effect. +# +delete from t1; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +rollback; +# +# Switching to connection default +# +# Show that the original contents of t1 is intact: +select * from t1; +a b +1 1 +2 NULL +3 1 +4 1 +5 1 +6 1 +7 1 +8 1 +9 1 +10 1 +11 1 +12 1 +13 1 +14 1 +15 1 +16 1 +17 1 +18 1 +19 1 +20 1 +commit; +# +# Have a one more record in t2 to show that +# if join_read_key cache is purned, the current +# row under the cursor is unlocked (provided, this row didn't +# match the partial WHERE clause, of course). +# Sic: the result of this test dependent on the order of retrieval +# of records --echo # from the derived table, if ! +# We use DELETE to disable the JOIN CACHE. This DELETE modifies no +# records. It also should leave no InnoDB row locks. +# +begin; +delete t1.* from t1 natural join (select 2 as a, 2 as b union all +select 0 as a, 0 as b) as t2; +# Demonstrate that nothing was deleted form t1 +select * from t1; +a b +1 1 +2 NULL +3 1 +4 1 +5 1 +6 1 +7 1 +8 1 +9 1 +10 1 +11 1 +12 1 +13 1 +14 1 +15 1 +16 1 +17 1 +18 1 +19 1 +20 1 +# +# Switching to connection con1 +begin; +# Since there is another distinct record in the derived table +# the previous matching record in t1 -- (2,null) -- was unlocked. +delete from t1; +# We will need the contents of the table again. +rollback; +select * from t1; +a b +1 1 +2 NULL +3 1 +4 1 +5 1 +6 1 +7 1 +8 1 +9 1 +10 1 +11 1 +12 1 +13 1 +14 1 +15 1 +16 1 +17 1 +18 1 +19 1 +20 1 +commit; +# +# Switching to connection default +rollback; +begin; +# +# Before this patch, we could wrongly unlock a record +# that was cached and later used in a join. Demonstrate that +# this is no longer the case. +# Sic: this test is also order-dependent (i.e. the +# the bug would show up only if the first record in the union +# is retreived and processed first. +# +# Verify that JT_EQ_REF is used. +explain +select 1 from t1 natural join (select 3 as a, 2 as b union all +select 3 as a, 1 as b) as t2 for update; +id 1 +select_type PRIMARY +table +type ALL +possible_keys NULL +key NULL +key_len NULL +ref NULL +rows 2 +Extra +id 1 +select_type PRIMARY +table t1 +type eq_ref +possible_keys PRIMARY +key PRIMARY +key_len 4 +ref t2.a +rows 1 +Extra Using where +id 2 +select_type DERIVED +table NULL +type NULL +possible_keys NULL +key NULL +key_len NULL +ref NULL +rows NULL +Extra No tables used +id 3 +select_type UNION +table NULL +type NULL +possible_keys NULL +key NULL +key_len NULL +ref NULL +rows NULL +Extra No tables used +id NULL +select_type UNION RESULT +table +type ALL +possible_keys NULL +key NULL +key_len NULL +ref NULL +rows NULL +Extra +# Lock the record. +select 1 from t1 natural join (select 3 as a, 2 as b union all +select 3 as a, 1 as b) as t2 for update; +1 +1 +# Switching to connection con1 +# +# We should not be able to delete record (3,1) from t1, +# (previously it was possible). +# +delete from t1 where a=3; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +# Switching to connection default +commit; +set @@session.tx_isolation=default; +drop table t1; +# +# End of 5.1 tests +# diff --git a/mysql-test/suite/innodb_plugin/r/innodb_mysql.result b/mysql-test/suite/innodb_plugin/r/innodb_mysql.result new file mode 100644 index 00000000000..2bf1ef8fbf0 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_mysql.result @@ -0,0 +1,2381 @@ +set global innodb_support_xa=default; +set session innodb_support_xa=default; +SET SESSION STORAGE_ENGINE = InnoDB; +drop table if exists t1,t2,t3,t1m,t1i,t2m,t2i,t4; +drop procedure if exists p1; +create table t1 ( +c_id int(11) not null default '0', +org_id int(11) default null, +unique key contacts$c_id (c_id), +key contacts$org_id (org_id) +); +insert into t1 values +(2,null),(120,null),(141,null),(218,7), (128,1), +(151,2),(234,2),(236,2),(243,2),(255,2),(259,2),(232,3),(235,3),(238,3), +(246,3),(253,3),(269,3),(285,3),(291,3),(293,3),(131,4),(230,4),(231,4); +create table t2 ( +slai_id int(11) not null default '0', +owner_tbl int(11) default null, +owner_id int(11) default null, +sla_id int(11) default null, +inc_web int(11) default null, +inc_email int(11) default null, +inc_chat int(11) default null, +inc_csr int(11) default null, +inc_total int(11) default null, +time_billed int(11) default null, +activedate timestamp null default null, +expiredate timestamp null default null, +state int(11) default null, +sla_set int(11) default null, +unique key t2$slai_id (slai_id), +key t2$owner_id (owner_id), +key t2$sla_id (sla_id) +); +insert into t2(slai_id, owner_tbl, owner_id, sla_id) values +(1,3,1,1), (3,3,10,2), (4,3,3,6), (5,3,2,5), (6,3,8,3), (7,3,9,7), +(8,3,6,8), (9,3,4,9), (10,3,5,10), (11,3,11,11), (12,3,7,12); +flush tables; +select si.slai_id +from t1 c join t2 si on +((si.owner_tbl = 3 and si.owner_id = c.org_id) or +( si.owner_tbl = 2 and si.owner_id = c.c_id)) +where +c.c_id = 218 and expiredate is null; +slai_id +12 +select * from t1 where org_id is null; +c_id org_id +2 NULL +120 NULL +141 NULL +select si.slai_id +from t1 c join t2 si on +((si.owner_tbl = 3 and si.owner_id = c.org_id) or +( si.owner_tbl = 2 and si.owner_id = c.c_id)) +where +c.c_id = 218 and expiredate is null; +slai_id +12 +drop table t1, t2; +CREATE TABLE t1 (a int, b int, KEY b (b)); +CREATE TABLE t2 (a int, b int, PRIMARY KEY (a,b)); +CREATE TABLE t3 (a int, b int, c int, PRIMARY KEY (a), +UNIQUE KEY b (b,c), KEY a (a,b,c)); +INSERT INTO t1 VALUES (1, 1); +INSERT INTO t1 SELECT a + 1, b + 1 FROM t1; +INSERT INTO t1 SELECT a + 2, b + 2 FROM t1; +INSERT INTO t2 VALUES (1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8); +INSERT INTO t2 SELECT a + 1, b FROM t2; +DELETE FROM t2 WHERE a = 1 AND b < 2; +INSERT INTO t3 VALUES (1,1,1),(2,1,2); +INSERT INTO t3 SELECT a + 2, a + 2, 3 FROM t3; +INSERT INTO t3 SELECT a + 4, a + 4, 3 FROM t3; +SELECT STRAIGHT_JOIN SQL_NO_CACHE t1.b, t1.a FROM t1, t3, t2 WHERE +t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2) +ORDER BY t1.b LIMIT 2; +b a +1 1 +2 2 +SELECT STRAIGHT_JOIN SQL_NO_CACHE t1.b, t1.a FROM t1, t3, t2 WHERE +t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2) +ORDER BY t1.b LIMIT 5; +b a +1 1 +2 2 +2 2 +3 3 +3 3 +DROP TABLE t1, t2, t3; +CREATE TABLE `t1` (`id1` INT) ; +INSERT INTO `t1` (`id1`) VALUES (1),(5),(2); +CREATE TABLE `t2` ( +`id1` INT, +`id2` INT NOT NULL, +`id3` INT, +`id4` INT NOT NULL, +UNIQUE (`id2`,`id4`), +KEY (`id1`) +); +INSERT INTO `t2`(`id1`,`id2`,`id3`,`id4`) VALUES +(1,1,1,0), +(1,1,2,1), +(5,1,2,2), +(6,1,2,3), +(1,2,2,2), +(1,2,1,1); +SELECT `id1` FROM `t1` WHERE `id1` NOT IN (SELECT `id1` FROM `t2` WHERE `id2` = 1 AND `id3` = 2); +id1 +2 +DROP TABLE t1, t2; +create table t1 (c1 int) engine=innodb; +handler t1 open; +handler t1 read first; +c1 +Before and after comparison +0 +drop table t1; +CREATE TABLE t1(c1 TEXT, UNIQUE (c1(1)), cnt INT DEFAULT 1) +ENGINE=INNODB CHARACTER SET UTF8; +INSERT INTO t1 (c1) VALUES ('1a'); +SELECT * FROM t1; +c1 cnt +1a 1 +INSERT INTO t1 (c1) VALUES ('1b') ON DUPLICATE KEY UPDATE cnt=cnt+1; +SELECT * FROM t1; +c1 cnt +1a 2 +DROP TABLE t1; +CREATE TABLE t1(c1 VARCHAR(2), UNIQUE (c1(1)), cnt INT DEFAULT 1) +ENGINE=INNODB CHARACTER SET UTF8; +INSERT INTO t1 (c1) VALUES ('1a'); +SELECT * FROM t1; +c1 cnt +1a 1 +INSERT INTO t1 (c1) VALUES ('1b') ON DUPLICATE KEY UPDATE cnt=cnt+1; +SELECT * FROM t1; +c1 cnt +1a 2 +DROP TABLE t1; +CREATE TABLE t1(c1 CHAR(2), UNIQUE (c1(1)), cnt INT DEFAULT 1) +ENGINE=INNODB CHARACTER SET UTF8; +INSERT INTO t1 (c1) VALUES ('1a'); +SELECT * FROM t1; +c1 cnt +1a 1 +INSERT INTO t1 (c1) VALUES ('1b') ON DUPLICATE KEY UPDATE cnt=cnt+1; +SELECT * FROM t1; +c1 cnt +1a 2 +DROP TABLE t1; +CREATE TABLE t1 ( +a1 decimal(10,0) DEFAULT NULL, +a2 blob, +a3 time DEFAULT NULL, +a4 blob, +a5 char(175) DEFAULT NULL, +a6 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', +a7 tinyblob, +INDEX idx (a6,a7(239),a5) +) ENGINE=InnoDB; +EXPLAIN SELECT a4 FROM t1 WHERE +a6=NULL AND +a4='UNcT5pIde4I6c2SheTo4gt92OV1jgJCVkXmzyf325R1DwLURkbYHwhydANIZMbKTgdcR5xS'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +EXPLAIN SELECT t1.a4 FROM t1, t1 t WHERE +t.a6=t.a6 AND t1.a6=NULL AND +t1.a4='UNcT5pIde4I6c2SheTo4gt92OV1jgJCVkXmzyf325R1DwLURkbYHwhydANIZMbKTgdcR5xS'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +DROP TABLE t1; +create table t1m (a int) engine = MEMORY; +create table t1i (a int); +create table t2m (a int) engine = MEMORY; +create table t2i (a int); +insert into t2m values (5); +insert into t2i values (5); +select min(a) from t1i; +min(a) +NULL +select min(7) from t1i; +min(7) +NULL +select min(7) from DUAL; +min(7) +7 +explain select min(7) from t2i join t1i; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2i ALL NULL NULL NULL NULL 1 +1 SIMPLE t1i ALL NULL NULL NULL NULL 1 Using join buffer +select min(7) from t2i join t1i; +min(7) +NULL +select max(a) from t1i; +max(a) +NULL +select max(7) from t1i; +max(7) +NULL +select max(7) from DUAL; +max(7) +7 +explain select max(7) from t2i join t1i; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2i ALL NULL NULL NULL NULL 1 +1 SIMPLE t1i ALL NULL NULL NULL NULL 1 Using join buffer +select max(7) from t2i join t1i; +max(7) +NULL +select 1, min(a) from t1i where a=99; +1 min(a) +1 NULL +select 1, min(a) from t1i where 1=99; +1 min(a) +1 NULL +select 1, min(1) from t1i where a=99; +1 min(1) +1 NULL +select 1, min(1) from t1i where 1=99; +1 min(1) +1 NULL +select 1, max(a) from t1i where a=99; +1 max(a) +1 NULL +select 1, max(a) from t1i where 1=99; +1 max(a) +1 NULL +select 1, max(1) from t1i where a=99; +1 max(1) +1 NULL +select 1, max(1) from t1i where 1=99; +1 max(1) +1 NULL +explain select count(*), min(7), max(7) from t1m, t1i; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1m system NULL NULL NULL NULL 0 const row not found +1 SIMPLE t1i ALL NULL NULL NULL NULL 1 +select count(*), min(7), max(7) from t1m, t1i; +count(*) min(7) max(7) +0 NULL NULL +explain select count(*), min(7), max(7) from t1m, t2i; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1m system NULL NULL NULL NULL 0 const row not found +1 SIMPLE t2i ALL NULL NULL NULL NULL 1 +select count(*), min(7), max(7) from t1m, t2i; +count(*) min(7) max(7) +0 NULL NULL +explain select count(*), min(7), max(7) from t2m, t1i; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2m system NULL NULL NULL NULL 1 +1 SIMPLE t1i ALL NULL NULL NULL NULL 1 +select count(*), min(7), max(7) from t2m, t1i; +count(*) min(7) max(7) +0 NULL NULL +drop table t1m, t1i, t2m, t2i; +create table t1 ( +a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(64) default ' ' +) ENGINE = MEMORY; +insert into t1 (a1, a2, b, c, d) values +('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'), +('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'), +('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'), +('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'), +('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'), +('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'), +('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'), +('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'), +('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'), +('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'), +('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'), +('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4'), +('d','a','a','a411','xy1'),('d','a','a','b411','xy2'),('d','a','a','c411','xy3'),('d','a','a','d411','xy4'), +('d','a','b','e412','xy1'),('d','a','b','f412','xy2'),('d','a','b','g412','xy3'),('d','a','b','h412','xy4'), +('d','b','a','i421','xy1'),('d','b','a','j421','xy2'),('d','b','a','k421','xy3'),('d','b','a','l421','xy4'), +('d','b','b','m422','xy1'),('d','b','b','n422','xy2'),('d','b','b','o422','xy3'),('d','b','b','p422','xy4'), +('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'), +('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'), +('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'), +('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'), +('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'), +('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'), +('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'), +('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'), +('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'), +('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'), +('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'), +('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4'), +('d','a','a','a411','xy1'),('d','a','a','b411','xy2'),('d','a','a','c411','xy3'),('d','a','a','d411','xy4'), +('d','a','b','e412','xy1'),('d','a','b','f412','xy2'),('d','a','b','g412','xy3'),('d','a','b','h412','xy4'), +('d','b','a','i421','xy1'),('d','b','a','j421','xy2'),('d','b','a','k421','xy3'),('d','b','a','l421','xy4'), +('d','b','b','m422','xy1'),('d','b','b','n422','xy2'),('d','b','b','o422','xy3'),('d','b','b','p422','xy4'); +create table t4 ( +pk_col int auto_increment primary key, a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(64) default ' ' +); +insert into t4 (a1, a2, b, c, d, dummy) select * from t1; +create index idx12672_0 on t4 (a1); +create index idx12672_1 on t4 (a1,a2,b,c); +create index idx12672_2 on t4 (a1,a2,b); +analyze table t4; +Table Op Msg_type Msg_text +test.t4 analyze status OK +select distinct a1 from t4 where pk_col not in (1,2,3,4); +a1 +a +b +c +d +drop table t1,t4; +DROP TABLE IF EXISTS t2, t1; +CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE= InnoDB; +CREATE TABLE t2 ( +i INT NOT NULL, +FOREIGN KEY (i) REFERENCES t1 (i) ON DELETE NO ACTION +) ENGINE= InnoDB; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1); +DELETE IGNORE FROM t1 WHERE i = 1; +Warnings: +Error 1451 Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`i`) REFERENCES `t1` (`i`) ON DELETE NO ACTION) +SELECT * FROM t1, t2; +i i +1 1 +DROP TABLE t2, t1; +End of 4.1 tests. +create table t1 ( +a varchar(30), b varchar(30), primary key(a), key(b) +); +select distinct a from t1; +a +drop table t1; +create table t1(a int, key(a)); +insert into t1 values(1); +select a, count(a) from t1 group by a with rollup; +a count(a) +1 1 +NULL 1 +drop table t1; +create table t1 (f1 int, f2 char(1), primary key(f1,f2)); +insert into t1 values ( 1,"e"),(2,"a"),( 3,"c"),(4,"d"); +alter table t1 drop primary key, add primary key (f2, f1); +explain select distinct f1 a, f1 b from t1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index NULL PRIMARY 5 NULL 4 Using index; Using temporary +explain select distinct f1, f2 from t1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range NULL PRIMARY 5 NULL 3 Using index for group-by; Using temporary +drop table t1; +CREATE TABLE t1 (id int(11) NOT NULL PRIMARY KEY, name varchar(20), +INDEX (name)); +CREATE TABLE t2 (id int(11) NOT NULL PRIMARY KEY, fkey int(11)); +ALTER TABLE t2 ADD FOREIGN KEY (fkey) REFERENCES t2(id); +INSERT INTO t1 VALUES (1,'A1'),(2,'A2'),(3,'B'); +INSERT INTO t2 VALUES (1,1),(2,2),(3,2),(4,3),(5,3); +EXPLAIN +SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id +WHERE t1.name LIKE 'A%'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index PRIMARY,name name 23 NULL 3 Using where; Using index +1 SIMPLE t2 ref fkey fkey 5 test.t1.id 1 Using where; Using index +EXPLAIN +SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id +WHERE t1.name LIKE 'A%' OR FALSE; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 index NULL fkey 5 NULL 5 Using index +1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.fkey 1 Using where +DROP TABLE t1,t2; +CREATE TABLE t1 ( +id int NOT NULL, +name varchar(20) NOT NULL, +dept varchar(20) NOT NULL, +age tinyint(3) unsigned NOT NULL, +PRIMARY KEY (id), +INDEX (name,dept) +) ENGINE=InnoDB; +INSERT INTO t1(id, dept, age, name) VALUES +(3987, 'cs1', 10, 'rs1'), (3988, 'cs2', 20, 'rs1'), (3995, 'cs3', 10, 'rs2'), +(3996, 'cs4', 20, 'rs2'), (4003, 'cs5', 10, 'rs3'), (4004, 'cs6', 20, 'rs3'), +(4011, 'cs7', 10, 'rs4'), (4012, 'cs8', 20, 'rs4'), (4019, 'cs9', 10, 'rs5'), +(4020, 'cs10', 20, 'rs5'),(4027, 'cs11', 10, 'rs6'),(4028, 'cs12', 20, 'rs6'); +EXPLAIN SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range name name 44 NULL 2 Using where; Using index for group-by +SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5'; +name dept +rs5 cs10 +rs5 cs9 +DELETE FROM t1; +# Masking (#) number in "rows" column of the following EXPLAIN output, as it may vary (bug#47746). +EXPLAIN SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range name name 44 NULL # Using where; Using index for group-by +SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5'; +name dept +DROP TABLE t1; +drop table if exists t1; +show variables like 'innodb_rollback_on_timeout'; +Variable_name Value +innodb_rollback_on_timeout OFF +create table t1 (a int unsigned not null primary key) engine = innodb; +insert into t1 values (1); +commit; +begin work; +insert into t1 values (2); +select * from t1; +a +1 +2 +begin work; +insert into t1 values (5); +select * from t1; +a +1 +5 +insert into t1 values (2); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +select * from t1; +a +1 +5 +commit; +select * from t1; +a +1 +2 +commit; +select * from t1; +a +1 +2 +5 +drop table t1; +set @save_qcache_size=@@global.query_cache_size; +set @save_qcache_type=@@global.query_cache_type; +set global query_cache_size=10*1024*1024; +set global query_cache_type=1; +drop table if exists `test`; +Warnings: +Note 1051 Unknown table 'test' +CREATE TABLE `test` (`test1` varchar(3) NOT NULL, +`test2` varchar(4) NOT NULL,PRIMARY KEY (`test1`)) +ENGINE=InnoDB DEFAULT CHARSET=latin1; +INSERT INTO `test` (`test1`, `test2`) VALUES ('tes', '5678'); +select * from test; +test1 test2 +tes 5678 +INSERT INTO `test` (`test1`, `test2`) VALUES ('tes', '1234') +ON DUPLICATE KEY UPDATE `test2` = '1234'; +select * from test; +test1 test2 +tes 1234 +flush tables; +select * from test; +test1 test2 +tes 1234 +drop table test; +set global query_cache_type=@save_qcache_type; +set global query_cache_size=@save_qcache_size; +drop table if exists t1; +show variables like 'innodb_rollback_on_timeout'; +Variable_name Value +innodb_rollback_on_timeout OFF +create table t1 (a int unsigned not null primary key) engine = innodb; +insert into t1 values (1); +commit; +begin work; +insert into t1 values (2); +select * from t1; +a +1 +2 +begin work; +insert into t1 values (5); +select * from t1; +a +1 +5 +insert into t1 values (2); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +select * from t1; +a +1 +5 +commit; +select * from t1; +a +1 +2 +commit; +select * from t1; +a +1 +2 +5 +drop table t1; +create table t1( +id int auto_increment, +c char(1) not null, +counter int not null default 1, +primary key (id), +unique key (c) +) engine=innodb; +insert into t1 (id, c) values +(NULL, 'a'), +(NULL, 'a') +on duplicate key update id = values(id), counter = counter + 1; +select * from t1; +id c counter +2 a 2 +insert into t1 (id, c) values +(NULL, 'b') +on duplicate key update id = values(id), counter = counter + 1; +select * from t1; +id c counter +2 a 2 +3 b 1 +truncate table t1; +insert into t1 (id, c) values (NULL, 'a'); +select * from t1; +id c counter +1 a 1 +insert into t1 (id, c) values (NULL, 'b'), (NULL, 'b') +on duplicate key update id = values(id), c = values(c), counter = counter + 1; +select * from t1; +id c counter +1 a 1 +3 b 2 +insert into t1 (id, c) values (NULL, 'a') +on duplicate key update id = values(id), c = values(c), counter = counter + 1; +select * from t1; +id c counter +3 b 2 +4 a 2 +drop table t1; +CREATE TABLE t1( +id int AUTO_INCREMENT PRIMARY KEY, +stat_id int NOT NULL, +acct_id int DEFAULT NULL, +INDEX idx1 (stat_id, acct_id), +INDEX idx2 (acct_id) +) ENGINE=MyISAM; +CREATE TABLE t2( +id int AUTO_INCREMENT PRIMARY KEY, +stat_id int NOT NULL, +acct_id int DEFAULT NULL, +INDEX idx1 (stat_id, acct_id), +INDEX idx2 (acct_id) +) ENGINE=InnoDB; +INSERT INTO t1(stat_id,acct_id) VALUES +(1,759), (2,831), (3,785), (4,854), (1,921), +(1,553), (2,589), (3,743), (2,827), (2,545), +(4,779), (4,783), (1,597), (1,785), (4,832), +(1,741), (1,833), (3,788), (2,973), (1,907); +INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1; +INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1; +INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1; +INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1; +INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1; +INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1; +INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1; +INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1; +INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1; +INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1; +INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1; +UPDATE t1 SET acct_id=785 +WHERE MOD(stat_id,2)=0 AND MOD(id,stat_id)=MOD(acct_id,stat_id); +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +SELECT COUNT(*) FROM t1; +COUNT(*) +40960 +SELECT COUNT(*) FROM t1 WHERE acct_id=785; +COUNT(*) +8702 +EXPLAIN SELECT COUNT(*) FROM t1 WHERE stat_id IN (1,3) AND acct_id=785; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range idx1,idx2 idx1 9 NULL 2 Using where; Using index +INSERT INTO t2 SELECT * FROM t1; +OPTIMIZE TABLE t2; +Table Op Msg_type Msg_text +test.t2 optimize note Table does not support optimize, doing recreate + analyze instead +test.t2 optimize status OK +EXPLAIN SELECT COUNT(*) FROM t2 WHERE stat_id IN (1,3) AND acct_id=785; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 range idx1,idx2 idx1 9 NULL 2 Using where; Using index +DROP TABLE t1,t2; +create table t1(a int) engine=innodb; +alter table t1 comment '123'; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='123' +drop table t1; +CREATE TABLE t1 (a CHAR(2), KEY (a)) ENGINE = InnoDB DEFAULT CHARSET=UTF8; +INSERT INTO t1 VALUES ('uk'),('bg'); +SELECT * FROM t1 WHERE a = 'uk'; +a +uk +DELETE FROM t1 WHERE a = 'uk'; +SELECT * FROM t1 WHERE a = 'uk'; +a +UPDATE t1 SET a = 'us' WHERE a = 'uk'; +SELECT * FROM t1 WHERE a = 'uk'; +a +CREATE TABLE t2 (a CHAR(2), KEY (a)) ENGINE = InnoDB; +INSERT INTO t2 VALUES ('uk'),('bg'); +SELECT * FROM t2 WHERE a = 'uk'; +a +uk +DELETE FROM t2 WHERE a = 'uk'; +SELECT * FROM t2 WHERE a = 'uk'; +a +INSERT INTO t2 VALUES ('uk'); +UPDATE t2 SET a = 'us' WHERE a = 'uk'; +SELECT * FROM t2 WHERE a = 'uk'; +a +CREATE TABLE t3 (a CHAR(2), KEY (a)) ENGINE = MyISAM; +INSERT INTO t3 VALUES ('uk'),('bg'); +SELECT * FROM t3 WHERE a = 'uk'; +a +uk +DELETE FROM t3 WHERE a = 'uk'; +SELECT * FROM t3 WHERE a = 'uk'; +a +INSERT INTO t3 VALUES ('uk'); +UPDATE t3 SET a = 'us' WHERE a = 'uk'; +SELECT * FROM t3 WHERE a = 'uk'; +a +DROP TABLE t1,t2,t3; +create table t1 (a int) engine=innodb; +select * from bug29807; +ERROR 42S02: Table 'test.bug29807' doesn't exist +drop table t1; +drop table bug29807; +ERROR 42S02: Unknown table 'bug29807' +create table bug29807 (a int); +drop table bug29807; +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +CREATE TABLE t2 (a INT) ENGINE=InnoDB; +switch to connection c1 +SET AUTOCOMMIT=0; +INSERT INTO t2 VALUES (1); +switch to connection c2 +SET AUTOCOMMIT=0; +LOCK TABLES t1 READ, t2 READ; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +switch to connection c1 +COMMIT; +INSERT INTO t1 VALUES (1); +switch to connection default +SET AUTOCOMMIT=default; +DROP TABLE t1,t2; +CREATE TABLE t1 ( +id int NOT NULL auto_increment PRIMARY KEY, +b int NOT NULL, +c datetime NOT NULL, +INDEX idx_b(b), +INDEX idx_c(c) +) ENGINE=InnoDB; +CREATE TABLE t2 ( +b int NOT NULL auto_increment PRIMARY KEY, +c datetime NOT NULL +) ENGINE= MyISAM; +INSERT INTO t2(c) VALUES ('2007-01-01'); +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t2(c) SELECT c FROM t2; +INSERT INTO t1(b,c) SELECT b,c FROM t2; +UPDATE t2 SET c='2007-01-02'; +INSERT INTO t1(b,c) SELECT b,c FROM t2; +UPDATE t2 SET c='2007-01-03'; +INSERT INTO t1(b,c) SELECT b,c FROM t2; +set @@sort_buffer_size=8192; +Warnings: +Warning 1292 Truncated incorrect sort_buffer_size value: '8192' +SELECT COUNT(*) FROM t1; +COUNT(*) +3072 +EXPLAIN +SELECT COUNT(*) FROM t1 +WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL idx_b,idx_c NULL NULL NULL # Using where +SELECT COUNT(*) FROM t1 +WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; +COUNT(*) +3072 +EXPLAIN +SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c) +WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index_merge idx_b,idx_c idx_c,idx_b 8,4 NULL # Using sort_union(idx_c,idx_b); Using where +SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c) +WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1; +COUNT(*) +3072 +set @@sort_buffer_size=default; +DROP TABLE t1,t2; +CREATE TABLE t1 (a int, b int); +insert into t1 values (1,1),(1,2); +CREATE TABLE t2 (primary key (a)) select * from t1; +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' +drop table if exists t2; +Warnings: +Note 1051 Unknown table 't2' +CREATE TEMPORARY TABLE t2 (primary key (a)) select * from t1; +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' +drop table if exists t2; +Warnings: +Note 1051 Unknown table 't2' +CREATE TABLE t2 (a int, b int, primary key (a)); +BEGIN; +INSERT INTO t2 values(100,100); +CREATE TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1; +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' +SELECT * from t2; +a b +100 100 +ROLLBACK; +SELECT * from t2; +a b +100 100 +TRUNCATE table t2; +INSERT INTO t2 select * from t1; +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' +SELECT * from t2; +a b +drop table t2; +CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a)); +BEGIN; +INSERT INTO t2 values(100,100); +CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1; +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' +SELECT * from t2; +a b +100 100 +COMMIT; +BEGIN; +INSERT INTO t2 values(101,101); +CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1; +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' +SELECT * from t2; +a b +100 100 +101 101 +ROLLBACK; +SELECT * from t2; +a b +100 100 +TRUNCATE table t2; +INSERT INTO t2 select * from t1; +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' +SELECT * from t2; +a b +drop table t1,t2; +create table t1(f1 varchar(800) binary not null, key(f1)) +character set utf8 collate utf8_general_ci; +Warnings: +Warning 1071 Specified key was too long; max key length is 767 bytes +insert into t1 values('aaa'); +drop table t1; +CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c FLOAT, KEY b(b)) ENGINE = INNODB; +INSERT INTO t1 VALUES ( 1 , 1 , 1); +INSERT INTO t1 SELECT a + 1 , MOD(a + 1 , 20), 1 FROM t1; +INSERT INTO t1 SELECT a + 2 , MOD(a + 2 , 20), 1 FROM t1; +INSERT INTO t1 SELECT a + 4 , MOD(a + 4 , 20), 1 FROM t1; +INSERT INTO t1 SELECT a + 8 , MOD(a + 8 , 20), 1 FROM t1; +INSERT INTO t1 SELECT a + 16, MOD(a + 16, 20), 1 FROM t1; +INSERT INTO t1 SELECT a + 32, MOD(a + 32, 20), 1 FROM t1; +INSERT INTO t1 SELECT a + 64, MOD(a + 64, 20), 1 FROM t1; +EXPLAIN SELECT b, SUM(c) FROM t1 GROUP BY b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index NULL b 5 NULL 128 +EXPLAIN SELECT SQL_BIG_RESULT b, SUM(c) FROM t1 GROUP BY b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using filesort +DROP TABLE t1; +drop table if exists t1; +show variables like 'innodb_rollback_on_timeout'; +Variable_name Value +innodb_rollback_on_timeout OFF +create table t1 (a int unsigned not null primary key) engine = innodb; +insert into t1 values (1); +commit; +begin work; +insert into t1 values (2); +select * from t1; +a +1 +2 +begin work; +insert into t1 values (5); +select * from t1; +a +1 +5 +insert into t1 values (2); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +select * from t1; +a +1 +5 +commit; +select * from t1; +a +1 +2 +commit; +select * from t1; +a +1 +2 +5 +drop table t1; +drop table if exists t1; +create table t1 (a int) engine=innodb; +alter table t1 alter a set default 1; +drop table t1; + +Bug#24918 drop table and lock / inconsistent between +perm and temp tables + +Check transactional tables under LOCK TABLES + +drop table if exists t24918, t24918_tmp, t24918_trans, t24918_trans_tmp, +t24918_access; +create table t24918_access (id int); +create table t24918 (id int) engine=myisam; +create temporary table t24918_tmp (id int) engine=myisam; +create table t24918_trans (id int) engine=innodb; +create temporary table t24918_trans_tmp (id int) engine=innodb; +lock table t24918 write, t24918_tmp write, t24918_trans write, t24918_trans_tmp write; +drop table t24918; +select * from t24918_access; +ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES +drop table t24918_trans; +select * from t24918_access; +ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES +drop table t24918_trans_tmp; +select * from t24918_access; +ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES +drop table t24918_tmp; +select * from t24918_access; +ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES +unlock tables; +drop table t24918_access; +CREATE TABLE t1 (a int, b int, PRIMARY KEY (a), KEY bkey (b)) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,2),(3,2),(2,2),(4,2),(5,2),(6,2),(7,2),(8,2); +INSERT INTO t1 SELECT a + 8, 2 FROM t1; +INSERT INTO t1 SELECT a + 16, 1 FROM t1; +EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a; +id 1 +select_type SIMPLE +table t1 +type ref +possible_keys bkey +key bkey +key_len 5 +ref const +rows 16 +Extra Using where; Using index +SELECT * FROM t1 WHERE b=2 ORDER BY a; +a b +1 2 +2 2 +3 2 +4 2 +5 2 +6 2 +7 2 +8 2 +9 2 +10 2 +11 2 +12 2 +13 2 +14 2 +15 2 +16 2 +EXPLAIN SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY a; +id 1 +select_type SIMPLE +table t1 +type range +possible_keys bkey +key bkey +key_len 5 +ref NULL +rows 16 +Extra Using where; Using index; Using filesort +SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY a; +a b +1 2 +2 2 +3 2 +4 2 +5 2 +6 2 +7 2 +8 2 +9 2 +10 2 +11 2 +12 2 +13 2 +14 2 +15 2 +16 2 +17 1 +18 1 +19 1 +20 1 +21 1 +22 1 +23 1 +24 1 +25 1 +26 1 +27 1 +28 1 +29 1 +30 1 +31 1 +32 1 +EXPLAIN SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY b,a; +id 1 +select_type SIMPLE +table t1 +type range +possible_keys bkey +key bkey +key_len 5 +ref NULL +rows 16 +Extra Using where; Using index +SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY b,a; +a b +17 1 +18 1 +19 1 +20 1 +21 1 +22 1 +23 1 +24 1 +25 1 +26 1 +27 1 +28 1 +29 1 +30 1 +31 1 +32 1 +1 2 +2 2 +3 2 +4 2 +5 2 +6 2 +7 2 +8 2 +9 2 +10 2 +11 2 +12 2 +13 2 +14 2 +15 2 +16 2 +CREATE TABLE t2 (a int, b int, c int, PRIMARY KEY (a), KEY bkey (b,c)) +ENGINE=InnoDB; +INSERT INTO t2 VALUES (1,1,1),(3,1,1),(2,1,1),(4,1,1); +INSERT INTO t2 SELECT a + 4, 1, 1 FROM t2; +INSERT INTO t2 SELECT a + 8, 1, 1 FROM t2; +EXPLAIN SELECT * FROM t2 WHERE b=1 ORDER BY a; +id 1 +select_type SIMPLE +table t2 +type ref +possible_keys bkey +key bkey +key_len 5 +ref const +rows 8 +Extra Using where; Using index; Using filesort +SELECT * FROM t2 WHERE b=1 ORDER BY a; +a b c +1 1 1 +2 1 1 +3 1 1 +4 1 1 +5 1 1 +6 1 1 +7 1 1 +8 1 1 +9 1 1 +10 1 1 +11 1 1 +12 1 1 +13 1 1 +14 1 1 +15 1 1 +16 1 1 +EXPLAIN SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY a; +id 1 +select_type SIMPLE +table t2 +type ref +possible_keys bkey +key bkey +key_len 10 +ref const,const +rows 8 +Extra Using where; Using index +SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY a; +a b c +1 1 1 +2 1 1 +3 1 1 +4 1 1 +5 1 1 +6 1 1 +7 1 1 +8 1 1 +9 1 1 +10 1 1 +11 1 1 +12 1 1 +13 1 1 +14 1 1 +15 1 1 +16 1 1 +EXPLAIN SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY b,c,a; +id 1 +select_type SIMPLE +table t2 +type ref +possible_keys bkey +key bkey +key_len 10 +ref const,const +rows 8 +Extra Using where; Using index +SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY b,c,a; +a b c +1 1 1 +2 1 1 +3 1 1 +4 1 1 +5 1 1 +6 1 1 +7 1 1 +8 1 1 +9 1 1 +10 1 1 +11 1 1 +12 1 1 +13 1 1 +14 1 1 +15 1 1 +16 1 1 +EXPLAIN SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY c,a; +id 1 +select_type SIMPLE +table t2 +type ref +possible_keys bkey +key bkey +key_len 10 +ref const,const +rows 8 +Extra Using where; Using index +SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY c,a; +a b c +1 1 1 +2 1 1 +3 1 1 +4 1 1 +5 1 1 +6 1 1 +7 1 1 +8 1 1 +9 1 1 +10 1 1 +11 1 1 +12 1 1 +13 1 1 +14 1 1 +15 1 1 +16 1 1 +DROP TABLE t1,t2; +CREATE TABLE t1 (a INT, PRIMARY KEY (a)) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8); +INSERT INTO t1 SELECT a + 8 FROM t1; +INSERT INTO t1 SELECT a + 16 FROM t1; +CREATE PROCEDURE p1 () +BEGIN +DECLARE i INT DEFAULT 50; +DECLARE cnt INT; +START TRANSACTION; +ALTER TABLE t1 ENGINE=InnoDB; +COMMIT; +START TRANSACTION; +WHILE (i > 0) DO +SET i = i - 1; +SELECT COUNT(*) INTO cnt FROM t1 LOCK IN SHARE MODE; +END WHILE; +COMMIT; +END;| +CALL p1(); +CALL p1(); +CALL p1(); +DROP PROCEDURE p1; +DROP TABLE t1; +create table t1(a text) engine=innodb default charset=utf8; +insert into t1 values('aaa'); +alter table t1 add index(a(1024)); +Warnings: +Warning 1071 Specified key was too long; max key length is 767 bytes +Warning 1071 Specified key was too long; max key length is 767 bytes +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` text, + KEY `a` (`a`(255)) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 +drop table t1; +CREATE TABLE t1 ( +a INT, +b INT, +KEY (b) +) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,10), (2,10), (2,20), (3,30); +START TRANSACTION; +SELECT * FROM t1 WHERE b=20 FOR UPDATE; +a b +2 20 +START TRANSACTION; +SELECT * FROM t1 WHERE b=10 ORDER BY A FOR UPDATE; +a b +1 10 +2 10 +ROLLBACK; +ROLLBACK; +DROP TABLE t1; +CREATE TABLE t1( +a INT, +b INT NOT NULL, +c INT NOT NULL, +d INT, +UNIQUE KEY (c,b) +) engine=innodb; +INSERT INTO t1 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4); +EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort +SELECT c,b,d FROM t1 GROUP BY c,b,d; +c b d +1 1 50 +3 1 4 +3 2 40 +EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 3 +SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL; +c b d +1 1 50 +3 1 4 +3 2 40 +EXPLAIN SELECT c,b,d FROM t1 ORDER BY c,b,d; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort +SELECT c,b,d FROM t1 ORDER BY c,b,d; +c b d +1 1 50 +3 1 4 +3 2 40 +EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index NULL c 8 NULL 3 +SELECT c,b,d FROM t1 GROUP BY c,b; +c b d +1 1 50 +3 1 4 +3 2 40 +EXPLAIN SELECT c,b FROM t1 GROUP BY c,b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index NULL c 8 NULL 3 Using index +SELECT c,b FROM t1 GROUP BY c,b; +c b +1 1 +3 1 +3 2 +DROP TABLE t1; +CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a), INDEX b (b)) ENGINE=InnoDB; +INSERT INTO t1(a,b) VALUES (1,1), (2,2), (3,2); +EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a ASC; +id 1 +select_type SIMPLE +table t1 +type ref +possible_keys b +key b +key_len 5 +ref const +rows 1 +Extra Using where; Using index +SELECT * FROM t1 WHERE b=2 ORDER BY a ASC; +a b +2 2 +3 2 +EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a DESC; +id 1 +select_type SIMPLE +table t1 +type ref +possible_keys b +key b +key_len 5 +ref const +rows 1 +Extra Using where; Using index +SELECT * FROM t1 WHERE b=2 ORDER BY a DESC; +a b +3 2 +2 2 +EXPLAIN SELECT * FROM t1 ORDER BY b ASC, a ASC; +id 1 +select_type SIMPLE +table t1 +type index +possible_keys NULL +key b +key_len 5 +ref NULL +rows 3 +Extra Using index +SELECT * FROM t1 ORDER BY b ASC, a ASC; +a b +1 1 +2 2 +3 2 +EXPLAIN SELECT * FROM t1 ORDER BY b DESC, a DESC; +id 1 +select_type SIMPLE +table t1 +type index +possible_keys NULL +key b +key_len 5 +ref NULL +rows 3 +Extra Using index +SELECT * FROM t1 ORDER BY b DESC, a DESC; +a b +3 2 +2 2 +1 1 +EXPLAIN SELECT * FROM t1 ORDER BY b ASC, a DESC; +id 1 +select_type SIMPLE +table t1 +type index +possible_keys NULL +key b +key_len 5 +ref NULL +rows 3 +Extra Using index; Using filesort +SELECT * FROM t1 ORDER BY b ASC, a DESC; +a b +1 1 +3 2 +2 2 +EXPLAIN SELECT * FROM t1 ORDER BY b DESC, a ASC; +id 1 +select_type SIMPLE +table t1 +type index +possible_keys NULL +key b +key_len 5 +ref NULL +rows 3 +Extra Using index; Using filesort +SELECT * FROM t1 ORDER BY b DESC, a ASC; +a b +2 2 +3 2 +1 1 +DROP TABLE t1; + +# +# Bug#27610: ALTER TABLE ROW_FORMAT=... does not rebuild the table. +# + +# - prepare; + +DROP TABLE IF EXISTS t1; + +CREATE TABLE t1(c INT) +ENGINE = InnoDB +ROW_FORMAT = COMPACT; + +# - initial check; + +SELECT table_schema, table_name, row_format +FROM INFORMATION_SCHEMA.TABLES +WHERE table_schema = DATABASE() AND table_name = 't1'; +table_schema table_name row_format +test t1 Compact + +# - change ROW_FORMAT and check; + +ALTER TABLE t1 ROW_FORMAT = REDUNDANT; + +SELECT table_schema, table_name, row_format +FROM INFORMATION_SCHEMA.TABLES +WHERE table_schema = DATABASE() AND table_name = 't1'; +table_schema table_name row_format +test t1 Redundant + +# - that's it, cleanup. + +DROP TABLE t1; +create table t1(a char(10) not null, unique key aa(a(1)), +b char(4) not null, unique key bb(b(4))) engine=innodb; +desc t1; +Field Type Null Key Default Extra +a char(10) NO UNI NULL +b char(4) NO PRI NULL +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` char(10) NOT NULL, + `b` char(4) NOT NULL, + UNIQUE KEY `bb` (`b`), + UNIQUE KEY `aa` (`a`(1)) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +drop table t1; +CREATE TABLE t1 (id int, type char(6), d int, INDEX idx(id,d)) ENGINE=InnoDB; +INSERT INTO t1 VALUES +(191, 'member', 1), (NULL, 'member', 3), (NULL, 'member', 4), (201, 'member', 2); +EXPLAIN SELECT * FROM t1 WHERE id=191 OR id IS NULL ORDER BY d; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL idx NULL NULL NULL 4 Using where; Using filesort +SELECT * FROM t1 WHERE id=191 OR id IS NULL ORDER BY d; +id type d +191 member 1 +NULL member 3 +NULL member 4 +DROP TABLE t1; +set @my_innodb_autoextend_increment=@@global.innodb_autoextend_increment; +set global innodb_autoextend_increment=8; +set global innodb_autoextend_increment=@my_innodb_autoextend_increment; +set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency; +set global innodb_commit_concurrency=0; +set global innodb_commit_concurrency=@my_innodb_commit_concurrency; +CREATE TABLE t1 (a int, b int, c int, PRIMARY KEY (a), KEY t1_b (b)) +ENGINE=InnoDB; +INSERT INTO t1 (a,b,c) VALUES (1,1,1), (2,1,1), (3,1,1), (4,1,1); +INSERT INTO t1 (a,b,c) SELECT a+4,b,c FROM t1; +EXPLAIN SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index t1_b PRIMARY 4 NULL 8 Using where +SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5; +a b c +8 1 1 +7 1 1 +6 1 1 +5 1 1 +4 1 1 +DROP TABLE t1; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a char(50)) ENGINE=InnoDB; +CREATE INDEX i1 on t1 (a(3)); +SELECT * FROM t1 WHERE a = 'abcde'; +a +DROP TABLE t1; +# +# BUG #26288: savepoint are not deleted on comit, if the transaction +# was otherwise empty +# +BEGIN; +SAVEPOINT s1; +COMMIT; +RELEASE SAVEPOINT s1; +ERROR 42000: SAVEPOINT s1 does not exist +BEGIN; +SAVEPOINT s2; +COMMIT; +ROLLBACK TO SAVEPOINT s2; +ERROR 42000: SAVEPOINT s2 does not exist +BEGIN; +SAVEPOINT s3; +ROLLBACK; +RELEASE SAVEPOINT s3; +ERROR 42000: SAVEPOINT s3 does not exist +BEGIN; +SAVEPOINT s4; +ROLLBACK; +ROLLBACK TO SAVEPOINT s4; +ERROR 42000: SAVEPOINT s4 does not exist +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY COMMENT 'My ID#', f2 INTEGER DEFAULT NULL, f3 CHAR(10) DEFAULT 'My ID#', CONSTRAINT f2_ref FOREIGN KEY (f2) REFERENCES t1 (f1)) ENGINE=INNODB; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL COMMENT 'My ID#', + `f2` int(11) DEFAULT NULL, + `f3` char(10) DEFAULT 'My ID#', + PRIMARY KEY (`f1`), + KEY `f2_ref` (`f2`), + CONSTRAINT `f2_ref` FOREIGN KEY (`f2`) REFERENCES `t1` (`f1`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +# +# Bug #36995: valgrind error in remove_const during subquery executions +# +create table t1 (a bit(1) not null,b int) engine=myisam; +create table t2 (c int) engine=innodb; +explain +select b from t1 where a not in (select b from t1,t2 group by a) group by a; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 0 const row not found +2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 1 +DROP TABLE t1,t2; +End of 5.0 tests +CREATE TABLE `t2` ( +`k` int(11) NOT NULL auto_increment, +`a` int(11) default NULL, +`c` int(11) default NULL, +PRIMARY KEY (`k`), +UNIQUE KEY `idx_1` (`a`) +); +insert into t2 ( a ) values ( 6 ) on duplicate key update c = +ifnull( c, +0 ) + 1; +insert into t2 ( a ) values ( 7 ) on duplicate key update c = +ifnull( c, +0 ) + 1; +select last_insert_id(); +last_insert_id() +2 +select * from t2; +k a c +1 6 NULL +2 7 NULL +insert into t2 ( a ) values ( 6 ) on duplicate key update c = +ifnull( c, +0 ) + 1; +select last_insert_id(); +last_insert_id() +2 +select last_insert_id(0); +last_insert_id(0) +0 +insert into t2 ( a ) values ( 6 ) on duplicate key update c = +ifnull( c, +0 ) + 1; +select last_insert_id(); +last_insert_id() +0 +select * from t2; +k a c +1 6 2 +2 7 NULL +insert ignore into t2 values (null,6,1),(10,8,1); +select last_insert_id(); +last_insert_id() +0 +insert ignore into t2 values (null,6,1),(null,8,1),(null,15,1),(null,20,1); +select last_insert_id(); +last_insert_id() +11 +select * from t2; +k a c +1 6 2 +2 7 NULL +10 8 1 +11 15 1 +12 20 1 +insert into t2 ( a ) values ( 6 ) on duplicate key update c = +ifnull( c, +0 ) + 1, k=last_insert_id(k); +select last_insert_id(); +last_insert_id() +1 +select * from t2; +k a c +1 6 3 +2 7 NULL +10 8 1 +11 15 1 +12 20 1 +drop table t2; +drop table if exists t1, t2; +create table t1 (i int); +alter table t1 modify i int default 1; +alter table t1 modify i int default 2, rename t2; +lock table t2 write; +alter table t2 modify i int default 3; +unlock tables; +lock table t2 write; +alter table t2 modify i int default 4, rename t1; +unlock tables; +drop table t1; +drop table if exists t1; +create table t1 (i int); +insert into t1 values (); +lock table t1 write; +alter table t1 modify i int default 1; +insert into t1 values (); +select * from t1; +i +NULL +1 +alter table t1 change i c char(10) default "Two"; +insert into t1 values (); +select * from t1; +c +NULL +1 +Two +unlock tables; +select * from t1; +c +NULL +1 +Two +drop tables t1; +create table t1(f1 varchar(5) unique, f2 timestamp NOT NULL DEFAULT +CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); +insert into t1(f1) values(1); +select @a:=f2 from t1; +@a:=f2 +# +update t1 set f1=1; +select @b:=f2 from t1; +@b:=f2 +# +select if(@a=@b,"ok","wrong"); +if(@a=@b,"ok","wrong") +ok +insert into t1(f1) values (1) on duplicate key update f1="1"; +select @b:=f2 from t1; +@b:=f2 +# +select if(@a=@b,"ok","wrong"); +if(@a=@b,"ok","wrong") +ok +insert into t1(f1) select f1 from t1 on duplicate key update f1="1"; +select @b:=f2 from t1; +@b:=f2 +# +select if(@a=@b,"ok","wrong"); +if(@a=@b,"ok","wrong") +ok +drop table t1; +SET SESSION AUTOCOMMIT = 0; +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +set binlog_format=mixed; +# Switch to connection con1 +CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(256)) +ENGINE = InnoDB; +INSERT INTO t1 VALUES (1,2); +# 1. test for locking: +BEGIN; +UPDATE t1 SET b = 12 WHERE a = 1; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +SELECT * FROM t1; +a b +1 12 +# Switch to connection con2 +UPDATE t1 SET b = 21 WHERE a = 1; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +# Switch to connection con1 +SELECT * FROM t1; +a b +1 12 +ROLLBACK; +# 2. test for serialized update: +CREATE TABLE t2 (a INT); +TRUNCATE t1; +INSERT INTO t1 VALUES (1,'init'); +CREATE PROCEDURE p1() +BEGIN +UPDATE t1 SET b = CONCAT(b, '+con2') WHERE a = 1; +INSERT INTO t2 VALUES (); +END| +BEGIN; +UPDATE t1 SET b = CONCAT(b, '+con1') WHERE a = 1; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +SELECT * FROM t1; +a b +1 init+con1 +# Switch to connection con2 +CALL p1;; +# Switch to connection con1 +SELECT * FROM t1; +a b +1 init+con1 +COMMIT; +SELECT * FROM t1; +a b +1 init+con1 +# Switch to connection con2 +SELECT * FROM t1; +a b +1 init+con1+con2 +# Switch to connection con1 +# 3. test for updated key column: +TRUNCATE t1; +TRUNCATE t2; +INSERT INTO t1 VALUES (1,'init'); +BEGIN; +UPDATE t1 SET a = 2, b = CONCAT(b, '+con1') WHERE a = 1; +affected rows: 1 +info: Rows matched: 1 Changed: 1 Warnings: 0 +SELECT * FROM t1; +a b +2 init+con1 +# Switch to connection con2 +CALL p1;; +# Switch to connection con1 +SELECT * FROM t1; +a b +2 init+con1 +COMMIT; +SELECT * FROM t1; +a b +2 init+con1 +# Switch to connection con2 +SELECT * FROM t1; +a b +2 init+con1 +DROP PROCEDURE p1; +DROP TABLE t1, t2; +CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, PRIMARY KEY (a,b)) engine=innodb; +CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d), +CONSTRAINT c2 FOREIGN KEY f2 (c) REFERENCES t1 (a,b) ON UPDATE NO ACTION) engine=innodb; +ERROR 42000: Incorrect foreign key definition for 'f2': Key reference and table reference don't match +CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d), +CONSTRAINT c2 FOREIGN KEY (c) REFERENCES t1 (a,b) ON UPDATE NO ACTION) engine=innodb; +ERROR 42000: Incorrect foreign key definition for 'c2': Key reference and table reference don't match +CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d), +CONSTRAINT c1 FOREIGN KEY c2 (c) REFERENCES t1 (a) ON DELETE NO ACTION, +CONSTRAINT c2 FOREIGN KEY (c) REFERENCES t1 (a) ON UPDATE NO ACTION) engine=innodb; +ALTER TABLE t2 DROP FOREIGN KEY c2; +DROP TABLE t2; +CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d), +FOREIGN KEY (c) REFERENCES t1 (a,k) ON UPDATE NO ACTION) engine=innodb; +ERROR 42000: Incorrect foreign key definition for 'foreign key without name': Key reference and table reference don't match +CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d), +FOREIGN KEY f1 (c) REFERENCES t1 (a,k) ON UPDATE NO ACTION) engine=innodb; +ERROR 42000: Incorrect foreign key definition for 'f1': Key reference and table reference don't match +CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d), +CONSTRAINT c1 FOREIGN KEY f1 (c) REFERENCES t1 (a) ON DELETE NO ACTION, +CONSTRAINT c2 FOREIGN KEY (c) REFERENCES t1 (a) ON UPDATE NO ACTION, +FOREIGN KEY f3 (c) REFERENCES t1 (a) ON UPDATE NO ACTION, +FOREIGN KEY (c) REFERENCES t1 (a) ON UPDATE NO ACTION) engine=innodb; +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `c` int(11) NOT NULL, + `d` int(11) NOT NULL, + PRIMARY KEY (`c`,`d`), + CONSTRAINT `c1` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON DELETE NO ACTION, + CONSTRAINT `c2` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON UPDATE NO ACTION, + CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON UPDATE NO ACTION, + CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t2; +DROP TABLE t1; +create table t1 (a int auto_increment primary key) engine=innodb; +alter table t1 order by a; +Warnings: +Warning 1105 ORDER BY ignored as there is a user-defined clustered index in the table 't1' +drop table t1; +CREATE TABLE t1 +(vid integer NOT NULL, +tid integer NOT NULL, +idx integer NOT NULL, +name varchar(128) NOT NULL, +type varchar(128) NULL, +PRIMARY KEY(idx, vid, tid), +UNIQUE(vid, tid, name) +) ENGINE=InnoDB; +INSERT INTO t1 VALUES +(1,1,1,'pk',NULL),(2,1,1,'pk',NULL),(3,1,1,'pk',NULL),(4,1,1,'c1',NULL), +(5,1,1,'pk',NULL),(1,1,2,'c1',NULL),(2,1,2,'c1',NULL),(3,1,2,'c1',NULL), +(4,1,2,'c2',NULL),(5,1,2,'c1',NULL),(2,1,3,'c2',NULL),(3,1,3,'c2',NULL), +(4,1,3,'pk',NULL),(5,1,3,'c2',NULL), +(2,1,4,'c_extra',NULL),(3,1,4,'c_extra',NULL); +EXPLAIN SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE tid = 1 AND vid = 3 ORDER BY idx DESC; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index NULL PRIMARY 12 NULL 16 Using where +SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE tid = 1 AND vid = 3 ORDER BY idx DESC; +vid tid idx name type +3 1 4 c_extra NULL +3 1 3 c2 NULL +3 1 2 c1 NULL +3 1 1 pk NULL +DROP TABLE t1; +# +# Bug #44290: explain crashes for subquery with distinct in +# SQL_SELECT::test_quick_select +# (reproduced only with InnoDB tables) +# +CREATE TABLE t1 (c1 INT, c2 INT, c3 INT, KEY (c3), KEY (c2, c3)) +ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,1,1), (1,1,1), (1,1,2), (1,1,1), (1,1,2); +SELECT 1 FROM (SELECT COUNT(DISTINCT c1) +FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x; +1 +1 +EXPLAIN +SELECT 1 FROM (SELECT COUNT(DISTINCT c1) +FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 +2 DERIVED t1 index c3,c2 c2 10 NULL 5 +DROP TABLE t1; +CREATE TABLE t1 (c1 REAL, c2 REAL, c3 REAL, KEY (c3), KEY (c2, c3)) +ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,1,1), (1,1,1), (1,1,2), (1,1,1), (1,1,2); +SELECT 1 FROM (SELECT COUNT(DISTINCT c1) +FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x; +1 +1 +EXPLAIN +SELECT 1 FROM (SELECT COUNT(DISTINCT c1) +FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 +2 DERIVED t1 index c3,c2 c2 18 NULL 5 +DROP TABLE t1; +CREATE TABLE t1 (c1 DECIMAL(12,2), c2 DECIMAL(12,2), c3 DECIMAL(12,2), +KEY (c3), KEY (c2, c3)) +ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,1,1), (1,1,1), (1,1,2), (1,1,1), (1,1,2); +SELECT 1 FROM (SELECT COUNT(DISTINCT c1) +FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x; +1 +1 +EXPLAIN +SELECT 1 FROM (SELECT COUNT(DISTINCT c1) +FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY system NULL NULL NULL NULL 1 +2 DERIVED t1 index c3,c2 c2 14 NULL 5 +DROP TABLE t1; +End of 5.1 tests +drop table if exists t1, t2, t3; +create table t1(a int); +insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t2 (a int, b int, pk int, key(a,b), primary key(pk)) engine=innodb; +insert into t2 select @a:=A.a+10*(B.a + 10*C.a),@a, @a from t1 A, t1 B, t1 C; +this must use key 'a', not PRIMARY: +explain select a from t2 where a=b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 index NULL a 10 NULL # Using where; Using index +drop table t1, t2; +SET SESSION BINLOG_FORMAT=STATEMENT; +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +select @@session.sql_log_bin, @@session.binlog_format, @@session.tx_isolation; +@@session.sql_log_bin 1 +@@session.binlog_format STATEMENT +@@session.tx_isolation READ-COMMITTED +CREATE TABLE t1 ( a INT ) ENGINE=InnoDB; +INSERT INTO t1 VALUES(1); +DROP TABLE t1; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a char(50)) ENGINE=InnoDB; +CREATE INDEX i1 on t1 (a(3)); +SELECT * FROM t1 WHERE a = 'abcde'; +a +DROP TABLE t1; +CREATE TABLE foo (a int, b int, c char(10), +PRIMARY KEY (c(3)), +KEY b (b) +) engine=innodb; +CREATE TABLE foo2 (a int, b int, c char(10), +PRIMARY KEY (c), +KEY b (b) +) engine=innodb; +CREATE TABLE bar (a int, b int, c char(10), +PRIMARY KEY (c(3)), +KEY b (b) +) engine=myisam; +INSERT INTO foo VALUES +(1,2,'abcdefghij'), (2,3,''), (3,4,'klmnopqrst'), +(4,5,'uvwxyz'), (5,6,'meotnsyglt'), (4,5,'asfdewe'); +INSERT INTO bar SELECT * FROM foo; +INSERT INTO foo2 SELECT * FROM foo; +EXPLAIN SELECT c FROM bar WHERE b>2;; +id 1 +select_type SIMPLE +table bar +type ALL +possible_keys b +key NULL +key_len NULL +ref NULL +rows 6 +Extra Using where +EXPLAIN SELECT c FROM foo WHERE b>2;; +id 1 +select_type SIMPLE +table foo +type ALL +possible_keys b +key NULL +key_len NULL +ref NULL +rows 6 +Extra Using where +EXPLAIN SELECT c FROM foo2 WHERE b>2;; +id 1 +select_type SIMPLE +table foo2 +type range +possible_keys b +key b +key_len 5 +ref NULL +rows 3 +Extra Using where; Using index +EXPLAIN SELECT c FROM bar WHERE c>2;; +id 1 +select_type SIMPLE +table bar +type ALL +possible_keys PRIMARY +key NULL +key_len NULL +ref NULL +rows 6 +Extra Using where +EXPLAIN SELECT c FROM foo WHERE c>2;; +id 1 +select_type SIMPLE +table foo +type ALL +possible_keys PRIMARY +key NULL +key_len NULL +ref NULL +rows 6 +Extra Using where +EXPLAIN SELECT c FROM foo2 WHERE c>2;; +id 1 +select_type SIMPLE +table foo2 +type index +possible_keys PRIMARY +key b +key_len 5 +ref NULL +rows 6 +Extra Using where; Using index +DROP TABLE foo, bar, foo2; +DROP TABLE IF EXISTS t1,t3,t2; +DROP FUNCTION IF EXISTS f1; +CREATE FUNCTION f1() RETURNS VARCHAR(250) +BEGIN +return 'hhhhhhh' ; +END| +CREATE TABLE t1 (a VARCHAR(20), b VARCHAR(20), c VARCHAR(20)) ENGINE=INNODB; +BEGIN WORK; +CREATE TEMPORARY TABLE t2 (a VARCHAR(20), b VARCHAR(20), c varchar(20)) ENGINE=INNODB; +CREATE TEMPORARY TABLE t3 LIKE t2; +INSERT INTO t1 VALUES ('a','b',NULL),('c','d',NULL),('e','f',NULL); +SET @stmt := CONCAT('INSERT INTO t2 SELECT tbl.a, tbl.b, f1()',' FROM t1 tbl'); +PREPARE stmt1 FROM @stmt; +SET @stmt := CONCAT('INSERT INTO t3', ' SELECT * FROM t2'); +PREPARE stmt3 FROM @stmt; +EXECUTE stmt1; +COMMIT; +DEALLOCATE PREPARE stmt1; +DEALLOCATE PREPARE stmt3; +DROP TABLE t1,t3,t2; +DROP FUNCTION f1; +DROP TABLE IF EXISTS t1,t2; +CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB; +CREATE TABLE t2 (id INT PRIMARY KEY, +t1_id INT, INDEX par_ind (t1_id), +FOREIGN KEY (t1_id) REFERENCES t1(id)) ENGINE=INNODB; +INSERT INTO t1 VALUES (1),(2); +INSERT INTO t2 VALUES (3,2); +SET AUTOCOMMIT = 0; +START TRANSACTION; +TRUNCATE TABLE t1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`)) +SELECT * FROM t1; +id +1 +2 +COMMIT; +SELECT * FROM t1; +id +1 +2 +START TRANSACTION; +TRUNCATE TABLE t1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`)) +SELECT * FROM t1; +id +1 +2 +ROLLBACK; +SELECT * FROM t1; +id +1 +2 +SET AUTOCOMMIT = 1; +START TRANSACTION; +SELECT * FROM t1; +id +1 +2 +COMMIT; +TRUNCATE TABLE t1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`)) +SELECT * FROM t1; +id +1 +2 +DELETE FROM t2 WHERE id = 3; +START TRANSACTION; +SELECT * FROM t1; +id +1 +2 +TRUNCATE TABLE t1; +ROLLBACK; +SELECT * FROM t1; +id +TRUNCATE TABLE t2; +DROP TABLE t2; +DROP TABLE t1; +# +# Bug#40127 Multiple table DELETE IGNORE hangs on foreign key constraint violation on 5.0 +# +CREATE TABLE t1 ( +id INT UNSIGNED NOT NULL AUTO_INCREMENT, +PRIMARY KEY (id) +) ENGINE=InnoDB; +CREATE TABLE t2 ( +id INT UNSIGNED NOT NULL AUTO_INCREMENT, +aid INT UNSIGNED NOT NULL, +PRIMARY KEY (id), +FOREIGN KEY (aid) REFERENCES t1 (id) +) ENGINE=InnoDB; +CREATE TABLE t3 ( +bid INT UNSIGNED NOT NULL, +FOREIGN KEY (bid) REFERENCES t2 (id) +) ENGINE=InnoDB; +CREATE TABLE t4 ( +a INT +) ENGINE=InnoDB; +CREATE TABLE t5 ( +a INT +) ENGINE=InnoDB; +INSERT INTO t1 (id) VALUES (1); +INSERT INTO t2 (id, aid) VALUES (1, 1),(2,1),(3,1),(4,1); +INSERT INTO t3 (bid) VALUES (1); +INSERT INTO t4 VALUES (1),(2),(3),(4),(5); +INSERT INTO t5 VALUES (1); +DELETE t5 FROM t4 LEFT JOIN t5 ON t4.a= t5.a; +DELETE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t3`, CONSTRAINT `t3_ibfk_1` FOREIGN KEY (`bid`) REFERENCES `t2` (`id`)) +DELETE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t3`, CONSTRAINT `t3_ibfk_1` FOREIGN KEY (`bid`) REFERENCES `t2` (`id`)) +DELETE IGNORE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1; +DROP TABLE t3; +DROP TABLE t2; +DROP TABLE t1; +DROP TABLES t4,t5; +# Bug#40127 Multiple table DELETE IGNORE hangs on foreign key constraint violation on 5.0 +# Testing for any side effects of IGNORE on AFTER DELETE triggers used with +# transactional tables. +# +CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t2 (a VARCHAR(100)) ENGINE=InnoDB; +CREATE TABLE t3 (i INT NOT NULL PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t4 (i INT NOT NULL PRIMARY KEY, t1i INT, +FOREIGN KEY (t1i) REFERENCES t1(i)) +ENGINE=InnoDB; +CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW +BEGIN +SET @b:='EXECUTED TRIGGER'; +INSERT INTO t2 VALUES (@b); +SET @a:= error_happens_here; +END|| +SET @b:=""; +SET @a:=""; +INSERT INTO t1 VALUES (1),(2),(3),(4); +INSERT INTO t3 SELECT * FROM t1; +** An error in a trigger causes rollback of the statement. +DELETE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i; +ERROR 42S22: Unknown column 'error_happens_here' in 'field list' +SELECT @a,@b; +@a @b + EXECUTED TRIGGER +SELECT * FROM t2; +a +SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i; +i i +1 1 +2 2 +3 3 +4 4 +** Same happens with the IGNORE option +DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i; +ERROR 42S22: Unknown column 'error_happens_here' in 'field list' +SELECT * FROM t2; +a +SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i; +i i +1 1 +2 2 +3 3 +4 4 +** +** The following is an attempt to demonstrate +** error handling inside a row iteration. +** +DROP TRIGGER trg; +TRUNCATE TABLE t1; +TRUNCATE TABLE t2; +TRUNCATE TABLE t3; +INSERT INTO t1 VALUES (1),(2),(3),(4); +INSERT INTO t3 VALUES (1),(2),(3),(4); +INSERT INTO t4 VALUES (3,3),(4,4); +CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW +BEGIN +SET @b:= CONCAT('EXECUTED TRIGGER FOR ROW ',CAST(OLD.i AS CHAR)); +INSERT INTO t2 VALUES (@b); +END|| +** DELETE is prevented by foreign key constrains but errors are silenced. +** The AFTER trigger isn't fired. +DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i; +** Tables are modified by best effort: +SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i; +i i +3 3 +4 4 +** The AFTER trigger was only executed on successful rows: +SELECT * FROM t2; +a +EXECUTED TRIGGER FOR ROW 1 +EXECUTED TRIGGER FOR ROW 2 +DROP TRIGGER trg; +** +** Induce an error midway through an AFTER-trigger +** +TRUNCATE TABLE t4; +TRUNCATE TABLE t1; +TRUNCATE TABLE t3; +INSERT INTO t1 VALUES (1),(2),(3),(4); +INSERT INTO t3 VALUES (1),(2),(3),(4); +CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW +BEGIN +SET @a:= @a+1; +IF @a > 2 THEN +INSERT INTO t4 VALUES (5,5); +END IF; +END|| +SET @a:=0; +** Errors in the trigger causes the statement to abort. +DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`t1i`) REFERENCES `t1` (`i`)) +SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i; +i i +1 1 +2 2 +3 3 +4 4 +SELECT * FROM t4; +i t1i +DROP TRIGGER trg; +DROP TABLE t4; +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +CREATE TABLE t1 (a INT, b INT, KEY (a)) ENGINE = INNODB; +CREATE TABLE t2 (a INT KEY, b INT, KEY (b)) ENGINE = INNODB; +CREATE TABLE t3 (a INT, b INT KEY, KEY (a)) ENGINE = INNODB; +CREATE TABLE t4 (a INT KEY, b INT, KEY (b)) ENGINE = INNODB; +INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6); +INSERT INTO t2 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5); +INSERT INTO t3 VALUES (1, 101), (2, 102), (3, 103), (4, 104), (5, 105), (6, 106); +INSERT INTO t4 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5); +UPDATE t1, t2 SET t1.a = t1.a + 100, t2.b = t1.a + 10 +WHERE t1.a BETWEEN 2 AND 4 AND t2.a = t1.b; +SELECT * FROM t2; +a b +1 1 +2 12 +3 13 +4 14 +5 5 +UPDATE t3, t4 SET t3.a = t3.a + 100, t4.b = t3.a + 10 +WHERE t3.a BETWEEN 2 AND 4 AND t4.a = t3.b - 100; +SELECT * FROM t4; +a b +1 1 +2 12 +3 13 +4 14 +5 5 +DROP TABLE t1, t2, t3, t4; +# +# Bug#44886: SIGSEGV in test_if_skip_sort_order() - +# uninitialized variable used as subscript +# +CREATE TABLE t1 (a INT, b INT, c INT, d INT, PRIMARY KEY (b), KEY (a,c)) +ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,1,1,0); +CREATE TABLE t2 (a INT, b INT, e INT, KEY (e)) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1,1,2); +CREATE TABLE t3 (a INT, b INT) ENGINE=MyISAM; +INSERT INTO t3 VALUES (1, 1); +SELECT * FROM t1, t2, t3 +WHERE t1.a = t3.a AND (t1.b = t3.b OR t1.d) AND t2.b = t1.b AND t2.e = 2 +GROUP BY t1.b; +a b c d a b e a b +1 1 1 0 1 1 2 1 1 +DROP TABLE t1, t2, t3; +# +# Bug #45828: Optimizer won't use partial primary key if another +# index can prevent filesort +# +CREATE TABLE `t1` ( +c1 int NOT NULL, +c2 int NOT NULL, +c3 int NOT NULL, +PRIMARY KEY (c1,c2), +KEY (c3) +) ENGINE=InnoDB; +INSERT INTO t1 VALUES (5,2,1246276747); +INSERT INTO t1 VALUES (2,1,1246281721); +INSERT INTO t1 VALUES (7,3,1246281756); +INSERT INTO t1 VALUES (4,2,1246282139); +INSERT INTO t1 VALUES (3,1,1246282230); +INSERT INTO t1 VALUES (1,0,1246282712); +INSERT INTO t1 VALUES (8,3,1246282765); +INSERT INTO t1 SELECT c1+10,c2+10,c3+10 FROM t1; +INSERT INTO t1 SELECT c1+100,c2+100,c3+100 from t1; +INSERT INTO t1 SELECT c1+1000,c2+1000,c3+1000 from t1; +INSERT INTO t1 SELECT c1+10000,c2+10000,c3+10000 from t1; +INSERT INTO t1 SELECT c1+100000,c2+100000,c3+100000 from t1; +INSERT INTO t1 SELECT c1+1000000,c2+1000000,c3+1000000 from t1; +SELECT * FROM t1 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3; +c1 c2 c3 +EXPLAIN SELECT * FROM t1 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ref PRIMARY,c3 PRIMARY 4 const 1 Using where; Using filesort +EXPLAIN SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ref PRIMARY PRIMARY 4 const 1 Using where; Using filesort +CREATE TABLE t2 ( +c1 int NOT NULL, +c2 int NOT NULL, +c3 int NOT NULL, +KEY (c1,c2), +KEY (c3) +) ENGINE=InnoDB; +explain SELECT * FROM t2 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 ref c1,c3 c1 4 const 1 Using where; Using filesort +DROP TABLE t1,t2; +# +# 36259: Optimizing with ORDER BY +# +CREATE TABLE t1 ( +a INT NOT NULL AUTO_INCREMENT, +b INT NOT NULL, +c INT NOT NULL, +d VARCHAR(5), +e INT NOT NULL, +PRIMARY KEY (a), KEY i2 (b,c,d) +) ENGINE=InnoDB; +INSERT INTO t1 (b,c,d,e) VALUES (1,1,'a',1), (2,2,'b',2); +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +EXPLAIN SELECT * FROM t1 WHERE b=1 AND c=1 ORDER BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ref i2 i2 8 const,const 1 Using where; Using filesort +EXPLAIN SELECT * FROM t1 FORCE INDEX(i2) WHERE b=1 and c=1 ORDER BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ref i2 i2 8 const,const 1 Using where; Using filesort +EXPLAIN SELECT * FROM t1 FORCE INDEX(PRIMARY) WHERE b=1 AND c=1 ORDER BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index NULL PRIMARY 4 NULL 128 Using where +DROP TABLE t1; +# +# Bug #47963: Wrong results when index is used +# +CREATE TABLE t1( +a VARCHAR(5) NOT NULL, +b VARCHAR(5) NOT NULL, +c DATETIME NOT NULL, +KEY (c) +) ENGINE=InnoDB; +INSERT INTO t1 VALUES('TEST', 'TEST', '2009-10-09 00:00:00'); +SELECT * FROM t1 WHERE a = 'TEST' AND +c >= '2009-10-09 00:00:00' AND c <= '2009-10-09 00:00:00'; +a b c +TEST TEST 2009-10-09 00:00:00 +SELECT * FROM t1 WHERE a = 'TEST' AND +c >= '2009-10-09 00:00:00.0' AND c <= '2009-10-09 00:00:00.0'; +a b c +TEST TEST 2009-10-09 00:00:00 +SELECT * FROM t1 WHERE a = 'TEST' AND +c >= '2009-10-09 00:00:00.0' AND c <= '2009-10-09 00:00:00'; +a b c +TEST TEST 2009-10-09 00:00:00 +SELECT * FROM t1 WHERE a = 'TEST' AND +c >= '2009-10-09 00:00:00' AND c <= '2009-10-09 00:00:00.0'; +a b c +TEST TEST 2009-10-09 00:00:00 +SELECT * FROM t1 WHERE a = 'TEST' AND +c >= '2009-10-09 00:00:00.000' AND c <= '2009-10-09 00:00:00.000'; +a b c +TEST TEST 2009-10-09 00:00:00 +SELECT * FROM t1 WHERE a = 'TEST' AND +c >= '2009-10-09 00:00:00.00' AND c <= '2009-10-09 00:00:00.001'; +a b c +TEST TEST 2009-10-09 00:00:00 +SELECT * FROM t1 WHERE a = 'TEST' AND +c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00'; +a b c +EXPLAIN SELECT * FROM t1 WHERE a = 'TEST' AND +c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +DROP TABLE t1; +# +# Bug #46175: NULL read_view and consistent read assertion +# +CREATE TABLE t1(a CHAR(13),KEY(a)) ENGINE=innodb; +CREATE TABLE t2(b DATETIME,KEY(b)) ENGINE=innodb; +INSERT INTO t1 VALUES (),(); +INSERT INTO t2 VALUES (),(); +CREATE OR REPLACE VIEW v1 AS SELECT 1 FROM t2 +WHERE b =(SELECT a FROM t1 LIMIT 1); +CREATE PROCEDURE p1(num INT) +BEGIN +DECLARE i INT DEFAULT 0; +REPEAT +SHOW CREATE VIEW v1; +SET i:=i+1; +UNTIL i>num END REPEAT; +END| +# Should not crash +# Should not crash +DROP PROCEDURE p1; +DROP VIEW v1; +DROP TABLE t1,t2; +# +# Bug #49324: more valgrind errors in test_if_skip_sort_order +# +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb ; +#should not cause valgrind warnings +SELECT 1 FROM t1 JOIN t1 a USING(a) GROUP BY t1.a,t1.a; +1 +DROP TABLE t1; +# +# Bug#50843: Filesort used instead of clustered index led to +# performance degradation. +# +create table t1(f1 int not null primary key, f2 int) engine=innodb; +create table t2(f1 int not null, key (f1)) engine=innodb; +insert into t1 values (1,1),(2,2),(3,3); +insert into t2 values (1),(2),(3); +explain select t1.* from t1 left join t2 using(f1) group by t1.f1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index NULL PRIMARY 4 NULL 3 +1 SIMPLE t2 ref f1 f1 4 test.t1.f1 1 Using index +drop table t1,t2; +# +# +# Bug #39653: find_shortest_key in sql_select.cc does not consider +# clustered primary keys +# +CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c INT, d INT, e INT, f INT, +KEY (b,c)) ENGINE=INNODB; +INSERT INTO t1 VALUES (1,1,1,1,1,1), (2,2,2,2,2,2), (3,3,3,3,3,3), +(4,4,4,4,4,4), (5,5,5,5,5,5), (6,6,6,6,6,6), +(7,7,7,7,7,7), (8,8,8,8,8,8), (9,9,9,9,9,9), +(11,11,11,11,11,11); +EXPLAIN SELECT COUNT(*) FROM t1; +id 1 +select_type SIMPLE +table t1 +type index +possible_keys NULL +key b +key_len 10 +ref NULL +rows 10 +Extra Using index +DROP TABLE t1; +# +# Bug #49838: DROP INDEX and ADD UNIQUE INDEX for same index may +# corrupt definition at engine +# +CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, KEY k (a,b)) +ENGINE=InnoDB; +ALTER TABLE t1 DROP INDEX k, ADD UNIQUE INDEX k (a,b); +SHOW INDEXES FROM t1;; +Table t1 +Non_unique 0 +Key_name k +Seq_in_index 1 +Column_name a +Collation A +Cardinality 0 +Sub_part NULL +Packed NULL +Null +Index_type BTREE +Comment +Table t1 +Non_unique 0 +Key_name k +Seq_in_index 2 +Column_name b +Collation A +Cardinality 0 +Sub_part NULL +Packed NULL +Null +Index_type BTREE +Comment +DROP TABLE t1; +# +# Bug #47453: InnoDB incorrectly changes TIMESTAMP columns when +# JOINed during an UPDATE +# +CREATE TABLE t1 (d INT) ENGINE=InnoDB; +CREATE TABLE t2 (a INT, b INT, +c TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB; +set up our data elements +INSERT INTO t1 (d) VALUES (1); +INSERT INTO t2 (a,b) VALUES (1,1); +SELECT SECOND(c) INTO @bug47453 FROM t2; +SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; +SECOND(c)-@bug47453 +0 +UPDATE t1 JOIN t2 ON d=a SET b=1 WHERE a=1; +SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; +SECOND(c)-@bug47453 +0 +SELECT SLEEP(1); +SLEEP(1) +0 +UPDATE t1 JOIN t2 ON d=a SET b=1 WHERE a=1; +#should be 0 +SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; +SECOND(c)-@bug47453 +0 +DROP TABLE t1, t2; +End of 5.1 tests diff --git a/mysql-test/suite/innodb_plugin/r/innodb_mysql_rbk.result b/mysql-test/suite/innodb_plugin/r/innodb_mysql_rbk.result new file mode 100644 index 00000000000..21ac4295325 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_mysql_rbk.result @@ -0,0 +1,21 @@ +CREATE TABLE t1(a INT, b INT NOT NULL, PRIMARY KEY (a)) ENGINE=innodb +DEFAULT CHARSET=latin1; +INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7); +START TRANSACTION; +SELECT * FROM t1 WHERE b=3 LIMIT 1 FOR UPDATE; +a b +3 3 +START TRANSACTION; +UPDATE t1 SET b=b+12 WHERE a > 2 ORDER BY a; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +ROLLBACK; +START TRANSACTION; +SELECT * FROM t1 WHERE b=3 LIMIT 1 FOR UPDATE; +a b +3 3 +START TRANSACTION; +UPDATE t1 SET b=10 WHERE a > 1 ORDER BY a; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +SELECT * FROM t1 WHERE b = 10; +a b +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_plugin/r/innodb_notembedded.result b/mysql-test/suite/innodb_plugin/r/innodb_notembedded.result new file mode 100644 index 00000000000..af332aba38a --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_notembedded.result @@ -0,0 +1,23 @@ +drop table if exists t1; +SET @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators; +SET GLOBAL log_bin_trust_function_creators = 1; +create table t1 (col1 integer primary key, col2 integer) engine=innodb; +insert t1 values (1,100); +create function f1 () returns integer begin +declare var1 int; +select col2 into var1 from t1 where col1=1 for update; +return var1; +end| +start transaction; +select f1(); +f1() +100 +update t1 set col2=0 where col1=1; +select * from t1; +col1 col2 +1 100 +rollback; +rollback; +drop table t1; +drop function f1; +SET @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators; diff --git a/mysql-test/suite/innodb_plugin/r/innodb_timeout_rollback.result b/mysql-test/suite/innodb_plugin/r/innodb_timeout_rollback.result new file mode 100644 index 00000000000..e2da6ba8af7 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_timeout_rollback.result @@ -0,0 +1,36 @@ +drop table if exists t1; +show variables like 'innodb_rollback_on_timeout'; +Variable_name Value +innodb_rollback_on_timeout ON +create table t1 (a int unsigned not null primary key) engine = innodb; +insert into t1 values (1); +commit; +begin work; +insert into t1 values (2); +select * from t1; +a +1 +2 +begin work; +insert into t1 values (5); +select * from t1; +a +1 +5 +insert into t1 values (2); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +select * from t1; +a +1 +commit; +select * from t1; +a +1 +2 +commit; +select * from t1; +a +1 +2 +drop table t1; +End of 5.0 tests diff --git a/mysql-test/suite/innodb_plugin/t/innodb-autoinc-optimize.test b/mysql-test/suite/innodb_plugin/t/innodb-autoinc-optimize.test new file mode 100644 index 00000000000..b359980768c --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb-autoinc-optimize.test @@ -0,0 +1,19 @@ +-- source include/have_innodb_plugin.inc +# embedded server ignores 'delayed', so skip this +-- source include/not_embedded.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +# +# Bug 34286 +# +create table t1(a int not null auto_increment primary key) engine=innodb; +insert into t1 set a = -1; +# NOTE: The database needs to be shutdown and restarted (here) for +# the test to work. It's included for reference only. +optimize table t1; + +--echo ==== clean up ==== +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_plugin/t/innodb-ucs2.test b/mysql-test/suite/innodb_plugin/t/innodb-ucs2.test new file mode 100644 index 00000000000..050a05675e7 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb-ucs2.test @@ -0,0 +1,230 @@ +-- source include/have_innodb_plugin.inc +-- source include/have_ucs2.inc + +--disable_warnings +drop table if exists t1, t2; +--enable_warnings + +# +# BUG 14056 Column prefix index on UTF-8 primary key column causes: Can't find record.. +# + +create table t1 ( + a int, b char(10), c char(10), filler char(10), primary key(a, b(2)), unique key (a, c(2)) +) character set utf8 engine = innodb; +create table t2 ( + a int, b char(10), c char(10), filler char(10), primary key(a, b(2)), unique key (a, c(2)) +) character set ucs2 engine = innodb; +insert into t1 values (1,'abcdefg','abcdefg','one'); +insert into t1 values (2,'ijkilmn','ijkilmn','two'); +insert into t1 values (3,'qrstuvw','qrstuvw','three'); +insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four'); +insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five'); +insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six'); +insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven'); +insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight'); +insert into t2 values (1,'abcdefg','abcdefg','one'); +insert into t2 values (2,'ijkilmn','ijkilmn','two'); +insert into t2 values (3,'qrstuvw','qrstuvw','three'); +insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four'); +insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five'); +insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six'); +insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven'); +insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight'); +insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten'); +insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven'); +insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point'); +insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken'); +update t1 set filler = 'boo' where a = 1; +update t2 set filler ='email' where a = 4; +select a,hex(b),hex(c),filler from t1 order by filler; +select a,hex(b),hex(c),filler from t2 order by filler; +drop table t1; +drop table t2; + +create table t1 ( + a int, b varchar(10), c varchar(10), filler varchar(10), primary key(a, b(2)), unique key (a, c(2)) +) character set utf8 engine = innodb; +create table t2 ( + a int, b varchar(10), c varchar(10), filler varchar(10), primary key(a, b(2)), unique key (a, c(2)) +) character set ucs2 engine = innodb; +insert into t1 values (1,'abcdefg','abcdefg','one'); +insert into t1 values (2,'ijkilmn','ijkilmn','two'); +insert into t1 values (3,'qrstuvw','qrstuvw','three'); +insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four'); +insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five'); +insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six'); +insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven'); +insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight'); +insert into t2 values (1,'abcdefg','abcdefg','one'); +insert into t2 values (2,'ijkilmn','ijkilmn','two'); +insert into t2 values (3,'qrstuvw','qrstuvw','three'); +insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four'); +insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five'); +insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six'); +insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven'); +insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight'); +insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten'); +insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven'); +insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point'); +insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken'); +update t1 set filler = 'boo' where a = 1; +update t2 set filler ='email' where a = 4; +select a,hex(b),hex(c),filler from t1 order by filler; +select a,hex(b),hex(c),filler from t2 order by filler; +drop table t1; +drop table t2; + +create table t1 ( + a int, b text(10), c text(10), filler text(10), primary key(a, b(2)), unique key (a, c(2)) +) character set utf8 engine = innodb; +create table t2 ( + a int, b text(10), c text(10), filler text(10), primary key(a, b(2)), unique key (a, c(2)) +) character set ucs2 engine = innodb; +insert into t1 values (1,'abcdefg','abcdefg','one'); +insert into t1 values (2,'ijkilmn','ijkilmn','two'); +insert into t1 values (3,'qrstuvw','qrstuvw','three'); +insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four'); +insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five'); +insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six'); +insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven'); +insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight'); +insert into t2 values (1,'abcdefg','abcdefg','one'); +insert into t2 values (2,'ijkilmn','ijkilmn','two'); +insert into t2 values (3,'qrstuvw','qrstuvw','three'); +insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four'); +insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five'); +insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six'); +insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven'); +insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight'); +insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten'); +insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven'); +insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point'); +insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken'); +update t1 set filler = 'boo' where a = 1; +update t2 set filler ='email' where a = 4; +select a,hex(b),hex(c),filler from t1 order by filler; +select a,hex(b),hex(c),filler from t2 order by filler; +drop table t1; +drop table t2; + +create table t1 ( + a int, b blob(10), c blob(10), filler blob(10), primary key(a, b(2)), unique key (a, c(2)) +) character set utf8 engine = innodb; +create table t2 ( + a int, b blob(10), c blob(10), filler blob(10), primary key(a, b(2)), unique key (a, c(2)) +) character set ucs2 engine = innodb; +insert into t1 values (1,'abcdefg','abcdefg','one'); +insert into t1 values (2,'ijkilmn','ijkilmn','two'); +insert into t1 values (3,'qrstuvw','qrstuvw','three'); +insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four'); +insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five'); +insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight'); +insert into t2 values (1,'abcdefg','abcdefg','one'); +insert into t2 values (2,'ijkilmn','ijkilmn','two'); +insert into t2 values (3,'qrstuvw','qrstuvw','three'); +insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four'); +insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five'); +insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six'); +insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven'); +insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight'); +insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten'); +insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken'); +update t1 set filler = 'boo' where a = 1; +update t2 set filler ='email' where a = 4; +select a,hex(b),hex(c),filler from t1 order by filler; +select a,hex(b),hex(c),filler from t2 order by filler; +drop table t1; +drop table t2; +commit; + +# +# Test cases for bug #15308 Problem of Order with Enum Column in Primary Key +# +CREATE TABLE t1 ( + ind enum('0','1','2') NOT NULL default '0', + string1 varchar(250) NOT NULL, + PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE t2 ( + ind enum('0','1','2') NOT NULL default '0', + string1 varchar(250) NOT NULL, + PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=ucs2; + +INSERT INTO t1 VALUES ('1', ''),('2', ''); +INSERT INTO t2 VALUES ('1', ''),('2', ''); +SELECT hex(ind),hex(string1) FROM t1 ORDER BY string1; +SELECT hex(ind),hex(string1) FROM t2 ORDER BY string1; +drop table t1,t2; + +CREATE TABLE t1 ( + ind set('0','1','2') NOT NULL default '0', + string1 varchar(250) NOT NULL, + PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE t2 ( + ind set('0','1','2') NOT NULL default '0', + string1 varchar(250) NOT NULL, + PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=ucs2; + +INSERT INTO t1 VALUES ('1', ''),('2', ''); +INSERT INTO t2 VALUES ('1', ''),('2', ''); +SELECT hex(ind),hex(string1) FROM t1 ORDER BY string1; +SELECT hex(ind),hex(string1) FROM t2 ORDER BY string1; +drop table t1,t2; + +CREATE TABLE t1 ( + ind bit not null, + string1 varchar(250) NOT NULL, + PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE t2 ( + ind bit not null, + string1 varchar(250) NOT NULL, + PRIMARY KEY (ind) +) ENGINE=InnoDB DEFAULT CHARSET=ucs2; +insert into t1 values(0,''),(1,''); +insert into t2 values(0,''),(1,''); +select hex(ind),hex(string1) from t1 order by string1; +select hex(ind),hex(string1) from t2 order by string1; +drop table t1,t2; + +# tests for bug #14056 Column prefix index on UTF-8 primary key column causes 'Can't find record..' + +create table t2 ( + a int, b char(10), filler char(10), primary key(a, b(2)) +) character set utf8 engine = innodb; + +insert into t2 values (1,'abcdefg','one'); +insert into t2 values (2,'ijkilmn','two'); +insert into t2 values (3, 'qrstuvw','three'); +update t2 set a=5, filler='booo' where a=1; +drop table t2; +create table t2 ( + a int, b char(10), filler char(10), primary key(a, b(2)) +) character set ucs2 engine = innodb; + +insert into t2 values (1,'abcdefg','one'); +insert into t2 values (2,'ijkilmn','two'); +insert into t2 values (3, 'qrstuvw','three'); +update t2 set a=5, filler='booo' where a=1; +drop table t2; + +create table t1(a int not null, b char(110),primary key(a,b(100))) engine=innodb default charset=utf8; +insert into t1 values(1,'abcdefg'),(2,'defghijk'); +insert into t1 values(6,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1); +insert into t1 values(7,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2); +select a,hex(b) from t1 order by b; +update t1 set b = 'three' where a = 6; +drop table t1; +create table t1(a int not null, b text(110),primary key(a,b(100))) engine=innodb default charset=utf8; +insert into t1 values(1,'abcdefg'),(2,'defghijk'); +insert into t1 values(6,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1); +insert into t1 values(7,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2); +select a,hex(b) from t1 order by b; +update t1 set b = 'three' where a = 6; +drop table t1; + +--echo End of 5.0 tests diff --git a/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero-master.opt new file mode 100644 index 00000000000..fad0da2ac2e --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero-master.opt @@ -0,0 +1 @@ +--innodb-autoinc-lock-mode=0 diff --git a/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero.test b/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero.test new file mode 100644 index 00000000000..5a0cd5fa766 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero.test @@ -0,0 +1,44 @@ +# This test runs with old-style locking, as: +# --innodb-autoinc-lock-mode=0 + +-- source include/have_innodb_plugin.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + + +# +# Search on unique key +# + +CREATE TABLE t1 ( + id int(11) NOT NULL auto_increment, + ggid varchar(32) binary DEFAULT '' NOT NULL, + email varchar(64) DEFAULT '' NOT NULL, + passwd varchar(32) binary DEFAULT '' NOT NULL, + PRIMARY KEY (id), + UNIQUE ggid (ggid) +) ENGINE=innodb; + +insert into t1 (ggid,passwd) values ('test1','xxx'); +insert into t1 (ggid,passwd) values ('test2','yyy'); +-- error ER_DUP_ENTRY +insert into t1 (ggid,passwd) values ('test2','this will fail'); +-- error ER_DUP_ENTRY +insert into t1 (ggid,id) values ('this will fail',1); + +select * from t1 where ggid='test1'; +select * from t1 where passwd='xxx'; +select * from t1 where id=2; + +replace into t1 (ggid,id) values ('this will work',1); +replace into t1 (ggid,passwd) values ('test2','this will work'); +-- error ER_DUP_ENTRY +update t1 set id=100,ggid='test2' where id=1; +select * from t1; +select * from t1 where id=1; +select * from t1 where id=999; +drop table t1; + +--echo End of tests diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug30919-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_bug30919-master.opt new file mode 100644 index 00000000000..8636d2d8734 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug30919-master.opt @@ -0,0 +1 @@ +--innodb --innodb_autoinc_lock_mode=0 diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug30919.test b/mysql-test/suite/innodb_plugin/t/innodb_bug30919.test new file mode 100644 index 00000000000..cc1358294e1 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug30919.test @@ -0,0 +1,68 @@ +--source include/have_innodb_plugin.inc +--source include/have_partition.inc +--vertical_results +let $engine_type= 'innodb'; + +######## Creat Table Section ######### +use test; + +eval CREATE TABLE test.part_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT, + dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB, + fkid MEDIUMINT, filler VARCHAR(255), + PRIMARY KEY(id)) ENGINE=$engine_type + PARTITION BY RANGE(id) + SUBPARTITION BY hash(id) subpartitions 2 + (PARTITION pa3 values less than (42), + PARTITION pa6 values less than (60), + PARTITION pa7 values less than (70), + PARTITION pa8 values less than (80), + PARTITION pa9 values less than (90), + PARTITION pa10 values less than (100), + PARTITION pa11 values less than MAXVALUE); + +######## Create SPs, Functions, Views and Triggers Section ############## + +delimiter |; + +CREATE PROCEDURE test.proc_part() +BEGIN + DECLARE ins_count INT DEFAULT 1000; + DECLARE del_count INT; + DECLARE cur_user VARCHAR(255); + DECLARE local_uuid VARCHAR(255); + DECLARE local_time TIMESTAMP; + + SET local_time= NOW(); + SET cur_user= CURRENT_USER(); + SET local_uuid= UUID(); + + WHILE ins_count > 0 DO + INSERT INTO test.part_tbl VALUES (NULL, NOW(), USER() , UUID(), + ins_count,'Going to test MBR for MySQL'); + SET ins_count = ins_count - 1; + END WHILE; + SELECT MAX(id) FROM test.part_tbl INTO del_count; + WHILE del_count > 0 DO + DELETE FROM test.part_tbl WHERE id = del_count; + select count(*) as internal_count, del_count -- these two lines are for + FROM test.part_tbl; -- debug to show the problem + SET del_count = del_count - 2; + END WHILE; +END| + +delimiter ;| + +############ Finish Setup Section ################### + +############ Test Section ################### +--horizontal_results + +CALL test.proc_part(); + +select count(*) as Part from test.part_tbl; + +###### CLEAN UP SECTION ############## + +DROP PROCEDURE test.proc_part; +DROP TABLE test.part_tbl; + diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug42419.test b/mysql-test/suite/innodb_plugin/t/innodb_bug42419.test new file mode 100644 index 00000000000..2302e3c2233 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug42419.test @@ -0,0 +1,78 @@ +# +# Testcase for InnoDB +# Bug#42419 Server crash with "Pure virtual method called" on two concurrent connections +# + +--source include/not_embedded.inc +--source include/have_innodb_plugin.inc + +let $innodb_lock_wait_timeout= query_get_value(SHOW VARIABLES LIKE 'innodb_lock_wait_timeout%', Value, 1); +if (`SELECT $innodb_lock_wait_timeout < 10`) +{ + --echo # innodb_lock_wait_timeout must be >= 10 seconds + --echo # so that this test can work all time fine on an overloaded testing box + SHOW VARIABLES LIKE 'innodb_lock_wait_timeout'; + exit; +} + +# Save the initial number of concurrent sessions +--source include/count_sessions.inc + +# First session +connection default; + + +--enable_warnings +CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b INT) ENGINE = InnoDB; + +INSERT INTO t1 VALUES (1,1),(2,2),(3,3); +COMMIT; +SET AUTOCOMMIT = 0; + +CREATE TEMPORARY TABLE t1_tmp ( b INT ); + +INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 3; +INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 2; + +# Second session +connect (user2,localhost,root,,,$MASTER_MYPORT,$MASTER_MYSOCK); + +SET AUTOCOMMIT = 0; + +CREATE TEMPORARY TABLE t2_tmp ( a int, new_a int ); +INSERT INTO t2_tmp VALUES (1,51),(2,52),(3,53); + +UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 1; +send +UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 2; + +# The last update will wait for a lock held by the first session + +# First session +connection default; + +# Poll till the UPDATE of the second session waits for lock +let $show_statement= SHOW PROCESSLIST; +let $field= State; +let $condition= = 'Updating'; +--source include/wait_show_condition.inc + +# If the testing box is overloadeded and innodb_lock_wait_timeout is too small +# we might get here ER_LOCK_WAIT_TIMEOUT. +--error ER_LOCK_DEADLOCK +INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 1; + +# Second session +connection user2; +--echo Reap the server message for connection user2 UPDATE t1 ... +reap; + +# The server crashed when executing this UPDATE or the succeeding SQL command. +UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 3; + +connection default; +disconnect user2; +DROP TABLE t1; + +# Wait till all disconnects are completed +--source include/wait_until_count_sessions.inc diff --git a/mysql-test/suite/innodb_plugin/t/innodb_gis.test b/mysql-test/suite/innodb_plugin/t/innodb_gis.test new file mode 100644 index 00000000000..ad1d081f29c --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_gis.test @@ -0,0 +1,10 @@ +--source include/have_innodb_plugin.inc +SET storage_engine=innodb; +--source include/gis_generic.inc +--source include/gis_keys.inc + +# +# Bug #15680 (SPATIAL key in innodb) +# +--error ER_TABLE_CANT_HANDLE_SPKEYS +create table t1 (g geometry not null, spatial gk(g)) engine=innodb; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1-master.opt new file mode 100644 index 00000000000..462f8fbe828 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1-master.opt @@ -0,0 +1 @@ +--innodb_lock_wait_timeout=1 diff --git a/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1.test b/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1.test new file mode 100644 index 00000000000..d7272779bdd --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1.test @@ -0,0 +1,264 @@ +--source include/have_innodb_plugin.inc + +--echo # +--echo # Bug #40113: Embedded SELECT inside UPDATE or DELETE can timeout +--echo # without error +--echo # + +CREATE TABLE t1 (a int, b int, PRIMARY KEY (a,b)) ENGINE=InnoDB; + +INSERT INTO t1 (a,b) VALUES (1070109,99); + +CREATE TABLE t2 (b int, a int, PRIMARY KEY (b)) ENGINE=InnoDB; + +INSERT INTO t2 (b,a) VALUES (7,1070109); + +SELECT * FROM t1; + +BEGIN; + +SELECT b FROM t2 WHERE b=7 FOR UPDATE; + +CONNECT (addconroot, localhost, root,,); +CONNECTION addconroot; + +BEGIN; + +--error ER_LOCK_WAIT_TIMEOUT +SELECT b FROM t2 WHERE b=7 FOR UPDATE; + +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 (a) VALUES ((SELECT a FROM t2 WHERE b=7)); + +--error ER_LOCK_WAIT_TIMEOUT +UPDATE t1 SET a='7000000' WHERE a=(SELECT a FROM t2 WHERE b=7); + +--error ER_LOCK_WAIT_TIMEOUT +DELETE FROM t1 WHERE a=(SELECT a FROM t2 WHERE b=7); + +SELECT * FROM t1; + +CONNECTION default; +DISCONNECT addconroot; + +DROP TABLE t2, t1; + +--echo # End of 5.0 tests + +--echo # +--echo # Bug#46539 Various crashes on INSERT IGNORE SELECT + SELECT +--echo # FOR UPDATE +--echo # +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int primary key auto_increment, + b int, index(b)) engine=innodb; +insert into t1 (b) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10); +set autocommit=0; +begin; +select * from t1 where b=5 for update; +connect (con1, localhost, root,,); +connection con1; +--error ER_LOCK_WAIT_TIMEOUT +insert ignore into t1 (b) select a as b from t1; +connection default; +--echo # Cleanup +--echo # +disconnect con1; +commit; +set autocommit=default; +drop table t1; + +--echo # +--echo # Bug #37183 insert ignore into .. select ... hangs +--echo # after deadlock was encountered +--echo # +connect (con1,localhost,root,,); +create table t1(id int primary key,v int)engine=innodb; +insert into t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7); +create table t2 like t1; + +--connection con1 +begin; +update t1 set v=id*2 where id=1; + +--connection default +begin; +update t1 set v=id*2 where id=2; + +--connection con1 +--error 1205 +update t1 set v=id*2 where id=2; + +--connection default +--error 1205 +insert ignore into t2 select * from t1 where id=1; +rollback; + +--connection con1 +rollback; + +--connection default +disconnect con1; +drop table t1, t2; + + +--echo # +--echo # Bug#41756 Strange error messages about locks from InnoDB +--echo # +--disable_warnings +drop table if exists t1; +--enable_warnings +--echo # In the default transaction isolation mode, and/or with +--echo # innodb_locks_unsafe_for_binlog=OFF, handler::unlock_row() +--echo # in InnoDB does nothing. +--echo # Thus in order to reproduce the condition that led to the +--echo # warning, one needs to relax isolation by either +--echo # setting a weaker tx_isolation value, or by turning on +--echo # the unsafe replication switch. +--echo # For testing purposes, choose to tweak the isolation level, +--echo # since it's settable at runtime, unlike +--echo # innodb_locks_unsafe_for_binlog, which is +--echo # only a command-line switch. +--echo # +set @@session.tx_isolation="read-committed"; + +--echo # Prepare data. We need a table with a unique index, +--echo # for join_read_key to be used. The other column +--echo # allows to control what passes WHERE clause filter. +create table t1 (a int primary key, b int) engine=innodb; +--echo # Let's make sure t1 has sufficient amount of rows +--echo # to exclude JT_ALL access method when reading it, +--echo # i.e. make sure that JT_EQ_REF(a) is always preferred. +insert into t1 values (1,1), (2,null), (3,1), (4,1), + (5,1), (6,1), (7,1), (8,1), (9,1), (10,1), + (11,1), (12,1), (13,1), (14,1), (15,1), + (16,1), (17,1), (18,1), (19,1), (20,1); +--echo # +--echo # Demonstrate that for the SELECT statement +--echo # used later in the test JT_EQ_REF access method is used. +--echo # +--vertical_results +explain +select 1 from t1 natural join (select 2 as a, 1 as b union all + select 2 as a, 2 as b) as t2 for update; +--horizontal_results +--echo # +--echo # Demonstrate that the reported SELECT statement +--echo # no longer produces warnings. +--echo # +select 1 from t1 natural join (select 2 as a, 1 as b union all + select 2 as a, 2 as b) as t2 for update; +commit; +--echo # +--echo # Demonstrate that due to lack of inter-sweep "reset" function, +--echo # we keep some non-matching records locked, even though we know +--echo # we could unlock them. +--echo # To do that, show that if there is only one distinct value +--echo # for a in t2 (a=2), we will keep record (2,null) in t1 locked. +--echo # But if we add another value for "a" to t2, say 6, +--echo # join_read_key cache will be pruned at least once, +--echo # and thus record (2, null) in t1 will get unlocked. +--echo # +begin; +select 1 from t1 natural join (select 2 as a, 1 as b union all + select 2 as a, 2 as b) as t2 for update; +connect (con1,localhost,root,,); +--echo # +--echo # Switching to connection con1 +connection con1; +--echo # We should be able to delete all records from t1 except (2, null), +--echo # since they were not locked. +begin; +--echo # Delete in series of 3 records so that full scan +--echo # is not used and we're not blocked on record (2,null) +delete from t1 where a in (1,3,4); +delete from t1 where a in (5,6,7); +delete from t1 where a in (8,9,10); +delete from t1 where a in (11,12,13); +delete from t1 where a in (14,15,16); +delete from t1 where a in (17,18); +delete from t1 where a in (19,20); +--echo # +--echo # Record (2, null) is locked. This is actually unnecessary, +--echo # because the previous select returned no rows. +--echo # Just demonstrate the effect. +--echo # +--error ER_LOCK_WAIT_TIMEOUT +delete from t1; +rollback; +--echo # +--echo # Switching to connection default +connection default; +--echo # +--echo # Show that the original contents of t1 is intact: +select * from t1; +commit; +--echo # +--echo # Have a one more record in t2 to show that +--echo # if join_read_key cache is purned, the current +--echo # row under the cursor is unlocked (provided, this row didn't +--echo # match the partial WHERE clause, of course). +--echo # Sic: the result of this test dependent on the order of retrieval +--echo # of records --echo # from the derived table, if ! +--echo # We use DELETE to disable the JOIN CACHE. This DELETE modifies no +--echo # records. It also should leave no InnoDB row locks. +--echo # +begin; +delete t1.* from t1 natural join (select 2 as a, 2 as b union all + select 0 as a, 0 as b) as t2; +--echo # Demonstrate that nothing was deleted form t1 +select * from t1; +--echo # +--echo # Switching to connection con1 +connection con1; +begin; +--echo # Since there is another distinct record in the derived table +--echo # the previous matching record in t1 -- (2,null) -- was unlocked. +delete from t1; +--echo # We will need the contents of the table again. +rollback; +select * from t1; +commit; +--echo # +--echo # Switching to connection default +connection default; +rollback; +begin; +--echo # +--echo # Before this patch, we could wrongly unlock a record +--echo # that was cached and later used in a join. Demonstrate that +--echo # this is no longer the case. +--echo # Sic: this test is also order-dependent (i.e. the +--echo # the bug would show up only if the first record in the union +--echo # is retreived and processed first. +--echo # +--echo # Verify that JT_EQ_REF is used. +--vertical_results +explain +select 1 from t1 natural join (select 3 as a, 2 as b union all + select 3 as a, 1 as b) as t2 for update; +--horizontal_results +--echo # Lock the record. +select 1 from t1 natural join (select 3 as a, 2 as b union all + select 3 as a, 1 as b) as t2 for update; +--echo # Switching to connection con1 +connection con1; +--echo # +--echo # We should not be able to delete record (3,1) from t1, +--echo # (previously it was possible). +--echo # +--error ER_LOCK_WAIT_TIMEOUT +delete from t1 where a=3; +--echo # Switching to connection default +connection default; +commit; + +disconnect con1; +set @@session.tx_isolation=default; +drop table t1; + +--echo # +--echo # End of 5.1 tests +--echo # diff --git a/mysql-test/suite/innodb_plugin/t/innodb_mysql-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_mysql-master.opt new file mode 100644 index 00000000000..205c733455d --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_mysql-master.opt @@ -0,0 +1 @@ +--innodb-lock-wait-timeout=2 diff --git a/mysql-test/suite/innodb_plugin/t/innodb_mysql.test b/mysql-test/suite/innodb_plugin/t/innodb_mysql.test new file mode 100644 index 00000000000..c80db7088ab --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_mysql.test @@ -0,0 +1,622 @@ +# t/innodb_mysql.test +# +# Last update: +# 2006-07-26 ML test refactored (MySQL 5.1) +# main testing code t/innodb_mysql.test -> include/mix1.inc +# + +-- source include/have_innodb_plugin.inc +let $engine_type= InnoDB; +let $other_engine_type= MEMORY; +# InnoDB does support FOREIGN KEYFOREIGN KEYs +let $test_foreign_keys= 1; +set global innodb_support_xa=default; +set session innodb_support_xa=default; +--source include/mix1.inc + +--disable_warnings +drop table if exists t1, t2, t3; +--enable_warnings +# +# BUG#35850: Performance regression in 5.1.23/5.1.24 +# +create table t1(a int); +insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t2 (a int, b int, pk int, key(a,b), primary key(pk)) engine=innodb; +insert into t2 select @a:=A.a+10*(B.a + 10*C.a),@a, @a from t1 A, t1 B, t1 C; +--echo this must use key 'a', not PRIMARY: +--replace_column 9 # +explain select a from t2 where a=b; +drop table t1, t2; + +# +# Bug #40360: Binlog related errors with binlog off +# +# This bug is triggered when the binlog format is STATEMENT and the +# binary log is turned off. In this case, no error should be shown for +# the statement since there are no replication issues. + +SET SESSION BINLOG_FORMAT=STATEMENT; +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +query_vertical select @@session.sql_log_bin, @@session.binlog_format, @@session.tx_isolation; +CREATE TABLE t1 ( a INT ) ENGINE=InnoDB; +INSERT INTO t1 VALUES(1); +DROP TABLE t1; + +# +# Bug#37284 Crash in Field_string::type() +# +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings +CREATE TABLE t1 (a char(50)) ENGINE=InnoDB; +CREATE INDEX i1 on t1 (a(3)); +SELECT * FROM t1 WHERE a = 'abcde'; +DROP TABLE t1; + +# +# Bug #37742: HA_EXTRA_KEYREAD flag is set when key contains only prefix of +# requested column +# + +CREATE TABLE foo (a int, b int, c char(10), + PRIMARY KEY (c(3)), + KEY b (b) +) engine=innodb; + +CREATE TABLE foo2 (a int, b int, c char(10), + PRIMARY KEY (c), + KEY b (b) +) engine=innodb; + +CREATE TABLE bar (a int, b int, c char(10), + PRIMARY KEY (c(3)), + KEY b (b) +) engine=myisam; + +INSERT INTO foo VALUES + (1,2,'abcdefghij'), (2,3,''), (3,4,'klmnopqrst'), + (4,5,'uvwxyz'), (5,6,'meotnsyglt'), (4,5,'asfdewe'); + +INSERT INTO bar SELECT * FROM foo; +INSERT INTO foo2 SELECT * FROM foo; + +--query_vertical EXPLAIN SELECT c FROM bar WHERE b>2; +--query_vertical EXPLAIN SELECT c FROM foo WHERE b>2; +--query_vertical EXPLAIN SELECT c FROM foo2 WHERE b>2; + +--query_vertical EXPLAIN SELECT c FROM bar WHERE c>2; +--query_vertical EXPLAIN SELECT c FROM foo WHERE c>2; +--query_vertical EXPLAIN SELECT c FROM foo2 WHERE c>2; + +DROP TABLE foo, bar, foo2; + + +# +# Bug#41348: INSERT INTO tbl SELECT * FROM temp_tbl overwrites locking type of temp table +# + +--disable_warnings +DROP TABLE IF EXISTS t1,t3,t2; +DROP FUNCTION IF EXISTS f1; +--enable_warnings + +DELIMITER |; +CREATE FUNCTION f1() RETURNS VARCHAR(250) + BEGIN + return 'hhhhhhh' ; + END| +DELIMITER ;| + +CREATE TABLE t1 (a VARCHAR(20), b VARCHAR(20), c VARCHAR(20)) ENGINE=INNODB; + +BEGIN WORK; + +CREATE TEMPORARY TABLE t2 (a VARCHAR(20), b VARCHAR(20), c varchar(20)) ENGINE=INNODB; +CREATE TEMPORARY TABLE t3 LIKE t2; + +INSERT INTO t1 VALUES ('a','b',NULL),('c','d',NULL),('e','f',NULL); + +SET @stmt := CONCAT('INSERT INTO t2 SELECT tbl.a, tbl.b, f1()',' FROM t1 tbl'); +PREPARE stmt1 FROM @stmt; + +SET @stmt := CONCAT('INSERT INTO t3', ' SELECT * FROM t2'); +PREPARE stmt3 FROM @stmt; + +EXECUTE stmt1; + +COMMIT; + +DEALLOCATE PREPARE stmt1; +DEALLOCATE PREPARE stmt3; + +DROP TABLE t1,t3,t2; +DROP FUNCTION f1; + +# +# Bug#37016: TRUNCATE TABLE removes some rows but not all +# + +--disable_warnings +DROP TABLE IF EXISTS t1,t2; +--enable_warnings + +CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB; +CREATE TABLE t2 (id INT PRIMARY KEY, + t1_id INT, INDEX par_ind (t1_id), + FOREIGN KEY (t1_id) REFERENCES t1(id)) ENGINE=INNODB; +INSERT INTO t1 VALUES (1),(2); +INSERT INTO t2 VALUES (3,2); + +SET AUTOCOMMIT = 0; + +START TRANSACTION; +--error ER_ROW_IS_REFERENCED_2 +TRUNCATE TABLE t1; +SELECT * FROM t1; +COMMIT; +SELECT * FROM t1; + +START TRANSACTION; +--error ER_ROW_IS_REFERENCED_2 +TRUNCATE TABLE t1; +SELECT * FROM t1; +ROLLBACK; +SELECT * FROM t1; + +SET AUTOCOMMIT = 1; + +START TRANSACTION; +SELECT * FROM t1; +COMMIT; + +--error ER_ROW_IS_REFERENCED_2 +TRUNCATE TABLE t1; +SELECT * FROM t1; +DELETE FROM t2 WHERE id = 3; + +START TRANSACTION; +SELECT * FROM t1; +TRUNCATE TABLE t1; +ROLLBACK; +SELECT * FROM t1; +TRUNCATE TABLE t2; + +DROP TABLE t2; +DROP TABLE t1; + +--echo # +--echo # Bug#40127 Multiple table DELETE IGNORE hangs on foreign key constraint violation on 5.0 +--echo # +CREATE TABLE t1 ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + PRIMARY KEY (id) +) ENGINE=InnoDB; + +CREATE TABLE t2 ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + aid INT UNSIGNED NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY (aid) REFERENCES t1 (id) +) ENGINE=InnoDB; + +CREATE TABLE t3 ( + bid INT UNSIGNED NOT NULL, + FOREIGN KEY (bid) REFERENCES t2 (id) +) ENGINE=InnoDB; + +CREATE TABLE t4 ( + a INT +) ENGINE=InnoDB; + +CREATE TABLE t5 ( + a INT +) ENGINE=InnoDB; + +INSERT INTO t1 (id) VALUES (1); +INSERT INTO t2 (id, aid) VALUES (1, 1),(2,1),(3,1),(4,1); +INSERT INTO t3 (bid) VALUES (1); + +INSERT INTO t4 VALUES (1),(2),(3),(4),(5); +INSERT INTO t5 VALUES (1); + +DELETE t5 FROM t4 LEFT JOIN t5 ON t4.a= t5.a; + +--error ER_ROW_IS_REFERENCED_2 +DELETE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1; +--error ER_ROW_IS_REFERENCED_2 +DELETE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1; + +DELETE IGNORE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1; + +DROP TABLE t3; +DROP TABLE t2; +DROP TABLE t1; +DROP TABLES t4,t5; + +--echo # Bug#40127 Multiple table DELETE IGNORE hangs on foreign key constraint violation on 5.0 +--echo # Testing for any side effects of IGNORE on AFTER DELETE triggers used with +--echo # transactional tables. +--echo # +CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t2 (a VARCHAR(100)) ENGINE=InnoDB; +CREATE TABLE t3 (i INT NOT NULL PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t4 (i INT NOT NULL PRIMARY KEY, t1i INT, + FOREIGN KEY (t1i) REFERENCES t1(i)) + ENGINE=InnoDB; +delimiter ||; +CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW +BEGIN + SET @b:='EXECUTED TRIGGER'; + INSERT INTO t2 VALUES (@b); + SET @a:= error_happens_here; +END|| +delimiter ;|| + +SET @b:=""; +SET @a:=""; +INSERT INTO t1 VALUES (1),(2),(3),(4); +INSERT INTO t3 SELECT * FROM t1; +--echo ** An error in a trigger causes rollback of the statement. +--error ER_BAD_FIELD_ERROR +DELETE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i; +SELECT @a,@b; +SELECT * FROM t2; +SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i; + +--echo ** Same happens with the IGNORE option +--error ER_BAD_FIELD_ERROR +DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i; +SELECT * FROM t2; +SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i; + +--echo ** +--echo ** The following is an attempt to demonstrate +--echo ** error handling inside a row iteration. +--echo ** +DROP TRIGGER trg; +TRUNCATE TABLE t1; +TRUNCATE TABLE t2; +TRUNCATE TABLE t3; + +INSERT INTO t1 VALUES (1),(2),(3),(4); +INSERT INTO t3 VALUES (1),(2),(3),(4); +INSERT INTO t4 VALUES (3,3),(4,4); + +delimiter ||; +CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW +BEGIN + SET @b:= CONCAT('EXECUTED TRIGGER FOR ROW ',CAST(OLD.i AS CHAR)); + INSERT INTO t2 VALUES (@b); +END|| +delimiter ;|| + +--echo ** DELETE is prevented by foreign key constrains but errors are silenced. +--echo ** The AFTER trigger isn't fired. +DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i; +--echo ** Tables are modified by best effort: +SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i; +--echo ** The AFTER trigger was only executed on successful rows: +SELECT * FROM t2; + +DROP TRIGGER trg; + +--echo ** +--echo ** Induce an error midway through an AFTER-trigger +--echo ** +TRUNCATE TABLE t4; +TRUNCATE TABLE t1; +TRUNCATE TABLE t3; +INSERT INTO t1 VALUES (1),(2),(3),(4); +INSERT INTO t3 VALUES (1),(2),(3),(4); +delimiter ||; +CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW +BEGIN + SET @a:= @a+1; + IF @a > 2 THEN + INSERT INTO t4 VALUES (5,5); + END IF; +END|| +delimiter ;|| + +SET @a:=0; +--echo ** Errors in the trigger causes the statement to abort. +--error ER_NO_REFERENCED_ROW_2 +DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i; +SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i; +SELECT * FROM t4; + +DROP TRIGGER trg; +DROP TABLE t4; +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; + +# +# Bug#43580: Issue with Innodb on multi-table update +# +CREATE TABLE t1 (a INT, b INT, KEY (a)) ENGINE = INNODB; +CREATE TABLE t2 (a INT KEY, b INT, KEY (b)) ENGINE = INNODB; + +CREATE TABLE t3 (a INT, b INT KEY, KEY (a)) ENGINE = INNODB; +CREATE TABLE t4 (a INT KEY, b INT, KEY (b)) ENGINE = INNODB; + +INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6); +INSERT INTO t2 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5); + +INSERT INTO t3 VALUES (1, 101), (2, 102), (3, 103), (4, 104), (5, 105), (6, 106); +INSERT INTO t4 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5); + +UPDATE t1, t2 SET t1.a = t1.a + 100, t2.b = t1.a + 10 +WHERE t1.a BETWEEN 2 AND 4 AND t2.a = t1.b; +--sorted_result +SELECT * FROM t2; + +UPDATE t3, t4 SET t3.a = t3.a + 100, t4.b = t3.a + 10 +WHERE t3.a BETWEEN 2 AND 4 AND t4.a = t3.b - 100; +--sorted_result +SELECT * FROM t4; + +DROP TABLE t1, t2, t3, t4; + +--echo # +--echo # Bug#44886: SIGSEGV in test_if_skip_sort_order() - +--echo # uninitialized variable used as subscript +--echo # + +CREATE TABLE t1 (a INT, b INT, c INT, d INT, PRIMARY KEY (b), KEY (a,c)) + ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,1,1,0); + +CREATE TABLE t2 (a INT, b INT, e INT, KEY (e)) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1,1,2); + +CREATE TABLE t3 (a INT, b INT) ENGINE=MyISAM; +INSERT INTO t3 VALUES (1, 1); + +SELECT * FROM t1, t2, t3 + WHERE t1.a = t3.a AND (t1.b = t3.b OR t1.d) AND t2.b = t1.b AND t2.e = 2 + GROUP BY t1.b; + +DROP TABLE t1, t2, t3; + +--echo # +--echo # Bug #45828: Optimizer won't use partial primary key if another +--echo # index can prevent filesort +--echo # + +# Create the table +CREATE TABLE `t1` ( + c1 int NOT NULL, + c2 int NOT NULL, + c3 int NOT NULL, + PRIMARY KEY (c1,c2), + KEY (c3) +) ENGINE=InnoDB; + +# populate with data +INSERT INTO t1 VALUES (5,2,1246276747); +INSERT INTO t1 VALUES (2,1,1246281721); +INSERT INTO t1 VALUES (7,3,1246281756); +INSERT INTO t1 VALUES (4,2,1246282139); +INSERT INTO t1 VALUES (3,1,1246282230); +INSERT INTO t1 VALUES (1,0,1246282712); +INSERT INTO t1 VALUES (8,3,1246282765); +INSERT INTO t1 SELECT c1+10,c2+10,c3+10 FROM t1; +INSERT INTO t1 SELECT c1+100,c2+100,c3+100 from t1; +INSERT INTO t1 SELECT c1+1000,c2+1000,c3+1000 from t1; +INSERT INTO t1 SELECT c1+10000,c2+10000,c3+10000 from t1; +INSERT INTO t1 SELECT c1+100000,c2+100000,c3+100000 from t1; +INSERT INTO t1 SELECT c1+1000000,c2+1000000,c3+1000000 from t1; + +# query and no rows will match the c1 condition, whereas all will match c3 +SELECT * FROM t1 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3; + +# SHOULD use the pk. +# index on c3 will be used instead of primary key +EXPLAIN SELECT * FROM t1 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3; + +# if we force the primary key, we can see the estimate is 1 +EXPLAIN SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3; + + +CREATE TABLE t2 ( + c1 int NOT NULL, + c2 int NOT NULL, + c3 int NOT NULL, + KEY (c1,c2), + KEY (c3) +) ENGINE=InnoDB; + +# SHOULD use the pk. +# if we switch it from a primary key to a regular index, it works correctly as well +explain SELECT * FROM t2 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3; + +DROP TABLE t1,t2; + + +--echo # +--echo # 36259: Optimizing with ORDER BY +--echo # + +CREATE TABLE t1 ( + a INT NOT NULL AUTO_INCREMENT, + b INT NOT NULL, + c INT NOT NULL, + d VARCHAR(5), + e INT NOT NULL, + PRIMARY KEY (a), KEY i2 (b,c,d) +) ENGINE=InnoDB; + +INSERT INTO t1 (b,c,d,e) VALUES (1,1,'a',1), (2,2,'b',2); +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1; +EXPLAIN SELECT * FROM t1 WHERE b=1 AND c=1 ORDER BY a; +EXPLAIN SELECT * FROM t1 FORCE INDEX(i2) WHERE b=1 and c=1 ORDER BY a; +EXPLAIN SELECT * FROM t1 FORCE INDEX(PRIMARY) WHERE b=1 AND c=1 ORDER BY a; + +DROP TABLE t1; + +--echo # +--echo # Bug #47963: Wrong results when index is used +--echo # +CREATE TABLE t1( + a VARCHAR(5) NOT NULL, + b VARCHAR(5) NOT NULL, + c DATETIME NOT NULL, + KEY (c) +) ENGINE=InnoDB; +INSERT INTO t1 VALUES('TEST', 'TEST', '2009-10-09 00:00:00'); +SELECT * FROM t1 WHERE a = 'TEST' AND + c >= '2009-10-09 00:00:00' AND c <= '2009-10-09 00:00:00'; +SELECT * FROM t1 WHERE a = 'TEST' AND + c >= '2009-10-09 00:00:00.0' AND c <= '2009-10-09 00:00:00.0'; +SELECT * FROM t1 WHERE a = 'TEST' AND + c >= '2009-10-09 00:00:00.0' AND c <= '2009-10-09 00:00:00'; +SELECT * FROM t1 WHERE a = 'TEST' AND + c >= '2009-10-09 00:00:00' AND c <= '2009-10-09 00:00:00.0'; +SELECT * FROM t1 WHERE a = 'TEST' AND + c >= '2009-10-09 00:00:00.000' AND c <= '2009-10-09 00:00:00.000'; +SELECT * FROM t1 WHERE a = 'TEST' AND + c >= '2009-10-09 00:00:00.00' AND c <= '2009-10-09 00:00:00.001'; +SELECT * FROM t1 WHERE a = 'TEST' AND + c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00'; +EXPLAIN SELECT * FROM t1 WHERE a = 'TEST' AND + c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00'; +DROP TABLE t1; + +--echo # +--echo # Bug #46175: NULL read_view and consistent read assertion +--echo # + +CREATE TABLE t1(a CHAR(13),KEY(a)) ENGINE=innodb; +CREATE TABLE t2(b DATETIME,KEY(b)) ENGINE=innodb; +INSERT INTO t1 VALUES (),(); +INSERT INTO t2 VALUES (),(); +CREATE OR REPLACE VIEW v1 AS SELECT 1 FROM t2 + WHERE b =(SELECT a FROM t1 LIMIT 1); + +--disable_query_log +--disable_result_log +CONNECT (con1, localhost, root,,); +--enable_query_log +--enable_result_log +CONNECTION default; + +DELIMITER |; +CREATE PROCEDURE p1(num INT) +BEGIN + DECLARE i INT DEFAULT 0; + REPEAT + SHOW CREATE VIEW v1; + SET i:=i+1; + UNTIL i>num END REPEAT; +END| +DELIMITER ;| + +--echo # Should not crash +--disable_query_log +--disable_result_log +--send CALL p1(1000) +CONNECTION con1; +--echo # Should not crash +CALL p1(1000); + +CONNECTION default; +--reap +--enable_query_log +--enable_result_log + +DISCONNECT con1; +DROP PROCEDURE p1; +DROP VIEW v1; +DROP TABLE t1,t2; + + +--echo # +--echo # Bug #49324: more valgrind errors in test_if_skip_sort_order +--echo # +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb ; +--echo #should not cause valgrind warnings +SELECT 1 FROM t1 JOIN t1 a USING(a) GROUP BY t1.a,t1.a; +DROP TABLE t1; + +--echo # +--echo # Bug#50843: Filesort used instead of clustered index led to +--echo # performance degradation. +--echo # +create table t1(f1 int not null primary key, f2 int) engine=innodb; +create table t2(f1 int not null, key (f1)) engine=innodb; +insert into t1 values (1,1),(2,2),(3,3); +insert into t2 values (1),(2),(3); +explain select t1.* from t1 left join t2 using(f1) group by t1.f1; +drop table t1,t2; +--echo # + + +--echo # +--echo # Bug #39653: find_shortest_key in sql_select.cc does not consider +--echo # clustered primary keys +--echo # + +CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c INT, d INT, e INT, f INT, + KEY (b,c)) ENGINE=INNODB; + +INSERT INTO t1 VALUES (1,1,1,1,1,1), (2,2,2,2,2,2), (3,3,3,3,3,3), + (4,4,4,4,4,4), (5,5,5,5,5,5), (6,6,6,6,6,6), + (7,7,7,7,7,7), (8,8,8,8,8,8), (9,9,9,9,9,9), + (11,11,11,11,11,11); + +--query_vertical EXPLAIN SELECT COUNT(*) FROM t1 + +DROP TABLE t1; + +--echo # +--echo # Bug #49838: DROP INDEX and ADD UNIQUE INDEX for same index may +--echo # corrupt definition at engine +--echo # + +CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, KEY k (a,b)) + ENGINE=InnoDB; + +ALTER TABLE t1 DROP INDEX k, ADD UNIQUE INDEX k (a,b); + +--query_vertical SHOW INDEXES FROM t1; + +DROP TABLE t1; + + +--echo # +--echo # Bug #47453: InnoDB incorrectly changes TIMESTAMP columns when +--echo # JOINed during an UPDATE +--echo # + +CREATE TABLE t1 (d INT) ENGINE=InnoDB; +CREATE TABLE t2 (a INT, b INT, + c TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB; + +--echo set up our data elements +INSERT INTO t1 (d) VALUES (1); +INSERT INTO t2 (a,b) VALUES (1,1); +SELECT SECOND(c) INTO @bug47453 FROM t2; + +SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; +UPDATE t1 JOIN t2 ON d=a SET b=1 WHERE a=1; +SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; + +SELECT SLEEP(1); + +UPDATE t1 JOIN t2 ON d=a SET b=1 WHERE a=1; + +--echo #should be 0 +SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; + +DROP TABLE t1, t2; + + +--echo End of 5.1 tests diff --git a/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk-master.opt new file mode 100644 index 00000000000..0e400f9c36b --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk-master.opt @@ -0,0 +1 @@ +--innodb_lock_wait_timeout=1 --innodb_rollback_on_timeout=1 diff --git a/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk.test b/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk.test new file mode 100644 index 00000000000..d8d56adc448 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk.test @@ -0,0 +1,35 @@ +-- source include/have_innodb_plugin.inc + +# +# Bug #41453: Assertion `m_status == DA_ERROR' failed in +# Diagnostics_area::sql_errno +# + +CREATE TABLE t1(a INT, b INT NOT NULL, PRIMARY KEY (a)) ENGINE=innodb +DEFAULT CHARSET=latin1; +INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7); +CONNECT (con1,localhost,root,,); +CONNECT (con2,localhost,root,,); + +CONNECTION con1; +START TRANSACTION; +SELECT * FROM t1 WHERE b=3 LIMIT 1 FOR UPDATE; +CONNECTION con2; +START TRANSACTION; +--error ER_LOCK_WAIT_TIMEOUT +UPDATE t1 SET b=b+12 WHERE a > 2 ORDER BY a; +ROLLBACK; + +CONNECTION con1; +START TRANSACTION; +SELECT * FROM t1 WHERE b=3 LIMIT 1 FOR UPDATE; +CONNECTION con2; +START TRANSACTION; +--error ER_LOCK_WAIT_TIMEOUT +UPDATE t1 SET b=10 WHERE a > 1 ORDER BY a; +SELECT * FROM t1 WHERE b = 10; + +CONNECTION default; +DISCONNECT con1; +DISCONNECT con2; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_notembedded.test b/mysql-test/suite/innodb_plugin/t/innodb_notembedded.test new file mode 100644 index 00000000000..2afe9079ba8 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_notembedded.test @@ -0,0 +1,50 @@ +-- source include/not_embedded.inc +-- source include/have_innodb_plugin.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +SET @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators; + +connect (a,localhost,root,,); +connect (b,localhost,root,,); + + +# +# BUG#11238 - in prelocking mode SELECT .. FOR UPDATE is changed to +# non-blocking SELECT +# +SET GLOBAL log_bin_trust_function_creators = 1; +create table t1 (col1 integer primary key, col2 integer) engine=innodb; +insert t1 values (1,100); +delimiter |; +create function f1 () returns integer begin +declare var1 int; +select col2 into var1 from t1 where col1=1 for update; +return var1; +end| +delimiter ;| +start transaction; +select f1(); +connection b; +send update t1 set col2=0 where col1=1; +connection default; +select * from t1; +connection a; +rollback; +connection b; +reap; +rollback; + +# Cleanup +connection a; +disconnect a; +--source include/wait_until_disconnected.inc +connection b; +disconnect b; +--source include/wait_until_disconnected.inc +connection default; +drop table t1; +drop function f1; +SET @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback-master.opt new file mode 100644 index 00000000000..50921bb4df0 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback-master.opt @@ -0,0 +1 @@ +--innodb_lock_wait_timeout=2 --innodb_rollback_on_timeout diff --git a/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback.test b/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback.test new file mode 100644 index 00000000000..cc7ab9ee0bd --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback.test @@ -0,0 +1,5 @@ +-- source include/have_innodb_plugin.inc + +--source include/innodb_rollback_on_timeout.inc + +--echo End of 5.0 tests From 60845867e331284d8ef11a2642a3c7c1c8efcd95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 3 Jun 2010 12:50:32 +0300 Subject: [PATCH 122/461] Move some InnoDB tests to mysql-test/suite/innodb. --- mysql-test/{ => suite/innodb}/r/innodb-autoinc-optimize.result | 0 mysql-test/{ => suite/innodb}/r/innodb-ucs2.result | 0 .../{ => suite/innodb}/r/innodb_autoinc_lock_mode_zero.result | 0 mysql-test/{ => suite/innodb}/r/innodb_bug30919.result | 0 mysql-test/{ => suite/innodb}/r/innodb_bug42419.result | 0 mysql-test/{ => suite/innodb}/r/innodb_gis.result | 0 mysql-test/{ => suite/innodb}/r/innodb_lock_wait_timeout_1.result | 0 mysql-test/{ => suite/innodb}/r/innodb_mysql.result | 0 mysql-test/{ => suite/innodb}/r/innodb_mysql_rbk.result | 0 mysql-test/{ => suite/innodb}/r/innodb_notembedded.result | 0 mysql-test/{ => suite/innodb}/r/innodb_timeout_rollback.result | 0 mysql-test/{ => suite/innodb}/t/innodb-autoinc-optimize.test | 0 mysql-test/{ => suite/innodb}/t/innodb-ucs2.test | 0 .../{ => suite/innodb}/t/innodb_autoinc_lock_mode_zero-master.opt | 0 .../{ => suite/innodb}/t/innodb_autoinc_lock_mode_zero.test | 0 mysql-test/{ => suite/innodb}/t/innodb_bug30919-master.opt | 0 mysql-test/{ => suite/innodb}/t/innodb_bug30919.test | 0 mysql-test/{ => suite/innodb}/t/innodb_bug42419.test | 0 mysql-test/{ => suite/innodb}/t/innodb_gis.test | 0 .../{ => suite/innodb}/t/innodb_lock_wait_timeout_1-master.opt | 0 mysql-test/{ => suite/innodb}/t/innodb_lock_wait_timeout_1.test | 0 mysql-test/{ => suite/innodb}/t/innodb_mysql-master.opt | 0 mysql-test/{ => suite/innodb}/t/innodb_mysql.test | 0 mysql-test/{ => suite/innodb}/t/innodb_mysql_rbk-master.opt | 0 mysql-test/{ => suite/innodb}/t/innodb_mysql_rbk.test | 0 mysql-test/{ => suite/innodb}/t/innodb_notembedded.test | 0 .../{ => suite/innodb}/t/innodb_timeout_rollback-master.opt | 0 mysql-test/{ => suite/innodb}/t/innodb_timeout_rollback.test | 0 28 files changed, 0 insertions(+), 0 deletions(-) rename mysql-test/{ => suite/innodb}/r/innodb-autoinc-optimize.result (100%) rename mysql-test/{ => suite/innodb}/r/innodb-ucs2.result (100%) rename mysql-test/{ => suite/innodb}/r/innodb_autoinc_lock_mode_zero.result (100%) rename mysql-test/{ => suite/innodb}/r/innodb_bug30919.result (100%) rename mysql-test/{ => suite/innodb}/r/innodb_bug42419.result (100%) rename mysql-test/{ => suite/innodb}/r/innodb_gis.result (100%) rename mysql-test/{ => suite/innodb}/r/innodb_lock_wait_timeout_1.result (100%) rename mysql-test/{ => suite/innodb}/r/innodb_mysql.result (100%) rename mysql-test/{ => suite/innodb}/r/innodb_mysql_rbk.result (100%) rename mysql-test/{ => suite/innodb}/r/innodb_notembedded.result (100%) rename mysql-test/{ => suite/innodb}/r/innodb_timeout_rollback.result (100%) rename mysql-test/{ => suite/innodb}/t/innodb-autoinc-optimize.test (100%) rename mysql-test/{ => suite/innodb}/t/innodb-ucs2.test (100%) rename mysql-test/{ => suite/innodb}/t/innodb_autoinc_lock_mode_zero-master.opt (100%) rename mysql-test/{ => suite/innodb}/t/innodb_autoinc_lock_mode_zero.test (100%) rename mysql-test/{ => suite/innodb}/t/innodb_bug30919-master.opt (100%) rename mysql-test/{ => suite/innodb}/t/innodb_bug30919.test (100%) rename mysql-test/{ => suite/innodb}/t/innodb_bug42419.test (100%) rename mysql-test/{ => suite/innodb}/t/innodb_gis.test (100%) rename mysql-test/{ => suite/innodb}/t/innodb_lock_wait_timeout_1-master.opt (100%) rename mysql-test/{ => suite/innodb}/t/innodb_lock_wait_timeout_1.test (100%) rename mysql-test/{ => suite/innodb}/t/innodb_mysql-master.opt (100%) rename mysql-test/{ => suite/innodb}/t/innodb_mysql.test (100%) rename mysql-test/{ => suite/innodb}/t/innodb_mysql_rbk-master.opt (100%) rename mysql-test/{ => suite/innodb}/t/innodb_mysql_rbk.test (100%) rename mysql-test/{ => suite/innodb}/t/innodb_notembedded.test (100%) rename mysql-test/{ => suite/innodb}/t/innodb_timeout_rollback-master.opt (100%) rename mysql-test/{ => suite/innodb}/t/innodb_timeout_rollback.test (100%) diff --git a/mysql-test/r/innodb-autoinc-optimize.result b/mysql-test/suite/innodb/r/innodb-autoinc-optimize.result similarity index 100% rename from mysql-test/r/innodb-autoinc-optimize.result rename to mysql-test/suite/innodb/r/innodb-autoinc-optimize.result diff --git a/mysql-test/r/innodb-ucs2.result b/mysql-test/suite/innodb/r/innodb-ucs2.result similarity index 100% rename from mysql-test/r/innodb-ucs2.result rename to mysql-test/suite/innodb/r/innodb-ucs2.result diff --git a/mysql-test/r/innodb_autoinc_lock_mode_zero.result b/mysql-test/suite/innodb/r/innodb_autoinc_lock_mode_zero.result similarity index 100% rename from mysql-test/r/innodb_autoinc_lock_mode_zero.result rename to mysql-test/suite/innodb/r/innodb_autoinc_lock_mode_zero.result diff --git a/mysql-test/r/innodb_bug30919.result b/mysql-test/suite/innodb/r/innodb_bug30919.result similarity index 100% rename from mysql-test/r/innodb_bug30919.result rename to mysql-test/suite/innodb/r/innodb_bug30919.result diff --git a/mysql-test/r/innodb_bug42419.result b/mysql-test/suite/innodb/r/innodb_bug42419.result similarity index 100% rename from mysql-test/r/innodb_bug42419.result rename to mysql-test/suite/innodb/r/innodb_bug42419.result diff --git a/mysql-test/r/innodb_gis.result b/mysql-test/suite/innodb/r/innodb_gis.result similarity index 100% rename from mysql-test/r/innodb_gis.result rename to mysql-test/suite/innodb/r/innodb_gis.result diff --git a/mysql-test/r/innodb_lock_wait_timeout_1.result b/mysql-test/suite/innodb/r/innodb_lock_wait_timeout_1.result similarity index 100% rename from mysql-test/r/innodb_lock_wait_timeout_1.result rename to mysql-test/suite/innodb/r/innodb_lock_wait_timeout_1.result diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/suite/innodb/r/innodb_mysql.result similarity index 100% rename from mysql-test/r/innodb_mysql.result rename to mysql-test/suite/innodb/r/innodb_mysql.result diff --git a/mysql-test/r/innodb_mysql_rbk.result b/mysql-test/suite/innodb/r/innodb_mysql_rbk.result similarity index 100% rename from mysql-test/r/innodb_mysql_rbk.result rename to mysql-test/suite/innodb/r/innodb_mysql_rbk.result diff --git a/mysql-test/r/innodb_notembedded.result b/mysql-test/suite/innodb/r/innodb_notembedded.result similarity index 100% rename from mysql-test/r/innodb_notembedded.result rename to mysql-test/suite/innodb/r/innodb_notembedded.result diff --git a/mysql-test/r/innodb_timeout_rollback.result b/mysql-test/suite/innodb/r/innodb_timeout_rollback.result similarity index 100% rename from mysql-test/r/innodb_timeout_rollback.result rename to mysql-test/suite/innodb/r/innodb_timeout_rollback.result diff --git a/mysql-test/t/innodb-autoinc-optimize.test b/mysql-test/suite/innodb/t/innodb-autoinc-optimize.test similarity index 100% rename from mysql-test/t/innodb-autoinc-optimize.test rename to mysql-test/suite/innodb/t/innodb-autoinc-optimize.test diff --git a/mysql-test/t/innodb-ucs2.test b/mysql-test/suite/innodb/t/innodb-ucs2.test similarity index 100% rename from mysql-test/t/innodb-ucs2.test rename to mysql-test/suite/innodb/t/innodb-ucs2.test diff --git a/mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt b/mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero-master.opt similarity index 100% rename from mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt rename to mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero-master.opt diff --git a/mysql-test/t/innodb_autoinc_lock_mode_zero.test b/mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero.test similarity index 100% rename from mysql-test/t/innodb_autoinc_lock_mode_zero.test rename to mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero.test diff --git a/mysql-test/t/innodb_bug30919-master.opt b/mysql-test/suite/innodb/t/innodb_bug30919-master.opt similarity index 100% rename from mysql-test/t/innodb_bug30919-master.opt rename to mysql-test/suite/innodb/t/innodb_bug30919-master.opt diff --git a/mysql-test/t/innodb_bug30919.test b/mysql-test/suite/innodb/t/innodb_bug30919.test similarity index 100% rename from mysql-test/t/innodb_bug30919.test rename to mysql-test/suite/innodb/t/innodb_bug30919.test diff --git a/mysql-test/t/innodb_bug42419.test b/mysql-test/suite/innodb/t/innodb_bug42419.test similarity index 100% rename from mysql-test/t/innodb_bug42419.test rename to mysql-test/suite/innodb/t/innodb_bug42419.test diff --git a/mysql-test/t/innodb_gis.test b/mysql-test/suite/innodb/t/innodb_gis.test similarity index 100% rename from mysql-test/t/innodb_gis.test rename to mysql-test/suite/innodb/t/innodb_gis.test diff --git a/mysql-test/t/innodb_lock_wait_timeout_1-master.opt b/mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1-master.opt similarity index 100% rename from mysql-test/t/innodb_lock_wait_timeout_1-master.opt rename to mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1-master.opt diff --git a/mysql-test/t/innodb_lock_wait_timeout_1.test b/mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1.test similarity index 100% rename from mysql-test/t/innodb_lock_wait_timeout_1.test rename to mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1.test diff --git a/mysql-test/t/innodb_mysql-master.opt b/mysql-test/suite/innodb/t/innodb_mysql-master.opt similarity index 100% rename from mysql-test/t/innodb_mysql-master.opt rename to mysql-test/suite/innodb/t/innodb_mysql-master.opt diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/suite/innodb/t/innodb_mysql.test similarity index 100% rename from mysql-test/t/innodb_mysql.test rename to mysql-test/suite/innodb/t/innodb_mysql.test diff --git a/mysql-test/t/innodb_mysql_rbk-master.opt b/mysql-test/suite/innodb/t/innodb_mysql_rbk-master.opt similarity index 100% rename from mysql-test/t/innodb_mysql_rbk-master.opt rename to mysql-test/suite/innodb/t/innodb_mysql_rbk-master.opt diff --git a/mysql-test/t/innodb_mysql_rbk.test b/mysql-test/suite/innodb/t/innodb_mysql_rbk.test similarity index 100% rename from mysql-test/t/innodb_mysql_rbk.test rename to mysql-test/suite/innodb/t/innodb_mysql_rbk.test diff --git a/mysql-test/t/innodb_notembedded.test b/mysql-test/suite/innodb/t/innodb_notembedded.test similarity index 100% rename from mysql-test/t/innodb_notembedded.test rename to mysql-test/suite/innodb/t/innodb_notembedded.test diff --git a/mysql-test/t/innodb_timeout_rollback-master.opt b/mysql-test/suite/innodb/t/innodb_timeout_rollback-master.opt similarity index 100% rename from mysql-test/t/innodb_timeout_rollback-master.opt rename to mysql-test/suite/innodb/t/innodb_timeout_rollback-master.opt diff --git a/mysql-test/t/innodb_timeout_rollback.test b/mysql-test/suite/innodb/t/innodb_timeout_rollback.test similarity index 100% rename from mysql-test/t/innodb_timeout_rollback.test rename to mysql-test/suite/innodb/t/innodb_timeout_rollback.test From 745d2141baddb82896b9138f5c93abefff3df86c Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Thu, 3 Jun 2010 09:54:37 -0300 Subject: [PATCH 123/461] Don't enable safemalloc for valgrind builds, it's too slow. --- BUILD/SETUP.sh | 2 +- BUILD/build_mccge.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh index 0bc16f120e5..626f932e045 100755 --- a/BUILD/SETUP.sh +++ b/BUILD/SETUP.sh @@ -122,7 +122,7 @@ fi # Override -DFORCE_INIT_OF_VARS from debug_cflags. It enables the macro # LINT_INIT(), which is only useful for silencing spurious warnings # of static analysis tools. We want LINT_INIT() to be a no-op in Valgrind. -valgrind_flags="-UFORCE_INIT_OF_VARS -DHAVE_purify " +valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify " valgrind_flags="$valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max" valgrind_configs="--with-valgrind" # diff --git a/BUILD/build_mccge.sh b/BUILD/build_mccge.sh index 43ca117fb78..eb37323c570 100755 --- a/BUILD/build_mccge.sh +++ b/BUILD/build_mccge.sh @@ -938,7 +938,7 @@ set_up_ccache() set_valgrind_flags() { if test "x$valgrind_flag" = "xyes" ; then - loc_valgrind_flags="-UFORCE_INIT_OF_VARS -DHAVE_purify " + loc_valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify " loc_valgrind_flags="$loc_valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max" compiler_flags="$compiler_flags $loc_valgrind_flags" with_flags="$with_flags --with-valgrind" From d80f8c07d648ffa5099554da354f43add058d8e4 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Thu, 3 Jun 2010 06:44:48 -0700 Subject: [PATCH 124/461] Remove unncessary name comapre in innobase_get_mysql_key_number_for_index() introduced in bug fix #53592, since dict_table_t can sufficiently unique identify the the table. --- storage/innodb_plugin/handler/ha_innodb.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index c65ba3163fc..34249b7718a 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -7420,8 +7420,7 @@ innobase_get_mysql_key_number_for_index( /* If index does not belong to the table of share structure. Search index->table instead */ - if (index->table != ib_table - && strcmp(index->table->name, share->table_name)) { + if (index->table != ib_table) { i = 0; ind = dict_table_get_first_index(index->table); From 5bc84421f2ae5339914f4563f156877f8d50ca31 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 3 Jun 2010 16:03:17 +0200 Subject: [PATCH 125/461] Raise version number after cloning 5.1.48 --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index a2a3a6196fc..27b6617f6bc 100644 --- a/configure.in +++ b/configure.in @@ -12,7 +12,7 @@ dnl dnl When changing the major version number please also check the switch dnl statement in mysqlbinlog::check_master_version(). You may also need dnl to update version.c in ndb. -AC_INIT([MySQL Server], [5.1.48], [], [mysql]) +AC_INIT([MySQL Server], [5.1.49], [], [mysql]) AC_CONFIG_SRCDIR([sql/mysqld.cc]) AC_CANONICAL_SYSTEM From 1b61dcf434a042abaa5f1455351ea3e149177fd1 Mon Sep 17 00:00:00 2001 From: Luis Soares Date: Fri, 4 Jun 2010 00:45:07 +0100 Subject: [PATCH 126/461] BUG#53893: RBR: nullable unique key can lead to out-of-sync slave Post-push fix. There was a valgrind issue on the loop that checks whether there are NULL fields in the UNIQUE KEY or not. In detail, for the last iteration the server may read out of the key_part array boundaries, making valgrind to output warnings. We fix this by correcting the loop, ie, moving the part that reads from the key_part to be inside the loop statement block. This way the assignment is protected by the loop condition. --- sql/log_event.cc | 9 +++------ sql/log_event_old.cc | 9 +++------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/sql/log_event.cc b/sql/log_event.cc index c07bb573188..9c6de5bb42e 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -9029,14 +9029,11 @@ int Rows_log_event::find_row(const Relay_log_info *rli) BI image that is null and part of UNNI. */ bool null_found= FALSE; - - for (uint i=0, fieldnr= keyinfo->key_part[i].fieldnr - 1 ; - (i < keyinfo->key_parts) && !null_found ; - i++, fieldnr= keyinfo->key_part[i].fieldnr - 1) + for (uint i=0; i < keyinfo->key_parts && !null_found; i++) { + uint fieldnr= keyinfo->key_part[i].fieldnr - 1; Field **f= table->field+fieldnr; - if ((*f)->is_null()) - null_found= TRUE; + null_found= (*f)->is_null(); } if (!null_found) diff --git a/sql/log_event_old.cc b/sql/log_event_old.cc index 5f2d55d6477..8376eb6c584 100644 --- a/sql/log_event_old.cc +++ b/sql/log_event_old.cc @@ -2442,14 +2442,11 @@ int Old_rows_log_event::find_row(const Relay_log_info *rli) BI image that is null and part of UNNI. */ bool null_found= FALSE; - - for (uint i=0, fieldnr= keyinfo->key_part[i].fieldnr - 1 ; - (i < keyinfo->key_parts) && !null_found ; - i++, fieldnr= keyinfo->key_part[i].fieldnr - 1) + for (uint i=0; i < keyinfo->key_parts && !null_found; i++) { + uint fieldnr= keyinfo->key_part[i].fieldnr - 1; Field **f= table->field+fieldnr; - if ((*f)->is_null()) - null_found= TRUE; + null_found= (*f)->is_null(); } if (!null_found) From 517f586762a5c775f46668fedfa10c3c802e7f18 Mon Sep 17 00:00:00 2001 From: "Horst.Hunger" Date: Fri, 4 Jun 2010 10:53:18 +0200 Subject: [PATCH 127/461] Patch for bug#52913: Inserted check if mysqlhotcopy script is existing as requested by review. DIsabled the test until bug#54129 will befixed. --- mysql-test/include/mysqlhotcopy.inc | 5 +++++ mysql-test/t/disabled.def | 2 ++ 2 files changed, 7 insertions(+) diff --git a/mysql-test/include/mysqlhotcopy.inc b/mysql-test/include/mysqlhotcopy.inc index 585f8c13e74..b3fd5e47179 100644 --- a/mysql-test/include/mysqlhotcopy.inc +++ b/mysql-test/include/mysqlhotcopy.inc @@ -5,6 +5,11 @@ --source include/not_windows.inc --source include/not_embedded.inc +if ($MYSQLHOTCOPY) +{ + die due to missing mysqlhotcopy tool; +} + let $MYSQLD_DATADIR= `SELECT @@datadir`; --disable_warnings DROP DATABASE IF EXISTS hotcopy_test; diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 03fb781b34f..cede26f555a 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -12,3 +12,5 @@ kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild. query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically partition_innodb_plugin : Bug#53307 2010-04-30 VasilDimov valgrind warnings +main.mysqlhotcopy_myisam : bug#54129 2010-06-04 Horst +main.mysqlhotcopy_archive: bug#54129 2010-06-04 Horst From 121e04732ea3b5edf36335f827cc5bcb08fb7665 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 4 Jun 2010 16:21:19 +0300 Subject: [PATCH 128/461] Bug #52315: utc_date() crashes when system time > year 2037 Some of the server implementations don't support dates later than 2038 due to the internal time type being 32 bit. Added checks so that the server will refuse dates that cannot be handled by either throwing an error when setting date at runtime or by refusing to start or shutting down the server if the system date cannot be stored in my_time_t. --- mysql-test/r/variables.result | 8 ++++++++ mysql-test/t/variables.test | 14 ++++++++++++++ sql/mysqld.cc | 8 ++++++++ sql/set_var.cc | 18 +++++++++++++++++- sql/set_var.h | 1 + sql/sql_class.h | 5 +++++ sql/sql_parse.cc | 13 +++++++++++++ 7 files changed, 66 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result index e24117187d2..297445a70cb 100644 --- a/mysql-test/r/variables.result +++ b/mysql-test/r/variables.result @@ -910,3 +910,11 @@ set global thread_cache_size =@my_thread_cache_size; # Test 'myisam_mmap_size' option is not dynamic SET @@myisam_mmap_size= 500M; ERROR HY000: Variable 'myisam_mmap_size' is a read only variable +# +# Bug #52315: utc_date() crashes when system time > year 2037 +# +SET TIMESTAMP=2*1024*1024*1024; +#Should not crash +SELECT UTC_DATE(); +SET TIMESTAMP=DEFAULT; +End of 5.0 tests diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test index cff6a5a0767..73e5bbd9d87 100644 --- a/mysql-test/t/variables.test +++ b/mysql-test/t/variables.test @@ -771,3 +771,17 @@ set global thread_cache_size =@my_thread_cache_size; --echo # Test 'myisam_mmap_size' option is not dynamic --error ER_INCORRECT_GLOBAL_LOCAL_VAR SET @@myisam_mmap_size= 500M; + +--echo # +--echo # Bug #52315: utc_date() crashes when system time > year 2037 +--echo # + +--error 0, ER_UNKNOWN_ERROR +SET TIMESTAMP=2*1024*1024*1024; +--echo #Should not crash +--disable_result_log +SELECT UTC_DATE(); +--enable_result_log +SET TIMESTAMP=DEFAULT; + +--echo End of 5.0 tests diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 4b0739cc2d2..bda4e796ce2 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2835,6 +2835,14 @@ static int init_common_variables(const char *conf_file_name, int argc, max_system_variables.pseudo_thread_id= (ulong)~0; server_start_time= flush_status_time= time((time_t*) 0); + + /* TODO: remove this when my_time_t is 64 bit compatible */ + if (server_start_time >= (time_t) MY_TIME_T_MAX) + { + sql_print_error("This MySQL server doesn't support dates later then 2038"); + return 1; + } + if (init_thread_environment()) return 1; mysql_init_variables(); diff --git a/sql/set_var.cc b/sql/set_var.cc index 8e032d44a62..16a22f129e6 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -2712,10 +2712,26 @@ int set_var_collation_client::update(THD *thd) /****************************************************************************/ +bool sys_var_timestamp::check(THD *thd, set_var *var) +{ + time_t val; + var->save_result.ulonglong_value= var->value->val_int(); + val= (time_t) var->save_result.ulonglong_value; + if (val < (time_t) MY_TIME_T_MIN || val > (time_t) MY_TIME_T_MAX) + { + my_message(ER_UNKNOWN_ERROR, + "This version of MySQL doesn't support dates later than 2038", + MYF(0)); + return TRUE; + } + return FALSE; +} + + bool sys_var_timestamp::update(THD *thd, set_var *var) { thd->set_time((time_t) var->save_result.ulonglong_value); - return 0; + return FALSE; } diff --git a/sql/set_var.h b/sql/set_var.h index 5fb883e8b86..9945c69cac0 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -536,6 +536,7 @@ class sys_var_timestamp :public sys_var { public: sys_var_timestamp(const char *name_arg) :sys_var(name_arg) {} + bool check(THD *thd, set_var *var); bool update(THD *thd, set_var *var); void set_default(THD *thd, enum_var_type type); bool check_type(enum_var_type type) { return type == OPT_GLOBAL; } diff --git a/sql/sql_class.h b/sql/sql_class.h index ac058bca4f9..c195c8be864 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1707,6 +1707,11 @@ public: inline void end_time() { safe_time(&start_time); } inline void set_time(time_t t) { time_after_lock=start_time=user_time=t; } inline void lock_time() { safe_time(&time_after_lock); } + /*TODO: this will be obsolete when we have support for 64 bit my_time_t */ + inline bool is_valid_time() + { + return (start_time < (time_t) MY_TIME_T_MAX); + } inline void insert_id(ulonglong id_arg) { last_insert_id= id_arg; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 381aa0cf054..d9e1ea9e4e7 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1771,6 +1771,19 @@ bool dispatch_command(enum enum_server_command command, THD *thd, thd->enable_slow_log= TRUE; thd->lex->sql_command= SQLCOM_END; /* to avoid confusing VIEW detectors */ thd->set_time(); + if (!thd->is_valid_time()) + { + /* + If the time has got past 2038 we need to shut this server down + We do this by making sure every command is a shutdown and we + have enough privileges to shut the server down + + TODO: remove this when we have full 64 bit my_time_t support + */ + thd->security_ctx->master_access|= SHUTDOWN_ACL; + command= COM_SHUTDOWN; + } + VOID(pthread_mutex_lock(&LOCK_thread_count)); thd->query_id= global_query_id; From 9a381264978344ed4f053b9d780761b3607ff5bf Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Fri, 4 Jun 2010 21:58:41 +0400 Subject: [PATCH 129/461] Fix for bug #53912: Fails to build from source NET::skip_big_packet isn't defined for the embedded server, hide it in such a case. sql/sql_connect.cc: Fix for bug #53912: Fails to build from source - hide net.skip_big_packet for the embedded server, as it isn't defined there. --- sql/sql_connect.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc index 2039c7f7449..28c1acc4716 100644 --- a/sql/sql_connect.cc +++ b/sql/sql_connect.cc @@ -471,6 +471,7 @@ check_user(THD *thd, enum enum_server_command command, } my_ok(thd); thd->password= test(passwd_len); // remember for error messages +#ifndef EMBEDDED_LIBRARY /* Allow the network layer to skip big packets. Although a malicious authenticated session might use this to trick the server to read @@ -478,6 +479,7 @@ check_user(THD *thd, enum enum_server_command command, that needs to be preserved as to not break backwards compatibility. */ thd->net.skip_big_packet= TRUE; +#endif /* Ready to handle queries */ DBUG_RETURN(0); } From df088b8de24b4cac58fa2b9eed2cafeb9d5abfd6 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Mon, 7 Jun 2010 12:49:52 +0300 Subject: [PATCH 130/461] Addendum to the fix for bug #52315: need to set a proper shutdown type when an out-of-supported-range date is detected. --- sql/sql_parse.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index d9e1ea9e4e7..b730e2585ae 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2243,8 +2243,12 @@ bool dispatch_command(enum enum_server_command command, THD *thd, SHUTDOWN_DEFAULT is 0. If client is >= 4.1.3, the shutdown level is in packet[0]. */ - enum mysql_enum_shutdown_level level= - (enum mysql_enum_shutdown_level) (uchar) packet[0]; + enum mysql_enum_shutdown_level level; + if (!thd->is_valid_time()) + level= SHUTDOWN_DEFAULT; + else + level= (enum mysql_enum_shutdown_level) (uchar) packet[0]; + DBUG_PRINT("quit",("Got shutdown command for level %u", level)); if (level == SHUTDOWN_DEFAULT) level= SHUTDOWN_WAIT_ALL_BUFFERS; // soon default will be configurable From 66c621ba3ba8c7c179a8328b06565bdd40296aa5 Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Tue, 8 Jun 2010 10:22:40 +0400 Subject: [PATCH 131/461] Bug#53933 crash when using uncacheable subquery in the having clause of outer query The problem is in the Item_func_isnull::update_used_tables() function, bracket is at the wrong place. Because of that isnull item erroneously is treated as const item. The fix is to set brackets in the right place. mysql-test/r/func_isnull.result: test case mysql-test/t/func_isnull.test: test case sql/item_cmpfunc.h: set brackets in the right place. --- mysql-test/r/func_isnull.result | 14 ++++++++++++++ mysql-test/t/func_isnull.test | 15 +++++++++++++++ sql/item_cmpfunc.h | 4 ++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/func_isnull.result b/mysql-test/r/func_isnull.result index 20ddc87ee78..c1f5849c091 100644 --- a/mysql-test/r/func_isnull.result +++ b/mysql-test/r/func_isnull.result @@ -5,3 +5,17 @@ flush tables; select * from t1 where isnull(to_days(mydate)); id mydate drop table t1; +# +# Bug#53933 crash when using uncacheable subquery in the having clause of outer query +# +CREATE TABLE t1 (f1 INT); +INSERT INTO t1 VALUES (0),(0); +SELECT ISNULL((SELECT GET_LOCK('Bug#53933', 0) FROM t1 GROUP BY f1)) AS f2 +FROM t1 GROUP BY f1 HAVING f2 = f2; +f2 +0 +SELECT RELEASE_LOCK('Bug#53933'); +RELEASE_LOCK('Bug#53933') +1 +DROP TABLE t1; +End of 5.0 tests diff --git a/mysql-test/t/func_isnull.test b/mysql-test/t/func_isnull.test index 6218efb882f..d3ad4614998 100644 --- a/mysql-test/t/func_isnull.test +++ b/mysql-test/t/func_isnull.test @@ -13,3 +13,18 @@ select * from t1 where isnull(to_days(mydate)); drop table t1; # End of 4.1 tests + +--echo # +--echo # Bug#53933 crash when using uncacheable subquery in the having clause of outer query +--echo # + +CREATE TABLE t1 (f1 INT); +INSERT INTO t1 VALUES (0),(0); + +SELECT ISNULL((SELECT GET_LOCK('Bug#53933', 0) FROM t1 GROUP BY f1)) AS f2 +FROM t1 GROUP BY f1 HAVING f2 = f2; +SELECT RELEASE_LOCK('Bug#53933'); + +DROP TABLE t1; + +--echo End of 5.0 tests diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 89bc6f9570b..233922fe2f8 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -1209,8 +1209,8 @@ public: else { args[0]->update_used_tables(); - if ((const_item_cache= !(used_tables_cache= args[0]->used_tables())) && - !with_subselect) + if ((const_item_cache= !(used_tables_cache= args[0]->used_tables()) && + !with_subselect)) { /* Remember if the value is always NULL or never NULL */ cached_value= (longlong) args[0]->is_null(); From cf2e7c770cbf5405b65fb4e73b76bd3592c3234f Mon Sep 17 00:00:00 2001 From: Kristofer Pettersson Date: Tue, 8 Jun 2010 10:58:19 +0200 Subject: [PATCH 132/461] Bug#53191 Lock_time in slow log is negative when logging stored routines Logging slow stored procedures caused the slow log to write very large lock times. The lock times was a result of a negative number being cast to an unsigned integer. The reason the lock time appeard negative was because one of the measurements points was reset after execution causing it to change order with the start time of the statement. This bug is related to bug 47905 which in turn was introduced because of a joint fix for 12480,12481,12482 and 11587. The fix is to only reset the start_time before any statement execution in a SP while not resetting start_utime or utime_after_lock which are used for measuring the performance of the SP. Start_time is used to set the timestamp on the replication event which controlls how the slave interprets time functions like NOW(). --- .../sys_vars/r/slow_query_log_func.result | 73 ++++++++++++++++ .../suite/sys_vars/t/slow_query_log_func.test | 87 ++++++++++++++++++- sql/sp_head.cc | 45 ++++++++-- 3 files changed, 196 insertions(+), 9 deletions(-) diff --git a/mysql-test/suite/sys_vars/r/slow_query_log_func.result b/mysql-test/suite/sys_vars/r/slow_query_log_func.result index eb7efe4a004..fb650399597 100644 --- a/mysql-test/suite/sys_vars/r/slow_query_log_func.result +++ b/mysql-test/suite/sys_vars/r/slow_query_log_func.result @@ -36,5 +36,78 @@ SELECT count(*) > 0 FROM mysql.slow_log; count(*) > 0 1 DROP PROCEDURE p_test; +Bug53191 Lock_time in slow log is negative when logging stored routines +TRUNCATE mysql.slow_log; +CREATE TABLE t1 (c0 INT PRIMARY KEY AUTO_INCREMENT, c1 TIMESTAMP, c2 TIMESTAMP); +CREATE FUNCTION f_slow_now() RETURNS TIMESTAMP +BEGIN +DO SLEEP(2); +RETURN NOW(); +END// +CREATE FUNCTION f_slow_current_time() RETURNS TIME +BEGIN +DO SLEEP(2); +RETURN CURRENT_TIME(); +END +// +INSERT INTO t1 (c1,c2) VALUES (now(), f_slow_now())// +CREATE TRIGGER tf_before BEFORE INSERT ON t1 +FOR EACH ROW BEGIN +SET new.c2 = f_slow_now(); +END// +CREATE PROCEDURE p1() +BEGIN +INSERT INTO t1 (c1,c2) values (now(),now()); +DO SLEEP(2); +INSERT INTO t1 (c1,c2) values (now(),now()); +end// +INSERT INTO t1 (c1,c2) VALUES (now(), now()); +CALL p1(); +SELECT c1-c2 FROM t1; +c1-c2 +0 +0 +0 +0 +*** There shouldn't less than 1 s difference between each row +SELECT t1.c1-self.c1 > 1 FROM t1, t1 as self WHERE t1.c0=self.c0+1 ORDER BY t1.c0; +t1.c1-self.c1 > 1 +1 +1 +1 +DROP TRIGGER tf_before; +DROP FUNCTION f_slow_now; +DROP FUNCTION f_slow_current_time; +DROP TABLE t1; +DROP TABLE IF EXISTS t1; +Warnings: +Note 1051 Unknown table 't1' +CREATE TABLE t1(c1 INT) ENGINE=MyISAM; +DROP PROCEDURE IF EXISTS p1; +CREATE PROCEDURE p1() +BEGIN +INSERT INTO t1 VALUES (1); +SELECT COUNT(*) FROM t1 WHERE c1= 1; +UPDATE t1 SET c1=c1*2; +END| +Connection 2 +LOCK TABLE t1 WRITE; +Back to default connection +CALL p1(); +Wait three seconds and unlock the table +UNLOCK TABLES; +COUNT(*) +1 +Slow log: +**** 1 == we have slow log entries +SELECT count(*) > 0 FROM mysql.slow_log; +count(*) > 0 +1 +**** 0 == None of the entries have a lock time greater than 10 s +SELECT count(*) FROM mysql.slow_log WHERE lock_time > 10; +count(*) +0 +DROP TABLE t1; +DROP PROCEDURE p1; SET @@global.log_output = @global_log_output; SET @global.slow_query_log = @global_slow_query_log; diff --git a/mysql-test/suite/sys_vars/t/slow_query_log_func.test b/mysql-test/suite/sys_vars/t/slow_query_log_func.test index 250d5210c46..dd202ec20ff 100644 --- a/mysql-test/suite/sys_vars/t/slow_query_log_func.test +++ b/mysql-test/suite/sys_vars/t/slow_query_log_func.test @@ -51,8 +51,93 @@ CALL p_test(); SELECT count(*) > 0 FROM mysql.slow_log; DROP PROCEDURE p_test; +#============================================================================== +--echo Bug53191 Lock_time in slow log is negative when logging stored routines +#============================================================================== +TRUNCATE mysql.slow_log; +connect (con2,localhost,root,,); +connection default; -#restore +CREATE TABLE t1 (c0 INT PRIMARY KEY AUTO_INCREMENT, c1 TIMESTAMP, c2 TIMESTAMP); +delimiter //; +CREATE FUNCTION f_slow_now() RETURNS TIMESTAMP +BEGIN + DO SLEEP(2); + RETURN NOW(); +END// + +CREATE FUNCTION f_slow_current_time() RETURNS TIME +BEGIN + DO SLEEP(2); + RETURN CURRENT_TIME(); +END +// + +INSERT INTO t1 (c1,c2) VALUES (now(), f_slow_now())// + +CREATE TRIGGER tf_before BEFORE INSERT ON t1 +FOR EACH ROW BEGIN + SET new.c2 = f_slow_now(); +END// + +CREATE PROCEDURE p1() +BEGIN + INSERT INTO t1 (c1,c2) values (now(),now()); + DO SLEEP(2); + INSERT INTO t1 (c1,c2) values (now(),now()); +end// + +delimiter ;// + +INSERT INTO t1 (c1,c2) VALUES (now(), now()); +CALL p1(); + +SELECT c1-c2 FROM t1; +--echo *** There shouldn't less than 1 s difference between each row +SELECT t1.c1-self.c1 > 1 FROM t1, t1 as self WHERE t1.c0=self.c0+1 ORDER BY t1.c0; + +DROP TRIGGER tf_before; +DROP FUNCTION f_slow_now; +DROP FUNCTION f_slow_current_time; +DROP TABLE t1; + +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(c1 INT) ENGINE=MyISAM; +DROP PROCEDURE IF EXISTS p1; +delimiter |; +CREATE PROCEDURE p1() +BEGIN + INSERT INTO t1 VALUES (1); + SELECT COUNT(*) FROM t1 WHERE c1= 1; + UPDATE t1 SET c1=c1*2; +END| +delimiter ;| + +--echo Connection 2 +connection con2; +LOCK TABLE t1 WRITE; + +--echo Back to default connection +connection default; +send CALL p1(); + +--echo Wait three seconds and unlock the table +connection con2; +sleep 3; +UNLOCK TABLES; +connection default; +reap; +--echo Slow log: +--echo **** 1 == we have slow log entries +SELECT count(*) > 0 FROM mysql.slow_log; +--echo **** 0 == None of the entries have a lock time greater than 10 s +SELECT count(*) FROM mysql.slow_log WHERE lock_time > 10; +disconnect con2; +DROP TABLE t1; +DROP PROCEDURE p1; + + +#================================================================== Restore SET @@global.log_output = @global_log_output; SET @global.slow_query_log = @global_slow_query_log; diff --git a/sql/sp_head.cc b/sql/sp_head.cc index cadda38053c..66d5eff5112 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -34,6 +34,36 @@ extern "C" uchar *sp_table_key(const uchar *ptr, size_t *plen, my_bool first); +/** + Helper function which operates on a THD object to set the query start_time to + the current time. + + @param[in, out] thd The session object + +*/ + +static void reset_start_time_for_sp(THD *thd) +{ + /* + Do nothing if the context is a trigger or function because time should be + constant during the execution of those. + */ + if (!thd->in_sub_stmt) + { + /* + First investigate if there is a cached time stamp + */ + if (thd->user_time) + { + thd->start_time= thd->user_time; + } + else + { + my_micro_time_and_time(&thd->start_time); + } + } +} + Item_result sp_map_result_type(enum enum_field_types type) { @@ -1225,10 +1255,13 @@ sp_head::execute(THD *thd) DBUG_PRINT("execute", ("Instruction %u", ip)); - /* Don't change NOW() in FUNCTION or TRIGGER */ - if (!thd->in_sub_stmt) - thd->set_time(); // Make current_time() et al work - + /* + We need to reset start_time to allow for time to flow inside a stored + procedure. This is only done for SP since time is suppose to be constant + during execution of triggers and functions. + */ + reset_start_time_for_sp(thd); + /* We have to set thd->stmt_arena before executing the instruction to store in the instruction free_list all new items, created @@ -1840,8 +1873,6 @@ sp_head::execute_procedure(THD *thd, List *args) { bool err_status= FALSE; uint params = m_pcont->context_var_count(); - /* Query start time may be reset in a multi-stmt SP; keep this for later. */ - ulonglong utime_before_sp_exec= thd->utime_after_lock; sp_rcontext *save_spcont, *octx; sp_rcontext *nctx = NULL; bool save_enable_slow_log= false; @@ -2034,8 +2065,6 @@ sp_head::execute_procedure(THD *thd, List *args) delete nctx; thd->spcont= save_spcont; - thd->utime_after_lock= utime_before_sp_exec; - DBUG_RETURN(err_status); } From 55acf60c93d61b0382093b4d0ad6f8a1e9cbe57a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 8 Jun 2010 14:40:55 +0300 Subject: [PATCH 133/461] buf_page_get_gen(): Pass file,line to rw_lock_x_lock(). --- storage/innodb_plugin/buf/buf0buf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/innodb_plugin/buf/buf0buf.c b/storage/innodb_plugin/buf/buf0buf.c index bc5e9814099..660686bac1e 100644 --- a/storage/innodb_plugin/buf/buf0buf.c +++ b/storage/innodb_plugin/buf/buf0buf.c @@ -2236,7 +2236,7 @@ wait_until_unfixed: block->page.buf_fix_count = 1; buf_block_set_io_fix(block, BUF_IO_READ); - rw_lock_x_lock(&block->lock); + rw_lock_x_lock_func(&block->lock, 0, file, line); UNIV_MEM_INVALID(bpage, sizeof *bpage); From 627c14d9e886d0bbef425d4f483cd697c6710bbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 8 Jun 2010 15:10:41 +0300 Subject: [PATCH 134/461] Bug#54009: Server crashes when data is selected from non backed up table for InnoDB plugin dict_load_table(): Pass the correct tablespace flags to fil_open_single_table_tablespace(). For ROW_FORMAT=COMPACT and REDUNDANT, the tablespace flags are 0. The table flags would be 0 or DICT_TF_COMPACT. --- storage/innodb_plugin/dict/dict0load.c | 1 + 1 file changed, 1 insertion(+) diff --git a/storage/innodb_plugin/dict/dict0load.c b/storage/innodb_plugin/dict/dict0load.c index 377818308c5..f86aa0848bd 100644 --- a/storage/innodb_plugin/dict/dict0load.c +++ b/storage/innodb_plugin/dict/dict0load.c @@ -973,6 +973,7 @@ err_exit: /* Try to open the tablespace */ if (!fil_open_single_table_tablespace( TRUE, space, + flags == DICT_TF_COMPACT ? 0 : flags & ~(~0 << DICT_TF_BITS), name)) { /* We failed to find a sensible tablespace file */ From 76a7cda35c2058c90fed090c4d577b0c49f3203f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 8 Jun 2010 15:12:15 +0300 Subject: [PATCH 135/461] Document Bug#54009 in the InnoDB Plugin ChangeLog. --- storage/innodb_plugin/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 20775b41ca8..fb577a04221 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-06-08 The InnoDB Team + + * dict/dict0load.c: + Fix Bug#54009 Server crashes when data is selected from non backed + up table for InnoDB plugin + 2010-06-02 The InnoDB Team * include/db0err.h, include/lock0lock.h, include/row0mysql.h, From e3d9ac526209ef00277e527e8476527d0e27e367 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Tue, 8 Jun 2010 10:36:47 -0300 Subject: [PATCH 136/461] Bug#34236: Various possibly related SSL crashes The problem was that the bundled yaSSL library was being built without thread safety support regardless of the thread safeness of the compoments linked with it. The solution is to enable yaSSL thread safety support if any component (server or client) is to be built with thread support. Also, generate new certificates for yaSSL's test suite. config/ac-macros/yassl.m4: Enable yaSSL thread safety if linking with the server or a thread safe client library. Avoids building a thread safe yaSSL when only building a non-thread safe client library. extra/yassl/CMakeLists.txt: Always enable for Windows builds. extra/yassl/certs/ca-cert.pem: New certificate, previous one expired. extra/yassl/certs/client-cert.der: New certificate, previous one expired. extra/yassl/certs/client-cert.pem: New certificate, previous one expired. extra/yassl/certs/dsa-cert.pem: New certificate, previous one expired. extra/yassl/certs/server-cert.pem: New certificate, previous one expired. extra/yassl/include/lock.hpp: Rename MULTI_THREAD to YASSL_THREAD_SAFE. extra/yassl/src/Makefile.am: Use CXXFLAGS to set thread related definitions as the lock header (lock.hpp) has no local dependencies. extra/yassl/src/lock.cpp: Rename MULTI_THREAD to YASSL_THREAD_SAFE. extra/yassl/taocrypt/CMakeLists.txt: Always enable for Windows builds. extra/yassl/taocrypt/benchmark/Makefile.am: Pass thread related CXXFLAGS. extra/yassl/taocrypt/src/Makefile.am: Pass thread related CXXFLAGS. extra/yassl/taocrypt/test/Makefile.am: Pass thread related CXXFLAGS. extra/yassl/taocrypt/test/memory.cpp: Rename MULTI_THREAD to YASSL_THREAD_SAFE. extra/yassl/testsuite/Makefile.am: Pass thread related CXXFLAGS. --- config/ac-macros/yassl.m4 | 6 +++ extra/yassl/CMakeLists.txt | 2 +- extra/yassl/certs/ca-cert.pem | 42 ++++++++++----------- extra/yassl/certs/client-cert.der | Bin 699 -> 699 bytes extra/yassl/certs/client-cert.pem | 18 ++++----- extra/yassl/certs/dsa-cert.pem | 18 ++++----- extra/yassl/certs/server-cert.pem | 20 +++++----- extra/yassl/include/lock.hpp | 6 +-- extra/yassl/src/Makefile.am | 2 +- extra/yassl/src/lock.cpp | 4 +- extra/yassl/taocrypt/CMakeLists.txt | 2 + extra/yassl/taocrypt/benchmark/Makefile.am | 2 +- extra/yassl/taocrypt/src/Makefile.am | 3 +- extra/yassl/taocrypt/test/Makefile.am | 2 +- extra/yassl/taocrypt/test/memory.cpp | 2 +- extra/yassl/testsuite/Makefile.am | 2 +- 16 files changed, 70 insertions(+), 61 deletions(-) diff --git a/config/ac-macros/yassl.m4 b/config/ac-macros/yassl.m4 index 967dcbf764a..f9bd2b06098 100644 --- a/config/ac-macros/yassl.m4 +++ b/config/ac-macros/yassl.m4 @@ -32,6 +32,12 @@ AC_DEFUN([MYSQL_CHECK_YASSL], [ ;; esac AC_SUBST([yassl_taocrypt_extra_cxxflags]) + # Thread safe check + yassl_thread_cxxflags="" + if test "$with_server" != "no" -o "$THREAD_SAFE_CLIENT" != "no"; then + yassl_thread_cxxflags="-DYASSL_THREAD_SAFE" + fi + AC_SUBST([yassl_thread_cxxflags]) # Link extra/yassl/include/openssl subdir to include/ yassl_h_ln_cmd="\$(LN) -s \$(top_srcdir)/extra/yassl/include/openssl openssl" AC_SUBST(yassl_h_ln_cmd) diff --git a/extra/yassl/CMakeLists.txt b/extra/yassl/CMakeLists.txt index 26e682cbb0c..981f679f785 100755 --- a/extra/yassl/CMakeLists.txt +++ b/extra/yassl/CMakeLists.txt @@ -17,7 +17,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extra/yassl/include ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL) -ADD_DEFINITIONS("-D_LIB -DYASSL_PREFIX") +ADD_DEFINITIONS("-D_LIB -DYASSL_PREFIX -DYASSL_THREAD_SAFE") SET(YASSL_SOURCES src/buffer.cpp src/cert_wrapper.cpp src/crypto_wrapper.cpp src/handshake.cpp src/lock.cpp src/log.cpp src/socket_wrapper.cpp src/ssl.cpp src/timer.cpp src/yassl_error.cpp diff --git a/extra/yassl/certs/ca-cert.pem b/extra/yassl/certs/ca-cert.pem index 981dd004fc6..e353d118712 100644 --- a/extra/yassl/certs/ca-cert.pem +++ b/extra/yassl/certs/ca-cert.pem @@ -5,49 +5,49 @@ Certificate: Signature Algorithm: md5WithRSAEncryption Issuer: C=US, ST=Oregon, L=Portland, O=sawtooth, CN=www.sawtooth-consulting.com/emailAddress=info@yassl.com Validity - Not Before: Jan 18 20:12:32 2005 GMT - Not After : Oct 15 20:12:32 2007 GMT + Not Before: Mar 7 03:10:11 2005 GMT + Not After : Apr 1 03:10:11 2046 GMT Subject: C=US, ST=Oregon, L=Portland, O=sawtooth, CN=www.sawtooth-consulting.com/emailAddress=info@yassl.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (512 bit) Modulus (512 bit): - 00:cf:2b:14:00:b0:3c:df:6f:9e:91:40:ec:c8:f6: - 90:b2:5b:b4:70:80:a5:a4:0a:73:c7:44:f3:2a:26: - c4:2f:f1:3a:f1:c3:c4:ac:fc:c3:d2:c3:bf:f5:d7: - 6a:38:42:ad:22:ab:c8:c4:4b:4c:1d:16:af:05:34: - 7d:79:97:5e:e1 + 00:ef:c1:e3:9a:3c:6e:6e:cb:26:6f:05:be:e0:cb: + 57:a0:4b:68:e6:1b:f9:95:db:01:92:aa:6e:a6:b5: + 2d:b1:2b:50:fd:db:13:f2:c5:d8:b8:4f:75:28:53: + 72:e8:e5:11:9d:bb:c3:4f:4f:09:fd:4c:e7:46:d5: + 1d:bb:35:02:af Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: - CB:0F:1F:E9:A2:76:71:C9:E6:E8:23:A6:C1:18:B7:CC:44:CF:B9:84 + 1D:EF:A1:B8:81:78:12:47:E8:57:06:08:74:18:F7:D3:AA:D8:F7:BD X509v3 Authority Key Identifier: - keyid:CB:0F:1F:E9:A2:76:71:C9:E6:E8:23:A6:C1:18:B7:CC:44:CF:B9:84 + keyid:1D:EF:A1:B8:81:78:12:47:E8:57:06:08:74:18:F7:D3:AA:D8:F7:BD DirName:/C=US/ST=Oregon/L=Portland/O=sawtooth/CN=www.sawtooth-consulting.com/emailAddress=info@yassl.com serial:00 X509v3 Basic Constraints: CA:TRUE Signature Algorithm: md5WithRSAEncryption - 27:f7:3d:fb:39:6f:73:a4:86:f3:a0:48:22:60:84:e9:5c:3d: - 28:36:05:16:44:98:07:87:e1:5d:b5:f3:a7:bc:33:5f:f4:29: - a9:5f:87:33:df:e6:8e:bd:e2:f3:0a:c8:00:69:ae:3d:41:47: - 03:ea:0b:4c:67:45:4b:ab:f3:39 + d9:77:e3:07:d9:2e:ec:2f:9b:8e:9e:ca:b4:00:0b:ef:c7:74: + cb:f4:f6:44:2f:02:75:17:a5:74:3e:26:b2:26:fd:1f:ab:3a: + df:d5:e3:05:14:08:d0:8c:1d:c9:3e:e1:59:6f:b3:38:5d:af: + 78:60:e3:c5:6a:69:96:80:7d:00 -----BEGIN CERTIFICATE----- MIIC7zCCApmgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBiTELMAkGA1UEBhMCVVMx DzANBgNVBAgTBk9yZWdvbjERMA8GA1UEBxMIUG9ydGxhbmQxETAPBgNVBAoTCHNh d3Rvb3RoMSQwIgYDVQQDExt3d3cuc2F3dG9vdGgtY29uc3VsdGluZy5jb20xHTAb -BgkqhkiG9w0BCQEWDmluZm9AeWFzc2wuY29tMB4XDTA1MDExODIwMTIzMloXDTA3 -MTAxNTIwMTIzMlowgYkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQIEwZPcmVnb24xETAP +BgkqhkiG9w0BCQEWDmluZm9AeWFzc2wuY29tMB4XDTA1MDMwNzAzMTAxMVoXDTQ2 +MDQwMTAzMTAxMVowgYkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQIEwZPcmVnb24xETAP BgNVBAcTCFBvcnRsYW5kMREwDwYDVQQKEwhzYXd0b290aDEkMCIGA1UEAxMbd3d3 LnNhd3Rvb3RoLWNvbnN1bHRpbmcuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHlh -c3NsLmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDPKxQAsDzfb56RQOzI9pCy -W7RwgKWkCnPHRPMqJsQv8Trxw8Ss/MPSw7/112o4Qq0iq8jES0wdFq8FNH15l17h -AgMBAAGjgekwgeYwHQYDVR0OBBYEFMsPH+midnHJ5ugjpsEYt8xEz7mEMIG2BgNV -HSMEga4wgauAFMsPH+midnHJ5ugjpsEYt8xEz7mEoYGPpIGMMIGJMQswCQYDVQQG +c3NsLmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDvweOaPG5uyyZvBb7gy1eg +S2jmG/mV2wGSqm6mtS2xK1D92xPyxdi4T3UoU3Lo5RGdu8NPTwn9TOdG1R27NQKv +AgMBAAGjgekwgeYwHQYDVR0OBBYEFB3vobiBeBJH6FcGCHQY99Oq2Pe9MIG2BgNV +HSMEga4wgauAFB3vobiBeBJH6FcGCHQY99Oq2Pe9oYGPpIGMMIGJMQswCQYDVQQG EwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFuZDERMA8GA1UE ChMIc2F3dG9vdGgxJDAiBgNVBAMTG3d3dy5zYXd0b290aC1jb25zdWx0aW5nLmNv bTEdMBsGCSqGSIb3DQEJARYOaW5mb0B5YXNzbC5jb22CAQAwDAYDVR0TBAUwAwEB -/zANBgkqhkiG9w0BAQQFAANBACf3Pfs5b3OkhvOgSCJghOlcPSg2BRZEmAeH4V21 -86e8M1/0KalfhzPf5o694vMKyABprj1BRwPqC0xnRUur8zk= +/zANBgkqhkiG9w0BAQQFAANBANl34wfZLuwvm46eyrQAC+/HdMv09kQvAnUXpXQ+ +JrIm/R+rOt/V4wUUCNCMHck+4Vlvszhdr3hg48VqaZaAfQA= -----END CERTIFICATE----- diff --git a/extra/yassl/certs/client-cert.der b/extra/yassl/certs/client-cert.der index b28e2753376659d0034cdf6313c0c61d8c2033d3..c2a75119e54275743b5dc77e1812756668f4a72d 100644 GIT binary patch delta 105 zcmdnZx|?;v0!d>7a|2@o17pJ|ab6QM0}}&7D0iZK^=1=BcSeUu$#v3xsq;>K++q9w zc${dP!1NwFC8O1TrOOMNKmFEU|4&WhrT>+ao;CS_bz1)yM60^$rQPJ6H09}zgk$Ma GpP2z^N-1*y delta 105 zcmdnZx|?;v0!c$d3qwm|V?)y@ab5#+LjyxoD0iZK^=1=BcSeV!O=>*yiHsr}&PmKn znaKC?#{|2@eETeFrte}ssdeXWlCDr9KMzzP~Us`QE>g!&bO(nT_bgRw2{8 Gigo}P`6jsl diff --git a/extra/yassl/certs/client-cert.pem b/extra/yassl/certs/client-cert.pem index 81110f17252..4d2bbff7ca5 100644 --- a/extra/yassl/certs/client-cert.pem +++ b/extra/yassl/certs/client-cert.pem @@ -5,8 +5,8 @@ Certificate: Signature Algorithm: md5WithRSAEncryption Issuer: C=US, ST=Oregon, L=Portland, O=yaSSL, CN=www.yassl.com/emailAddress=info@yassl.com Validity - Not Before: Jan 18 19:33:15 2005 GMT - Not After : Oct 15 19:33:15 2007 GMT + Not Before: Mar 7 03:00:31 2005 GMT + Not After : Apr 1 03:00:31 2046 GMT Subject: C=US, ST=Oregon, L=Portland, O=yaSSL, CN=www.yassl.com/emailAddress=info@yassl.com Subject Public Key Info: Public Key Algorithm: rsaEncryption @@ -29,15 +29,15 @@ Certificate: X509v3 Basic Constraints: CA:TRUE Signature Algorithm: md5WithRSAEncryption - c5:82:26:0c:1f:61:01:14:b0:ce:18:99:64:91:0e:f1:f8:90: - 3e:a3:0e:be:38:7c:97:ba:05:c9:2a:dc:dd:62:2d:12:61:79: - 7a:86:b1:97:5d:1e:e8:f7:e8:32:34:f7:8f:b1:08:3d:13:71: - a6:3c:15:91:85:12:35:6e:78:87 + 59:19:ae:1b:4e:65:9e:ca:f1:b8:3d:ff:c7:5e:15:86:10:97: + 8c:3e:22:32:ab:4e:75:a7:70:83:f2:fb:2f:af:fe:26:28:e9: + 4f:d4:c9:49:7c:6f:51:7e:2a:ff:a0:5b:25:45:2e:66:d9:0d: + 92:94:e5:b8:60:c6:67:1a:f3:03 -----BEGIN CERTIFICATE----- MIICtzCCAmGgAwIBAgIBADANBgkqhkiG9w0BAQQFADB4MQswCQYDVQQGEwJVUzEP MA0GA1UECBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFuZDEOMAwGA1UEChMFeWFT U0wxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkqhkiG9w0BCQEWDmluZm9A -eWFzc2wuY29tMB4XDTA1MDExODE5MzMxNVoXDTA3MTAxNTE5MzMxNVoweDELMAkG +eWFzc2wuY29tMB4XDTA1MDMwNzAzMDAzMVoXDTQ2MDQwMTAzMDAzMVoweDELMAkG A1UEBhMCVVMxDzANBgNVBAgTBk9yZWdvbjERMA8GA1UEBxMIUG9ydGxhbmQxDjAM BgNVBAoTBXlhU1NMMRYwFAYDVQQDEw13d3cueWFzc2wuY29tMR0wGwYJKoZIhvcN AQkBFg5pbmZvQHlhc3NsLmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDNH3hH @@ -47,6 +47,6 @@ wP/OtbStMIGiBgNVHSMEgZowgZeAFK4lXvpNo1srh97xKvVCwP/OtbStoXykejB4 MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFu ZDEOMAwGA1UEChMFeWFTU0wxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkq hkiG9w0BCQEWDmluZm9AeWFzc2wuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZI -hvcNAQEEBQADQQDFgiYMH2EBFLDOGJlkkQ7x+JA+ow6+OHyXugXJKtzdYi0SYXl6 -hrGXXR7o9+gyNPePsQg9E3GmPBWRhRI1bniH +hvcNAQEEBQADQQBZGa4bTmWeyvG4Pf/HXhWGEJeMPiIyq051p3CD8vsvr/4mKOlP +1MlJfG9Rfir/oFslRS5m2Q2SlOW4YMZnGvMD -----END CERTIFICATE----- diff --git a/extra/yassl/certs/dsa-cert.pem b/extra/yassl/certs/dsa-cert.pem index ecca18dae82..788d263bb9f 100644 --- a/extra/yassl/certs/dsa-cert.pem +++ b/extra/yassl/certs/dsa-cert.pem @@ -5,8 +5,8 @@ Certificate: Signature Algorithm: dsaWithSHA1 Issuer: C=US, ST=Oregon, L=Portland, O=yaSSL DSA, CN=yaSSL DSA/emailAddress=info@yassl.com Validity - Not Before: Jan 23 22:54:51 2005 GMT - Not After : Oct 20 22:54:51 2007 GMT + Not Before: Mar 7 03:22:00 2005 GMT + Not After : Apr 1 03:22:00 2046 GMT Subject: C=US, ST=Oregon, L=Portland, O=yaSSL DSA, CN=yaSSL DSA/emailAddress=info@yassl.com Subject Public Key Info: Public Key Algorithm: dsaEncryption @@ -43,14 +43,14 @@ Certificate: X509v3 Basic Constraints: CA:TRUE Signature Algorithm: dsaWithSHA1 - 30:2b:02:14:74:46:9f:91:7b:24:17:3b:ee:0f:10:e3:76:62: - f4:dc:81:e6:fd:fe:02:13:08:f4:87:0a:ab:ba:9c:de:3a:69: - 72:59:b8:ec:e9:57:f4:bf:37 + 30:2c:02:14:7e:5e:94:fc:7f:ca:81:ab:b3:32:f7:21:83:48: + 48:5f:0a:f1:13:ca:02:14:73:54:32:14:51:22:bf:0b:ec:d7: + 6a:6a:fa:a7:1d:46:b4:c2:a3:b5 -----BEGIN CERTIFICATE----- -MIIDMTCCAvKgAwIBAgIBADAJBgcqhkjOOAQDMHgxCzAJBgNVBAYTAlVTMQ8wDQYD +MIIDMjCCAvKgAwIBAgIBADAJBgcqhkjOOAQDMHgxCzAJBgNVBAYTAlVTMQ8wDQYD VQQIEwZPcmVnb24xETAPBgNVBAcTCFBvcnRsYW5kMRIwEAYDVQQKEwl5YVNTTCBE U0ExEjAQBgNVBAMTCXlhU1NMIERTQTEdMBsGCSqGSIb3DQEJARYOaW5mb0B5YXNz -bC5jb20wHhcNMDUwMTIzMjI1NDUxWhcNMDcxMDIwMjI1NDUxWjB4MQswCQYDVQQG +bC5jb20wHhcNMDUwMzA3MDMyMjAwWhcNNDYwNDAxMDMyMjAwWjB4MQswCQYDVQQG EwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFuZDESMBAGA1UE ChMJeWFTU0wgRFNBMRIwEAYDVQQDEwl5YVNTTCBEU0ExHTAbBgkqhkiG9w0BCQEW DmluZm9AeWFzc2wuY29tMIHwMIGoBgcqhkjOOAQBMIGcAkEAmSlpgMk8mGhFqYL+ @@ -63,6 +63,6 @@ IeRhRHPp4jCBogYDVR0jBIGaMIGXgBS++Yxd1hy07oHdNlYKIeRhRHPp4qF8pHow eDELMAkGA1UEBhMCVVMxDzANBgNVBAgTBk9yZWdvbjERMA8GA1UEBxMIUG9ydGxh bmQxEjAQBgNVBAoTCXlhU1NMIERTQTESMBAGA1UEAxMJeWFTU0wgRFNBMR0wGwYJ KoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbYIBADAMBgNVHRMEBTADAQH/MAkGByqG -SM44BAMDLgAwKwIUdEafkXskFzvuDxDjdmL03IHm/f4CEwj0hwqrupzeOmlyWbjs -6Vf0vzc= +SM44BAMDLwAwLAIUfl6U/H/KgauzMvchg0hIXwrxE8oCFHNUMhRRIr8L7Ndqavqn +HUa0wqO1 -----END CERTIFICATE----- diff --git a/extra/yassl/certs/server-cert.pem b/extra/yassl/certs/server-cert.pem index 403dabdf5fa..30608f5f65b 100644 --- a/extra/yassl/certs/server-cert.pem +++ b/extra/yassl/certs/server-cert.pem @@ -5,8 +5,8 @@ Certificate: Signature Algorithm: md5WithRSAEncryption Issuer: C=US, ST=Oregon, L=Portland, O=sawtooth, CN=www.sawtooth-consulting.com/emailAddress=info@yassl.com Validity - Not Before: Jan 18 20:50:59 2005 GMT - Not After : Oct 15 20:50:59 2007 GMT + Not Before: Mar 8 03:00:47 2005 GMT + Not After : Apr 2 03:00:47 2046 GMT Subject: C=US, ST=Oregon, L=Portland, O=taoSoftDev, CN=www.taosoftdev.com/emailAddress=info@yassl.com Subject Public Key Info: Public Key Algorithm: rsaEncryption @@ -19,20 +19,20 @@ Certificate: f2:25:93:22:e7 Exponent: 65537 (0x10001) Signature Algorithm: md5WithRSAEncryption - 08:36:07:8c:3a:7f:f9:91:0a:82:d1:6a:c1:34:be:bc:2d:b2: - 20:98:dc:45:50:53:9c:66:e6:26:71:bd:fa:d2:b4:91:d3:53: - c0:20:05:c0:b6:84:9a:5f:3f:61:75:f5:fd:c6:ec:e2:f6:9f: - a2:13:17:a9:b7:83:60:cc:cb:eb + 36:72:12:3b:ac:e4:58:83:09:86:4f:71:2a:3a:0d:8a:05:27: + 75:f3:3e:62:4f:ab:b8:70:20:cd:ad:70:ab:91:11:68:f8:82: + 33:e2:78:85:a8:16:f5:66:bd:68:2c:5a:26:15:12:1e:6e:83: + c7:6d:62:b9:c3:ff:e1:86:e4:e6 -----BEGIN CERTIFICATE----- MIIB9zCCAaECAQEwDQYJKoZIhvcNAQEEBQAwgYkxCzAJBgNVBAYTAlVTMQ8wDQYD VQQIEwZPcmVnb24xETAPBgNVBAcTCFBvcnRsYW5kMREwDwYDVQQKEwhzYXd0b290 aDEkMCIGA1UEAxMbd3d3LnNhd3Rvb3RoLWNvbnN1bHRpbmcuY29tMR0wGwYJKoZI -hvcNAQkBFg5pbmZvQHlhc3NsLmNvbTAeFw0wNTAxMTgyMDUwNTlaFw0wNzEwMTUy -MDUwNTlaMIGCMQswCQYDVQQGEwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQH +hvcNAQkBFg5pbmZvQHlhc3NsLmNvbTAeFw0wNTAzMDgwMzAwNDdaFw00NjA0MDIw +MzAwNDdaMIGCMQswCQYDVQQGEwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQH EwhQb3J0bGFuZDETMBEGA1UEChMKdGFvU29mdERldjEbMBkGA1UEAxMSd3d3LnRh b3NvZnRkZXYuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbTBcMA0G CSqGSIb3DQEBAQUAA0sAMEgCQQCkaLu8tydfPPV4xhqvuZX8fmEfqIEKykOImgPg 0KZ5cBY0uXx1VMpwGWY4vm4ofqX/azyDLzlCwxXzvfIlkyLnAgMBAAEwDQYJKoZI -hvcNAQEEBQADQQAINgeMOn/5kQqC0WrBNL68LbIgmNxFUFOcZuYmcb360rSR01PA -IAXAtoSaXz9hdfX9xuzi9p+iExept4NgzMvr +hvcNAQEEBQADQQA2chI7rORYgwmGT3EqOg2KBSd18z5iT6u4cCDNrXCrkRFo+IIz +4niFqBb1Zr1oLFomFRIeboPHbWK5w//hhuTm -----END CERTIFICATE----- diff --git a/extra/yassl/include/lock.hpp b/extra/yassl/include/lock.hpp index 0525943e45d..7ce656522df 100644 --- a/extra/yassl/include/lock.hpp +++ b/extra/yassl/include/lock.hpp @@ -27,7 +27,7 @@ namespace yaSSL { -#ifdef MULTI_THREADED +#ifdef YASSL_THREAD_SAFE #ifdef _WIN32 #include @@ -69,7 +69,7 @@ namespace yaSSL { }; #endif // _WIN32 -#else // MULTI_THREADED (WE'RE SINGLE) +#else // YASSL_THREAD_SAFE (WE'RE SINGLE) class Mutex { public: @@ -79,7 +79,7 @@ namespace yaSSL { }; }; -#endif // MULTI_THREADED +#endif // YASSL_THREAD_SAFE diff --git a/extra/yassl/src/Makefile.am b/extra/yassl/src/Makefile.am index bc57e7d05ba..d192eb03b49 100644 --- a/extra/yassl/src/Makefile.am +++ b/extra/yassl/src/Makefile.am @@ -5,7 +5,7 @@ libyassl_la_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \ handshake.cpp lock.cpp log.cpp socket_wrapper.cpp ssl.cpp \ template_instnt.cpp timer.cpp yassl_imp.cpp yassl_error.cpp yassl_int.cpp EXTRA_DIST = $(wildcard ../include/*.hpp) $(wildcard ../include/openssl/*.h) -AM_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX +AM_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX @yassl_thread_cxxflags@ # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/extra/yassl/src/lock.cpp b/extra/yassl/src/lock.cpp index 6d8e9c17477..6e85fefa14d 100644 --- a/extra/yassl/src/lock.cpp +++ b/extra/yassl/src/lock.cpp @@ -26,7 +26,7 @@ namespace yaSSL { -#ifdef MULTI_THREADED +#ifdef YASSL_THREAD_SAFE #ifdef _WIN32 Mutex::Mutex() @@ -79,7 +79,7 @@ namespace yaSSL { #endif // _WIN32 -#endif // MULTI_THREADED +#endif // YASSL_THREAD_SAFE diff --git a/extra/yassl/taocrypt/CMakeLists.txt b/extra/yassl/taocrypt/CMakeLists.txt index e91fa021de5..c8faeac3b77 100755 --- a/extra/yassl/taocrypt/CMakeLists.txt +++ b/extra/yassl/taocrypt/CMakeLists.txt @@ -16,6 +16,8 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include) +ADD_DEFINITIONS("-DYASSL_THREAD_SAFE") + SET(TAOCRYPT_SOURCES src/aes.cpp src/aestables.cpp src/algebra.cpp src/arc4.cpp src/asn.cpp src/coding.cpp src/des.cpp src/dh.cpp src/dsa.cpp src/file.cpp src/hash.cpp src/integer.cpp src/md2.cpp src/md4.cpp src/md5.cpp src/misc.cpp src/random.cpp src/ripemd.cpp src/rsa.cpp src/sha.cpp diff --git a/extra/yassl/taocrypt/benchmark/Makefile.am b/extra/yassl/taocrypt/benchmark/Makefile.am index 2fe1c90c90d..1f082f22f40 100644 --- a/extra/yassl/taocrypt/benchmark/Makefile.am +++ b/extra/yassl/taocrypt/benchmark/Makefile.am @@ -2,7 +2,7 @@ INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../mySTL noinst_PROGRAMS = benchmark benchmark_SOURCES = benchmark.cpp benchmark_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la -benchmark_CXXFLAGS = -DYASSL_PURE_C +benchmark_CXXFLAGS = -DYASSL_PURE_C @yassl_thread_cxxflags@ EXTRA_DIST = benchmark.dsp rsa1024.der dh1024.der dsa1024.der make.bat # Don't update the files from bitkeeper diff --git a/extra/yassl/taocrypt/src/Makefile.am b/extra/yassl/taocrypt/src/Makefile.am index 61032d4c381..6ca969ad686 100644 --- a/extra/yassl/taocrypt/src/Makefile.am +++ b/extra/yassl/taocrypt/src/Makefile.am @@ -8,7 +8,8 @@ libtaocrypt_la_SOURCES = aes.cpp aestables.cpp algebra.cpp arc4.cpp \ random.cpp ripemd.cpp rsa.cpp sha.cpp template_instnt.cpp \ tftables.cpp twofish.cpp -libtaocrypt_la_CXXFLAGS = @yassl_taocrypt_extra_cxxflags@ -DYASSL_PURE_C +libtaocrypt_la_CXXFLAGS = @yassl_taocrypt_extra_cxxflags@ -DYASSL_PURE_C \ + @yassl_thread_cxxflags@ EXTRA_DIST = $(wildcard ../include/*.hpp) diff --git a/extra/yassl/taocrypt/test/Makefile.am b/extra/yassl/taocrypt/test/Makefile.am index 73e7f729bdb..aa325ff9b75 100644 --- a/extra/yassl/taocrypt/test/Makefile.am +++ b/extra/yassl/taocrypt/test/Makefile.am @@ -2,7 +2,7 @@ INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../mySTL noinst_PROGRAMS = test test_SOURCES = test.cpp test_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la -test_CXXFLAGS = -DYASSL_PURE_C +test_CXXFLAGS = -DYASSL_PURE_C @yassl_thread_cxxflags@ EXTRA_DIST = make.bat # Don't update the files from bitkeeper diff --git a/extra/yassl/taocrypt/test/memory.cpp b/extra/yassl/taocrypt/test/memory.cpp index 726c9c0ef54..a879a497800 100644 --- a/extra/yassl/taocrypt/test/memory.cpp +++ b/extra/yassl/taocrypt/test/memory.cpp @@ -13,7 +13,7 @@ To use MemoryTracker merely add this file to your project No need to instantiate anything -If your app is multi threaded define MULTI_THREADED +If your app is multi threaded define YASSL_THREAD_SAFE *********************************************************************/ diff --git a/extra/yassl/testsuite/Makefile.am b/extra/yassl/testsuite/Makefile.am index cae34e7bbc0..e626b1822ec 100644 --- a/extra/yassl/testsuite/Makefile.am +++ b/extra/yassl/testsuite/Makefile.am @@ -4,7 +4,7 @@ testsuite_SOURCES = testsuite.cpp ../taocrypt/test/test.cpp \ ../examples/client/client.cpp ../examples/server/server.cpp \ ../examples/echoclient/echoclient.cpp \ ../examples/echoserver/echoserver.cpp -testsuite_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX -DNO_MAIN_DRIVER +testsuite_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX -DNO_MAIN_DRIVER @yassl_thread_cxxflags@ testsuite_LDADD = $(top_builddir)/extra/yassl/src/libyassl.la \ $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la EXTRA_DIST = testsuite.dsp test.hpp input quit make.bat From 28187edf33629cd72b3f8fafbc3421b3aaa0e4d7 Mon Sep 17 00:00:00 2001 From: Inaam Rana Date: Tue, 8 Jun 2010 14:14:08 -0400 Subject: [PATCH 137/461] Add call to log_free_check() in the DML code paths that were missing this before. --- storage/innodb_plugin/row/row0ins.c | 9 +++++++++ storage/innodb_plugin/row/row0purge.c | 11 +++++++++++ storage/innodb_plugin/row/row0uins.c | 13 ++++++++++++- storage/innodb_plugin/row/row0umod.c | 14 +++++++++++++- storage/innodb_plugin/row/row0upd.c | 16 ++++++++++++++-- 5 files changed, 59 insertions(+), 4 deletions(-) diff --git a/storage/innodb_plugin/row/row0ins.c b/storage/innodb_plugin/row/row0ins.c index 09d2ffc7431..b70e77c7b7a 100644 --- a/storage/innodb_plugin/row/row0ins.c +++ b/storage/innodb_plugin/row/row0ins.c @@ -51,6 +51,15 @@ Created 4/20/1996 Heikki Tuuri #define ROW_INS_PREV 1 #define ROW_INS_NEXT 2 +/*********************************************************************//** +IMPORTANT NOTE: Any operation that generates redo MUST check that there +is enough space in the redo log before for that operation. This is +done by calling log_free_check(). The reason for checking the +availability of the redo log space before the start of the operation is +that we MUST not hold any synchonization objects when performing the +check. +If you make a change in this module make sure that no codepath is +introduced where a call to log_free_check() is bypassed. */ /*********************************************************************//** Creates an insert node struct. diff --git a/storage/innodb_plugin/row/row0purge.c b/storage/innodb_plugin/row/row0purge.c index 500ebe571ab..0b470f12fc6 100644 --- a/storage/innodb_plugin/row/row0purge.c +++ b/storage/innodb_plugin/row/row0purge.c @@ -44,6 +44,16 @@ Created 3/14/1997 Heikki Tuuri #include "row0mysql.h" #include "log0log.h" +/*********************************************************************//** +IMPORTANT NOTE: Any operation that generates redo MUST check that there +is enough space in the redo log before for that operation. This is +done by calling log_free_check(). The reason for checking the +availability of the redo log space before the start of the operation is +that we MUST not hold any synchonization objects when performing the +check. +If you make a change in this module make sure that no codepath is +introduced where a call to log_free_check() is bypassed. */ + /********************************************************************//** Creates a purge node to a query graph. @return own: purge node */ @@ -126,6 +136,7 @@ row_purge_remove_clust_if_poss_low( pcur = &(node->pcur); btr_cur = btr_pcur_get_btr_cur(pcur); + log_free_check(); mtr_start(&mtr); success = row_purge_reposition_pcur(mode, node, &mtr); diff --git a/storage/innodb_plugin/row/row0uins.c b/storage/innodb_plugin/row/row0uins.c index 9f9c814f1a5..2c5da6a81ca 100644 --- a/storage/innodb_plugin/row/row0uins.c +++ b/storage/innodb_plugin/row/row0uins.c @@ -46,6 +46,16 @@ Created 2/25/1997 Heikki Tuuri #include "ibuf0ibuf.h" #include "log0log.h" +/*********************************************************************//** +IMPORTANT NOTE: Any operation that generates redo MUST check that there +is enough space in the redo log before for that operation. This is +done by calling log_free_check(). The reason for checking the +availability of the redo log space before the start of the operation is +that we MUST not hold any synchonization objects when performing the +check. +If you make a change in this module make sure that no codepath is +introduced where a call to log_free_check() is bypassed. */ + /***************************************************************//** Removes a clustered index record. The pcur in node was positioned on the record, now it is detached. @@ -152,7 +162,6 @@ row_undo_ins_remove_sec_low( ulint err; mtr_t mtr; - log_free_check(); mtr_start(&mtr); found = row_search_index_entry(index, entry, mode, &pcur, &mtr); @@ -335,6 +344,7 @@ row_undo_ins( transactions. */ ut_a(trx_is_recv(node->trx)); } else { + log_free_check(); err = row_undo_ins_remove_sec(node->index, entry); if (err != DB_SUCCESS) { @@ -346,5 +356,6 @@ row_undo_ins( node->index = dict_table_get_next_index(node->index); } + log_free_check(); return(row_undo_ins_remove_clust_rec(node)); } diff --git a/storage/innodb_plugin/row/row0umod.c b/storage/innodb_plugin/row/row0umod.c index c497c469aae..fd10b718b4f 100644 --- a/storage/innodb_plugin/row/row0umod.c +++ b/storage/innodb_plugin/row/row0umod.c @@ -58,12 +58,22 @@ delete marked clustered index record was delete unmarked and possibly also some of its fields were changed. Now, it is possible that the delete marked version has become obsolete at the time the undo is started. */ +/*********************************************************************//** +IMPORTANT NOTE: Any operation that generates redo MUST check that there +is enough space in the redo log before for that operation. This is +done by calling log_free_check(). The reason for checking the +availability of the redo log space before the start of the operation is +that we MUST not hold any synchonization objects when performing the +check. +If you make a change in this module make sure that no codepath is +introduced where a call to log_free_check() is bypassed. */ + /***********************************************************//** Checks if also the previous version of the clustered index record was modified or inserted by the same transaction, and its undo number is such that it should be undone in the same rollback. @return TRUE if also previous modify or insert of this row should be undone */ -UNIV_INLINE +static ibool row_undo_mod_undo_also_prev_vers( /*=============================*/ @@ -231,6 +241,8 @@ row_undo_mod_clust( ut_ad(node && thr); + log_free_check(); + /* Check if also the previous version of the clustered index record should be undone in this same rollback operation */ diff --git a/storage/innodb_plugin/row/row0upd.c b/storage/innodb_plugin/row/row0upd.c index 95d1d00aeef..efc27a3cacd 100644 --- a/storage/innodb_plugin/row/row0upd.c +++ b/storage/innodb_plugin/row/row0upd.c @@ -92,6 +92,16 @@ the x-latch freed? The most efficient way for performing a searched delete is obviously to keep the x-latch for several steps of query graph execution. */ +/*********************************************************************//** +IMPORTANT NOTE: Any operation that generates redo MUST check that there +is enough space in the redo log before for that operation. This is +done by calling log_free_check(). The reason for checking the +availability of the redo log space before the start of the operation is +that we MUST not hold any synchonization objects when performing the +check. +If you make a change in this module make sure that no codepath is +introduced where a call to log_free_check() is bypassed. */ + /***********************************************************//** Checks if an update vector changes some of the first ordering fields of an index record. This is only used in foreign key checks and we can assume @@ -1453,7 +1463,6 @@ row_upd_sec_index_entry( entry = row_build_index_entry(node->row, node->ext, index, heap); ut_a(entry); - log_free_check(); mtr_start(&mtr); found = row_search_index_entry(index, entry, BTR_MODIFY_LEAF, &pcur, @@ -1529,7 +1538,7 @@ Updates the secondary index record if it is changed in the row update or deletes it if this is a delete. @return DB_SUCCESS if operation successfully completed, else error code or DB_LOCK_WAIT */ -UNIV_INLINE +static ulint row_upd_sec_step( /*=============*/ @@ -2015,6 +2024,7 @@ row_upd( if (node->state == UPD_NODE_UPDATE_CLUSTERED || node->state == UPD_NODE_INSERT_CLUSTERED) { + log_free_check(); err = row_upd_clust_step(node, thr); if (err != DB_SUCCESS) { @@ -2029,6 +2039,8 @@ row_upd( } while (node->index != NULL) { + + log_free_check(); err = row_upd_sec_step(node, thr); if (err != DB_SUCCESS) { From 51e90dc79e5b3847a8b1fdf69b8207864ff2f7c8 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Tue, 8 Jun 2010 16:20:54 -0300 Subject: [PATCH 138/461] Bug#53906: Stray semicolon in my_sys.h corrupts macro function definition of MY_INIT include/my_sys.h: Remove stray semicolon. --- include/my_sys.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/my_sys.h b/include/my_sys.h index 4ec4846f528..40ae6924f9f 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -37,7 +37,7 @@ extern int NEAR my_errno; /* Last error in mysys */ #define MYSYS_PROGRAM_USES_CURSES() { error_handler_hook = my_message_curses; mysys_uses_curses=1; } #define MYSYS_PROGRAM_DONT_USE_CURSES() { error_handler_hook = my_message_no_curses; mysys_uses_curses=0;} -#define MY_INIT(name); { my_progname= name; my_init(); } +#define MY_INIT(name) { my_progname= name; my_init(); } #define ERRMSGSIZE (SC_MAXWIDTH) /* Max length of a error message */ #define NRERRBUFFS (2) /* Buffers for parameters */ From f4b7c50d6e1860b8f28ff387118f27eeea812f48 Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Wed, 9 Jun 2010 14:45:04 +0400 Subject: [PATCH 139/461] Fix for bug #54007: assert in ha_myisam::index_next, HANDLER Problem: the server missed the fact that one can read from 2 indexes alternately using HANDLER interface. Fix: check if the same (initialized) index is involved reading next/prev values from the index. mysql-test/r/handler_myisam.result: Fix for bug #54007: assert in ha_myisam::index_next, HANDLER - test result. mysql-test/t/handler_myisam.test: Fix for bug #54007: assert in ha_myisam::index_next, HANDLER - test case. sql/sql_handler.cc: Fix for bug #54007: assert in ha_myisam::index_next, HANDLER - check if we use the same (initialized) index to read next/prev values from the index. --- mysql-test/r/handler_myisam.result | 93 ++++++++++++++++++++++++++++++ mysql-test/t/handler_myisam.test | 49 ++++++++++++++++ sql/sql_handler.cc | 23 +++++++- 3 files changed, 162 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/handler_myisam.result b/mysql-test/r/handler_myisam.result index a970e20a2c0..b20b8dbb138 100644 --- a/mysql-test/r/handler_myisam.result +++ b/mysql-test/r/handler_myisam.result @@ -769,4 +769,97 @@ a 1 HANDLER t1 CLOSE; DROP TABLE t1; +# +# Bug #54007: assert in ha_myisam::index_next , HANDLER +# +CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a), KEY b(b), KEY ab(a, b)); +HANDLER t1 OPEN; +HANDLER t1 READ FIRST; +a b +HANDLER t1 READ `PRIMARY` NEXT; +a b +HANDLER t1 READ ab NEXT; +a b +HANDLER t1 READ b NEXT; +a b +HANDLER t1 READ NEXT; +a b +HANDLER t1 CLOSE; +INSERT INTO t1 VALUES (2, 20), (1, 10), (4, 40), (3, 30); +HANDLER t1 OPEN; +HANDLER t1 READ FIRST; +a b +2 20 +HANDLER t1 READ NEXT; +a b +1 10 +HANDLER t1 READ `PRIMARY` NEXT; +a b +1 10 +HANDLER t1 READ `PRIMARY` NEXT; +a b +2 20 +HANDLER t1 READ ab NEXT; +a b +1 10 +HANDLER t1 READ ab NEXT; +a b +2 20 +HANDLER t1 READ b NEXT; +a b +1 10 +HANDLER t1 READ b NEXT; +a b +2 20 +HANDLER t1 READ b NEXT; +a b +3 30 +HANDLER t1 READ b NEXT; +a b +4 40 +HANDLER t1 READ b NEXT; +a b +HANDLER t1 READ NEXT; +a b +4 40 +HANDLER t1 READ NEXT; +a b +3 30 +HANDLER t1 READ NEXT; +a b +HANDLER t1 CLOSE; +HANDLER t1 OPEN; +HANDLER t1 READ FIRST; +a b +2 20 +HANDLER t1 READ `PRIMARY` PREV; +a b +4 40 +HANDLER t1 READ `PRIMARY` PREV; +a b +3 30 +HANDLER t1 READ b PREV; +a b +4 40 +HANDLER t1 READ b PREV; +a b +3 30 +HANDLER t1 CLOSE; +HANDLER t1 OPEN; +HANDLER t1 READ FIRST; +a b +2 20 +HANDLER t1 READ `PRIMARY` PREV LIMIT 3; +a b +4 40 +3 30 +2 20 +HANDLER t1 READ b NEXT LIMIT 5; +a b +1 10 +2 20 +3 30 +4 40 +HANDLER t1 CLOSE; +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/t/handler_myisam.test b/mysql-test/t/handler_myisam.test index 868ba14480a..e78072ef8a0 100644 --- a/mysql-test/t/handler_myisam.test +++ b/mysql-test/t/handler_myisam.test @@ -48,4 +48,53 @@ HANDLER t1 READ a NEXT; HANDLER t1 CLOSE; DROP TABLE t1; + +--echo # +--echo # Bug #54007: assert in ha_myisam::index_next , HANDLER +--echo # +CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a), KEY b(b), KEY ab(a, b)); + +HANDLER t1 OPEN; +HANDLER t1 READ FIRST; +HANDLER t1 READ `PRIMARY` NEXT; +HANDLER t1 READ ab NEXT; +HANDLER t1 READ b NEXT; +HANDLER t1 READ NEXT; +HANDLER t1 CLOSE; + +INSERT INTO t1 VALUES (2, 20), (1, 10), (4, 40), (3, 30); +HANDLER t1 OPEN; +HANDLER t1 READ FIRST; +HANDLER t1 READ NEXT; +HANDLER t1 READ `PRIMARY` NEXT; +HANDLER t1 READ `PRIMARY` NEXT; +HANDLER t1 READ ab NEXT; +HANDLER t1 READ ab NEXT; +HANDLER t1 READ b NEXT; +HANDLER t1 READ b NEXT; +HANDLER t1 READ b NEXT; +HANDLER t1 READ b NEXT; +HANDLER t1 READ b NEXT; +HANDLER t1 READ NEXT; +HANDLER t1 READ NEXT; +HANDLER t1 READ NEXT; +HANDLER t1 CLOSE; + +HANDLER t1 OPEN; +HANDLER t1 READ FIRST; +HANDLER t1 READ `PRIMARY` PREV; +HANDLER t1 READ `PRIMARY` PREV; +HANDLER t1 READ b PREV; +HANDLER t1 READ b PREV; +HANDLER t1 CLOSE; + +HANDLER t1 OPEN; +HANDLER t1 READ FIRST; +HANDLER t1 READ `PRIMARY` PREV LIMIT 3; +HANDLER t1 READ b NEXT LIMIT 5; +HANDLER t1 CLOSE; + +DROP TABLE t1; + + --echo End of 5.1 tests diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index 3bbf4b78d07..bbc3d0b27a4 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -539,6 +539,14 @@ retry: my_error(ER_KEY_DOES_NOT_EXITS, MYF(0), keyname, tables->alias); goto err; } + /* Check if the same index involved. */ + if ((uint) keyno != table->file->get_index()) + { + if (mode == RNEXT) + mode= RFIRST; + else if (mode == RPREV) + mode= RLAST; + } } if (insert_fields(thd, &thd->lex->select_lex.context, @@ -561,9 +569,16 @@ retry: case RNEXT: if (table->file->inited != handler::NONE) { - error=keyname ? - table->file->index_next(table->record[0]) : - table->file->rnd_next(table->record[0]); + if (keyname) + { + /* Check if we read from the same index. */ + DBUG_ASSERT((uint) keyno == table->file->get_index()); + error= table->file->index_next(table->record[0]); + } + else + { + error= table->file->rnd_next(table->record[0]); + } break; } /* else fall through */ @@ -584,6 +599,8 @@ retry: break; case RPREV: DBUG_ASSERT(keyname != 0); + /* Check if we read from the same index. */ + DBUG_ASSERT((uint) keyno == table->file->get_index()); if (table->file->inited != handler::NONE) { error=table->file->index_prev(table->record[0]); From c00c1b767e8bc6d65ba78e2dedd38ba56cdb3265 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 9 Jun 2010 13:53:51 +0200 Subject: [PATCH 140/461] fix questionable UNIV_EXPECT's in the xtradb that confused old gcc. --- storage/xtradb/include/rem0rec.ic | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/storage/xtradb/include/rem0rec.ic b/storage/xtradb/include/rem0rec.ic index 8e5bd9a7fcd..fa96c97f95e 100644 --- a/storage/xtradb/include/rem0rec.ic +++ b/storage/xtradb/include/rem0rec.ic @@ -268,7 +268,7 @@ rec_get_next_ptr_const( return(NULL); } - if (UNIV_EXPECT(comp, REC_OFFS_COMPACT)) { + if (UNIV_LIKELY(comp != 0)) { #if UNIV_PAGE_SIZE <= 32768 /* Note that for 64 KiB pages, field_value can 'wrap around' and the debug assertion is not valid */ @@ -336,7 +336,7 @@ rec_get_next_offs( field_value = mach_read_from_2(rec - REC_NEXT); - if (UNIV_EXPECT(comp, REC_OFFS_COMPACT)) { + if (UNIV_LIKELY(comp != 0)) { #if UNIV_PAGE_SIZE <= 32768 /* Note that for 64 KiB pages, field_value can 'wrap around' and the debug assertion is not valid */ @@ -647,7 +647,7 @@ rec_get_info_and_status_bits( & (REC_INFO_BITS_MASK >> REC_INFO_BITS_SHIFT) # error "REC_NEW_STATUS_MASK and REC_INFO_BITS_MASK overlap" #endif - if (UNIV_EXPECT(comp, REC_OFFS_COMPACT)) { + if (UNIV_LIKELY(comp != 0)) { bits = rec_get_info_bits(rec, TRUE) | rec_get_status(rec); } else { bits = rec_get_info_bits(rec, FALSE); @@ -683,7 +683,7 @@ rec_get_deleted_flag( const rec_t* rec, /*!< in: physical record */ ulint comp) /*!< in: nonzero=compact page format */ { - if (UNIV_EXPECT(comp, REC_OFFS_COMPACT)) { + if (UNIV_LIKELY(comp != 0)) { return(UNIV_UNLIKELY( rec_get_bit_field_1(rec, REC_NEW_INFO_BITS, REC_INFO_DELETED_FLAG, From 60a66c451a863986d36dde676ce99eca3edc55f3 Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Wed, 9 Jun 2010 16:07:34 +0400 Subject: [PATCH 141/461] Bug#38999 valgrind warnings for update statement in function compare_record() Valgrind warning happpens because of uninitialized null bytes. In row_sel_push_cache_row_for_mysql() function we fill fetch cache with necessary field values, row_sel_store_mysql_rec() is called for this and leaves null bytes untouched. Later row_sel_pop_cached_row_for_mysql() rewrites table record buffer with uninited null bytes. We can see the problem from the test case: At 'SELECT...' we call row_sel_push...->row_sel_store...->row_sel_pop_cached... chain which rewrites table->record[0] buffer with uninitialized null bytes. When we call 'UPDATE...' statement, compare_record uses this buffer and valgrind warning occurs. The fix is to init null bytes with default values. mysql-test/suite/innodb/r/innodb_mysql.result: test case mysql-test/suite/innodb/t/innodb_mysql.test: test case mysql-test/t/ps_3innodb.test: enable valgrind testing storage/innobase/row/row0sel.c: init null bytes with default values as they might be left uninitialized in some cases and these uninited bytes might be copied into mysql record buffer that leads to valgrind warnings on next use of the buffer. --- mysql-test/suite/innodb/r/innodb_mysql.result | 12 ++++++++++++ mysql-test/suite/innodb/t/innodb_mysql.test | 13 +++++++++++++ mysql-test/t/ps_3innodb.test | 4 ---- storage/innobase/row/row0sel.c | 6 ++++++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/mysql-test/suite/innodb/r/innodb_mysql.result b/mysql-test/suite/innodb/r/innodb_mysql.result index 2bf1ef8fbf0..b4ac88fc1c3 100644 --- a/mysql-test/suite/innodb/r/innodb_mysql.result +++ b/mysql-test/suite/innodb/r/innodb_mysql.result @@ -2378,4 +2378,16 @@ SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; SECOND(c)-@bug47453 0 DROP TABLE t1, t2; +# +# Bug#38999 valgrind warnings for update statement in function compare_record() +# +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 values (1),(2),(3),(4),(5); +INSERT INTO t2 values (1); +SELECT * FROM t1 WHERE a = 2; +a +2 +UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1; +DROP TABLE t1,t2; End of 5.1 tests diff --git a/mysql-test/suite/innodb/t/innodb_mysql.test b/mysql-test/suite/innodb/t/innodb_mysql.test index 9564d3b41fb..5a3a72c09bf 100644 --- a/mysql-test/suite/innodb/t/innodb_mysql.test +++ b/mysql-test/suite/innodb/t/innodb_mysql.test @@ -618,5 +618,18 @@ SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; DROP TABLE t1, t2; +--echo # +--echo # Bug#38999 valgrind warnings for update statement in function compare_record() +--echo # + +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 values (1),(2),(3),(4),(5); +INSERT INTO t2 values (1); + +SELECT * FROM t1 WHERE a = 2; +UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1; + +DROP TABLE t1,t2; --echo End of 5.1 tests diff --git a/mysql-test/t/ps_3innodb.test b/mysql-test/t/ps_3innodb.test index 10d2e7a9ae5..e25a8b1f469 100644 --- a/mysql-test/t/ps_3innodb.test +++ b/mysql-test/t/ps_3innodb.test @@ -8,10 +8,6 @@ # NOTE: PLEASE SEE ps_1general.test (bottom) # BEFORE ADDING NEW TEST CASES HERE !!! -# See Bug#38999 valgrind warnings for update statement in function -# compare_record() --- source include/not_valgrind.inc - use test; -- source include/have_innodb.inc diff --git a/storage/innobase/row/row0sel.c b/storage/innobase/row/row0sel.c index fcc95aec9af..06a19ba7979 100644 --- a/storage/innobase/row/row0sel.c +++ b/storage/innobase/row/row0sel.c @@ -2621,6 +2621,12 @@ row_sel_store_mysql_rec( prebuilt->blob_heap = NULL; } + /* init null bytes with default values as they might be + left uninitialized in some cases and this uninited bytes + might be copied into mysql record buffer that leads to + valgrind warnings */ + memcpy(mysql_rec, prebuilt->default_rec, prebuilt->null_bitmap_len); + for (i = 0; i < prebuilt->n_template; i++) { templ = prebuilt->mysql_template + i; From 022e2ef800a333cb37eb783f83c480770587f57b Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Wed, 9 Jun 2010 16:17:18 +0400 Subject: [PATCH 142/461] Bug#38999 valgrind warnings for update statement in function compare_record() (InnoDB plugin branch) mysql-test/suite/innodb_plugin/r/innodb_mysql.result: test case mysql-test/suite/innodb_plugin/t/innodb_mysql.test: test case storage/innodb_plugin/row/row0sel.c: init null bytes with default values as they might be left uninitialized in some cases and these uninited bytes might be copied into mysql record buffer that leads to valgrind warnings on next use of the buffer. --- .../suite/innodb_plugin/r/innodb_mysql.result | 12 ++++++++++++ mysql-test/suite/innodb_plugin/t/innodb_mysql.test | 13 +++++++++++++ storage/innodb_plugin/row/row0sel.c | 6 ++++++ 3 files changed, 31 insertions(+) diff --git a/mysql-test/suite/innodb_plugin/r/innodb_mysql.result b/mysql-test/suite/innodb_plugin/r/innodb_mysql.result index 2bf1ef8fbf0..b4ac88fc1c3 100644 --- a/mysql-test/suite/innodb_plugin/r/innodb_mysql.result +++ b/mysql-test/suite/innodb_plugin/r/innodb_mysql.result @@ -2378,4 +2378,16 @@ SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; SECOND(c)-@bug47453 0 DROP TABLE t1, t2; +# +# Bug#38999 valgrind warnings for update statement in function compare_record() +# +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 values (1),(2),(3),(4),(5); +INSERT INTO t2 values (1); +SELECT * FROM t1 WHERE a = 2; +a +2 +UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1; +DROP TABLE t1,t2; End of 5.1 tests diff --git a/mysql-test/suite/innodb_plugin/t/innodb_mysql.test b/mysql-test/suite/innodb_plugin/t/innodb_mysql.test index c80db7088ab..3f6d9d96bb8 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb_mysql.test +++ b/mysql-test/suite/innodb_plugin/t/innodb_mysql.test @@ -618,5 +618,18 @@ SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a; DROP TABLE t1, t2; +--echo # +--echo # Bug#38999 valgrind warnings for update statement in function compare_record() +--echo # + +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 values (1),(2),(3),(4),(5); +INSERT INTO t2 values (1); + +SELECT * FROM t1 WHERE a = 2; +UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1; + +DROP TABLE t1,t2; --echo End of 5.1 tests diff --git a/storage/innodb_plugin/row/row0sel.c b/storage/innodb_plugin/row/row0sel.c index a5bf361661b..2861235a995 100644 --- a/storage/innodb_plugin/row/row0sel.c +++ b/storage/innodb_plugin/row/row0sel.c @@ -2678,6 +2678,12 @@ row_sel_store_mysql_rec( prebuilt->blob_heap = NULL; } + /* init null bytes with default values as they might be + left uninitialized in some cases and these uninited bytes + might be copied into mysql record buffer that leads to + valgrind warnings */ + memcpy(mysql_rec, prebuilt->default_rec, prebuilt->null_bitmap_len); + for (i = 0; i < prebuilt->n_template; i++) { templ = prebuilt->mysql_template + i; From 14e53d066807f7164d94dd8449ab4458509ada88 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 9 Jun 2010 23:29:18 +0200 Subject: [PATCH 143/461] allow federated and innodb_plugin to be built storage/federated/Makefile.am: federated needs functions from mysys/string.c. mysqld does not use them, so they don't get into the binary. storage/federated/plug.in: enable federated again. remove it from all configurations. storage/federatedx/Makefile.am: federatedx is now called federatedx in configure storage/federatedx/ha_federatedx.cc: federatedx is now called federatedx in configure storage/federatedx/plug.in: federatedx is now called federatedx in configure storage/innodb_plugin/plug.in: enable innodb plugin again. remove it from all configurations. storage/xtradb/CMakeLists.txt: xtradb is now called xtradb in configure, and builds libxtradb.a and ha_xtradb.so storage/xtradb/Makefile.am: xtradb is now called xtradb in configure, and builds libxtradb.a and ha_xtradb.so storage/xtradb/handler/ha_innodb.cc: xtradb is now called xtradb in configure, and builds libxtradb.a and ha_xtradb.so storage/xtradb/plug.in: xtradb is now called xtradb in configure, and builds libxtradb.a and ha_xtradb.so --- storage/federated/Makefile.am | 4 +--- .../federated/{plug.in.disabled => plug.in} | 2 +- storage/federatedx/Makefile.am | 4 ++-- storage/federatedx/ha_federatedx.cc | 2 +- storage/federatedx/plug.in | 8 +++---- .../{plug.in.disabled => plug.in} | 2 +- storage/xtradb/CMakeLists.txt | 15 ++++++------- storage/xtradb/Makefile.am | 22 +++++++++---------- storage/xtradb/handler/ha_innodb.cc | 2 +- storage/xtradb/plug.in | 12 +++++----- 10 files changed, 35 insertions(+), 38 deletions(-) rename storage/federated/{plug.in.disabled => plug.in} (76%) rename storage/innodb_plugin/{plug.in.disabled => plug.in} (98%) diff --git a/storage/federated/Makefile.am b/storage/federated/Makefile.am index 64ea0207017..26786ee48cb 100644 --- a/storage/federated/Makefile.am +++ b/storage/federated/Makefile.am @@ -26,8 +26,6 @@ INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include \ -I$(srcdir) WRAPLIBS= -LDADD = - DEFS = @DEFS@ noinst_HEADERS = ha_federated.h @@ -37,7 +35,7 @@ pkgplugin_LTLIBRARIES = @plugin_federated_shared_target@ ha_federated_la_LDFLAGS = -module -rpath $(pkgplugindir) ha_federated_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_federated_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN -ha_federated_la_SOURCES = ha_federated.cc +ha_federated_la_SOURCES = ha_federated.cc $(top_srcdir)/mysys/string.c EXTRA_LIBRARIES = libfederated.a diff --git a/storage/federated/plug.in.disabled b/storage/federated/plug.in similarity index 76% rename from storage/federated/plug.in.disabled rename to storage/federated/plug.in index 23b607d699b..714888b2ebf 100644 --- a/storage/federated/plug.in.disabled +++ b/storage/federated/plug.in @@ -1,5 +1,5 @@ MYSQL_STORAGE_ENGINE(federated,,[Federated Storage Engine], - [Connects to tables on remote MySQL servers], [max,max-no-ndb]) + [Connects to tables on remote MySQL servers], []) MYSQL_PLUGIN_STATIC(federated, [libfederated.a]) MYSQL_PLUGIN_DYNAMIC(federated, [ha_federated.la]) MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS(federated, [ha_federated.cc]) diff --git a/storage/federatedx/Makefile.am b/storage/federatedx/Makefile.am index ad1328247ec..1781a53a0b6 100644 --- a/storage/federatedx/Makefile.am +++ b/storage/federatedx/Makefile.am @@ -18,14 +18,14 @@ DEFS = @DEFS@ noinst_HEADERS = ha_federatedx.h federatedx_probes.h EXTRA_LTLIBRARIES = ha_federatedx.la -pkgplugin_LTLIBRARIES = @plugin_federated_shared_target@ +pkgplugin_LTLIBRARIES = @plugin_federatedx_shared_target@ ha_federatedx_la_LDFLAGS = -module -rpath $(pkgplugindir) ha_federatedx_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_federatedx_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN EXTRA_LIBRARIES = libfederatedx.a -noinst_LIBRARIES = @plugin_federated_static_target@ +noinst_LIBRARIES = @plugin_federatedx_static_target@ libfederatedx_a_CXXFLAGS = $(AM_CFLAGS) libfederatedx_a_CFLAGS = $(AM_CFLAGS) libfederatedx_a_SOURCES= ha_federatedx.cc federatedx_txn.cc \ diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc index 2c74b2f6675..57bfb1148bf 100644 --- a/storage/federatedx/ha_federatedx.cc +++ b/storage/federatedx/ha_federatedx.cc @@ -3495,7 +3495,7 @@ int ha_federatedx::rollback(handlerton *hton, MYSQL_THD thd, bool all) struct st_mysql_storage_engine federatedx_storage_engine= { MYSQL_HANDLERTON_INTERFACE_VERSION }; -mysql_declare_plugin(federated) +mysql_declare_plugin(federatedx) { MYSQL_STORAGE_ENGINE_PLUGIN, &federatedx_storage_engine, diff --git a/storage/federatedx/plug.in b/storage/federatedx/plug.in index ee2e6af0e94..95afe270f4c 100644 --- a/storage/federatedx/plug.in +++ b/storage/federatedx/plug.in @@ -1,5 +1,5 @@ -MYSQL_STORAGE_ENGINE(federated,,[FederatedX Storage Engine], +MYSQL_STORAGE_ENGINE(federatedx,,[FederatedX Storage Engine], [FederatedX Storage Engine], [max,max-no-ndb]) -MYSQL_PLUGIN_DYNAMIC(federated, [ha_federatedx.la]) -MYSQL_PLUGIN_STATIC(federated, [libfederatedx.a]) -MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS(federated, [ha_federatedx.cc]) +MYSQL_PLUGIN_DYNAMIC(federatedx, [ha_federatedx.la]) +MYSQL_PLUGIN_STATIC(federatedx, [libfederatedx.a]) +MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS(federatedx, [ha_federatedx.cc]) diff --git a/storage/innodb_plugin/plug.in.disabled b/storage/innodb_plugin/plug.in similarity index 98% rename from storage/innodb_plugin/plug.in.disabled rename to storage/innodb_plugin/plug.in index e638332d74a..38e14d9d2fd 100644 --- a/storage/innodb_plugin/plug.in.disabled +++ b/storage/innodb_plugin/plug.in @@ -15,7 +15,7 @@ # MYSQL_STORAGE_ENGINE(innodb_plugin,, [InnoDB Storage Engine], - [Transactional Tables using InnoDB], [max,max-no-ndb]) + [Transactional Tables using InnoDB], []) MYSQL_PLUGIN_DIRECTORY(innodb_plugin, [storage/innodb_plugin]) MYSQL_PLUGIN_DYNAMIC(innodb_plugin, [ha_innodb_plugin.la]) MYSQL_PLUGIN_ACTIONS(innodb_plugin, [ diff --git a/storage/xtradb/CMakeLists.txt b/storage/xtradb/CMakeLists.txt index 38a9700df20..8bdc029329d 100644 --- a/storage/xtradb/CMakeLists.txt +++ b/storage/xtradb/CMakeLists.txt @@ -31,7 +31,7 @@ ENDIF (CMAKE_SIZEOF_VOID_P MATCHES 8) ADD_DEFINITIONS(-D_WIN32 -D_LIB -DMYSQL_SERVER) -# Include directories under innobase +# Include directories under xtradb INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/xtradb/include ${CMAKE_SOURCE_DIR}/storage/xtradb/handler) @@ -49,7 +49,7 @@ IF (MSVC AND $(WIN64)) PROPERTIES COMPILE_FLAGS -Od) ENDIF (MSVC AND $(WIN64)) -SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c +SET(XTRADB_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c buf/buf0buddy.c buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c data/data0data.c data/data0type.c dict/dict0boot.c dict/dict0crea.c dict/dict0dict.c dict/dict0load.c dict/dict0mem.c @@ -85,17 +85,16 @@ SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS -DIB_HAVE_PAUSE_INSTRUCTION) IF (MYSQL_VERSION_ID GREATER "50137") - MYSQL_STORAGE_ENGINE(INNOBASE) - # Use ha_innodb for plugin name, if plugin is built - GET_TARGET_PROPERTY(LIB_LOCATION ha_innobase LOCATION) + MYSQL_STORAGE_ENGINE(XTRADB) + GET_TARGET_PROPERTY(LIB_LOCATION ha_xtradb LOCATION) IF(LIB_LOCATION) - SET_TARGET_PROPERTIES(ha_innobase PROPERTIES OUTPUT_NAME ha_innodb) + SET_TARGET_PROPERTIES(ha_xtradb PROPERTIES OUTPUT_NAME ha_xtradb) ENDIF(LIB_LOCATION) ELSE (MYSQL_VERSION_ID GREATER "50137") IF (NOT SOURCE_SUBLIBS) ADD_DEFINITIONS(-D_WIN32 -DMYSQL_SERVER) - ADD_LIBRARY(innobase STATIC ${INNOBASE_SOURCES}) + ADD_LIBRARY(xtradb STATIC ${XTRADB_SOURCES}) # Require mysqld_error.h, which is built as part of the GenError - ADD_DEPENDENCIES(innobase GenError) + ADD_DEPENDENCIES(xtradb GenError) ENDIF (NOT SOURCE_SUBLIBS) ENDIF (MYSQL_VERSION_ID GREATER "50137") diff --git a/storage/xtradb/Makefile.am b/storage/xtradb/Makefile.am index 53413dfaeb8..36d250890f5 100644 --- a/storage/xtradb/Makefile.am +++ b/storage/xtradb/Makefile.am @@ -228,9 +228,9 @@ noinst_HEADERS= \ handler/innodb_patch_info.h \ mem/mem0dbg.c -EXTRA_LIBRARIES= libinnobase.a -noinst_LIBRARIES= @plugin_innobase_static_target@ -libinnobase_a_SOURCES= \ +EXTRA_LIBRARIES= libxtradb.a +noinst_LIBRARIES= @plugin_xtradb_static_target@ +libxtradb_a_SOURCES= \ btr/btr0btr.c \ btr/btr0cur.c \ btr/btr0pcur.c \ @@ -324,16 +324,16 @@ libinnobase_a_SOURCES= \ ut/ut0vec.c \ ut/ut0wqueue.c -libinnobase_a_CXXFLAGS= $(AM_CFLAGS) -libinnobase_a_CFLAGS= $(AM_CFLAGS) +libxtradb_a_CXXFLAGS= $(AM_CFLAGS) +libxtradb_a_CFLAGS= $(AM_CFLAGS) -EXTRA_LTLIBRARIES= ha_innodb.la -pkgplugin_LTLIBRARIES= @plugin_innobase_shared_target@ +EXTRA_LTLIBRARIES= ha_xtradb.la +pkgplugin_LTLIBRARIES= @plugin_xtradb_shared_target@ -ha_innodb_la_LDFLAGS= -module -rpath $(pkgplugindir) -ha_innodb_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) -ha_innodb_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) -ha_innodb_la_SOURCES= $(libinnobase_a_SOURCES) +ha_xtradb_la_LDFLAGS= -module -rpath $(pkgplugindir) +ha_xtradb_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) +ha_xtradb_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) +ha_xtradb_la_SOURCES= $(libxtradb_a_SOURCES) EXTRA_DIST= CMakeLists.txt plug.in \ pars/make_bison.sh pars/make_flex.sh \ diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc index 63083e27b26..230a4fde81f 100644 --- a/storage/xtradb/handler/ha_innodb.cc +++ b/storage/xtradb/handler/ha_innodb.cc @@ -10920,7 +10920,7 @@ static struct st_mysql_sys_var* innobase_system_variables[]= { NULL }; -mysql_declare_plugin(innobase) +mysql_declare_plugin(xtradb) { MYSQL_STORAGE_ENGINE_PLUGIN, &innobase_storage_engine, diff --git a/storage/xtradb/plug.in b/storage/xtradb/plug.in index 2d7bd51ec17..013ee4349f8 100644 --- a/storage/xtradb/plug.in +++ b/storage/xtradb/plug.in @@ -14,12 +14,12 @@ # Place, Suite 330, Boston, MA 02111-1307 USA # -MYSQL_STORAGE_ENGINE(innobase, innodb, [InnoDB Storage Engine], - [Transactional Tables using InnoDB], [max,max-no-ndb]) -MYSQL_PLUGIN_DIRECTORY(innobase, [storage/xtradb]) -MYSQL_PLUGIN_STATIC(innobase, [libinnobase.a]) -MYSQL_PLUGIN_DYNAMIC(innobase, [ha_innodb.la]) -MYSQL_PLUGIN_ACTIONS(innobase, [ +MYSQL_STORAGE_ENGINE(xtradb, innodb, [XtraDB Storage Engine], + [XtraDB - a drop-in replacement for InnoDB], [max,max-no-ndb]) +MYSQL_PLUGIN_DIRECTORY(xtradb, [storage/xtradb]) +MYSQL_PLUGIN_STATIC(xtradb, [libxtradb.a]) +MYSQL_PLUGIN_DYNAMIC(xtradb, [ha_xtradb.la]) +MYSQL_PLUGIN_ACTIONS(xtradb, [ AC_CHECK_LIB(rt, aio_read, [innodb_system_libs="-lrt"]) AC_SUBST(innodb_system_libs) AC_CHECK_HEADERS(aio.h sched.h) From 41297909aded820350afaecf64a4aee888bd369c Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Wed, 9 Jun 2010 21:30:41 -0300 Subject: [PATCH 144/461] Bug#34236: Various possibly related SSL crashes Addendum: Work around a compilation failure on Windows due to windows.h not being added to the global namespace. extra/yassl/include/lock.hpp: Move windows.h inclusion into the global namespace. --- extra/yassl/include/lock.hpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/extra/yassl/include/lock.hpp b/extra/yassl/include/lock.hpp index 7ce656522df..99829b0b6de 100644 --- a/extra/yassl/include/lock.hpp +++ b/extra/yassl/include/lock.hpp @@ -23,13 +23,21 @@ #ifndef yaSSL_LOCK_HPP #define yaSSL_LOCK_HPP +/* + Visual Studio Source Annotations header (sourceannotations.h) fails + to compile if outside of the global namespace. +*/ +#ifdef YASSL_THREAD_SAFE +#ifdef _WIN32 +#include +#endif +#endif namespace yaSSL { #ifdef YASSL_THREAD_SAFE #ifdef _WIN32 - #include class Mutex { CRITICAL_SECTION cs_; From e96885de92321763efd59e76d4dc192fef446be5 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 10 Jun 2010 11:11:52 +0200 Subject: [PATCH 145/461] fixed for mysql-test-run to * fully support --mysqld=--plugin-load=xxxx * uniformly support all loadable plugins, no need to hard-code every new plugin in mtr * autodetect MTR_VS_CONFIG on windows --- mysql-test/include/have_example_plugin.inc | 4 +- mysql-test/include/have_simple_parser.inc | 2 +- mysql-test/include/have_udf.inc | 2 +- mysql-test/include/rpl_udf.inc | 12 +- mysql-test/lib/My/File/Path.pm | 2 +- mysql-test/lib/mtr_cases.pm | 51 +--- mysql-test/mysql-test-run.pl | 235 ++++++++---------- mysql-test/r/information_schema.result | 6 +- mysql-test/r/innodb_ignore_builtin.result | 5 +- mysql-test/suite/pbxt/t/udf-master.opt | 1 - mysql-test/suite/pbxt/t/udf.test | 76 +++--- .../suite/rpl/t/rpl_plugin_load-master.opt | 1 - .../suite/rpl/t/rpl_plugin_load-slave.opt | 1 - mysql-test/suite/rpl/t/rpl_udf-master.opt | 1 - mysql-test/suite/rpl/t/rpl_udf-slave.opt | 1 - mysql-test/t/bug46261-master.opt | 2 +- mysql-test/t/bug46261.test | 2 +- mysql-test/t/fulltext_plugin-master.opt | 1 - mysql-test/t/information_schema.test | 1 + mysql-test/t/innodb_ignore_builtin.test | 4 +- mysql-test/t/mysqld_option_err.test | 2 +- mysql-test/t/plugin-master.opt | 1 - mysql-test/t/plugin.test | 10 +- mysql-test/t/plugin_load-master.opt | 3 +- mysql-test/t/plugin_not_embedded-master.opt | 1 - mysql-test/t/plugin_not_embedded.test | 2 +- mysql-test/t/udf-master.opt | 1 - mysql-test/t/udf.test | 72 +++--- mysql-test/t/udf_query_cache-master.opt | 1 - mysql-test/t/udf_query_cache.test | 4 +- 30 files changed, 208 insertions(+), 299 deletions(-) delete mode 100644 mysql-test/suite/pbxt/t/udf-master.opt delete mode 100644 mysql-test/suite/rpl/t/rpl_plugin_load-master.opt delete mode 100644 mysql-test/suite/rpl/t/rpl_plugin_load-slave.opt delete mode 100644 mysql-test/suite/rpl/t/rpl_udf-master.opt delete mode 100644 mysql-test/suite/rpl/t/rpl_udf-slave.opt delete mode 100644 mysql-test/t/fulltext_plugin-master.opt delete mode 100644 mysql-test/t/plugin-master.opt delete mode 100644 mysql-test/t/plugin_not_embedded-master.opt delete mode 100644 mysql-test/t/udf-master.opt delete mode 100644 mysql-test/t/udf_query_cache-master.opt diff --git a/mysql-test/include/have_example_plugin.inc b/mysql-test/include/have_example_plugin.inc index a2fffc17b97..a344b79700b 100644 --- a/mysql-test/include/have_example_plugin.inc +++ b/mysql-test/include/have_example_plugin.inc @@ -5,9 +5,9 @@ --source include/have_dynamic_loading.inc # -# Check if the variable EXAMPLE_PLUGIN is set +# Check if the variable HA_EXAMPLE_SO is set # --require r/have_example_plugin.require disable_query_log; -eval select LENGTH('$EXAMPLE_PLUGIN') > 0 as 'have_example_plugin'; +eval select LENGTH('$HA_EXAMPLE_SO') > 0 as 'have_example_plugin'; enable_query_log; diff --git a/mysql-test/include/have_simple_parser.inc b/mysql-test/include/have_simple_parser.inc index 5a4dc93ec81..44187c4331b 100644 --- a/mysql-test/include/have_simple_parser.inc +++ b/mysql-test/include/have_simple_parser.inc @@ -9,5 +9,5 @@ # --require r/have_simple_parser.require disable_query_log; -eval select LENGTH('$SIMPLE_PARSER') > 0 as 'have_simple_parser'; +eval select LENGTH('$MYPLUGLIB_SO') > 0 as 'have_simple_parser'; enable_query_log; diff --git a/mysql-test/include/have_udf.inc b/mysql-test/include/have_udf.inc index 7be57bbb7a9..cb8ba3f5ccd 100644 --- a/mysql-test/include/have_udf.inc +++ b/mysql-test/include/have_udf.inc @@ -9,5 +9,5 @@ # --require r/have_udf_example.require disable_query_log; -eval select LENGTH('$UDF_EXAMPLE_LIB') > 0 as 'have_udf_example_lib'; +eval select LENGTH('$UDF_EXAMPLE_SO') > 0 as 'have_udf_example_lib'; enable_query_log; diff --git a/mysql-test/include/rpl_udf.inc b/mysql-test/include/rpl_udf.inc index 30f39d79d49..3b4ddc2b897 100644 --- a/mysql-test/include/rpl_udf.inc +++ b/mysql-test/include/rpl_udf.inc @@ -27,13 +27,13 @@ drop table if exists t1; --echo "*** Test 1) Test UDFs via loadable libraries *** --echo "Running on the master" --enable_info ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB --error ER_CANT_FIND_DL_ENTRY -eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; +eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; --replace_column 3 UDF_LIB SELECT * FROM mysql.func ORDER BY name; --disable_info diff --git a/mysql-test/lib/My/File/Path.pm b/mysql-test/lib/My/File/Path.pm index 25a26568eee..6e6d23ad9f0 100644 --- a/mysql-test/lib/My/File/Path.pm +++ b/mysql-test/lib/My/File/Path.pm @@ -18,7 +18,7 @@ use strict; use Exporter; use base "Exporter"; -our @EXPORT= qw / rmtree mkpath copytree /; +our @EXPORT= qw /rmtree mkpath copytree/; use File::Find; use File::Copy; diff --git a/mysql-test/lib/mtr_cases.pm b/mysql-test/lib/mtr_cases.pm index 260b03479e3..9a8ef04a96b 100644 --- a/mysql-test/lib/mtr_cases.pm +++ b/mysql-test/lib/mtr_cases.pm @@ -55,7 +55,7 @@ sub collect_option { } use File::Basename; -use File::Spec::Functions qw / splitdir /; +use File::Spec::Functions qw /splitdir/; use IO::File(); use My::Config; use My::Platform; @@ -68,22 +68,9 @@ require "mtr_misc.pl"; my $do_test_reg; my $skip_test_reg; -# Related to adding InnoDB plugin combinations -my $lib_innodb_plugin; - # If "Quick collect", set to 1 once a test to run has been found. my $some_test_found; -sub find_innodb_plugin { - $lib_innodb_plugin= - my_find_file($::basedir, - ["storage/innodb_plugin", "storage/innodb_plugin/.libs", - "lib/mysql/plugin", "lib/mariadb/plugin", "lib/plugin"], - ["ha_innodb_plugin.dll", "ha_innodb_plugin.so", - "ha_innodb_plugin.sl"], - NOT_REQUIRED); -} - sub init_pattern { my ($from, $what)= @_; return undef unless defined $from; @@ -116,8 +103,6 @@ sub collect_test_cases ($$$) { $do_test_reg= init_pattern($do_test, "--do-test"); $skip_test_reg= init_pattern($skip_test, "--skip-test"); - &find_innodb_plugin; - # If not reordering, we also shouldn't group by suites, unless # no test cases were named. # This also effects some logic in the loop following this. @@ -966,36 +951,6 @@ sub collect_one_test_case { return $tinfo; } } - elsif ( $tinfo->{'innodb_plugin_test'} ) - { - # This is a test that needs the innodb plugin - if (!&find_innodb_plugin) - { - # innodb plugin is not supported, skip it - $tinfo->{'skip'}= 1; - $tinfo->{'comment'}= "No innodb plugin support"; - return $tinfo; - } - - my $sep= (IS_WINDOWS) ? ';' : ':'; - my $plugin_filename= basename($lib_innodb_plugin); - my $plugin_list= - "innodb=$plugin_filename$sep" . - "innodb_trx=$plugin_filename$sep" . - "innodb_locks=$plugin_filename$sep" . - "innodb_lock_waits=$plugin_filename$sep" . - "innodb_cmp=$plugin_filename$sep" . - "innodb_cmp_reset=$plugin_filename$sep" . - "innodb_cmpmem=$plugin_filename$sep" . - "innodb_cmpmem_reset=$plugin_filename"; - - foreach my $k ('master_opt', 'slave_opt') - { - push(@{$tinfo->{$k}}, '--ignore-builtin-innodb'); - push(@{$tinfo->{$k}}, '--plugin-dir=' . dirname($lib_innodb_plugin)); - push(@{$tinfo->{$k}}, "--plugin-load=$plugin_list"); - } - } else { push(@{$tinfo->{'master_opt'}}, "--loose-skip-innodb"); @@ -1113,7 +1068,7 @@ sub collect_one_test_case { if ( $tinfo->{'example_plugin_test'} ) { - if ( !$ENV{'EXAMPLE_PLUGIN'} ) + if ( !$ENV{'HA_EXAMPLE_SO'} ) { $tinfo->{'skip'}= 1; $tinfo->{'comment'}= "Test requires the 'example' plugin"; @@ -1165,7 +1120,7 @@ my @tags= ["include/have_innodb.inc", "innodb_test", 1], ["include/have_pbxt.inc", "pbxt_test", 1], - ["include/have_innodb_plugin.inc", "innodb_plugin_test", 1], + ["include/have_innodb_plugin.inc", "innodb_test", 1], ["include/big_test.inc", "big_test", 1], ["include/have_debug.inc", "need_debug", 1], ["include/have_ndb.inc", "ndb_test", 1], diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index dad8a5d7b58..6ec85d19acd 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -69,7 +69,7 @@ use File::Basename; use File::Copy; use File::Find; use File::Temp qw/tempdir/; -use File::Spec::Functions qw/splitdir/; +use File::Spec::Functions qw/splitdir rel2abs/; use My::Platform; use My::SafeProcess; use My::ConfigFactory; @@ -106,6 +106,7 @@ our $path_testlog; our $default_vardir; our $opt_vardir; # Path to use for var/ dir +our $plugindir; my $path_vardir_trace; # unix formatted opt_vardir for trace files my $opt_tmpdir; # Path to use for tmp/ dir my $opt_tmpdir_pid; @@ -315,8 +316,25 @@ sub main { } } - # Check for plugin availability so we know whether to skip tests or not. - detect_plugins(); + print "vardir: $opt_vardir\n"; + initialize_servers(); + + mtr_report("Checking supported features..."); + if (using_extern()) + { + # Connect to the running mysqld and find out what it supports + collect_mysqld_features_from_running_server(); + } + else + { + # Run the mysqld to find out what features are available + collect_mysqld_features(); + } + check_ndbcluster_support(\%mysqld_variables); + check_ssl_support(\%mysqld_variables); + check_debug_support(\%mysqld_variables); + + executable_setup(); mtr_report("Collecting tests..."); my $tests= collect_test_cases($opt_reorder, $opt_suites, \@opt_cases); @@ -335,9 +353,6 @@ sub main { unshift(@$tests, $tinfo); } - print "vardir: $opt_vardir\n"; - initialize_servers(); - ####################################################################### my $num_tests= @$tests; if ( $opt_parallel eq "auto" ) { @@ -1031,6 +1046,8 @@ sub command_line_setup { $basedir= dirname($basedir); } + fix_vs_config_dir(); + # Look for the client binaries directory if ($path_client_bindir) { @@ -1041,7 +1058,7 @@ sub command_line_setup { { $path_client_bindir= mtr_path_exists("$basedir/client_release", "$basedir/client_debug", - vs_config_dirs('client', ''), + "$basedir/client$opt_vs_config", "$basedir/client", "$basedir/bin"); } @@ -1055,17 +1072,6 @@ sub command_line_setup { my $path_share= dirname($path_language); $path_charsetsdir= mtr_path_exists("$path_share/charsets"); - if (using_extern()) - { - # Connect to the running mysqld and find out what it supports - collect_mysqld_features_from_running_server(); - } - else - { - # Run the mysqld to find out what features are available - collect_mysqld_features(); - } - if ( $opt_comment ) { mtr_report(); @@ -1288,7 +1294,7 @@ sub command_line_setup { # Add the location for libmysqld.dll to the path. my $separator= ";"; my $lib_mysqld= - mtr_path_exists(vs_config_dirs('libmysqld','')); + mtr_path_exists("$basedir/libmysqld$opt_vs_config"); if ( IS_CYGWIN ) { $lib_mysqld= posix_path($lib_mysqld); @@ -1478,15 +1484,6 @@ sub command_line_setup { { push(@opt_extra_mysqld_opt, "--loose-skip-innodb-use-sys-malloc"); } - - mtr_report("Checking supported features..."); - - check_ndbcluster_support(\%mysqld_variables); - check_ssl_support(\%mysqld_variables); - check_debug_support(\%mysqld_variables); - - executable_setup(); - } @@ -1552,13 +1549,6 @@ sub set_build_thread_ports($) { sub collect_mysqld_features { my $found_variable_list_start= 0; - my $use_tmpdir; - if ( defined $opt_tmpdir and -d $opt_tmpdir){ - # Create the tempdir in $opt_tmpdir - $use_tmpdir= $opt_tmpdir; - } - my $tmpdir= tempdir(CLEANUP => 0, # Directory removed by this function - DIR => $use_tmpdir); # # Execute "mysqld --no-defaults --help --verbose" to get a @@ -1572,9 +1562,11 @@ sub collect_mysqld_features { my $args; mtr_init_args(\$args); mtr_add_arg($args, "--no-defaults"); - mtr_add_arg($args, "--datadir=%s", mixed_path($tmpdir)); + mtr_add_arg($args, "--datadir=%s/tmp", $opt_vardir); + mtr_add_arg($args, "--basedir=%s", $basedir); mtr_add_arg($args, "--language=%s", $path_language); mtr_add_arg($args, "--skip-grant-tables"); + mtr_add_arg($args, $_) for (@opt_extra_mysqld_opt); my $euid= $>; if (!IS_WINDOWS and $euid == 0) { mtr_add_arg($args, "--user=root"); @@ -1647,7 +1639,6 @@ sub collect_mysqld_features { } } } - rmtree($tmpdir); mtr_error("Could not find version of MySQL") unless $mysql_version_id; mtr_error("Could not find variabes list") unless $found_variable_list_start; @@ -1764,8 +1755,7 @@ sub executable_setup () { if ( $opt_embedded_server ) { $exe_mysqltest= - mtr_exe_exists(vs_config_dirs('libmysqld/examples','mysqltest_embedded'), - "$basedir/libmysqld/examples/mysqltest_embedded", + mtr_exe_exists("$basedir/libmysqld/examples$opt_vs_config/mysqltest_embedded", "$path_client_bindir/mysqltest_embedded"); } else @@ -1874,12 +1864,10 @@ sub mysql_client_test_arguments(){ # mysql_client_test executable may _not_ exist if ( $opt_embedded_server ) { $exe= mtr_exe_maybe_exists( - vs_config_dirs('libmysqld/examples','mysql_client_test_embedded'), - "$basedir/libmysqld/examples/mysql_client_test_embedded", + "$basedir/libmysqld/examples$opt_vs_config/mysql_client_test_embedded", "$basedir/bin/mysql_client_test_embedded"); } else { - $exe= mtr_exe_maybe_exists(vs_config_dirs('tests', 'mysql_client_test'), - "$basedir/tests/mysql_client_test", + $exe= mtr_exe_maybe_exists("$basedir/tests$opt_vs_config/mysql_client_test", "$basedir/bin/mysql_client_test"); } @@ -1928,38 +1916,6 @@ sub have_maria_support () { return defined $maria_var and $maria_var eq 'TRUE'; } - -# Detect plugin presense and set environment variables appropriately. -# This needs to be done early, so we can know whether to skip tests. -sub detect_plugins { - # -------------------------------------------------------------------------- - # Add the path where mysqld will find ha_example.so - # -------------------------------------------------------------------------- - if ($mysql_version_id >= 50100) { - my $plugin_filename; - if (IS_WINDOWS) - { - $plugin_filename = "ha_example.dll"; - } - else - { - $plugin_filename = "ha_example.so"; - } - my $lib_example_plugin= - mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename), - "$basedir/storage/example/.libs/".$plugin_filename, - "$basedir/lib/mariadb/plugin/".$plugin_filename, - "$basedir/lib/mysql/plugin/".$plugin_filename); - $ENV{'EXAMPLE_PLUGIN'}= - ($lib_example_plugin ? basename($lib_example_plugin) : ""); - $ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=". - ($lib_example_plugin ? dirname($lib_example_plugin) : ""); - - $ENV{'HA_EXAMPLE_SO'}="'".$plugin_filename."'"; - $ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=EXAMPLE=".$plugin_filename; - } -} - # # Set environment to be used by childs of this process for # things that are constant during the whole lifetime of mysql-test-run @@ -1999,39 +1955,6 @@ sub environment_setup { push(@ld_library_paths, "$basedir/storage/ndb/src/.libs"); } - # -------------------------------------------------------------------------- - # Add the path where mysqld will find udf_example.so - # -------------------------------------------------------------------------- - my $lib_udf_example= - mtr_file_exists(vs_config_dirs('sql', 'udf_example.dll'), - "$basedir/sql/.libs/udf_example.so", - "$basedir/lib/mariadb/plugin/udf_example.so", - "$basedir/lib/mysql/plugin/udf_example.so",); - - if ( $lib_udf_example ) - { - push(@ld_library_paths, dirname($lib_udf_example)); - } - - $ENV{'UDF_EXAMPLE_LIB'}= - ($lib_udf_example ? basename($lib_udf_example) : ""); - $ENV{'UDF_EXAMPLE_LIB_OPT'}= "--plugin-dir=". - ($lib_udf_example ? dirname($lib_udf_example) : ""); - - # ---------------------------------------------------- - # Add the path where mysqld will find mypluglib.so - # ---------------------------------------------------- - my $lib_simple_parser= - mtr_file_exists(vs_config_dirs('plugin/fulltext', 'mypluglib.dll'), - "$basedir/plugin/fulltext/.libs/mypluglib.so", - "$basedir/lib/mariadb/plugin/mypluglib.so", - "$basedir/lib/mysql/plugin/mypluglib.so",); - - $ENV{'SIMPLE_PARSER'}= - ($lib_simple_parser ? basename($lib_simple_parser) : ""); - $ENV{'SIMPLE_PARSER_OPT'}= "--plugin-dir=". - ($lib_simple_parser ? dirname($lib_simple_parser) : ""); - # -------------------------------------------------------------------------- # Valgrind need to be run with debug libraries otherwise it's almost # impossible to add correct supressions, that means if "/usr/lib/debug" @@ -2158,8 +2081,7 @@ sub environment_setup { # some versions, test using it should be skipped # ---------------------------------------------------- my $exe_bug25714= - mtr_exe_maybe_exists(vs_config_dirs('tests', 'bug25714'), - "$basedir/tests/bug25714"); + mtr_exe_maybe_exists("$basedir/tests$opt_vs_config/bug25714"); $ENV{'MYSQL_BUG25714'}= native_path($exe_bug25714); # ---------------------------------------------------- @@ -2176,9 +2098,8 @@ sub environment_setup { # my_print_defaults # ---------------------------------------------------- my $exe_my_print_defaults= - mtr_exe_exists(vs_config_dirs('extra', 'my_print_defaults'), - "$path_client_bindir/my_print_defaults", - "$basedir/extra/my_print_defaults"); + mtr_exe_exists("$basedir/extra$opt_vs_config/my_print_defaults", + "$path_client_bindir/my_print_defaults"); $ENV{'MYSQL_MY_PRINT_DEFAULTS'}= native_path($exe_my_print_defaults); # ---------------------------------------------------- @@ -2201,8 +2122,7 @@ sub environment_setup { # ---------------------------------------------------- # perror # ---------------------------------------------------- - my $exe_perror= mtr_exe_exists(vs_config_dirs('extra', 'perror'), - "$basedir/extra/perror", + my $exe_perror= mtr_exe_exists("$basedir/extra$opt_vs_config/perror", "$path_client_bindir/perror"); $ENV{'MY_PERROR'}= native_path($exe_perror); @@ -2300,7 +2220,11 @@ sub remove_stale_vardir () { rmtree("$opt_tmpdir/"); } - +sub set_plugin_var($) { + local $_ = $_[0]; + s/\.\w+$//; + $ENV{"\U${_}_SO"} = $_[0]; +} # # Create var and the directories needed in var @@ -2365,6 +2289,44 @@ sub setup_vardir() { # and make them world readable copytree("$glob_mysql_test_dir/std_data", "$opt_vardir/std_data", "0022"); + # create a plugin dir and copy plugins into it + if ($source_dist) + { + $plugindir="$opt_vardir/plugins"; + unshift (@opt_extra_mysqld_opt, "--plugin-dir=$plugindir"); + mkpath($plugindir); + if (IS_WINDOWS) + { + for (<../storage/*$opt_vs_config/*.dll>, + <../plugin/*$opt_vs_config/*.dll>, + <../sql$opt_vs_config/*.dll>) + { + my $pname=basename($_); + copy rel2abs($_), "$plugindir/$pname"; + set_plugin_var($pname); + } + } + else + { + for (<../storage/*/.libs/*.so>,<../plugin/*/.libs/*.so>,<../sql/.libs/*.so>) + { + my $pname=basename($_); + symlink rel2abs($_), "$plugindir/$pname"; + set_plugin_var($pname); + } + } + } + else + { + # hm, what paths work for debs and for rpms ? + for (<$basedir/lib/mysql/plugin/*.so>, + <$basedir/lib/plugin/*.dll>) + { + my $pname=basename($_); + set_plugin_var($pname); + } + } + # Remove old log files foreach my $name (glob("r/*.progress r/*.log r/*.warnings")) { @@ -2455,29 +2417,36 @@ sub check_debug_support ($) { # -# Helper function to handle configuration-based subdirectories which Visual -# Studio uses for storing binaries. If opt_vs_config is set, this returns -# a path based on that setting; if not, it returns paths for the default -# /release/ and /debug/ subdirectories. +# Helper function to find the correct value for the opt_vs_config +# if it was not set explicitly. +# +# the configuration with the most recent build dir in sql/ is selected. # -# $exe can be undefined, if the directory itself will be used +# note: looking for all BuildLog.htm files everywhere in the tree with the +# help of File::Find would be possibly more precise, but it is also +# many times slower. Thus we are only looking at the server, client +# executables, and plugins - that is, something that can affect the test suite # -sub vs_config_dirs ($$) { - my ($path_part, $exe) = @_; +sub fix_vs_config_dir () { + return $opt_vs_config="" unless IS_WINDOWS; + return $opt_vs_config="/$opt_vs_config" if $opt_vs_config; - $exe = "" if not defined $exe; + my $modified = 1e30; + $opt_vs_config=""; - # Don't look in these dirs when not on windows - return () unless IS_WINDOWS; - - if ($opt_vs_config) - { - return ("$basedir/$path_part/$opt_vs_config/$exe"); + for my $dir (qw(client/*.dir libmysql/libmysql.dir sql/mysqld.dir + sql/udf_example.dir storage/*/*.dir plugin/*/*.dir)) { + for (<$basedir/$dir/*/BuildLog.htm>) { + if (-M $_ < $modified) + { + $modified = -M _; + $opt_vs_config = basename(dirname($_)); + } + } } - return ("$basedir/$path_part/release/$exe", - "$basedir/$path_part/relwithdebinfo/$exe", - "$basedir/$path_part/debug/$exe"); + mtr_report("VS config: $opt_vs_config"); + $opt_vs_config="/$opt_vs_config" if $opt_vs_config; } diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index c63b2d99cd8..742c9f2864e 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -859,6 +859,9 @@ TABLE_NAME COLUMN_NAME PRIVILEGES COLUMNS TABLE_NAME select COLUMN_PRIVILEGES TABLE_NAME select FILES TABLE_NAME select +INNODB_BUFFER_POOL_PAGES_INDEX table_name select +INNODB_INDEX_STATS table_name select +INNODB_TABLE_STATS table_name select KEY_COLUMN_USAGE TABLE_NAME select PARTITIONS TABLE_NAME select REFERENTIAL_CONSTRAINTS TABLE_NAME select @@ -867,9 +870,6 @@ TABLES TABLE_NAME select TABLE_CONSTRAINTS TABLE_NAME select TABLE_PRIVILEGES TABLE_NAME select VIEWS TABLE_NAME select -INNODB_BUFFER_POOL_PAGES_INDEX table_name select -INNODB_TABLE_STATS table_name select -INNODB_INDEX_STATS table_name select delete from mysql.user where user='mysqltest_4'; delete from mysql.db where user='mysqltest_4'; flush privileges; diff --git a/mysql-test/r/innodb_ignore_builtin.result b/mysql-test/r/innodb_ignore_builtin.result index 4694a61b20a..e65cb3c7850 100644 --- a/mysql-test/r/innodb_ignore_builtin.result +++ b/mysql-test/r/innodb_ignore_builtin.result @@ -2,8 +2,5 @@ show variables like 'ignore_builtin_innodb'; Variable_name Value ignore_builtin_innodb ON select PLUGIN_NAME from information_schema.plugins -where PLUGIN_NAME = "InnoDb"; +where PLUGIN_NAME = "InnoDb" and PLUGIN_LIBRARY IS NULL; PLUGIN_NAME -select ENGINE from information_schema.engines -where ENGINE = "InnoDB"; -ENGINE diff --git a/mysql-test/suite/pbxt/t/udf-master.opt b/mysql-test/suite/pbxt/t/udf-master.opt deleted file mode 100644 index 7d8786c156a..00000000000 --- a/mysql-test/suite/pbxt/t/udf-master.opt +++ /dev/null @@ -1 +0,0 @@ -$UDF_EXAMPLE_LIB_OPT diff --git a/mysql-test/suite/pbxt/t/udf.test b/mysql-test/suite/pbxt/t/udf.test index ab430cc2416..addcdef2103 100644 --- a/mysql-test/suite/pbxt/t/udf.test +++ b/mysql-test/suite/pbxt/t/udf.test @@ -14,26 +14,26 @@ drop table if exists t1; # Create the example functions from udf_example # ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_SO"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB --error ER_CANT_FIND_DL_ENTRY -eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION lookup RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION lookup RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB eval CREATE FUNCTION reverse_lookup - RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB + RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB eval CREATE AGGREGATE FUNCTION avgcost - RETURNS REAL SONAME "$UDF_EXAMPLE_LIB"; + RETURNS REAL SONAME "$UDF_EXAMPLE_SO"; --error ER_CANT_INITIALIZE_UDF select myfunc_double(); @@ -207,14 +207,14 @@ CREATE FUNCTION metaphon(a int) RETURNS int return 0; # this currently passes, and eclipse the stored function ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; DROP FUNCTION metaphon; DROP FUNCTION metaphon; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; --error ER_UDF_EXISTS CREATE FUNCTION metaphon(a int) RETURNS int @@ -245,8 +245,8 @@ DROP FUNCTION avgcost; # the UDF # select * from mysql.func; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; select IS_const(3); @@ -260,8 +260,8 @@ select is_const(3); # # Bug#18761: constant expression as UDF parameters not passed in as constant # ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; select is_const(3) as const, @@ -300,14 +300,14 @@ drop function if exists is_const; # Bug #25382: Passing NULL to an UDF called from stored procedures # crashes server # ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_SO"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; delimiter //; create function f1(p1 varchar(255)) @@ -345,8 +345,8 @@ drop function myfunc_int; # Bug #28921: Queries containing UDF functions are cached # ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; create table t1 (a char); set GLOBAL query_cache_size=1355776; @@ -374,8 +374,8 @@ DROP DATABASE IF EXISTS mysqltest; CREATE DATABASE mysqltest; USE mysqltest; DROP DATABASE mysqltest; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; DROP FUNCTION metaphon; USE test; @@ -403,8 +403,8 @@ insert into const_len_bug values(str_const, result, ""); END | DELIMITER ;| ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION check_const_len RETURNS string SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION check_const_len RETURNS string SONAME "$UDF_EXAMPLE_SO"; CALL check_const_len_sp("foo"); @@ -420,8 +420,8 @@ DROP TABLE const_len_bug; # Bug #30355: Incorrect ordering of UDF results # ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; CREATE TABLE t1 (a INT); CREATE TABLE t2 (a INT PRIMARY KEY); INSERT INTO t1 VALUES (4),(3),(2),(1); diff --git a/mysql-test/suite/rpl/t/rpl_plugin_load-master.opt b/mysql-test/suite/rpl/t/rpl_plugin_load-master.opt deleted file mode 100644 index 367d5233e0e..00000000000 --- a/mysql-test/suite/rpl/t/rpl_plugin_load-master.opt +++ /dev/null @@ -1 +0,0 @@ -$EXAMPLE_PLUGIN_OPT diff --git a/mysql-test/suite/rpl/t/rpl_plugin_load-slave.opt b/mysql-test/suite/rpl/t/rpl_plugin_load-slave.opt deleted file mode 100644 index 367d5233e0e..00000000000 --- a/mysql-test/suite/rpl/t/rpl_plugin_load-slave.opt +++ /dev/null @@ -1 +0,0 @@ -$EXAMPLE_PLUGIN_OPT diff --git a/mysql-test/suite/rpl/t/rpl_udf-master.opt b/mysql-test/suite/rpl/t/rpl_udf-master.opt deleted file mode 100644 index 7d8786c156a..00000000000 --- a/mysql-test/suite/rpl/t/rpl_udf-master.opt +++ /dev/null @@ -1 +0,0 @@ -$UDF_EXAMPLE_LIB_OPT diff --git a/mysql-test/suite/rpl/t/rpl_udf-slave.opt b/mysql-test/suite/rpl/t/rpl_udf-slave.opt deleted file mode 100644 index 7d8786c156a..00000000000 --- a/mysql-test/suite/rpl/t/rpl_udf-slave.opt +++ /dev/null @@ -1 +0,0 @@ -$UDF_EXAMPLE_LIB_OPT diff --git a/mysql-test/t/bug46261-master.opt b/mysql-test/t/bug46261-master.opt index 6be4269e809..5699a3387b8 100644 --- a/mysql-test/t/bug46261-master.opt +++ b/mysql-test/t/bug46261-master.opt @@ -1 +1 @@ ---skip-grant-tables $EXAMPLE_PLUGIN_OPT +--skip-grant-tables diff --git a/mysql-test/t/bug46261.test b/mysql-test/t/bug46261.test index 67bdc995850..9d8eecf3d52 100644 --- a/mysql-test/t/bug46261.test +++ b/mysql-test/t/bug46261.test @@ -7,7 +7,7 @@ --replace_regex /\.dll/.so/ --error ER_OPTION_PREVENTS_STATEMENT -eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO; +eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO'; --replace_regex /\.dll/.so/ --error ER_OPTION_PREVENTS_STATEMENT diff --git a/mysql-test/t/fulltext_plugin-master.opt b/mysql-test/t/fulltext_plugin-master.opt deleted file mode 100644 index a2554caa20b..00000000000 --- a/mysql-test/t/fulltext_plugin-master.opt +++ /dev/null @@ -1 +0,0 @@ -$SIMPLE_PARSER_OPT diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index f791f0ed738..10bc3645898 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -531,6 +531,7 @@ drop table t1; grant select on test.* to mysqltest_4@localhost; connect (user10261,localhost,mysqltest_4,,); connection user10261; +--sorted_result SELECT TABLE_NAME, COLUMN_NAME, PRIVILEGES FROM INFORMATION_SCHEMA.COLUMNS where COLUMN_NAME='TABLE_NAME'; connection default; diff --git a/mysql-test/t/innodb_ignore_builtin.test b/mysql-test/t/innodb_ignore_builtin.test index 6f987bcf891..66f7e47b703 100644 --- a/mysql-test/t/innodb_ignore_builtin.test +++ b/mysql-test/t/innodb_ignore_builtin.test @@ -3,6 +3,4 @@ # show variables like 'ignore_builtin_innodb'; select PLUGIN_NAME from information_schema.plugins -where PLUGIN_NAME = "InnoDb"; -select ENGINE from information_schema.engines -where ENGINE = "InnoDB"; +where PLUGIN_NAME = "InnoDb" and PLUGIN_LIBRARY IS NULL; diff --git a/mysql-test/t/mysqld_option_err.test b/mysql-test/t/mysqld_option_err.test index 6e4183a6f8c..9c02dec51e6 100644 --- a/mysql-test/t/mysqld_option_err.test +++ b/mysql-test/t/mysqld_option_err.test @@ -44,7 +44,7 @@ mkdir $MYSQLTEST_VARDIR/tmp/mysqld_option_err; # See also Bug#32034. --echo Test that bad value for plugin enum option is rejected correctly. --error 7 ---exec $MYSQLD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables $EXAMPLE_PLUGIN_OPT --plugin-load=EXAMPLE=ha_example.so --plugin-example-enum-var=noexist >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1 +--exec $MYSQLD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --plugin-dir=$MYSQLTEST_VARDIR/plugins --plugin-load=example=ha_example.so --plugin-example-enum-var=noexist >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1 # # Test that an wrong option with --help --verbose gives an error diff --git a/mysql-test/t/plugin-master.opt b/mysql-test/t/plugin-master.opt deleted file mode 100644 index 367d5233e0e..00000000000 --- a/mysql-test/t/plugin-master.opt +++ /dev/null @@ -1 +0,0 @@ -$EXAMPLE_PLUGIN_OPT diff --git a/mysql-test/t/plugin.test b/mysql-test/t/plugin.test index 788a7b336ef..9a1a750378c 100644 --- a/mysql-test/t/plugin.test +++ b/mysql-test/t/plugin.test @@ -5,15 +5,15 @@ CREATE TABLE t1(a int) ENGINE=EXAMPLE; DROP TABLE t1; --replace_regex /\.dll/.so/ -eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO; +eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO'; --replace_regex /\.dll/.so/ --error 1125 -eval INSTALL PLUGIN EXAMPLE SONAME $HA_EXAMPLE_SO; +eval INSTALL PLUGIN EXAMPLE SONAME '$HA_EXAMPLE_SO'; UNINSTALL PLUGIN example; --replace_regex /\.dll/.so/ -eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO; +eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO'; CREATE TABLE t1(a int) ENGINE=EXAMPLE; @@ -35,7 +35,7 @@ UNINSTALL PLUGIN non_exist; --echo # to impossible int val --echo # --replace_regex /\.dll/.so/ -eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO; +eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO'; SET GLOBAL example_enum_var= e1; SET GLOBAL example_enum_var= e2; @@ -50,7 +50,7 @@ UNINSTALL PLUGIN example; # Bug #32757 hang with sql_mode set when setting some global variables # --replace_regex /\.dll/.so/ -eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO; +eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO'; select @@session.sql_mode into @old_sql_mode; diff --git a/mysql-test/t/plugin_load-master.opt b/mysql-test/t/plugin_load-master.opt index bb7831c5769..aadeef2fb66 100644 --- a/mysql-test/t/plugin_load-master.opt +++ b/mysql-test/t/plugin_load-master.opt @@ -1,3 +1,2 @@ -$EXAMPLE_PLUGIN_OPT -$EXAMPLE_PLUGIN_LOAD +--plugin-load=EXAMPLE=$HA_EXAMPLE_SO --loose-plugin-example-enum-var=e2 diff --git a/mysql-test/t/plugin_not_embedded-master.opt b/mysql-test/t/plugin_not_embedded-master.opt deleted file mode 100644 index 367d5233e0e..00000000000 --- a/mysql-test/t/plugin_not_embedded-master.opt +++ /dev/null @@ -1 +0,0 @@ -$EXAMPLE_PLUGIN_OPT diff --git a/mysql-test/t/plugin_not_embedded.test b/mysql-test/t/plugin_not_embedded.test index 15aff548c29..11350e8c896 100644 --- a/mysql-test/t/plugin_not_embedded.test +++ b/mysql-test/t/plugin_not_embedded.test @@ -8,7 +8,7 @@ GRANT INSERT ON mysql.plugin TO bug51770@localhost; connect(con1,localhost,bug51770,,); --replace_regex /\.dll/.so/ -eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO; +eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO'; --error ER_TABLEACCESS_DENIED_ERROR UNINSTALL PLUGIN example; connection default; diff --git a/mysql-test/t/udf-master.opt b/mysql-test/t/udf-master.opt deleted file mode 100644 index 7d8786c156a..00000000000 --- a/mysql-test/t/udf-master.opt +++ /dev/null @@ -1 +0,0 @@ -$UDF_EXAMPLE_LIB_OPT diff --git a/mysql-test/t/udf.test b/mysql-test/t/udf.test index 283bb1a833c..eff35d9805f 100644 --- a/mysql-test/t/udf.test +++ b/mysql-test/t/udf.test @@ -14,26 +14,26 @@ drop table if exists t1; # Create the example functions from udf_example # ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_SO"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB --error ER_CANT_FIND_DL_ENTRY -eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION lookup RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION lookup RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB eval CREATE FUNCTION reverse_lookup - RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB + RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB eval CREATE AGGREGATE FUNCTION avgcost - RETURNS REAL SONAME "$UDF_EXAMPLE_LIB"; + RETURNS REAL SONAME "$UDF_EXAMPLE_SO"; --error ER_CANT_INITIALIZE_UDF select myfunc_double(); @@ -210,14 +210,14 @@ CREATE FUNCTION metaphon(a int) RETURNS int return 0; # this currently passes, and eclipse the stored function ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; DROP FUNCTION metaphon; DROP FUNCTION metaphon; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; --error ER_UDF_EXISTS CREATE FUNCTION metaphon(a int) RETURNS int @@ -248,8 +248,8 @@ DROP FUNCTION avgcost; # the UDF # select * from mysql.func; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; select IS_const(3); @@ -263,8 +263,8 @@ select is_const(3); # # Bug#18761: constant expression as UDF parameters not passed in as constant # ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; select is_const(3) as const, @@ -303,14 +303,14 @@ drop function if exists is_const; # Bug #25382: Passing NULL to an UDF called from stored procedures # crashes server # ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_SO"; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; delimiter //; create function f1(p1 varchar(255)) @@ -354,8 +354,8 @@ DROP DATABASE IF EXISTS mysqltest; CREATE DATABASE mysqltest; USE mysqltest; DROP DATABASE mysqltest; ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; DROP FUNCTION metaphon; USE test; @@ -383,8 +383,8 @@ insert into const_len_bug values(str_const, result, ""); END | DELIMITER ;| ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION check_const_len RETURNS string SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION check_const_len RETURNS string SONAME "$UDF_EXAMPLE_SO"; CALL check_const_len_sp("foo"); @@ -400,8 +400,8 @@ DROP TABLE const_len_bug; # Bug #30355: Incorrect ordering of UDF results # ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; CREATE TABLE t1 (a INT); CREATE TABLE t2 (a INT PRIMARY KEY); INSERT INTO t1 VALUES (4),(3),(2),(1); diff --git a/mysql-test/t/udf_query_cache-master.opt b/mysql-test/t/udf_query_cache-master.opt deleted file mode 100644 index 7d8786c156a..00000000000 --- a/mysql-test/t/udf_query_cache-master.opt +++ /dev/null @@ -1 +0,0 @@ -$UDF_EXAMPLE_LIB_OPT diff --git a/mysql-test/t/udf_query_cache.test b/mysql-test/t/udf_query_cache.test index cb64a2f1665..ce7bd43ea1f 100644 --- a/mysql-test/t/udf_query_cache.test +++ b/mysql-test/t/udf_query_cache.test @@ -14,8 +14,8 @@ drop table if exists t1; # Bug #28921: Queries containing UDF functions are cached # ---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB -eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB"; +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO"; create table t1 (a char); set GLOBAL query_cache_size=1355776; From a24df71e95fb6379a3ba86322c9941a82b8d6527 Mon Sep 17 00:00:00 2001 From: Tor Didriksen Date: Thu, 10 Jun 2010 13:15:35 +0200 Subject: [PATCH 146/461] Backport of Bug#53303 mytap tests should always have a plan() The bug was caused by buffered output. Flushing resolved it. We still recommend to allways call plan(). Also fix some compile warnings (formal parameter different from declaration) unittest/examples/Makefile.am: Omit core-t, since it will always fail. unittest/examples/no_plan-t.c: Comment that we recommend calling plan(NO_PLAN) unittest/mytap/tap.c: Use the named constant NO_PLAN Flush all output. unittest/mytap/tap.h: Change documentation for the plan() function. --- unittest/examples/Makefile.am | 3 ++- unittest/examples/no_plan-t.c | 11 ++++++++--- unittest/mytap/tap.c | 13 ++++++++++--- unittest/mytap/tap.h | 13 ++++++------- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/unittest/examples/Makefile.am b/unittest/examples/Makefile.am index 94032c00928..a1627a58b4e 100644 --- a/unittest/examples/Makefile.am +++ b/unittest/examples/Makefile.am @@ -20,7 +20,8 @@ AM_LDFLAGS = -L$(top_builddir)/unittest/mytap LDADD = -lmytap -noinst_PROGRAMS = simple-t skip-t todo-t skip_all-t no_plan-t core-t +# We omit core-t here, since it will always fail. +noinst_PROGRAMS = simple-t skip-t todo-t skip_all-t no_plan-t # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/unittest/examples/no_plan-t.c b/unittest/examples/no_plan-t.c index 56aabd6d752..f22340ae0d1 100644 --- a/unittest/examples/no_plan-t.c +++ b/unittest/examples/no_plan-t.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 MySQL AB +/* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,14 +20,19 @@ /* Sometimes, the number of tests is not known beforehand. In those - cases, the plan can be omitted and will instead be written at the - end of the test (inside exit_status()). + cases, you should invoke plan(NO_PLAN). + The plan will be printed at the end of the test (inside exit_status()). Use this sparingly, it is a last resort: planning how many tests you are going to run will help you catch that offending case when some tests are skipped for an unknown reason. */ int main() { + /* + We recommend calling plan(NO_PLAN), but want to verify that + omitting the call works as well. + plan(NO_PLAN); + */ ok(1, " "); ok(1, " "); ok(1, " "); diff --git a/unittest/mytap/tap.c b/unittest/mytap/tap.c index 4e053e3e745..a5831f2b71d 100644 --- a/unittest/mytap/tap.c +++ b/unittest/mytap/tap.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 MySQL AB +/* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,7 +40,7 @@ @ingroup MyTAP_Internal */ -static TEST_DATA g_test = { 0, 0, 0, "" }; +static TEST_DATA g_test = { NO_PLAN, 0, 0, "" }; /** Output stream for test report message. @@ -74,6 +74,7 @@ vemit_tap(int pass, char const *fmt, va_list ap) (fmt && *fmt) ? " - " : ""); if (fmt && *fmt) vfprintf(tapout, fmt, ap); + fflush(tapout); } @@ -96,6 +97,7 @@ static void emit_dir(const char *dir, const char *why) { fprintf(tapout, " # %s %s", dir, why); + fflush(tapout); } @@ -108,6 +110,7 @@ static void emit_endl() { fprintf(tapout, "\n"); + fflush(tapout); } static void @@ -183,7 +186,10 @@ plan(int const count) break; default: if (count > 0) + { fprintf(tapout, "1..%d\n", count); + fflush(tapout); + } break; } } @@ -196,6 +202,7 @@ skip_all(char const *reason, ...) va_start(ap, reason); fprintf(tapout, "1..0 # skip "); vfprintf(tapout, reason, ap); + fflush(tapout); va_end(ap); exit(0); } @@ -218,7 +225,7 @@ ok(int const pass, char const *fmt, ...) void -skip(int how_many, char const *const fmt, ...) +skip(int how_many, char const *fmt, ...) { char reason[80]; if (fmt && *fmt) diff --git a/unittest/mytap/tap.h b/unittest/mytap/tap.h index 31ec47d1ef2..4118207ca7a 100644 --- a/unittest/mytap/tap.h +++ b/unittest/mytap/tap.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 MySQL AB +/* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -72,10 +72,9 @@ extern "C" { /** Set number of tests that is planned to execute. - The function also accepts the predefined constant - NO_PLAN. If the function is not called, it is as if - it was called with NO_PLAN, i.e., the test plan will - be printed after all the test lines. + The function also accepts the predefined constant NO_PLAN. + If invoked with this constant -- or not invoked at all -- + the test plan will be printed after all the test lines. The plan() function will install signal handlers for all signals that generate a core, so if you want to override these signals, do @@ -84,7 +83,7 @@ extern "C" { @param count The planned number of tests to run. */ -void plan(int count); +void plan(int const count); /** @@ -103,7 +102,7 @@ void plan(int count); which case nothing is printed. */ -void ok(int pass, char const *fmt, ...) +void ok(int const pass, char const *fmt, ...) __attribute__((format(printf,2,3))); From 50d0cd72485ad3c069a7fbb07473fc08b28301c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 10 Jun 2010 15:56:23 +0300 Subject: [PATCH 147/461] Bug #38999: Re-enable innodb_multi_update.test --- mysql-test/suite/innodb/t/disabled.def | 1 - mysql-test/suite/innodb_plugin/t/disabled.def | 1 - 2 files changed, 2 deletions(-) diff --git a/mysql-test/suite/innodb/t/disabled.def b/mysql-test/suite/innodb/t/disabled.def index da04138fd0a..888298bbb09 100644 --- a/mysql-test/suite/innodb/t/disabled.def +++ b/mysql-test/suite/innodb/t/disabled.def @@ -9,4 +9,3 @@ # Do not use any TAB characters for whitespace. # ############################################################################## -innodb_multi_update: Bug #38999 2010-05-05 mmakela Valgrind warnings diff --git a/mysql-test/suite/innodb_plugin/t/disabled.def b/mysql-test/suite/innodb_plugin/t/disabled.def index da04138fd0a..888298bbb09 100644 --- a/mysql-test/suite/innodb_plugin/t/disabled.def +++ b/mysql-test/suite/innodb_plugin/t/disabled.def @@ -9,4 +9,3 @@ # Do not use any TAB characters for whitespace. # ############################################################################## -innodb_multi_update: Bug #38999 2010-05-05 mmakela Valgrind warnings From e40c3b97630a0885a1a328d1133f21b65c69298c Mon Sep 17 00:00:00 2001 From: Inaam Rana Date: Thu, 10 Jun 2010 09:58:11 -0400 Subject: [PATCH 148/461] Formatting changes --- storage/innodb_plugin/row/row0ins.c | 2 +- storage/innodb_plugin/row/row0purge.c | 2 +- storage/innodb_plugin/row/row0uins.c | 2 +- storage/innodb_plugin/row/row0umod.c | 2 +- storage/innodb_plugin/row/row0upd.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/storage/innodb_plugin/row/row0ins.c b/storage/innodb_plugin/row/row0ins.c index b70e77c7b7a..a193bf21f7c 100644 --- a/storage/innodb_plugin/row/row0ins.c +++ b/storage/innodb_plugin/row/row0ins.c @@ -51,7 +51,7 @@ Created 4/20/1996 Heikki Tuuri #define ROW_INS_PREV 1 #define ROW_INS_NEXT 2 -/*********************************************************************//** +/************************************************************************* IMPORTANT NOTE: Any operation that generates redo MUST check that there is enough space in the redo log before for that operation. This is done by calling log_free_check(). The reason for checking the diff --git a/storage/innodb_plugin/row/row0purge.c b/storage/innodb_plugin/row/row0purge.c index 0b470f12fc6..835af990672 100644 --- a/storage/innodb_plugin/row/row0purge.c +++ b/storage/innodb_plugin/row/row0purge.c @@ -44,7 +44,7 @@ Created 3/14/1997 Heikki Tuuri #include "row0mysql.h" #include "log0log.h" -/*********************************************************************//** +/************************************************************************* IMPORTANT NOTE: Any operation that generates redo MUST check that there is enough space in the redo log before for that operation. This is done by calling log_free_check(). The reason for checking the diff --git a/storage/innodb_plugin/row/row0uins.c b/storage/innodb_plugin/row/row0uins.c index 2c5da6a81ca..930a5cf13b6 100644 --- a/storage/innodb_plugin/row/row0uins.c +++ b/storage/innodb_plugin/row/row0uins.c @@ -46,7 +46,7 @@ Created 2/25/1997 Heikki Tuuri #include "ibuf0ibuf.h" #include "log0log.h" -/*********************************************************************//** +/************************************************************************* IMPORTANT NOTE: Any operation that generates redo MUST check that there is enough space in the redo log before for that operation. This is done by calling log_free_check(). The reason for checking the diff --git a/storage/innodb_plugin/row/row0umod.c b/storage/innodb_plugin/row/row0umod.c index fd10b718b4f..8464b0f95cc 100644 --- a/storage/innodb_plugin/row/row0umod.c +++ b/storage/innodb_plugin/row/row0umod.c @@ -58,7 +58,7 @@ delete marked clustered index record was delete unmarked and possibly also some of its fields were changed. Now, it is possible that the delete marked version has become obsolete at the time the undo is started. */ -/*********************************************************************//** +/************************************************************************* IMPORTANT NOTE: Any operation that generates redo MUST check that there is enough space in the redo log before for that operation. This is done by calling log_free_check(). The reason for checking the diff --git a/storage/innodb_plugin/row/row0upd.c b/storage/innodb_plugin/row/row0upd.c index efc27a3cacd..d0aaecd3dae 100644 --- a/storage/innodb_plugin/row/row0upd.c +++ b/storage/innodb_plugin/row/row0upd.c @@ -92,7 +92,7 @@ the x-latch freed? The most efficient way for performing a searched delete is obviously to keep the x-latch for several steps of query graph execution. */ -/*********************************************************************//** +/************************************************************************* IMPORTANT NOTE: Any operation that generates redo MUST check that there is enough space in the redo log before for that operation. This is done by calling log_free_check(). The reason for checking the From e7c672cbd98a62ddeeed0bb3c9c5cb4192846fc3 Mon Sep 17 00:00:00 2001 From: Inaam Rana Date: Thu, 10 Jun 2010 10:31:28 -0400 Subject: [PATCH 149/461] Add a debug assertion. --- storage/innodb_plugin/include/log0log.ic | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/storage/innodb_plugin/include/log0log.ic b/storage/innodb_plugin/include/log0log.ic index 139f4041a36..1ce00fd7313 100644 --- a/storage/innodb_plugin/include/log0log.ic +++ b/storage/innodb_plugin/include/log0log.ic @@ -433,7 +433,10 @@ void log_free_check(void) /*================*/ { - /* ut_ad(sync_thread_levels_empty()); */ + +#ifdef UNIV_SYNC_DEBUG + ut_ad(sync_thread_levels_empty_gen(TRUE)); +#endif /* UNIV_SYNC_DEBUG */ if (log_sys->check_flush_or_checkpoint) { From 1cd47ac79a00685883ed5a21a265be10191db483 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 10 Jun 2010 19:35:18 +0200 Subject: [PATCH 150/461] ugly-ugly. $with_plugin_innobase was hard-coded in configure.in in --- storage/xtradb/plug.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/storage/xtradb/plug.in b/storage/xtradb/plug.in index 013ee4349f8..c77bd15be1b 100644 --- a/storage/xtradb/plug.in +++ b/storage/xtradb/plug.in @@ -14,12 +14,13 @@ # Place, Suite 330, Boston, MA 02111-1307 USA # -MYSQL_STORAGE_ENGINE(xtradb, innodb, [XtraDB Storage Engine], +MYSQL_STORAGE_ENGINE(xtradb, xtradb, [XtraDB Storage Engine], [XtraDB - a drop-in replacement for InnoDB], [max,max-no-ndb]) MYSQL_PLUGIN_DIRECTORY(xtradb, [storage/xtradb]) MYSQL_PLUGIN_STATIC(xtradb, [libxtradb.a]) MYSQL_PLUGIN_DYNAMIC(xtradb, [ha_xtradb.la]) MYSQL_PLUGIN_ACTIONS(xtradb, [ + with_plugin_innobase=$with_plugin_xtradb # for legacy code in configure.in AC_CHECK_LIB(rt, aio_read, [innodb_system_libs="-lrt"]) AC_SUBST(innodb_system_libs) AC_CHECK_HEADERS(aio.h sched.h) From 6f3a540c37bd1d84139c32a4b74844ff648c3b0c Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Thu, 10 Jun 2010 17:16:43 -0300 Subject: [PATCH 151/461] Bug#42733: Type-punning warnings when compiling MySQL -- strict aliasing violations. Essentially, the problem is that large parts of the server were developed in simpler times (last decades, pre C99 standard) when strict aliasing and compilers supporting such optimizations were rare to non-existent. Thus, when compiling the server with a modern compiler that uses strict aliasing rules to perform optimizations, there are several places in the code that might trigger undefined behavior. As evinced by some recent bugs, GCC does a somewhat good of job misoptimizing such code, but on the other hand also gives warnings about suspicious code. One problem is that the warnings aren't always accurate, yet we can't afford to just shut them off as we might miss real cases. False-positive cases are aggravated mostly by casts that are likely to trigger undefined behavior. The solution is to start a cleanup process focused on fixing and reducing the amount of strict-aliasing related warnings produced by GCC and others compilers. A good deal of noise reduction can be achieved by just removing useless casts that are product of historical cruft and are likely to trigger undefined behavior if dereferenced. client/mysql.cc: Remove now-unnecessary casts. Break up large strings. client/mysql_upgrade.c: Remove now-unnecessary casts. client/mysqladmin.cc: Remove now-unnecessary casts. Break up large strings. client/mysqlbinlog.cc: Remove now-unnecessary casts. client/mysqlcheck.c: Remove now-unnecessary casts. client/mysqldump.c: Remove now-unnecessary casts. client/mysqlimport.c: Remove now-unnecessary casts. client/mysqlshow.c: Remove now-unnecessary casts. client/mysqlslap.c: Remove now-unnecessary casts. client/mysqltest.cc: Remove now-unnecessary casts. extra/comp_err.c: Remove now-unnecessary casts. extra/my_print_defaults.c: Remove now-unnecessary casts. Break up large strings. extra/mysql_waitpid.c: Remove now-unnecessary casts. extra/perror.c: Remove now-unnecessary casts. extra/resolve_stack_dump.c: Remove now-unnecessary casts. extra/resolveip.c: Remove now-unnecessary casts. include/my_getopt.h: Use a void pointer type as the opaque type to avoid problems with type incompatibility -- GCC issues warnings when the type name is not type compatible with a operand. As a side bonus, a explicit cast won't be necessary anymore. include/sslopt-longopts.h: Remove now-unnecessary casts. Break up large strings. mysys/my_getopt.c: Update opaque type and introduce a type definition for the argument to my_getopt_register_get_addr. server-tools/instance-manager/options.cc: Remove now-unnecessary casts. sql/mysqld.cc: Remove now-unnecessary casts. Break up large strings. Update mysql_getopt_value prototype (the old prototype was different from the definition anyway). sql/sql_plugin.cc: The type of a pointer to a function must be compatible with the pointed-to function type, otherwise the behavior is undefined. sql/table.cc: The variable buf pointer to pointer to pointer to constant char could improperly alias a incompatible type in call to fix_type_ pointers. Since this was actually dead code, it is simply removed. sql/unireg.cc: Remove call to get_form_pos. The code creates a new FRM file which is always truncated and writes the form position as 0. Hence, no need to retrieve it, we now for sure it is 0. storage/archive/archive_reader.c: Remove now-unnecessary casts. storage/myisam/ft_nlq_search.c: Read weight directly from the buffer. storage/myisam/fulltext.h: Add explanation about the type duality of a key buffer. Add accessor macro to retrieve a FT float value. storage/myisam/mi_test1.c: Remove now-unnecessary casts. storage/myisam/myisam_ftdump.c: Read weight directly from the buffer. storage/myisam/myisamchk.c: Remove now-unnecessary casts. storage/myisam/myisamlog.c: A pointer to char was used to alias a pointer to pointer to unsigned char, thus violating strict aliasing rules. storage/myisam/myisampack.c: Remove now-unnecessary casts. strings/decimal.c: Remove aliasing violation, printing the value is enough for debugging purposes. tests/mysql_client_test.c: Remove now-unnecessary casts. --- client/mysql.cc | 175 ++-- client/mysql_upgrade.c | 24 +- client/mysqladmin.cc | 60 +- client/mysqlbinlog.cc | 67 +- client/mysqlcheck.c | 58 +- client/mysqldump.c | 146 ++-- client/mysqlimport.c | 72 +- client/mysqlshow.c | 39 +- client/mysqlslap.c | 106 ++- client/mysqltest.cc | 65 +- extra/comp_err.c | 32 +- extra/my_print_defaults.c | 27 +- extra/mysql_waitpid.c | 2 +- extra/perror.c | 10 +- extra/resolve_stack_dump.c | 6 +- extra/resolveip.c | 2 +- include/my_getopt.h | 21 +- include/sslopt-longopts.h | 21 +- mysys/mf_wfile.c | 2 +- mysys/my_getopt.c | 36 +- server-tools/instance-manager/options.cc | 74 +- sql/mysqld.cc | 988 ++++++++++++----------- sql/sql_plugin.cc | 60 +- sql/table.cc | 73 +- sql/unireg.cc | 14 +- storage/archive/archive_reader.c | 5 +- storage/myisam/ft_nlq_search.c | 2 +- storage/myisam/fulltext.h | 15 + storage/myisam/mi_test1.c | 34 +- storage/myisam/myisam_ftdump.c | 2 +- storage/myisam/myisamchk.c | 66 +- storage/myisam/myisamlog.c | 8 +- storage/myisam/myisampack.c | 12 +- strings/decimal.c | 2 +- tests/mysql_client_test.c | 33 +- 35 files changed, 1248 insertions(+), 1111 deletions(-) diff --git a/client/mysql.cc b/client/mysql.cc index d013dc4c4ae..14a6ceed51d 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -1347,58 +1347,66 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"auto-rehash", OPT_AUTO_REHASH, - "Enable automatic rehashing. One doesn't need to use 'rehash' to get table and field completion, but startup and reconnecting may take a longer time. Disable with --disable-auto-rehash.", - (uchar**) &opt_rehash, (uchar**) &opt_rehash, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, + "Enable automatic rehashing. One doesn't need to use 'rehash' to get table " + "and field completion, but startup and reconnecting may take a longer time. " + "Disable with --disable-auto-rehash.", + &opt_rehash, &opt_rehash, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"no-auto-rehash", 'A', - "No automatic rehashing. One has to use 'rehash' to get table and field completion. This gives a quicker start of mysql and disables rehashing on reconnect.", + "No automatic rehashing. One has to use 'rehash' to get table and field " + "completion. This gives a quicker start of mysql and disables rehashing " + "on reconnect.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"batch", 'B', - "Don't use history file. Disable interactive behavior. (Enables --silent.)", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, + "Don't use history file. Disable interactive behavior. (Enables --silent.)", + 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR, - "Directory for character set files.", (uchar**) &charsets_dir, - (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory for character set files.", &charsets_dir, + &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"column-type-info", OPT_COLUMN_TYPES, "Display column type information.", - (uchar**) &column_types_flag, (uchar**) &column_types_flag, + &column_types_flag, &column_types_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"comments", 'c', "Preserve comments. Send comments to the server." " The default is --skip-comments (discard comments), enable with --comments.", - (uchar**) &preserve_comments, (uchar**) &preserve_comments, + &preserve_comments, &preserve_comments, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"compress", 'C', "Use compression in server/client protocol.", - (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - #ifdef DBUG_OFF {"debug", '#', "This is a non-debug version. Catch this and exit.", 0,0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0}, #else - {"debug", '#', "Output debug log.", (uchar**) &default_dbug_option, - (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"debug", '#', "Output debug log.", &default_dbug_option, + &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.", - (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0, + &debug_check_flag, &debug_check_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"debug-info", 'T', "Print some debug info at exit.", (uchar**) &debug_info_flag, - (uchar**) &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"database", 'D', "Database to use.", (uchar**) ¤t_db, - (uchar**) ¤t_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"debug-info", 'T', "Print some debug info at exit.", &debug_info_flag, + &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"database", 'D', "Database to use.", ¤t_db, + ¤t_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"default-character-set", OPT_DEFAULT_CHARSET, - "Set the default character set.", (uchar**) &default_charset, - (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"delimiter", OPT_DELIMITER, "Delimiter to be used.", (uchar**) &delimiter_str, - (uchar**) &delimiter_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Set the default character set.", &default_charset, + &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"delimiter", OPT_DELIMITER, "Delimiter to be used.", &delimiter_str, + &delimiter_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"execute", 'e', "Execute command and quit. (Disables --force and history file.)", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"vertical", 'E', "Print the output of a query (rows) vertically.", - (uchar**) &vertical, (uchar**) &vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, + &vertical, &vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"force", 'f', "Continue even if we get an SQL error.", - (uchar**) &ignore_errors, (uchar**) &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0, + &ignore_errors, &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"named-commands", 'G', - "Enable named commands. Named commands mean this program's internal commands; see mysql> help . When enabled, the named commands can be used from any line of the query, otherwise only from the first line, before an enter. Disable with --disable-named-commands. This option is disabled by default.", - (uchar**) &named_cmds, (uchar**) &named_cmds, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + "Enable named commands. Named commands mean this program's internal " + "commands; see mysql> help . When enabled, the named commands can be " + "used from any line of the query, otherwise only from the first line, " + "before an enter. Disable with --disable-named-commands. This option " + "is disabled by default.", + &named_cmds, &named_cmds, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"no-named-commands", 'g', "Named commands are disabled. Use \\* form only, or use named commands " @@ -1408,47 +1416,54 @@ static struct my_option my_long_options[] = "WARNING: option deprecated; use --disable-named-commands instead.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"ignore-spaces", 'i', "Ignore space after function names.", - (uchar**) &ignore_spaces, (uchar**) &ignore_spaces, 0, GET_BOOL, NO_ARG, 0, 0, + &ignore_spaces, &ignore_spaces, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"local-infile", OPT_LOCAL_INFILE, "Enable/disable LOAD DATA LOCAL INFILE.", - (uchar**) &opt_local_infile, - (uchar**) &opt_local_infile, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0}, - {"no-beep", 'b', "Turn off beep on error.", (uchar**) &opt_nobeep, - (uchar**) &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"host", 'h', "Connect to host.", (uchar**) ¤t_host, - (uchar**) ¤t_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"html", 'H', "Produce HTML output.", (uchar**) &opt_html, (uchar**) &opt_html, + &opt_local_infile, + &opt_local_infile, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"no-beep", 'b', "Turn off beep on error.", &opt_nobeep, + &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"host", 'h', "Connect to host.", ¤t_host, + ¤t_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"html", 'H', "Produce HTML output.", &opt_html, &opt_html, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"xml", 'X', "Produce XML output.", (uchar**) &opt_xml, (uchar**) &opt_xml, 0, + {"xml", 'X', "Produce XML output.", &opt_xml, &opt_xml, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"line-numbers", OPT_LINE_NUMBERS, "Write line numbers for errors.", - (uchar**) &line_numbers, (uchar**) &line_numbers, 0, GET_BOOL, + &line_numbers, &line_numbers, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"skip-line-numbers", 'L', "Don't write line number for errors.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"unbuffered", 'n', "Flush buffer after each query.", (uchar**) &unbuffered, - (uchar**) &unbuffered, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"unbuffered", 'n', "Flush buffer after each query.", &unbuffered, + &unbuffered, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"column-names", OPT_COLUMN_NAMES, "Write column names in results.", - (uchar**) &column_names, (uchar**) &column_names, 0, GET_BOOL, + &column_names, &column_names, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"skip-column-names", 'N', "Don't write column names in results.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"set-variable", 'O', - "Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.", + "Change the value of a variable. Please note that this option is " + "deprecated; you can set variables directly with --variable-name=value.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"sigint-ignore", OPT_SIGINT_IGNORE, "Ignore SIGINT (CTRL-C).", - (uchar**) &opt_sigint_ignore, (uchar**) &opt_sigint_ignore, 0, GET_BOOL, + &opt_sigint_ignore, &opt_sigint_ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"one-database", 'o', - "Only update the default database. This is useful for skipping updates to other database in the update log.", + "Only update the default database. This is useful for skipping updates " + "to other database in the update log.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef USE_POPEN {"pager", OPT_PAGER, - "Pager to use to display results. If you don't supply an option, the default pager is taken from your ENV variable PAGER. Valid pagers are less, more, cat [> filename], etc. See interactive help (\\h) also. This option does not work in batch mode. Disable with --disable-pager. This option is disabled by default.", + "Pager to use to display results. If you don't supply an option, the " + "default pager is taken from your ENV variable PAGER. Valid pagers are " + "less, more, cat [> filename], etc. See interactive help (\\h) also. " + "This option does not work in batch mode. Disable with --disable-pager. " + "This option is disabled by default.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"no-pager", OPT_NOPAGER, - "Disable pager and print to stdout. See interactive help (\\h) also. WARNING: option deprecated; use --disable-pager instead.", + "Disable pager and print to stdout. See interactive help (\\h) also. " + "WARNING: option deprecated; use --disable-pager instead.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"password", 'p', @@ -1464,48 +1479,53 @@ static struct my_option my_long_options[] = "/etc/services, " #endif "built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").", - (uchar**) &opt_mysql_port, - (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &opt_mysql_port, + &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"prompt", OPT_PROMPT, "Set the mysql prompt to this value.", - (uchar**) ¤t_prompt, (uchar**) ¤t_prompt, 0, GET_STR_ALLOC, + ¤t_prompt, ¤t_prompt, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"protocol", OPT_MYSQL_PROTOCOL, "The protocol to use for connection (tcp, socket, pipe, memory).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"quick", 'q', - "Don't cache result, print it row by row. This may slow down the server if the output is suspended. Doesn't use history file.", - (uchar**) &quick, (uchar**) &quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + "Don't cache result, print it row by row. This may slow down the server " + "if the output is suspended. Doesn't use history file.", + &quick, &quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"raw", 'r', "Write fields without conversion. Used with --batch.", - (uchar**) &opt_raw_data, (uchar**) &opt_raw_data, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_raw_data, &opt_raw_data, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"reconnect", OPT_RECONNECT, "Reconnect if the connection is lost. Disable with --disable-reconnect. This option is enabled by default.", - (uchar**) &opt_reconnect, (uchar**) &opt_reconnect, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, - {"silent", 's', "Be more silent. Print results with a tab as separator, each row on new line.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, - 0, 0}, + {"reconnect", OPT_RECONNECT, "Reconnect if the connection is lost. Disable " + "with --disable-reconnect. This option is enabled by default.", + &opt_reconnect, &opt_reconnect, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, + {"silent", 's', "Be more silent. Print results with a tab as separator, " + "each row on new line.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_SMEM {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME, - "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name, - 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Base name of shared memory.", &shared_memory_base_name, + &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"socket", 'S', "The socket file to use for connection.", - (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0, GET_STR_ALLOC, + &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #include "sslopt-longopts.h" - {"table", 't', "Output in table format.", (uchar**) &output_tables, - (uchar**) &output_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"table", 't', "Output in table format.", &output_tables, + &output_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"tee", OPT_TEE, - "Append everything into outfile. See interactive help (\\h) also. Does not work in batch mode. Disable with --disable-tee. This option is disabled by default.", + "Append everything into outfile. See interactive help (\\h) also. " + "Does not work in batch mode. Disable with --disable-tee. " + "This option is disabled by default.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"no-tee", OPT_NOTEE, "Disable outfile. See interactive help (\\h) also. WARNING: Option deprecated; use --disable-tee instead.", 0, 0, 0, GET_NO_ARG, - NO_ARG, 0, 0, 0, 0, 0, 0}, + {"no-tee", OPT_NOTEE, "Disable outfile. See interactive help (\\h) also. " + "WARNING: Option deprecated; use --disable-tee instead.", + 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DONT_ALLOW_USER_CHANGE - {"user", 'u', "User for login if not current user.", (uchar**) ¤t_user, - (uchar**) ¤t_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"user", 'u', "User for login if not current user.", ¤t_user, + ¤t_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"safe-updates", 'U', "Only allow UPDATE and DELETE that uses keys.", - (uchar**) &safe_updates, (uchar**) &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0, + &safe_updates, &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"i-am-a-dummy", 'U', "Synonym for option --safe-updates, -U.", - (uchar**) &safe_updates, (uchar**) &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0, + &safe_updates, &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"verbose", 'v', "Write more. (-v -v -v gives the table output format).", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -1515,35 +1535,32 @@ static struct my_option my_long_options[] = NO_ARG, 0, 0, 0, 0, 0, 0}, {"connect_timeout", OPT_CONNECT_TIMEOUT, "Number of seconds before connection timeout.", - (uchar**) &opt_connect_timeout, - (uchar**) &opt_connect_timeout, 0, GET_ULONG, REQUIRED_ARG, 0, 0, 3600*12, 0, - 0, 0}, + &opt_connect_timeout, &opt_connect_timeout, 0, GET_ULONG, REQUIRED_ARG, + 0, 0, 3600*12, 0, 0, 0}, {"max_allowed_packet", OPT_MAX_ALLOWED_PACKET, "The maximum packet length to send to or receive from server.", - (uchar**) &opt_max_allowed_packet, (uchar**) &opt_max_allowed_packet, 0, + &opt_max_allowed_packet, &opt_max_allowed_packet, 0, GET_ULONG, REQUIRED_ARG, 16 *1024L*1024L, 4096, (longlong) 2*1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0}, {"net_buffer_length", OPT_NET_BUFFER_LENGTH, "The buffer size for TCP/IP and socket communication.", - (uchar**) &opt_net_buffer_length, (uchar**) &opt_net_buffer_length, 0, GET_ULONG, + &opt_net_buffer_length, &opt_net_buffer_length, 0, GET_ULONG, REQUIRED_ARG, 16384, 1024, 512*1024*1024L, MALLOC_OVERHEAD, 1024, 0}, {"select_limit", OPT_SELECT_LIMIT, "Automatic limit for SELECT when using --safe-updates.", - (uchar**) &select_limit, - (uchar**) &select_limit, 0, GET_ULONG, REQUIRED_ARG, 1000L, 1, ULONG_MAX, - 0, 1, 0}, + &select_limit, &select_limit, 0, GET_ULONG, REQUIRED_ARG, 1000L, + 1, ULONG_MAX, 0, 1, 0}, {"max_join_size", OPT_MAX_JOIN_SIZE, "Automatic limit for rows in a join when using --safe-updates.", - (uchar**) &max_join_size, - (uchar**) &max_join_size, 0, GET_ULONG, REQUIRED_ARG, 1000000L, 1, ULONG_MAX, - 0, 1, 0}, + &max_join_size, &max_join_size, 0, GET_ULONG, REQUIRED_ARG, 1000000L, + 1, ULONG_MAX, 0, 1, 0}, {"secure-auth", OPT_SECURE_AUTH, "Refuse client connecting to server if it" - " uses old (pre-4.1.1) protocol.", (uchar**) &opt_secure_auth, - (uchar**) &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + " uses old (pre-4.1.1) protocol.", &opt_secure_auth, + &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"server-arg", OPT_SERVER_ARG, "Send embedded server this as a parameter.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"show-warnings", OPT_SHOW_WARNINGS, "Show warnings after every statement.", - (uchar**) &show_warnings, (uchar**) &show_warnings, 0, GET_BOOL, NO_ARG, + &show_warnings, &show_warnings, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c index ade8e30648a..0b8b43775ed 100644 --- a/client/mysql_upgrade.c +++ b/client/mysql_upgrade.c @@ -68,7 +68,7 @@ static struct my_option my_long_options[]= "Directory for character set files.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"compress", OPT_COMPRESS, "Use compression in server/client protocol.", - (uchar**)¬_used, (uchar**)¬_used, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + ¬_used, ¬_used, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"datadir", 'd', "Not used by mysql_upgrade. Only for backward compatibility.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -76,26 +76,26 @@ static struct my_option my_long_options[]= {"debug", '#', "This is a non-debug version. Catch this and exit.", 0, 0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0}, #else - {"debug", '#', "Output debug log.", (uchar* *) & default_dbug_option, - (uchar* *) & default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"debug", '#', "Output debug log.", &default_dbug_option, + &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.", - (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0, + &debug_check_flag, &debug_check_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"debug-info", 'T', "Print some debug info at exit.", (uchar**) &debug_info_flag, - (uchar**) &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"debug-info", 'T', "Print some debug info at exit.", &debug_info_flag, + &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"default-character-set", OPT_DEFAULT_CHARSET, "Set the default character set.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"force", 'f', "Force execution of mysqlcheck even if mysql_upgrade " "has already been executed for the current version of MySQL.", - (uchar**)&opt_force, (uchar**)&opt_force, 0, + &opt_force, &opt_force, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"host",'h', "Connect to host.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"password", 'p', "Password to use when connecting to server. If password is not given," - " it's solicited on the tty.", (uchar**) &opt_password,(uchar**) &opt_password, + " it's solicited on the tty.", &opt_password,&opt_password, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #ifdef __WIN__ {"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, @@ -121,15 +121,15 @@ static struct my_option my_long_options[]= #include {"tmpdir", 't', "Directory for temporary files.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"user", 'u', "User for login if not current user.", (uchar**) &opt_user, - (uchar**) &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"user", 'u', "User for login if not current user.", &opt_user, + &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"verbose", 'v', "Display more output about the process.", - (uchar**) &opt_verbose, (uchar**) &opt_verbose, 0, + &opt_verbose, &opt_verbose, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"write-binlog", OPT_WRITE_BINLOG, "All commands including mysqlcheck are binlogged. Enabled by default;" "use --skip-write-binlog when commands should not be sent to replication slaves.", - (uchar**) &opt_write_binlog, (uchar**) &opt_write_binlog, 0, GET_BOOL, NO_ARG, + &opt_write_binlog, &opt_write_binlog, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/client/mysqladmin.cc b/client/mysqladmin.cc index 8a8e8ec2db5..fe3e51a4d61 100644 --- a/client/mysqladmin.cc +++ b/client/mysqladmin.cc @@ -122,37 +122,37 @@ static struct my_option my_long_options[] = #endif {"count", 'c', "Number of iterations to make. This works with -i (--sleep) only.", - (uchar**) &nr_iterations, (uchar**) &nr_iterations, 0, GET_UINT, + &nr_iterations, &nr_iterations, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DBUG_OFF {"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.", - (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0, + &debug_check_flag, &debug_check_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", - (uchar**) &debug_info_flag, (uchar**) &debug_info_flag, + &debug_info_flag, &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"force", 'f', "Don't ask for confirmation on drop database; with multiple commands, continue even if an error occurs.", - (uchar**) &option_force, (uchar**) &option_force, 0, GET_BOOL, NO_ARG, 0, 0, + &option_force, &option_force, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"compress", 'C', "Use compression in server/client protocol.", - (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR, - "Directory for character set files.", (uchar**) &charsets_dir, - (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory for character set files.", &charsets_dir, + &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"default-character-set", OPT_DEFAULT_CHARSET, - "Set the default character set.", (uchar**) &default_charset, - (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Set the default character set.", &default_charset, + &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR, + {"host", 'h', "Connect to host.", &host, &host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"no-beep", 'b', "Turn off beep on error.", (uchar**) &opt_nobeep, - (uchar**) &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"no-beep", 'b', "Turn off beep on error.", &opt_nobeep, + &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"password", 'p', "Password to use when connecting to server. If password is not given it's asked from the tty.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, @@ -166,50 +166,52 @@ static struct my_option my_long_options[] = "/etc/services, " #endif "built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").", - (uchar**) &tcp_port, - (uchar**) &tcp_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &tcp_port, + &tcp_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"protocol", OPT_MYSQL_PROTOCOL, "The protocol to use for connection (tcp, socket, pipe, memory).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"relative", 'r', - "Show difference between current and previous values when used with -i. Currently only works with extended-status.", - (uchar**) &opt_relative, (uchar**) &opt_relative, 0, GET_BOOL, NO_ARG, 0, 0, 0, + "Show difference between current and previous values when used with -i. " + "Currently only works with extended-status.", + &opt_relative, &opt_relative, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"set-variable", 'O', - "Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.", + "Change the value of a variable. Please note that this option is " + "deprecated; you can set variables directly with --variable-name=value.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_SMEM {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME, - "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name, + "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"silent", 's', "Silently exit if one can't connect to server.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"socket", 'S', "The socket file to use for connection.", - (uchar**) &unix_port, (uchar**) &unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, + &unix_port, &unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"sleep", 'i', "Execute commands repeatedly with a sleep between.", - (uchar**) &interval, (uchar**) &interval, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, + &interval, &interval, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #include #ifndef DONT_ALLOW_USER_CHANGE - {"user", 'u', "User for login if not current user.", (uchar**) &user, - (uchar**) &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"user", 'u', "User for login if not current user.", &user, + &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"verbose", 'v', "Write more information.", (uchar**) &opt_verbose, - (uchar**) &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"verbose", 'v', "Write more information.", &opt_verbose, + &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"vertical", 'E', "Print output vertically. Is similar to --relative, but prints output vertically.", - (uchar**) &opt_vertical, (uchar**) &opt_vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_vertical, &opt_vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"wait", 'w', "Wait and retry if connection is down.", 0, 0, 0, GET_UINT, OPT_ARG, 0, 0, 0, 0, 0, 0}, - {"connect_timeout", OPT_CONNECT_TIMEOUT, "", (uchar**) &opt_connect_timeout, - (uchar**) &opt_connect_timeout, 0, GET_ULONG, REQUIRED_ARG, 3600*12, 0, + {"connect_timeout", OPT_CONNECT_TIMEOUT, "", &opt_connect_timeout, + &opt_connect_timeout, 0, GET_ULONG, REQUIRED_ARG, 3600*12, 0, 3600*12, 0, 1, 0}, - {"shutdown_timeout", OPT_SHUTDOWN_TIMEOUT, "", (uchar**) &opt_shutdown_timeout, - (uchar**) &opt_shutdown_timeout, 0, GET_ULONG, REQUIRED_ARG, + {"shutdown_timeout", OPT_SHUTDOWN_TIMEOUT, "", &opt_shutdown_timeout, + &opt_shutdown_timeout, 0, GET_ULONG, REQUIRED_ARG, SHUTDOWN_DEF_TIMEOUT, 0, 3600*12, 0, 1, 0}, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index c8b9a7d34c5..30bdb58153f 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -1004,9 +1004,8 @@ static struct my_option my_long_options[] = "events); 'always' prints base64 whenever possible. 'always' is for " "debugging only and should not be used in a production system. If this " "argument is not given, the default is 'auto'; if it is given with no " - "argument, 'always' is used." - ,(uchar**) &opt_base64_output_mode_str, - (uchar**) &opt_base64_output_mode_str, + "argument, 'always' is used.", + &opt_base64_output_mode_str, &opt_base64_output_mode_str, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, /* mysqlbinlog needs charsets knowledge, to be able to convert a charset @@ -1015,43 +1014,43 @@ static struct my_option my_long_options[] = SET @`a`:=_cp850 0x4DFC6C6C6572 COLLATE `cp850_general_ci`; */ {"character-sets-dir", OPT_CHARSETS_DIR, - "Directory for character set files.", (uchar**) &charsets_dir, - (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory for character set files.", &charsets_dir, + &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"database", 'd', "List entries for just this database (local log only).", - (uchar**) &database, (uchar**) &database, 0, GET_STR_ALLOC, REQUIRED_ARG, + &database, &database, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DBUG_OFF - {"debug", '#', "Output debug log.", (uchar**) &default_dbug_option, - (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"debug", '#', "Output debug log.", &default_dbug_option, + &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .", - (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0, + &debug_check_flag, &debug_check_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", - (uchar**) &debug_info_flag, (uchar**) &debug_info_flag, + &debug_info_flag, &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"disable-log-bin", 'D', "Disable binary log. This is useful, if you " "enabled --to-last-log and are sending the output to the same MySQL server. " "This way you could avoid an endless loop. You would also like to use it " "when restoring after a crash to avoid duplication of the statements you " "already have. NOTE: you will need a SUPER privilege to use this option.", - (uchar**) &disable_log_bin, (uchar**) &disable_log_bin, 0, GET_BOOL, + &disable_log_bin, &disable_log_bin, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"force-if-open", 'F', "Force if binlog was not closed properly.", - (uchar**) &force_if_open_opt, (uchar**) &force_if_open_opt, 0, GET_BOOL, NO_ARG, + &force_if_open_opt, &force_if_open_opt, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"force-read", 'f', "Force reading unknown binlog events.", - (uchar**) &force_opt, (uchar**) &force_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &force_opt, &force_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"hexdump", 'H', "Augment output with hexadecimal and ASCII event dump.", - (uchar**) &opt_hexdump, (uchar**) &opt_hexdump, 0, GET_BOOL, NO_ARG, + &opt_hexdump, &opt_hexdump, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"host", 'h', "Get the binlog from server.", (uchar**) &host, (uchar**) &host, + {"host", 'h', "Get the binlog from server.", &host, &host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"local-load", 'l', "Prepare local temporary files for LOAD DATA INFILE in the specified directory.", - (uchar**) &dirname_for_local_load, (uchar**) &dirname_for_local_load, 0, + &dirname_for_local_load, &dirname_for_local_load, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"offset", 'o', "Skip the first N entries.", (uchar**) &offset, (uchar**) &offset, + {"offset", 'o', "Skip the first N entries.", &offset, &offset, 0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"password", 'p', "Password to connect to remote server.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, @@ -1061,10 +1060,10 @@ static struct my_option my_long_options[] = "/etc/services, " #endif "built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").", - (uchar**) &port, (uchar**) &port, 0, GET_INT, REQUIRED_ARG, + &port, &port, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"position", OPT_POSITION, "Deprecated. Use --start-position instead.", - (uchar**) &start_position, (uchar**) &start_position, 0, GET_ULL, + &start_position, &start_position, 0, GET_ULL, REQUIRED_ARG, BIN_LOG_HEADER_SIZE, BIN_LOG_HEADER_SIZE, /* COM_BINLOG_DUMP accepts only 4 bytes for the position */ (ulonglong)(~(uint32)0), 0, 0, 0}, @@ -1072,31 +1071,31 @@ static struct my_option my_long_options[] = "The protocol to use for connection (tcp, socket, pipe, memory).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"read-from-remote-server", 'R', "Read binary logs from a MySQL server.", - (uchar**) &remote_opt, (uchar**) &remote_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &remote_opt, &remote_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"result-file", 'r', "Direct output to a given file.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"server-id", OPT_SERVER_ID, "Extract only binlog entries created by the server having the given id.", - (uchar**) &server_id, (uchar**) &server_id, 0, GET_ULONG, + &server_id, &server_id, 0, GET_ULONG, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"set-charset", OPT_SET_CHARSET, - "Add 'SET NAMES character_set' to the output.", (uchar**) &charset, - (uchar**) &charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Add 'SET NAMES character_set' to the output.", &charset, + &charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_SMEM {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME, - "Base name of shared memory.", (uchar**) &shared_memory_base_name, - (uchar**) &shared_memory_base_name, + "Base name of shared memory.", &shared_memory_base_name, + &shared_memory_base_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"short-form", 's', "Just show regular queries: no extra info and no " "row-based events. This is for testing only, and should not be used in " "production systems. If you want to suppress base64-output, consider " "using --base64-output=never instead.", - (uchar**) &short_form, (uchar**) &short_form, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &short_form, &short_form, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"socket", 'S', "The socket file to use for connection.", - (uchar**) &sock, (uchar**) &sock, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, + &sock, &sock, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"start-datetime", OPT_START_DATETIME, "Start reading the binlog at first event having a datetime equal or " @@ -1104,12 +1103,12 @@ static struct my_option my_long_options[] = "in the local time zone, in any format accepted by the MySQL server " "for DATETIME and TIMESTAMP types, for example: 2004-12-25 11:25:56 " "(you should probably use quotes for your shell to set it properly).", - (uchar**) &start_datetime_str, (uchar**) &start_datetime_str, + &start_datetime_str, &start_datetime_str, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"start-position", 'j', "Start reading the binlog at position N. Applies to the first binlog " "passed on the command line.", - (uchar**) &start_position, (uchar**) &start_position, 0, GET_ULL, + &start_position, &start_position, 0, GET_ULL, REQUIRED_ARG, BIN_LOG_HEADER_SIZE, BIN_LOG_HEADER_SIZE, /* COM_BINLOG_DUMP accepts only 4 bytes for the position */ (ulonglong)(~(uint32)0), 0, 0, 0}, @@ -1119,22 +1118,22 @@ static struct my_option my_long_options[] = "in the local time zone, in any format accepted by the MySQL server " "for DATETIME and TIMESTAMP types, for example: 2004-12-25 11:25:56 " "(you should probably use quotes for your shell to set it properly).", - (uchar**) &stop_datetime_str, (uchar**) &stop_datetime_str, + &stop_datetime_str, &stop_datetime_str, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"stop-position", OPT_STOP_POSITION, "Stop reading the binlog at position N. Applies to the last binlog " "passed on the command line.", - (uchar**) &stop_position, (uchar**) &stop_position, 0, GET_ULL, + &stop_position, &stop_position, 0, GET_ULL, REQUIRED_ARG, (ulonglong)(~(my_off_t)0), BIN_LOG_HEADER_SIZE, (ulonglong)(~(my_off_t)0), 0, 0, 0}, {"to-last-log", 't', "Requires -R. Will not stop at the end of the \ requested binlog but rather continue printing until the end of the last \ binlog of the MySQL server. If you send the output to the same MySQL server, \ that may lead to an endless loop.", - (uchar**) &to_last_remote_log, (uchar**) &to_last_remote_log, 0, GET_BOOL, + &to_last_remote_log, &to_last_remote_log, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"user", 'u', "Connect to the remote server as username.", - (uchar**) &user, (uchar**) &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, + &user, &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"verbose", 'v', "Reconstruct SQL statements out of row events. " "-v -v adds comments on column data types.", @@ -1143,7 +1142,7 @@ that may lead to an endless loop.", 0, 0, 0, 0, 0}, {"open_files_limit", OPT_OPEN_FILES_LIMIT, "Used to reserve file descriptors for use by this program.", - (uchar**) &open_files_limit, (uchar**) &open_files_limit, 0, GET_ULONG, + &open_files_limit, &open_files_limit, 0, GET_ULONG, REQUIRED_ARG, MY_NFILE, 8, OS_FILE_LIMIT, 0, 1, 0}, {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c index d88fa6e46c2..4183ab1dd5e 100644 --- a/client/mysqlcheck.c +++ b/client/mysqlcheck.c @@ -54,13 +54,13 @@ static struct my_option my_long_options[] = { {"all-databases", 'A', "Check all the databases. This is the same as --databases with all databases selected.", - (uchar**) &opt_alldbs, (uchar**) &opt_alldbs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &opt_alldbs, &opt_alldbs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"analyze", 'a', "Analyze given tables.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"all-in-1", '1', "Instead of issuing one query for each table, use one query per database, naming all tables in the database in a comma-separated list.", - (uchar**) &opt_all_in_1, (uchar**) &opt_all_in_1, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_all_in_1, &opt_all_in_1, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef __NETWARE__ {"autoclose", OPT_AUTO_CLOSE, "Automatically close the screen on exit for Netware.", @@ -68,11 +68,11 @@ static struct my_option my_long_options[] = #endif {"auto-repair", OPT_AUTO_REPAIR, "If a checked table is corrupted, automatically fix it. Repairing will be done after all tables have been checked, if corrupted ones were found.", - (uchar**) &opt_auto_repair, (uchar**) &opt_auto_repair, 0, GET_BOOL, NO_ARG, 0, + &opt_auto_repair, &opt_auto_repair, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR, - "Directory for character set files.", (uchar**) &charsets_dir, - (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory for character set files.", &charsets_dir, + &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"check", 'c', "Check table for errors.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"check-only-changed", 'C', @@ -82,11 +82,11 @@ static struct my_option my_long_options[] = "Check tables for version-dependent changes. May be used with --auto-repair to correct tables requiring version-dependent updates.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"compress", OPT_COMPRESS, "Use compression in server/client protocol.", - (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"databases", 'B', "Check several databases. Note the difference in usage; in this case no tables are given. All name arguments are regarded as database names.", - (uchar**) &opt_databases, (uchar**) &opt_databases, 0, GET_BOOL, NO_ARG, + &opt_databases, &opt_databases, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef DBUG_OFF {"debug", '#', "This is a non-debug version. Catch this and exit.", @@ -96,40 +96,40 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.", - (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0, + &debug_check_flag, &debug_check_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", - (uchar**) &debug_info_flag, (uchar**) &debug_info_flag, + &debug_info_flag, &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"default-character-set", OPT_DEFAULT_CHARSET, - "Set the default character set.", (uchar**) &default_charset, - (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Set the default character set.", &default_charset, + &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"fast",'F', "Check only tables that haven't been closed properly.", - (uchar**) &opt_fast, (uchar**) &opt_fast, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, + &opt_fast, &opt_fast, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"fix-db-names", OPT_FIX_DB_NAMES, "Fix database names.", - (uchar**) &opt_fix_db_names, (uchar**) &opt_fix_db_names, + &opt_fix_db_names, &opt_fix_db_names, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"fix-table-names", OPT_FIX_TABLE_NAMES, "Fix table names.", - (uchar**) &opt_fix_table_names, (uchar**) &opt_fix_table_names, + &opt_fix_table_names, &opt_fix_table_names, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"force", 'f', "Continue even if we get an SQL error.", - (uchar**) &ignore_errors, (uchar**) &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0, + &ignore_errors, &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"extended", 'e', "If you are using this option with CHECK TABLE, it will ensure that the table is 100 percent consistent, but will take a long time. If you are using this option with REPAIR TABLE, it will force using old slow repair with keycache method, instead of much faster repair by sorting.", - (uchar**) &opt_extended, (uchar**) &opt_extended, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_extended, &opt_extended, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"help", '?', "Display this help message and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"host",'h', "Connect to host.", (uchar**) ¤t_host, - (uchar**) ¤t_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"host",'h', "Connect to host.", ¤t_host, + ¤t_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"medium-check", 'm', "Faster than extended-check, but only finds 99.99 percent of all errors. Should be good enough for most cases.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"write-binlog", OPT_WRITE_BINLOG, "Log ANALYZE, OPTIMIZE and REPAIR TABLE commands. Enabled by default; use --skip-write-binlog when commands should not be sent to replication slaves.", - (uchar**) &opt_write_binlog, (uchar**) &opt_write_binlog, 0, GET_BOOL, NO_ARG, + &opt_write_binlog, &opt_write_binlog, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"optimize", 'o', "Optimize table.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -146,38 +146,38 @@ static struct my_option my_long_options[] = "/etc/services, " #endif "built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").", - (uchar**) &opt_mysql_port, - (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, + &opt_mysql_port, + &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"protocol", OPT_MYSQL_PROTOCOL, "The protocol to use for connection (tcp, socket, pipe, memory).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"quick", 'q', "If you are using this option with CHECK TABLE, it prevents the check from scanning the rows to check for wrong links. This is the fastest check. If you are using this option with REPAIR TABLE, it will try to repair only the index tree. This is the fastest repair method for a table.", - (uchar**) &opt_quick, (uchar**) &opt_quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, + &opt_quick, &opt_quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"repair", 'r', "Can fix almost anything except unique keys that aren't unique.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_SMEM {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME, - "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name, + "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"silent", 's', "Print only error messages.", (uchar**) &opt_silent, - (uchar**) &opt_silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"silent", 's', "Print only error messages.", &opt_silent, + &opt_silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"socket", 'S', "The socket file to use for connection.", - (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0, GET_STR, + &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #include {"tables", OPT_TABLES, "Overrides option --databases (-B).", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"use-frm", OPT_FRM, "When used with REPAIR, get table structure from .frm file, so the table can be repaired even if .MYI header is corrupted.", - (uchar**) &opt_frm, (uchar**) &opt_frm, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, + &opt_frm, &opt_frm, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DONT_ALLOW_USER_CHANGE - {"user", 'u', "User for login if not current user.", (uchar**) ¤t_user, - (uchar**) ¤t_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"user", 'u', "User for login if not current user.", ¤t_user, + ¤t_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"verbose", 'v', "Print info about the various stages.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, diff --git a/client/mysqldump.c b/client/mysqldump.c index dca8ecb7dfb..e35672c2a2c 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -180,115 +180,115 @@ HASH ignore_table; static struct my_option my_long_options[] = { {"all", OPT_ALL, "Deprecated. Use --create-options instead.", - (uchar**) &create_options, (uchar**) &create_options, 0, GET_BOOL, NO_ARG, 1, + &create_options, &create_options, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"all-databases", 'A', "Dump all the databases. This will be same as --databases with all databases selected.", - (uchar**) &opt_alldbs, (uchar**) &opt_alldbs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &opt_alldbs, &opt_alldbs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"all-tablespaces", 'Y', "Dump all the tablespaces.", - (uchar**) &opt_alltspcs, (uchar**) &opt_alltspcs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &opt_alltspcs, &opt_alltspcs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"no-tablespaces", 'y', "Do not dump any tablespace information.", - (uchar**) &opt_notspcs, (uchar**) &opt_notspcs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &opt_notspcs, &opt_notspcs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"add-drop-database", OPT_DROP_DATABASE, "Add a DROP DATABASE before each create.", - (uchar**) &opt_drop_database, (uchar**) &opt_drop_database, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, + &opt_drop_database, &opt_drop_database, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"add-drop-table", OPT_DROP, "Add a DROP TABLE before each create.", - (uchar**) &opt_drop, (uchar**) &opt_drop, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, + &opt_drop, &opt_drop, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"add-locks", OPT_LOCKS, "Add locks around INSERT statements.", - (uchar**) &opt_lock, (uchar**) &opt_lock, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, + &opt_lock, &opt_lock, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"allow-keywords", OPT_KEYWORDS, - "Allow creation of column names that are keywords.", (uchar**) &opt_keywords, - (uchar**) &opt_keywords, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + "Allow creation of column names that are keywords.", &opt_keywords, + &opt_keywords, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef __NETWARE__ {"autoclose", OPT_AUTO_CLOSE, "Automatically close the screen on exit for Netware.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"character-sets-dir", OPT_CHARSETS_DIR, - "Directory for character set files.", (uchar**) &charsets_dir, - (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory for character set files.", &charsets_dir, + &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"comments", 'i', "Write additional information.", - (uchar**) &opt_comments, (uchar**) &opt_comments, 0, GET_BOOL, NO_ARG, + &opt_comments, &opt_comments, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"compatible", OPT_COMPATIBLE, "Change the dump to be compatible with a given mode. By default tables are dumped in a format optimized for MySQL. Legal modes are: ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options, no_field_options. One can use several modes separated by commas. Note: Requires MySQL server version 4.1.0 or higher. This option is ignored with earlier server versions.", - (uchar**) &opt_compatible_mode_str, (uchar**) &opt_compatible_mode_str, 0, + &opt_compatible_mode_str, &opt_compatible_mode_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"compact", OPT_COMPACT, "Give less verbose output (useful for debugging). Disables structure comments and header/footer constructs. Enables options --skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys --skip-set-charset.", - (uchar**) &opt_compact, (uchar**) &opt_compact, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &opt_compact, &opt_compact, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"complete-insert", 'c', "Use complete insert statements.", - (uchar**) &opt_complete_insert, (uchar**) &opt_complete_insert, 0, GET_BOOL, + &opt_complete_insert, &opt_complete_insert, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"compress", 'C', "Use compression in server/client protocol.", - (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"create-options", 'a', "Include all MySQL specific create options.", - (uchar**) &create_options, (uchar**) &create_options, 0, GET_BOOL, NO_ARG, 1, + &create_options, &create_options, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"databases", 'B', "Dump several databases. Note the difference in usage; in this case no tables are given. All name arguments are regarded as database names. 'USE db_name;' will be included in the output.", - (uchar**) &opt_databases, (uchar**) &opt_databases, 0, GET_BOOL, NO_ARG, 0, 0, + &opt_databases, &opt_databases, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef DBUG_OFF {"debug", '#', "This is a non-debug version. Catch this and exit.", 0,0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0}, #else - {"debug", '#', "Output debug log.", (uchar**) &default_dbug_option, - (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"debug", '#', "Output debug log.", &default_dbug_option, + &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.", - (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0, + &debug_check_flag, &debug_check_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", - (uchar**) &debug_info_flag, (uchar**) &debug_info_flag, + &debug_info_flag, &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"default-character-set", OPT_DEFAULT_CHARSET, - "Set the default character set.", (uchar**) &default_charset, - (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Set the default character set.", &default_charset, + &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"delayed-insert", OPT_DELAYED, "Insert rows with INSERT DELAYED.", - (uchar**) &opt_delayed, (uchar**) &opt_delayed, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &opt_delayed, &opt_delayed, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"delete-master-logs", OPT_DELETE_MASTER_LOGS, "Delete logs on master after backup. This automatically enables --master-data.", - (uchar**) &opt_delete_master_logs, (uchar**) &opt_delete_master_logs, 0, + &opt_delete_master_logs, &opt_delete_master_logs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"disable-keys", 'K', - "'/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and '/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put in the output.", (uchar**) &opt_disable_keys, - (uchar**) &opt_disable_keys, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, + "'/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and '/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put in the output.", &opt_disable_keys, + &opt_disable_keys, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"events", 'E', "Dump events.", - (uchar**) &opt_events, (uchar**) &opt_events, 0, GET_BOOL, + &opt_events, &opt_events, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"extended-insert", 'e', "Use multiple-row INSERT syntax that include several VALUES lists.", - (uchar**) &extended_insert, (uchar**) &extended_insert, 0, GET_BOOL, NO_ARG, + &extended_insert, &extended_insert, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"fields-terminated-by", OPT_FTB, "Fields in the output file are terminated by the given string.", - (uchar**) &fields_terminated, (uchar**) &fields_terminated, 0, + &fields_terminated, &fields_terminated, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"fields-enclosed-by", OPT_ENC, "Fields in the output file are enclosed by the given character.", - (uchar**) &enclosed, (uchar**) &enclosed, 0, + &enclosed, &enclosed, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0 ,0, 0}, {"fields-optionally-enclosed-by", OPT_O_ENC, "Fields in the output file are optionally enclosed by the given character.", - (uchar**) &opt_enclosed, (uchar**) &opt_enclosed, 0, + &opt_enclosed, &opt_enclosed, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0 ,0, 0}, {"fields-escaped-by", OPT_ESC, "Fields in the output file are escaped by the given character.", - (uchar**) &escaped, (uchar**) &escaped, 0, + &escaped, &escaped, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"first-slave", OPT_FIRST_SLAVE, "Deprecated, renamed to --lock-all-tables.", - (uchar**) &opt_lock_all_tables, (uchar**) &opt_lock_all_tables, 0, GET_BOOL, NO_ARG, + &opt_lock_all_tables, &opt_lock_all_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"flush-logs", 'F', "Flush logs file in server before starting dump. " "Note that if you dump many databases at once (using the option " @@ -299,24 +299,24 @@ static struct my_option my_long_options[] = "to the moment all tables are locked. So if you want your dump and " "the log flush to happen at the same exact moment you should use " "--lock-all-tables or --master-data with --flush-logs.", - (uchar**) &flush_logs, (uchar**) &flush_logs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &flush_logs, &flush_logs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"flush-privileges", OPT_ESC, "Emit a FLUSH PRIVILEGES statement " "after dumping the mysql database. This option should be used any " "time the dump contains the mysql database and any other database " "that depends on the data in the mysql database for proper restore. ", - (uchar**) &flush_privileges, (uchar**) &flush_privileges, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &flush_privileges, &flush_privileges, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"force", 'f', "Continue even if we get an SQL error.", - (uchar**) &ignore_errors, (uchar**) &ignore_errors, 0, GET_BOOL, NO_ARG, + &ignore_errors, &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"help", '?', "Display this help message and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"hex-blob", OPT_HEXBLOB, "Dump binary strings (BINARY, " "VARBINARY, BLOB) in hexadecimal format.", - (uchar**) &opt_hex_blob, (uchar**) &opt_hex_blob, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"host", 'h', "Connect to host.", (uchar**) ¤t_host, - (uchar**) ¤t_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &opt_hex_blob, &opt_hex_blob, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"host", 'h', "Connect to host.", ¤t_host, + ¤t_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ignore-table", OPT_IGNORE_TABLE, "Do not dump the specified table. To specify more than one table to ignore, " "use the directive multiple times, once for each table. Each table must " @@ -324,21 +324,21 @@ static struct my_option my_long_options[] = "--ignore-table=database.table.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"insert-ignore", OPT_INSERT_IGNORE, "Insert rows with INSERT IGNORE.", - (uchar**) &opt_ignore, (uchar**) &opt_ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &opt_ignore, &opt_ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"lines-terminated-by", OPT_LTB, "Lines in the output file are terminated by the given string.", - (uchar**) &lines_terminated, (uchar**) &lines_terminated, 0, GET_STR, + &lines_terminated, &lines_terminated, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"lock-all-tables", 'x', "Locks all tables across all databases. This " "is achieved by taking a global read lock for the duration of the whole " "dump. Automatically turns --single-transaction and --lock-tables off.", - (uchar**) &opt_lock_all_tables, (uchar**) &opt_lock_all_tables, 0, GET_BOOL, NO_ARG, + &opt_lock_all_tables, &opt_lock_all_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"lock-tables", 'l', "Lock all tables for read.", (uchar**) &lock_tables, - (uchar**) &lock_tables, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, + {"lock-tables", 'l', "Lock all tables for read.", &lock_tables, + &lock_tables, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"log-error", OPT_ERROR_LOG_FILE, "Append warnings and errors to given file.", - (uchar**) &log_error_file, (uchar**) &log_error_file, 0, GET_STR, + &log_error_file, &log_error_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"master-data", OPT_MASTER_DATA, "This causes the binary log position and filename to be appended to the " @@ -350,33 +350,33 @@ static struct my_option my_long_options[] = "don't forget to read about --single-transaction below). In all cases, " "any action on logs will happen at the exact moment of the dump. " "Option automatically turns --lock-tables off.", - (uchar**) &opt_master_data, (uchar**) &opt_master_data, 0, + &opt_master_data, &opt_master_data, 0, GET_UINT, OPT_ARG, 0, 0, MYSQL_OPT_MASTER_DATA_COMMENTED_SQL, 0, 0, 0}, {"max_allowed_packet", OPT_MAX_ALLOWED_PACKET, "The maximum packet length to send to or receive from server.", - (uchar**) &opt_max_allowed_packet, (uchar**) &opt_max_allowed_packet, 0, + &opt_max_allowed_packet, &opt_max_allowed_packet, 0, GET_ULONG, REQUIRED_ARG, 24*1024*1024, 4096, (longlong) 2L*1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0}, {"net_buffer_length", OPT_NET_BUFFER_LENGTH, "The buffer size for TCP/IP and socket communication.", - (uchar**) &opt_net_buffer_length, (uchar**) &opt_net_buffer_length, 0, + &opt_net_buffer_length, &opt_net_buffer_length, 0, GET_ULONG, REQUIRED_ARG, 1024*1024L-1025, 4096, 16*1024L*1024L, MALLOC_OVERHEAD-1024, 1024, 0}, {"no-autocommit", OPT_AUTOCOMMIT, "Wrap tables with autocommit/commit statements.", - (uchar**) &opt_autocommit, (uchar**) &opt_autocommit, 0, GET_BOOL, NO_ARG, + &opt_autocommit, &opt_autocommit, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"no-create-db", 'n', "Suppress the CREATE DATABASE ... IF EXISTS statement that normally is " "output for each dumped database if --all-databases or --databases is " "given.", - (uchar**) &opt_create_db, (uchar**) &opt_create_db, 0, + &opt_create_db, &opt_create_db, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"no-create-info", 't', "Don't write table creation info.", - (uchar**) &opt_no_create_info, (uchar**) &opt_no_create_info, 0, GET_BOOL, + &opt_no_create_info, &opt_no_create_info, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"no-data", 'd', "No row information.", (uchar**) &opt_no_data, - (uchar**) &opt_no_data, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"no-data", 'd', "No row information.", &opt_no_data, + &opt_no_data, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"no-set-names", 'N',"Suppress the SET NAMES statement", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"opt", OPT_OPTIMIZE, @@ -384,7 +384,7 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"order-by-primary", OPT_ORDER_BY_PRIMARY, "Sorts each table's rows by primary key, or first unique key, if such a key exists. Useful when dumping a MyISAM table to be loaded into an InnoDB table, but will make the dump itself take considerably longer.", - (uchar**) &opt_order_by_primary, (uchar**) &opt_order_by_primary, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + &opt_order_by_primary, &opt_order_by_primary, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"password", 'p', "Password to use when connecting to server. If password is not given it's solicited on the tty.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, @@ -392,36 +392,36 @@ static struct my_option my_long_options[] = {"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"port", 'P', "Port number to use for connection.", (uchar**) &opt_mysql_port, - (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, + {"port", 'P', "Port number to use for connection.", &opt_mysql_port, + &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"protocol", OPT_MYSQL_PROTOCOL, "The protocol to use for connection (tcp, socket, pipe, memory).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"quick", 'q', "Don't buffer query, dump directly to stdout.", - (uchar**) &quick, (uchar**) &quick, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, + &quick, &quick, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"quote-names",'Q', "Quote table and column names with backticks (`).", - (uchar**) &opt_quoted, (uchar**) &opt_quoted, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, + &opt_quoted, &opt_quoted, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"replace", OPT_MYSQL_REPLACE_INTO, "Use REPLACE INTO instead of INSERT INTO.", - (uchar**) &opt_replace_into, (uchar**) &opt_replace_into, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &opt_replace_into, &opt_replace_into, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"result-file", 'r', "Direct output to a given file. This option should be used in MSDOS, because it prevents new line '\\n' from being converted to '\\r\\n' (carriage return + line feed).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"routines", 'R', "Dump stored routines (functions and procedures).", - (uchar**) &opt_routines, (uchar**) &opt_routines, 0, GET_BOOL, + &opt_routines, &opt_routines, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"set-charset", OPT_SET_CHARSET, "Add 'SET NAMES default_character_set' to the output. Enabled by default; suppress with --skip-set-charset.", - (uchar**) &opt_set_charset, (uchar**) &opt_set_charset, 0, GET_BOOL, NO_ARG, 1, + &opt_set_charset, &opt_set_charset, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"set-variable", 'O', "Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_SMEM {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME, - "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name, + "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif /* @@ -439,42 +439,42 @@ static struct my_option my_long_options[] = "connection should use the following statements: ALTER TABLE, DROP " "TABLE, RENAME TABLE, TRUNCATE TABLE, as consistent snapshot is not " "isolated from them. Option automatically turns off --lock-tables.", - (uchar**) &opt_single_transaction, (uchar**) &opt_single_transaction, 0, + &opt_single_transaction, &opt_single_transaction, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"dump-date", OPT_DUMP_DATE, "Put a dump date to the end of the output.", - (uchar**) &opt_dump_date, (uchar**) &opt_dump_date, 0, + &opt_dump_date, &opt_dump_date, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"skip-opt", OPT_SKIP_OPTIMIZATION, "Disable --opt. Disables --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, and --disable-keys.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"socket", 'S', "The socket file to use for connection.", - (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0, + &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #include {"tab",'T', "Create tab-separated textfile for each table to given path. (Create .sql " "and .txt files.) NOTE: This only works if mysqldump is run on the same " "machine as the mysqld server.", - (uchar**) &path, (uchar**) &path, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &path, &path, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"tables", OPT_TABLES, "Overrides option --databases (-B).", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"triggers", OPT_TRIGGERS, "Dump triggers for each dumped table.", - (uchar**) &opt_dump_triggers, (uchar**) &opt_dump_triggers, 0, GET_BOOL, + &opt_dump_triggers, &opt_dump_triggers, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"tz-utc", OPT_TZ_UTC, "SET TIME_ZONE='+00:00' at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones.", - (uchar**) &opt_tz_utc, (uchar**) &opt_tz_utc, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, + &opt_tz_utc, &opt_tz_utc, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, #ifndef DONT_ALLOW_USER_CHANGE {"user", 'u', "User for login if not current user.", - (uchar**) ¤t_user, (uchar**) ¤t_user, 0, GET_STR, REQUIRED_ARG, + ¤t_user, ¤t_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"verbose", 'v', "Print info about the various stages.", - (uchar**) &verbose, (uchar**) &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + &verbose, &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"version",'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"where", 'w', "Dump only selected records. Quotes are mandatory.", - (uchar**) &where, (uchar**) &where, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &where, &where, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"xml", 'X', "Dump a database as well formed XML.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} diff --git a/client/mysqlimport.c b/client/mysqlimport.c index d346cd567e7..404106560c1 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -73,68 +73,68 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"character-sets-dir", OPT_CHARSETS_DIR, - "Directory for character set files.", (uchar**) &charsets_dir, - (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory for character set files.", &charsets_dir, + &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"default-character-set", OPT_DEFAULT_CHARSET, - "Set the default character set.", (uchar**) &default_charset, - (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Set the default character set.", &default_charset, + &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"columns", 'c', "Use only these columns to import the data to. Give the column names in a comma separated list. This is same as giving columns to LOAD DATA INFILE.", - (uchar**) &opt_columns, (uchar**) &opt_columns, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, + &opt_columns, &opt_columns, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"compress", 'C', "Use compression in server/client protocol.", - (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"debug",'#', "Output debug log. Often this is 'd:t:o,filename'.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.", - (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0, + &debug_check_flag, &debug_check_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", - (uchar**) &debug_info_flag, (uchar**) &debug_info_flag, + &debug_info_flag, &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"delete", 'd', "First delete all rows from table.", (uchar**) &opt_delete, - (uchar**) &opt_delete, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"delete", 'd', "First delete all rows from table.", &opt_delete, + &opt_delete, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"fields-terminated-by", OPT_FTB, "Fields in the input file are terminated by the given string.", - (uchar**) &fields_terminated, (uchar**) &fields_terminated, 0, + &fields_terminated, &fields_terminated, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"fields-enclosed-by", OPT_ENC, "Fields in the import file are enclosed by the given character.", - (uchar**) &enclosed, (uchar**) &enclosed, 0, + &enclosed, &enclosed, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"fields-optionally-enclosed-by", OPT_O_ENC, "Fields in the input file are optionally enclosed by the given character.", - (uchar**) &opt_enclosed, (uchar**) &opt_enclosed, 0, + &opt_enclosed, &opt_enclosed, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"fields-escaped-by", OPT_ESC, "Fields in the input file are escaped by the given character.", - (uchar**) &escaped, (uchar**) &escaped, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, + &escaped, &escaped, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"force", 'f', "Continue even if we get an SQL error.", - (uchar**) &ignore_errors, (uchar**) &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0, + &ignore_errors, &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"help", '?', "Displays this help and exits.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"host", 'h', "Connect to host.", (uchar**) ¤t_host, - (uchar**) ¤t_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"host", 'h', "Connect to host.", ¤t_host, + ¤t_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ignore", 'i', "If duplicate unique key was found, keep old row.", - (uchar**) &ignore, (uchar**) &ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + &ignore, &ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"ignore-lines", OPT_IGN_LINES, "Ignore first n lines of data infile.", - (uchar**) &opt_ignore_lines, (uchar**) &opt_ignore_lines, 0, GET_LL, + &opt_ignore_lines, &opt_ignore_lines, 0, GET_LL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"lines-terminated-by", OPT_LTB, "Lines in the input file are terminated by the given string.", - (uchar**) &lines_terminated, (uchar**) &lines_terminated, 0, GET_STR, + &lines_terminated, &lines_terminated, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"local", 'L', "Read all files through the client.", (uchar**) &opt_local_file, - (uchar**) &opt_local_file, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"local", 'L', "Read all files through the client.", &opt_local_file, + &opt_local_file, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"lock-tables", 'l', "Lock all tables for write (this disables threads).", - (uchar**) &lock_tables, (uchar**) &lock_tables, 0, GET_BOOL, NO_ARG, + &lock_tables, &lock_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"low-priority", OPT_LOW_PRIORITY, - "Use LOW_PRIORITY when updating the table.", (uchar**) &opt_low_priority, - (uchar**) &opt_low_priority, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + "Use LOW_PRIORITY when updating the table.", &opt_low_priority, + &opt_low_priority, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"password", 'p', "Password to use when connecting to server. If password is not given it's asked from the tty.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, @@ -148,35 +148,35 @@ static struct my_option my_long_options[] = "/etc/services, " #endif "built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").", - (uchar**) &opt_mysql_port, - (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, + &opt_mysql_port, + &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"protocol", OPT_MYSQL_PROTOCOL, "The protocol to use for connection (tcp, socket, pipe, memory).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"replace", 'r', "If duplicate unique key was found, replace old row.", - (uchar**) &replace, (uchar**) &replace, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + &replace, &replace, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_SMEM {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME, - "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name, + "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"silent", 's', "Be more silent.", (uchar**) &silent, (uchar**) &silent, 0, + {"silent", 's', "Be more silent.", &silent, &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"socket", 'S', "The socket file to use for connection.", - (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0, GET_STR, + &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #include {"use-threads", OPT_USE_THREADS, "Load files in parallel. The argument is the number " "of threads to use for loading data.", - (uchar**) &opt_use_threads, (uchar**) &opt_use_threads, 0, + &opt_use_threads, &opt_use_threads, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DONT_ALLOW_USER_CHANGE - {"user", 'u', "User for login if not current user.", (uchar**) ¤t_user, - (uchar**) ¤t_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"user", 'u', "User for login if not current user.", ¤t_user, + ¤t_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"verbose", 'v', "Print info about the various stages.", (uchar**) &verbose, - (uchar**) &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"verbose", 'v', "Print info about the various stages.", &verbose, + &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} diff --git a/client/mysqlshow.c b/client/mysqlshow.c index 370efe83f10..2f5582cb668 100644 --- a/client/mysqlshow.c +++ b/client/mysqlshow.c @@ -164,35 +164,35 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"character-sets-dir", 'c', "Directory for character set files.", - (uchar**) &charsets_dir, (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, + &charsets_dir, &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"default-character-set", OPT_DEFAULT_CHARSET, - "Set the default character set.", (uchar**) &default_charset, - (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Set the default character set.", &default_charset, + &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"count", OPT_COUNT, "Show number of rows per table (may be slow for non-MyISAM tables).", - (uchar**) &opt_count, (uchar**) &opt_count, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_count, &opt_count, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"compress", 'C', "Use compression in server/client protocol.", - (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.", - (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0, + &debug_check_flag, &debug_check_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", - (uchar**) &debug_info_flag, (uchar**) &debug_info_flag, + &debug_info_flag, &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR, + {"host", 'h', "Connect to host.", &host, &host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"status", 'i', "Shows a lot of extra information about each table.", - (uchar**) &opt_status, (uchar**) &opt_status, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &opt_status, &opt_status, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"keys", 'k', "Show keys for table.", (uchar**) &opt_show_keys, - (uchar**) &opt_show_keys, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"keys", 'k', "Show keys for table.", &opt_show_keys, + &opt_show_keys, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"password", 'p', "Password to use when connecting to server. If password is not given, it's " "solicited on the tty.", @@ -203,8 +203,8 @@ static struct my_option my_long_options[] = "/etc/services, " #endif "built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").", - (uchar**) &opt_mysql_port, - (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, + &opt_mysql_port, + &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef __WIN__ {"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG, @@ -215,19 +215,20 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_SMEM {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME, - "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name, - 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Base name of shared memory.", &shared_memory_base_name, + &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, + 0, 0, 0, 0, 0, 0}, #endif {"show-table-type", 't', "Show table type column.", - (uchar**) &opt_table_type, (uchar**) &opt_table_type, 0, GET_BOOL, + &opt_table_type, &opt_table_type, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"socket", 'S', "The socket file to use for connection.", - (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0, GET_STR, + &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #include #ifndef DONT_ALLOW_USER_CHANGE - {"user", 'u', "User for login if not current user.", (uchar**) &user, - (uchar**) &user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"user", 'u', "User for login if not current user.", &user, + &user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"verbose", 'v', "More verbose output; you can use this multiple times to get even more " diff --git a/client/mysqlslap.c b/client/mysqlslap.c index a9681528943..b1eafe0082c 100644 --- a/client/mysqlslap.c +++ b/client/mysqlslap.c @@ -511,62 +511,62 @@ static struct my_option my_long_options[] = 0, 0, 0, 0, 0, 0}, {"auto-generate-sql", 'a', "Generate SQL where not supplied by file or command line.", - (uchar**) &auto_generate_sql, (uchar**) &auto_generate_sql, + &auto_generate_sql, &auto_generate_sql, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"auto-generate-sql-add-autoincrement", OPT_SLAP_AUTO_GENERATE_ADD_AUTO, "Add an AUTO_INCREMENT column to auto-generated tables.", - (uchar**) &auto_generate_sql_autoincrement, - (uchar**) &auto_generate_sql_autoincrement, + &auto_generate_sql_autoincrement, + &auto_generate_sql_autoincrement, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"auto-generate-sql-execute-number", OPT_SLAP_AUTO_GENERATE_EXECUTE_QUERIES, "Set this number to generate a set number of queries to run.", - (uchar**) &auto_actual_queries, (uchar**) &auto_actual_queries, + &auto_actual_queries, &auto_actual_queries, 0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"auto-generate-sql-guid-primary", OPT_SLAP_AUTO_GENERATE_GUID_PRIMARY, "Add GUID based primary keys to auto-generated tables.", - (uchar**) &auto_generate_sql_guid_primary, - (uchar**) &auto_generate_sql_guid_primary, + &auto_generate_sql_guid_primary, + &auto_generate_sql_guid_primary, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"auto-generate-sql-load-type", OPT_SLAP_AUTO_GENERATE_SQL_LOAD_TYPE, "Specify test load type: mixed, update, write, key, or read; default is mixed.", - (uchar**) &auto_generate_sql_type, (uchar**) &auto_generate_sql_type, + &auto_generate_sql_type, &auto_generate_sql_type, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"auto-generate-sql-secondary-indexes", OPT_SLAP_AUTO_GENERATE_SECONDARY_INDEXES, "Number of secondary indexes to add to auto-generated tables.", - (uchar**) &auto_generate_sql_secondary_indexes, - (uchar**) &auto_generate_sql_secondary_indexes, 0, + &auto_generate_sql_secondary_indexes, + &auto_generate_sql_secondary_indexes, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"auto-generate-sql-unique-query-number", OPT_SLAP_AUTO_GENERATE_UNIQUE_QUERY_NUM, "Number of unique queries to generate for automatic tests.", - (uchar**) &auto_generate_sql_unique_query_number, - (uchar**) &auto_generate_sql_unique_query_number, + &auto_generate_sql_unique_query_number, + &auto_generate_sql_unique_query_number, 0, GET_ULL, REQUIRED_ARG, 10, 0, 0, 0, 0, 0}, {"auto-generate-sql-unique-write-number", OPT_SLAP_AUTO_GENERATE_UNIQUE_WRITE_NUM, "Number of unique queries to generate for auto-generate-sql-write-number.", - (uchar**) &auto_generate_sql_unique_write_number, - (uchar**) &auto_generate_sql_unique_write_number, + &auto_generate_sql_unique_write_number, + &auto_generate_sql_unique_write_number, 0, GET_ULL, REQUIRED_ARG, 10, 0, 0, 0, 0, 0}, {"auto-generate-sql-write-number", OPT_SLAP_AUTO_GENERATE_WRITE_NUM, "Number of row inserts to perform for each thread (default is 100).", - (uchar**) &auto_generate_sql_number, (uchar**) &auto_generate_sql_number, + &auto_generate_sql_number, &auto_generate_sql_number, 0, GET_ULL, REQUIRED_ARG, 100, 0, 0, 0, 0, 0}, {"commit", OPT_SLAP_COMMIT, "Commit records every X number of statements.", - (uchar**) &commit_rate, (uchar**) &commit_rate, 0, GET_UINT, REQUIRED_ARG, + &commit_rate, &commit_rate, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"compress", 'C', "Use compression in server/client protocol.", - (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"concurrency", 'c', "Number of clients to simulate for query to run.", - (uchar**) &concurrency_str, (uchar**) &concurrency_str, 0, GET_STR, + &concurrency_str, &concurrency_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"create", OPT_SLAP_CREATE_STRING, "File or string to use create tables.", - (uchar**) &create_string, (uchar**) &create_string, 0, GET_STR, REQUIRED_ARG, + &create_string, &create_string, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"create-schema", OPT_CREATE_SLAP_SCHEMA, "Schema to run tests in.", - (uchar**) &create_schema_string, (uchar**) &create_schema_string, 0, GET_STR, + &create_schema_string, &create_schema_string, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"csv", OPT_SLAP_CSV, "Generate CSV output to named file or to stdout if no file is named.", @@ -576,45 +576,45 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0}, #else {"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.", - (uchar**) &default_dbug_option, (uchar**) &default_dbug_option, 0, GET_STR, + &default_dbug_option, &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.", - (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0, + &debug_check_flag, &debug_check_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"debug-info", 'T', "Print some debug info at exit.", (uchar**) &debug_info_flag, - (uchar**) &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"debug-info", 'T', "Print some debug info at exit.", &debug_info_flag, + &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"delimiter", 'F', "Delimiter to use in SQL statements supplied in file or command line.", - (uchar**) &delimiter, (uchar**) &delimiter, 0, GET_STR, REQUIRED_ARG, + &delimiter, &delimiter, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"detach", OPT_SLAP_DETACH, "Detach (close and reopen) connections after X number of requests.", - (uchar**) &detach_rate, (uchar**) &detach_rate, 0, GET_UINT, REQUIRED_ARG, + &detach_rate, &detach_rate, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"engine", 'e', "Storage engine to use for creating the table.", - (uchar**) &default_engine, (uchar**) &default_engine, 0, + &default_engine, &default_engine, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR, + {"host", 'h', "Connect to host.", &host, &host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"iterations", 'i', "Number of times to run the tests.", (uchar**) &iterations, - (uchar**) &iterations, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0}, + {"iterations", 'i', "Number of times to run the tests.", &iterations, + &iterations, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0}, {"number-char-cols", 'x', "Number of VARCHAR columns to create in table if specifying --auto-generate-sql.", - (uchar**) &num_char_cols_opt, (uchar**) &num_char_cols_opt, 0, GET_STR, REQUIRED_ARG, + &num_char_cols_opt, &num_char_cols_opt, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"number-int-cols", 'y', "Number of INT columns to create in table if specifying --auto-generate-sql.", - (uchar**) &num_int_cols_opt, (uchar**) &num_int_cols_opt, 0, GET_STR, REQUIRED_ARG, + &num_int_cols_opt, &num_int_cols_opt, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"number-of-queries", OPT_MYSQL_NUMBER_OF_QUERY, "Limit each client to this number of queries (this is not exact).", - (uchar**) &num_of_query, (uchar**) &num_of_query, 0, + &num_of_query, &num_of_query, 0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"only-print", OPT_MYSQL_ONLY_PRINT, "Do not connect to the databases, but instead print out what would have " "been done.", - (uchar**) &opt_only_print, (uchar**) &opt_only_print, 0, GET_BOOL, NO_ARG, + &opt_only_print, &opt_only_print, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"password", 'p', "Password to use when connecting to server. If password is not given it's " @@ -623,58 +623,54 @@ static struct my_option my_long_options[] = {"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"port", 'P', "Port number to use for connection.", (uchar**) &opt_mysql_port, - (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, MYSQL_PORT, 0, 0, 0, 0, + {"port", 'P', "Port number to use for connection.", &opt_mysql_port, + &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, MYSQL_PORT, 0, 0, 0, 0, 0}, {"post-query", OPT_SLAP_POST_QUERY, "Query to run or file containing query to execute after tests have completed.", - (uchar**) &user_supplied_post_statements, - (uchar**) &user_supplied_post_statements, + &user_supplied_post_statements, &user_supplied_post_statements, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"post-system", OPT_SLAP_POST_SYSTEM, "system() string to execute after tests have completed.", - (uchar**) &post_system, - (uchar**) &post_system, + &post_system, &post_system, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"pre-query", OPT_SLAP_PRE_QUERY, "Query to run or file containing query to execute before running tests.", - (uchar**) &user_supplied_pre_statements, - (uchar**) &user_supplied_pre_statements, + &user_supplied_pre_statements, &user_supplied_pre_statements, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"pre-system", OPT_SLAP_PRE_SYSTEM, "system() string to execute before running tests.", - (uchar**) &pre_system, - (uchar**) &pre_system, + &pre_system, &pre_system, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"protocol", OPT_MYSQL_PROTOCOL, "The protocol to use for connection (tcp, socket, pipe, memory).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"query", 'q', "Query to run or file containing query to run.", - (uchar**) &user_supplied_query, (uchar**) &user_supplied_query, + &user_supplied_query, &user_supplied_query, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_SMEM {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME, - "Base name of shared memory.", (uchar**) &shared_memory_base_name, - (uchar**) &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, + "Base name of shared memory.", &shared_memory_base_name, + &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"silent", 's', "Run program in silent mode - no output.", - (uchar**) &opt_silent, (uchar**) &opt_silent, 0, GET_BOOL, NO_ARG, + &opt_silent, &opt_silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"socket", 'S', "The socket file to use for connection.", - (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0, GET_STR, + &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #include #ifndef DONT_ALLOW_USER_CHANGE - {"user", 'u', "User for login if not current user.", (uchar**) &user, - (uchar**) &user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"user", 'u', "User for login if not current user.", &user, + &user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"verbose", 'v', - "More verbose output; you can use this multiple times to get even more " - "verbose output.", (uchar**) &verbose, (uchar**) &verbose, 0, - GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG, - NO_ARG, 0, 0, 0, 0, 0, 0}, + "More verbose output; you can use this multiple times to get even more " + "verbose output.", &verbose, &verbose, 0, GET_NO_ARG, NO_ARG, + 0, 0, 0, 0, 0, 0}, + {"version", 'V', "Output version information and exit.", 0, 0, 0, + GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/client/mysqltest.cc b/client/mysqltest.cc index 141440a91d8..359de9880e7 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -5836,18 +5836,18 @@ static struct my_option my_long_options[] = { {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"basedir", 'b', "Basedir for tests.", (uchar**) &opt_basedir, - (uchar**) &opt_basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"basedir", 'b', "Basedir for tests.", &opt_basedir, + &opt_basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR, - "Directory for character set files.", (uchar**) &opt_charsets_dir, - (uchar**) &opt_charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory for character set files.", &opt_charsets_dir, + &opt_charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"compress", 'C', "Use the compressed server/client protocol.", - (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"cursor-protocol", OPT_CURSOR_PROTOCOL, "Use cursors for prepared statements.", - (uchar**) &cursor_protocol, (uchar**) &cursor_protocol, 0, + &cursor_protocol, &cursor_protocol, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"database", 'D', "Database to use.", (uchar**) &opt_db, (uchar**) &opt_db, 0, + {"database", 'D', "Database to use.", &opt_db, &opt_db, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef DBUG_OFF {"debug", '#', "This is a non-debug version. Catch this and exit", @@ -5857,28 +5857,28 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.", - (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0, + &debug_check_flag, &debug_check_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", - (uchar**) &debug_info_flag, (uchar**) &debug_info_flag, + &debug_info_flag, &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"host", 'h', "Connect to host.", (uchar**) &opt_host, (uchar**) &opt_host, 0, + {"host", 'h', "Connect to host.", &opt_host, &opt_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"include", 'i', "Include SQL before each test case.", (uchar**) &opt_include, - (uchar**) &opt_include, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"logdir", OPT_LOG_DIR, "Directory for log files", (uchar**) &opt_logdir, - (uchar**) &opt_logdir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"include", 'i', "Include SQL before each test case.", &opt_include, + &opt_include, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"logdir", OPT_LOG_DIR, "Directory for log files", &opt_logdir, + &opt_logdir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"mark-progress", OPT_MARK_PROGRESS, "Write line number and elapsed time to .progress.", - (uchar**) &opt_mark_progress, (uchar**) &opt_mark_progress, 0, + &opt_mark_progress, &opt_mark_progress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"max-connect-retries", OPT_MAX_CONNECT_RETRIES, "Maximum number of attempts to connect to server.", - (uchar**) &opt_max_connect_retries, (uchar**) &opt_max_connect_retries, 0, + &opt_max_connect_retries, &opt_max_connect_retries, 0, GET_INT, REQUIRED_ARG, 500, 1, 10000, 0, 0, 0}, {"max-connections", OPT_MAX_CONNECTIONS, "Max number of open connections to server", - (uchar**) &opt_max_connections, (uchar**) &opt_max_connections, 0, + &opt_max_connections, &opt_max_connections, 0, GET_INT, REQUIRED_ARG, 128, 8, 5120, 0, 0, 0}, {"password", 'p', "Password to use when connecting to server.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, @@ -5888,18 +5888,17 @@ static struct my_option my_long_options[] = "/etc/services, " #endif "built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").", - (uchar**) &opt_port, - (uchar**) &opt_port, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &opt_port, &opt_port, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ps-protocol", OPT_PS_PROTOCOL, "Use prepared-statement protocol for communication.", - (uchar**) &ps_protocol, (uchar**) &ps_protocol, 0, + &ps_protocol, &ps_protocol, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"quiet", 's', "Suppress all normal output.", (uchar**) &silent, - (uchar**) &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"quiet", 's', "Suppress all normal output.", &silent, + &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"record", 'r', "Record output of test_file into result file.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"result-file", 'R', "Read/store result from/in this file.", - (uchar**) &result_file_name, (uchar**) &result_file_name, 0, + &result_file_name, &result_file_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"server-arg", 'A', "Send option value to embedded server as a parameter.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -5907,28 +5906,28 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_SMEM {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME, - "Base name of shared memory.", (uchar**) &shared_memory_base_name, - (uchar**) &shared_memory_base_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, + "Base name of shared memory.", &shared_memory_base_name, + &shared_memory_base_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"silent", 's', "Suppress all normal output. Synonym for --quiet.", - (uchar**) &silent, (uchar**) &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + &silent, &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"skip-safemalloc", OPT_SKIP_SAFEMALLOC, "Don't use the memory allocation checking.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"sleep", 'T', "Always sleep this many seconds on sleep commands.", - (uchar**) &opt_sleep, (uchar**) &opt_sleep, 0, GET_INT, REQUIRED_ARG, -1, -1, 0, + &opt_sleep, &opt_sleep, 0, GET_INT, REQUIRED_ARG, -1, -1, 0, 0, 0, 0}, {"socket", 'S', "The socket file to use for connection.", - (uchar**) &unix_sock, (uchar**) &unix_sock, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, + &unix_sock, &unix_sock, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"sp-protocol", OPT_SP_PROTOCOL, "Use stored procedures for select.", - (uchar**) &sp_protocol, (uchar**) &sp_protocol, 0, + &sp_protocol, &sp_protocol, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #include "sslopt-longopts.h" {"tail-lines", OPT_TAIL_LINES, "Number of lines of the result to include in a failure report.", - (uchar**) &opt_tail_lines, (uchar**) &opt_tail_lines, 0, + &opt_tail_lines, &opt_tail_lines, 0, GET_INT, REQUIRED_ARG, 0, 0, 10000, 0, 0, 0}, {"test-file", 'x', "Read test from/in this file (default stdin).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -5936,14 +5935,14 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"tmpdir", 't', "Temporary directory where sockets are put.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"user", 'u', "User for login.", (uchar**) &opt_user, (uchar**) &opt_user, 0, + {"user", 'u', "User for login.", &opt_user, &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"verbose", 'v', "Write more.", (uchar**) &verbose, (uchar**) &verbose, 0, + {"verbose", 'v', "Write more.", &verbose, &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"view-protocol", OPT_VIEW_PROTOCOL, "Use views for select.", - (uchar**) &view_protocol, (uchar**) &view_protocol, 0, + &view_protocol, &view_protocol, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/extra/comp_err.c b/extra/comp_err.c index 9326444ade9..bd03f20a755 100644 --- a/extra/comp_err.c +++ b/extra/comp_err.c @@ -99,31 +99,29 @@ static struct my_option my_long_options[]= {"debug", '#', "This is a non-debug version. Catch this and exit", 0, 0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0}, #else - {"debug", '#', "Output debug log", (uchar**) & default_dbug_option, - (uchar**) & default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"debug", '#', "Output debug log", &default_dbug_option, + &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"debug-info", 'T', "Print some debug info at exit.", (uchar**) & info_flag, - (uchar**) & info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"debug-info", 'T', "Print some debug info at exit.", &info_flag, + &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"help", '?', "Displays this help and exits.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Prints version", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"charset", 'C', "Charset dir", (uchar**) & charsets_dir, - (uchar**) & charsets_dir, + {"charset", 'C', "Charset dir", &charsets_dir, &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"in_file", 'F', "Input file", (uchar**) & TXTFILE, (uchar**) & TXTFILE, + {"in_file", 'F', "Input file", &TXTFILE, &TXTFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"out_dir", 'D', "Output base directory", (uchar**) & DATADIRECTORY, - (uchar**) & DATADIRECTORY, + {"out_dir", 'D', "Output base directory", &DATADIRECTORY, &DATADIRECTORY, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"out_file", 'O', "Output filename (errmsg.sys)", (uchar**) & OUTFILE, - (uchar**) & OUTFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"header_file", 'H', "mysqld_error.h file ", (uchar**) & HEADERFILE, - (uchar**) & HEADERFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"name_file", 'N', "mysqld_ername.h file ", (uchar**) & NAMEFILE, - (uchar**) & NAMEFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"state_file", 'S', "sql_state.h file", (uchar**) & STATEFILE, - (uchar**) & STATEFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"out_file", 'O', "Output filename (errmsg.sys)", &OUTFILE, + &OUTFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"header_file", 'H', "mysqld_error.h file ", &HEADERFILE, + &HEADERFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"name_file", 'N', "mysqld_ername.h file ", &NAMEFILE, + &NAMEFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"state_file", 'S', "sql_state.h file", &STATEFILE, + &STATEFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/extra/my_print_defaults.c b/extra/my_print_defaults.c index 06f7e51c380..cc74208b783 100644 --- a/extra/my_print_defaults.c +++ b/extra/my_print_defaults.c @@ -46,31 +46,36 @@ static struct my_option my_long_options[] = searched for a file of this name (and standard filename extensions are added if the file has no extension) */ - {"config-file", 'c', "Deprecated, please use --defaults-file instead. Name of config file to read; if no extension is given, default extension (e.g., .ini or .cnf) will be added", - (uchar**) &config_file, (uchar**) &config_file, 0, GET_STR, REQUIRED_ARG, + {"config-file", 'c', "Deprecated, please use --defaults-file instead. " + "Name of config file to read; if no extension is given, default " + "extension (e.g., .ini or .cnf) will be added", + &config_file, &config_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef DBUG_OFF {"debug", '#', "This is a non-debug version. Catch this and exit", 0,0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0}, #else - {"debug", '#', "Output debug log", (uchar**) &default_dbug_option, - (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"debug", '#', "Output debug log", &default_dbug_option, + &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"defaults-file", 'c', "Like --config-file, except: if first option, then read this file only, do not read global or per-user config files; should be the first option", - (uchar**) &config_file, (uchar**) &config_file, 0, GET_STR, REQUIRED_ARG, + {"defaults-file", 'c', "Like --config-file, except: if first option, " + "then read this file only, do not read global or per-user config " + "files; should be the first option", + &config_file, &config_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"defaults-extra-file", 'e', - "Read this file after the global config file and before the config file in the users home directory; should be the first option", - (uchar**) &my_defaults_extra_file, (uchar**) &my_defaults_extra_file, 0, + "Read this file after the global config file and before the config " + "file in the users home directory; should be the first option", + &my_defaults_extra_file, &my_defaults_extra_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"defaults-group-suffix", 'g', "In addition to the given groups, read also groups with this suffix", - (uchar**) &my_defaults_group_suffix, (uchar**) &my_defaults_group_suffix, + &my_defaults_group_suffix, &my_defaults_group_suffix, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"extra-file", 'e', "Deprecated. Synonym for --defaults-extra-file.", - (uchar**) &my_defaults_extra_file, - (uchar**) &my_defaults_extra_file, 0, GET_STR, + &my_defaults_extra_file, + &my_defaults_extra_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"no-defaults", 'n', "Return an empty string (useful for scripts).", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, diff --git a/extra/mysql_waitpid.c b/extra/mysql_waitpid.c index 42465998862..e5c06ac9857 100644 --- a/extra/mysql_waitpid.c +++ b/extra/mysql_waitpid.c @@ -38,7 +38,7 @@ static struct my_option my_long_options[] = 0, 0, 0, 0, 0}, {"verbose", 'v', "Be more verbose. Give a warning, if kill can't handle signal 0.", - (uchar**) &verbose, (uchar**) &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + &verbose, &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Print version information and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} diff --git a/extra/perror.c b/extra/perror.c index a98a4fc3d1b..c32ad2bc791 100644 --- a/extra/perror.c +++ b/extra/perror.c @@ -60,18 +60,18 @@ static struct my_option my_long_options[] = {"info", 'I', "Synonym for --help.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef WITH_NDBCLUSTER_STORAGE_ENGINE - {"ndb", 257, "Ndbcluster storage engine specific error codes.", (uchar**) &ndb_code, - (uchar**) &ndb_code, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"ndb", 257, "Ndbcluster storage engine specific error codes.", &ndb_code, + &ndb_code, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif #ifdef HAVE_SYS_ERRLIST {"all", 'a', "Print all the error messages and the number.", - (uchar**) &print_all_codes, (uchar**) &print_all_codes, 0, GET_BOOL, NO_ARG, + &print_all_codes, &print_all_codes, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"silent", 's', "Only print the error message.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"verbose", 'v', "Print error code and message (default).", (uchar**) &verbose, - (uchar**) &verbose, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, + {"verbose", 'v', "Print error code and message (default).", &verbose, + &verbose, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"version", 'V', "Displays version information and exits.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} diff --git a/extra/resolve_stack_dump.c b/extra/resolve_stack_dump.c index 447d63890bd..4faca1653b2 100644 --- a/extra/resolve_stack_dump.c +++ b/extra/resolve_stack_dump.c @@ -53,10 +53,10 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"symbols-file", 's', "Use specified symbols file.", (uchar**) &sym_fname, - (uchar**) &sym_fname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"symbols-file", 's', "Use specified symbols file.", &sym_fname, + &sym_fname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"numeric-dump-file", 'n', "Read the dump from specified file.", - (uchar**) &dump_fname, (uchar**) &dump_fname, 0, GET_STR, REQUIRED_ARG, + &dump_fname, &dump_fname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/extra/resolveip.c b/extra/resolveip.c index 5f2a9269f62..90fda977848 100644 --- a/extra/resolveip.c +++ b/extra/resolveip.c @@ -45,7 +45,7 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"info", 'I', "Synonym for --help.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"silent", 's', "Be more silent.", (uchar**) &silent, (uchar**) &silent, + {"silent", 's', "Be more silent.", &silent, &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Displays version information and exits.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, diff --git a/include/my_getopt.h b/include/my_getopt.h index 7cbad607aac..d7c996302fd 100644 --- a/include/my_getopt.h +++ b/include/my_getopt.h @@ -45,10 +45,10 @@ struct my_option const char *name; /* Name of the option */ int id; /* unique id or short option */ const char *comment; /* option comment, for autom. --help */ - uchar **value; /* The variable value */ - uchar **u_max_value; /* The user def. max variable value */ + void *value; /* The variable value */ + void *u_max_value; /* The user def. max variable value */ struct st_typelib *typelib; /* Pointer to possible values */ - ulong var_type; + ulong var_type; /* Must match the variable type */ enum get_opt_arg_type arg_type; longlong def_value; /* Default value */ longlong min_value; /* Min allowed value */ @@ -58,8 +58,16 @@ struct my_option void *app_type; /* To be used by an application */ }; -typedef my_bool (* my_get_one_option) (int, const struct my_option *, char * ); -typedef void (* my_error_reporter) (enum loglevel level, const char *format, ... ); +typedef my_bool (*my_get_one_option)(int, const struct my_option *, char *); +typedef void (*my_error_reporter)(enum loglevel level, const char *format, ...); +/** + Used to retrieve a reference to the object (variable) that holds the value + for the given option. For example, if var_type is GET_UINT, the function + must return a pointer to a variable of type uint. A argument is stored in + the location pointed to by the returned pointer. +*/ +typedef void *(*my_getopt_value)(const char *, uint, const struct my_option *, + int *); extern char *disabled_my_option; extern my_bool my_getopt_print_errors; @@ -71,8 +79,7 @@ extern int handle_options (int *argc, char ***argv, extern void my_cleanup_options(const struct my_option *options); extern void my_print_help(const struct my_option *options); extern void my_print_variables(const struct my_option *options); -extern void my_getopt_register_get_addr(uchar ** (*func_addr)(const char *, uint, - const struct my_option *, int *)); +extern void my_getopt_register_get_addr(my_getopt_value); ulonglong getopt_ull_limit_value(ulonglong num, const struct my_option *optp, my_bool *fix); diff --git a/include/sslopt-longopts.h b/include/sslopt-longopts.h index c76b5dcd252..c038ece1644 100644 --- a/include/sslopt-longopts.h +++ b/include/sslopt-longopts.h @@ -16,30 +16,31 @@ #ifdef HAVE_OPENSSL {"ssl", OPT_SSL_SSL, - "Enable SSL for connection (automatically enabled with other flags). Disable with --skip-ssl.", - (uchar **) &opt_use_ssl, (uchar **) &opt_use_ssl, 0, GET_BOOL, NO_ARG, 0, 0, 0, - 0, 0, 0}, + "Enable SSL for connection (automatically enabled with other flags)." + "Disable with --skip-ssl.", &opt_use_ssl, &opt_use_ssl, 0, GET_BOOL, + NO_ARG, 0, 0, 0, 0, 0, 0}, {"ssl-ca", OPT_SSL_CA, "CA file in PEM format (check OpenSSL docs, implies --ssl).", - (uchar **) &opt_ssl_ca, (uchar **) &opt_ssl_ca, 0, GET_STR, REQUIRED_ARG, + &opt_ssl_ca, &opt_ssl_ca, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ssl-capath", OPT_SSL_CAPATH, "CA directory (check OpenSSL docs, implies --ssl).", - (uchar **) &opt_ssl_capath, (uchar **) &opt_ssl_capath, 0, GET_STR, REQUIRED_ARG, + &opt_ssl_capath, &opt_ssl_capath, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ssl-cert", OPT_SSL_CERT, "X509 cert in PEM format (implies --ssl).", - (uchar **) &opt_ssl_cert, (uchar **) &opt_ssl_cert, 0, GET_STR, REQUIRED_ARG, + &opt_ssl_cert, &opt_ssl_cert, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ssl-cipher", OPT_SSL_CIPHER, "SSL cipher to use (implies --ssl).", - (uchar **) &opt_ssl_cipher, (uchar **) &opt_ssl_cipher, 0, GET_STR, REQUIRED_ARG, + &opt_ssl_cipher, &opt_ssl_cipher, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ssl-key", OPT_SSL_KEY, "X509 key in PEM format (implies --ssl).", - (uchar **) &opt_ssl_key, (uchar **) &opt_ssl_key, 0, GET_STR, REQUIRED_ARG, + &opt_ssl_key, &opt_ssl_key, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef MYSQL_CLIENT {"ssl-verify-server-cert", OPT_SSL_VERIFY_SERVER_CERT, - "Verify server's \"Common Name\" in its cert against hostname used when connecting. This option is disabled by default.", - (uchar **) &opt_ssl_verify_server_cert, (uchar **) &opt_ssl_verify_server_cert, + "Verify server's \"Common Name\" in its cert against hostname used " + "when connecting. This option is disabled by default.", + &opt_ssl_verify_server_cert, &opt_ssl_verify_server_cert, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif #endif /* HAVE_OPENSSL */ diff --git a/mysys/mf_wfile.c b/mysys/mf_wfile.c index f98d348994e..4a4fb466600 100644 --- a/mysys/mf_wfile.c +++ b/mysys/mf_wfile.c @@ -119,6 +119,6 @@ void wf_end(WF_PACK *buffer) { DBUG_ENTER("wf_end"); if (buffer) - my_free((uchar*) buffer,MYF(0)); + my_free(buffer, MYF(0)); DBUG_VOID_RETURN; } /* wf_end */ diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c index fc5662812b0..26b1cc75af0 100644 --- a/mysys/my_getopt.c +++ b/mysys/my_getopt.c @@ -22,7 +22,7 @@ #include #include -typedef void (*init_func_p)(const struct my_option *option, uchar* *variable, +typedef void (*init_func_p)(const struct my_option *option, void *variable, longlong value); static void default_reporter(enum loglevel level, const char *format, ...); @@ -40,11 +40,11 @@ static ulonglong getopt_ull(char *arg, const struct my_option *optp, static double getopt_double(char *arg, const struct my_option *optp, int *err); static void init_variables(const struct my_option *options, init_func_p init_one_value); -static void init_one_value(const struct my_option *option, uchar* *variable, +static void init_one_value(const struct my_option *option, void *variable, longlong value); -static void fini_one_value(const struct my_option *option, uchar* *variable, +static void fini_one_value(const struct my_option *option, void *variable, longlong value); -static int setval(const struct my_option *opts, uchar* *value, char *argument, +static int setval(const struct my_option *opts, void *value, char *argument, my_bool set_maximum_value); static char *check_struct_option(char *cur_arg, char *key_name); @@ -101,10 +101,9 @@ static void default_reporter(enum loglevel level, one. Call function 'get_one_option()' once for each option. */ -static uchar** (*getopt_get_addr)(const char *, uint, const struct my_option *, int *); +static my_getopt_value getopt_get_addr; -void my_getopt_register_get_addr(uchar** (*func_addr)(const char *, uint, - const struct my_option *, int *)) +void my_getopt_register_get_addr(my_getopt_value func_addr) { getopt_get_addr= func_addr; } @@ -119,7 +118,7 @@ int handle_options(int *argc, char ***argv, char **pos, **pos_end, *optend, *UNINIT_VAR(prev_found), *opt_str, key_name[FN_REFLEN]; const struct my_option *optp; - uchar* *value; + void *value; int error, i; LINT_INIT(opt_found); @@ -173,7 +172,7 @@ int handle_options(int *argc, char ***argv, "%s: Option '--set-variable' is deprecated. " "Use --variable-name=value instead.", my_progname); - + must_be_var= 1; if (cur_arg[13] == '=') { @@ -378,7 +377,7 @@ int handle_options(int *argc, char ***argv, optp->value; if (error) return error; - + if (optp->arg_type == NO_ARG) { if (optend && (optp->var_type & GET_TYPE_MASK) != GET_BOOL) @@ -406,8 +405,8 @@ int handle_options(int *argc, char ***argv, else { my_getopt_error_reporter(WARNING_LEVEL, - "%s: ignoring option '--%s' due to \ -invalid value '%s'", + "%s: ignoring option '--%s' due to " + "invalid value '%s'", my_progname, optp->name, optend); continue; } @@ -611,15 +610,14 @@ static char *check_struct_option(char *cur_arg, char *key_name) Will set the option value to given value */ -static int setval(const struct my_option *opts, uchar* *value, char *argument, +static int setval(const struct my_option *opts, void *value, char *argument, my_bool set_maximum_value) { int err= 0; if (value && argument) { - uchar* *result_pos= ((set_maximum_value) ? - opts->u_max_value : value); + void *result_pos= ((set_maximum_value) ? opts->u_max_value : value); if (!result_pos) return EXIT_NO_PTR_TO_VARIABLE; @@ -994,7 +992,7 @@ static double getopt_double(char *arg, const struct my_option *optp, int *err) value Pointer to variable */ -static void init_one_value(const struct my_option *option, uchar* *variable, +static void init_one_value(const struct my_option *option, void *variable, longlong value) { DBUG_ENTER("init_one_value"); @@ -1068,7 +1066,7 @@ static void init_one_value(const struct my_option *option, uchar* *variable, value Pointer to variable */ -static void fini_one_value(const struct my_option *option, uchar* *variable, +static void fini_one_value(const struct my_option *option, void *variable, longlong value __attribute__ ((unused))) { DBUG_ENTER("fini_one_value"); @@ -1109,7 +1107,7 @@ static void init_variables(const struct my_option *options, DBUG_ENTER("init_variables"); for (; options->name; options++) { - uchar* *variable; + void *variable; DBUG_PRINT("options", ("name: '%s'", options->name)); /* We must set u_max_value first as for some variables @@ -1224,7 +1222,7 @@ void my_print_variables(const struct my_option *options) printf("--------------------------------- -----------------------------\n"); for (optp= options; optp->id; optp++) { - uchar* *value= (optp->var_type & GET_ASK_ADDR ? + void *value= (optp->var_type & GET_ASK_ADDR ? (*getopt_get_addr)("", 0, optp, 0) : optp->value); if (value) { diff --git a/server-tools/instance-manager/options.cc b/server-tools/instance-manager/options.cc index 75a18c5b43a..b9f8b103315 100644 --- a/server-tools/instance-manager/options.cc +++ b/server-tools/instance-manager/options.cc @@ -153,14 +153,14 @@ static struct my_option my_long_options[] = #ifndef __WIN__ { "angel-pid-file", OPT_ANGEL_PID_FILE, "Pid file for angel process.", - (uchar* *) &Options::Daemon::angel_pid_file_name, - (uchar* *) &Options::Daemon::angel_pid_file_name, + &Options::Daemon::angel_pid_file_name, + &Options::Daemon::angel_pid_file_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, #endif { "bind-address", OPT_BIND_ADDRESS, "Bind address to use for connection.", - (uchar* *) &Options::Main::bind_address, - (uchar* *) &Options::Main::bind_address, + &Options::Main::bind_address, + &Options::Main::bind_address, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, { "check-password-file", OPT_CHECK_PASSWORD_FILE, @@ -173,15 +173,15 @@ static struct my_option my_long_options[] = #ifndef DBUG_OFF {"debug", '#', "Debug log.", - (uchar* *) &Options::Debug::config_str, - (uchar* *) &Options::Debug::config_str, + &Options::Debug::config_str, + &Options::Debug::config_str, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif { "default-mysqld-path", OPT_MYSQLD_PATH, "Where to look for MySQL" " Server binary.", - (uchar* *) &Options::Main::default_mysqld_path, - (uchar* *) &Options::Main::default_mysqld_path, + &Options::Main::default_mysqld_path, + &Options::Main::default_mysqld_path, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0 }, { "drop-user", OPT_DROP_USER, @@ -194,8 +194,8 @@ static struct my_option my_long_options[] = #ifdef __WIN__ { "install", OPT_INSTALL_SERVICE, "Install as system service.", - (uchar* *) &Options::Service::install_as_service, - (uchar* *) &Options::Service::install_as_service, + &Options::Service::install_as_service, + &Options::Service::install_as_service, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0 }, #endif @@ -205,22 +205,22 @@ static struct my_option my_long_options[] = #ifndef __WIN__ { "log", OPT_LOG, "Path to log file. Used only with --run-as-service.", - (uchar* *) &Options::Daemon::log_file_name, - (uchar* *) &Options::Daemon::log_file_name, + &Options::Daemon::log_file_name, + &Options::Daemon::log_file_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, #endif { "monitoring-interval", OPT_MONITORING_INTERVAL, "Interval to monitor" " instances in seconds.", - (uchar* *) &Options::Main::monitoring_interval, - (uchar* *) &Options::Main::monitoring_interval, + &Options::Main::monitoring_interval, + &Options::Main::monitoring_interval, 0, GET_UINT, REQUIRED_ARG, DEFAULT_MONITORING_INTERVAL, 0, 0, 0, 0, 0 }, { "mysqld-safe-compatible", OPT_MYSQLD_SAFE_COMPATIBLE, "Start Instance Manager in mysqld_safe-compatible manner.", - (uchar* *) &Options::Main::mysqld_safe_compatible, - (uchar* *) &Options::Main::mysqld_safe_compatible, + &Options::Main::mysqld_safe_compatible, + &Options::Main::mysqld_safe_compatible, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0 }, { "print-password-line", OPT_PRINT_PASSWORD_LINE, @@ -228,61 +228,61 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0 }, { "password", OPT_PASSWORD, "Password to update the password file.", - (uchar* *) &Options::User_management::password, - (uchar* *) &Options::User_management::password, + &Options::User_management::password, + &Options::User_management::password, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, { "password-file", OPT_PASSWORD_FILE, "Look for Instance Manager users and passwords here.", - (uchar* *) &Options::Main::password_file_name, - (uchar* *) &Options::Main::password_file_name, + &Options::Main::password_file_name, + &Options::Main::password_file_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, { "pid-file", OPT_PID_FILE, "Pid file to use.", - (uchar* *) &Options::Main::pid_file_name, - (uchar* *) &Options::Main::pid_file_name, + &Options::Main::pid_file_name, + &Options::Main::pid_file_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, { "port", OPT_PORT, "Port number to use for connections.", - (uchar* *) &Options::Main::port_number, - (uchar* *) &Options::Main::port_number, + &Options::Main::port_number, + &Options::Main::port_number, 0, GET_UINT, REQUIRED_ARG, DEFAULT_PORT, 0, 0, 0, 0, 0 }, #ifdef __WIN__ { "remove", OPT_REMOVE_SERVICE, "Remove system service.", - (uchar* *) &Options::Service::remove_service, - (uchar* *) &Options::Service::remove_service, + &Options::Service::remove_service, + &Options::Service::remove_service, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0}, #else { "run-as-service", OPT_RUN_AS_SERVICE, "Daemonize and start angel process.", - (uchar* *) &Options::Daemon::run_as_service, + &Options::Daemon::run_as_service, 0, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0 }, #endif #ifndef __WIN__ { "socket", OPT_SOCKET, "Socket file to use for connection.", - (uchar* *) &Options::Main::socket_file_name, - (uchar* *) &Options::Main::socket_file_name, + &Options::Main::socket_file_name, + &Options::Main::socket_file_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, #endif #ifdef __WIN__ { "standalone", OPT_STAND_ALONE, "Run the application in stand alone mode.", - (uchar* *) &Options::Service::stand_alone, - (uchar* *) &Options::Service::stand_alone, + &Options::Service::stand_alone, + &Options::Service::stand_alone, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0}, #else { "user", OPT_USER, "Username to start mysqlmanager.", - (uchar* *) &Options::Daemon::user, - (uchar* *) &Options::Daemon::user, + &Options::Daemon::user, + &Options::Daemon::user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, #endif { "username", OPT_USERNAME, "Username to update the password file.", - (uchar* *) &Options::User_management::user_name, - (uchar* *) &Options::User_management::user_name, + &Options::User_management::user_name, + &Options::User_management::user_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, { "version", 'V', "Output version information and exit.", 0, 0, 0, @@ -290,8 +290,8 @@ static struct my_option my_long_options[] = { "wait-timeout", OPT_WAIT_TIMEOUT, "The number of seconds IM waits " "for activity on a connection before closing it.", - (uchar* *) &net_read_timeout, - (uchar* *) &net_read_timeout, + &net_read_timeout, + &net_read_timeout, 0, GET_ULONG, REQUIRED_ARG, NET_WAIT_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0 }, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0 } diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 7598c2a5276..9afdfab7e89 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -5787,12 +5787,12 @@ enum options_mysqld struct my_option my_long_options[] = { {"help", '?', "Display this help and exit.", - (uchar**) &opt_help, (uchar**) &opt_help, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &opt_help, &opt_help, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_REPLICATION {"abort-slave-event-count", OPT_ABORT_SLAVE_EVENT_COUNT, "Option used by mysql-test for debugging and testing of replication.", - (uchar**) &abort_slave_event_count, (uchar**) &abort_slave_event_count, + &abort_slave_event_count, &abort_slave_event_count, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif /* HAVE_REPLICATION */ {"allow-suspicious-udfs", OPT_ALLOW_SUSPICIOUS_UDFS, @@ -5800,33 +5800,34 @@ struct my_option my_long_options[] = "without corresponding xxx_init() or xxx_deinit(). That also means " "that one can load any function from any library, for example exit() " "from libc.so", - (uchar**) &opt_allow_suspicious_udfs, (uchar**) &opt_allow_suspicious_udfs, + &opt_allow_suspicious_udfs, &opt_allow_suspicious_udfs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"ansi", 'a', "Use ANSI SQL syntax instead of MySQL syntax. This mode will also set transaction isolation level 'serializable'.", 0, 0, 0, + {"ansi", 'a', "Use ANSI SQL syntax instead of MySQL syntax. This mode " + "will also set transaction isolation level 'serializable'.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"auto-increment-increment", OPT_AUTO_INCREMENT, "Auto-increment columns are incremented by this.", - (uchar**) &global_system_variables.auto_increment_increment, - (uchar**) &max_system_variables.auto_increment_increment, 0, GET_ULONG, + &global_system_variables.auto_increment_increment, + &max_system_variables.auto_increment_increment, 0, GET_ULONG, OPT_ARG, 1, 1, 65535, 0, 1, 0 }, {"auto-increment-offset", OPT_AUTO_INCREMENT_OFFSET, "Offset added to Auto-increment columns. Used when auto-increment-increment != 1.", - (uchar**) &global_system_variables.auto_increment_offset, - (uchar**) &max_system_variables.auto_increment_offset, 0, GET_ULONG, OPT_ARG, + &global_system_variables.auto_increment_offset, + &max_system_variables.auto_increment_offset, 0, GET_ULONG, OPT_ARG, 1, 1, 65535, 0, 1, 0 }, {"automatic-sp-privileges", OPT_SP_AUTOMATIC_PRIVILEGES, "Creating and dropping stored procedures alters ACLs. Disable with --skip-automatic-sp-privileges.", - (uchar**) &sp_automatic_privileges, (uchar**) &sp_automatic_privileges, + &sp_automatic_privileges, &sp_automatic_privileges, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"basedir", 'b', "Path to installation directory. All paths are usually resolved relative to this.", - (uchar**) &mysql_home_ptr, (uchar**) &mysql_home_ptr, 0, GET_STR, REQUIRED_ARG, + &mysql_home_ptr, &mysql_home_ptr, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"big-tables", OPT_BIG_TABLES, "Allow big result sets by saving all temporary sets on file (solves most 'table full' errors).", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"bind-address", OPT_BIND_ADDRESS, "IP address to bind to.", - (uchar**) &my_bind_addr_str, (uchar**) &my_bind_addr_str, 0, GET_STR, + &my_bind_addr_str, &my_bind_addr_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"binlog_format", OPT_BINLOG_FORMAT, "Does not have any effect without '--log-bin'. " @@ -5839,10 +5840,11 @@ struct my_option my_long_options[] = "If ndbcluster is enabled and binlog_format is `mixed', the format switches" " to 'row' and back implicitly per each query accessing a NDB table." #endif - ,(uchar**) &opt_binlog_format, (uchar**) &opt_binlog_format, + , &opt_binlog_format, &opt_binlog_format, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"binlog-do-db", OPT_BINLOG_DO_DB, - "Tells the master it should log updates for the specified database, and exclude all others not explicitly mentioned.", + "Tells the master it should log updates for the specified database, " + "and exclude all others not explicitly mentioned.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"binlog-ignore-db", OPT_BINLOG_IGNORE_DB, "Tells the master that updates to the given database should not be logged to the binary log.", @@ -5851,9 +5853,8 @@ struct my_option my_long_options[] = "The maximum size of a row-based binary log event in bytes. Rows will be " "grouped into events smaller than this size if possible. " "The value has to be a multiple of 256.", - (uchar**) &opt_binlog_rows_event_max_size, - (uchar**) &opt_binlog_rows_event_max_size, 0, - GET_ULONG, REQUIRED_ARG, + &opt_binlog_rows_event_max_size, &opt_binlog_rows_event_max_size, + 0, GET_ULONG, REQUIRED_ARG, /* def_value */ 1024, /* min_value */ 256, /* max_value */ ULONG_MAX, /* sub_size */ 0, /* block_size */ 256, /* app_type */ 0 @@ -5864,108 +5865,112 @@ struct my_option my_long_options[] = #endif {"character-set-client-handshake", OPT_CHARACTER_SET_CLIENT_HANDSHAKE, "Don't ignore client side character set value sent during handshake.", - (uchar**) &opt_character_set_client_handshake, - (uchar**) &opt_character_set_client_handshake, + &opt_character_set_client_handshake, + &opt_character_set_client_handshake, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"character-set-filesystem", OPT_CHARACTER_SET_FILESYSTEM, "Set the filesystem character set.", - (uchar**) &character_set_filesystem_name, - (uchar**) &character_set_filesystem_name, + &character_set_filesystem_name, + &character_set_filesystem_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, {"character-set-server", 'C', "Set the default character set.", - (uchar**) &default_character_set_name, (uchar**) &default_character_set_name, + &default_character_set_name, &default_character_set_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, {"character-sets-dir", OPT_CHARSETS_DIR, - "Directory where character sets are.", (uchar**) &charsets_dir, - (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory where character sets are.", &charsets_dir, + &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"chroot", 'r', "Chroot mysqld daemon during startup.", - (uchar**) &mysqld_chroot, (uchar**) &mysqld_chroot, 0, GET_STR, REQUIRED_ARG, + &mysqld_chroot, &mysqld_chroot, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"collation-server", OPT_DEFAULT_COLLATION, "Set the default collation.", - (uchar**) &default_collation_name, (uchar**) &default_collation_name, + &default_collation_name, &default_collation_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, {"completion-type", OPT_COMPLETION_TYPE, "Default completion type.", - (uchar**) &global_system_variables.completion_type, - (uchar**) &max_system_variables.completion_type, 0, GET_ULONG, + &global_system_variables.completion_type, + &max_system_variables.completion_type, 0, GET_ULONG, REQUIRED_ARG, 0, 0, 2, 0, 1, 0}, {"concurrent-insert", OPT_CONCURRENT_INSERT, "Use concurrent insert with MyISAM. Disable with --concurrent-insert=0.", - (uchar**) &myisam_concurrent_insert, (uchar**) &myisam_concurrent_insert, + &myisam_concurrent_insert, &myisam_concurrent_insert, 0, GET_ULONG, OPT_ARG, 1, 0, 2, 0, 0, 0}, {"console", OPT_CONSOLE, "Write error output on screen; don't remove the console window on windows.", - (uchar**) &opt_console, (uchar**) &opt_console, 0, GET_BOOL, NO_ARG, 0, 0, 0, + &opt_console, &opt_console, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"core-file", OPT_WANT_CORE, "Write core on errors.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"datadir", 'h', "Path to the database root.", (uchar**) &mysql_data_home, - (uchar**) &mysql_data_home, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"datadir", 'h', "Path to the database root.", &mysql_data_home, + &mysql_data_home, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DBUG_OFF - {"debug", '#', "Debug log.", (uchar**) &default_dbug_option, - (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"debug", '#', "Debug log.", &default_dbug_option, + &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"default-character-set", OPT_DEFAULT_CHARACTER_SET_OLD, "Set the default character set (deprecated option, use --character-set-server instead).", - (uchar**) &default_character_set_name, (uchar**) &default_character_set_name, + &default_character_set_name, &default_character_set_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, - {"default-collation", OPT_DEFAULT_COLLATION_OLD, "Set the default collation (deprecated option, use --collation-server instead).", - (uchar**) &default_collation_name, (uchar**) &default_collation_name, + {"default-collation", OPT_DEFAULT_COLLATION_OLD, "Set the default collation " + "(deprecated option, use --collation-server instead).", + &default_collation_name, &default_collation_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, {"default-storage-engine", OPT_STORAGE_ENGINE, "Set the default storage engine (table type) for tables.", - (uchar**)&default_storage_engine_str, (uchar**)&default_storage_engine_str, + &default_storage_engine_str, &default_storage_engine_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"default-table-type", OPT_STORAGE_ENGINE, "(deprecated) Use --default-storage-engine.", - (uchar**)&default_storage_engine_str, (uchar**)&default_storage_engine_str, + &default_storage_engine_str, &default_storage_engine_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"default-time-zone", OPT_DEFAULT_TIME_ZONE, "Set the default time zone.", - (uchar**) &default_tz_name, (uchar**) &default_tz_name, + &default_tz_name, &default_tz_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, {"delay-key-write", OPT_DELAY_KEY_WRITE, "Type of DELAY_KEY_WRITE.", 0,0,0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"delay-key-write-for-all-tables", OPT_DELAY_KEY_WRITE_ALL, - "Don't flush key buffers between writes for any MyISAM table. (Deprecated option, use --delay-key-write=all instead.)", + "Don't flush key buffers between writes for any MyISAM table. " + "(Deprecated option, use --delay-key-write=all instead.)", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_OPENSSL {"des-key-file", OPT_DES_KEY_FILE, "Load keys for des_encrypt() and des_encrypt from given file.", - (uchar**) &des_key_file, (uchar**) &des_key_file, 0, GET_STR, REQUIRED_ARG, + &des_key_file, &des_key_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif /* HAVE_OPENSSL */ #ifdef HAVE_REPLICATION {"disconnect-slave-event-count", OPT_DISCONNECT_SLAVE_EVENT_COUNT, "Option used by mysql-test for debugging and testing of replication.", - (uchar**) &disconnect_slave_event_count, - (uchar**) &disconnect_slave_event_count, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, - 0, 0, 0}, + &disconnect_slave_event_count, &disconnect_slave_event_count, + 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif /* HAVE_REPLICATION */ {"enable-locking", OPT_ENABLE_LOCK, "Deprecated option, use --external-locking instead.", - (uchar**) &opt_external_locking, (uchar**) &opt_external_locking, + &opt_external_locking, &opt_external_locking, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef __NT__ {"enable-named-pipe", OPT_HAVE_NAMED_PIPE, "Enable the named pipe (NT).", - (uchar**) &opt_enable_named_pipe, (uchar**) &opt_enable_named_pipe, 0, GET_BOOL, + &opt_enable_named_pipe, &opt_enable_named_pipe, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif #ifdef HAVE_STACK_TRACE_ON_SEGV {"enable-pstack", OPT_DO_PSTACK, "Print a symbolic stack trace on failure.", - (uchar**) &opt_do_pstack, (uchar**) &opt_do_pstack, 0, GET_BOOL, NO_ARG, 0, 0, + &opt_do_pstack, &opt_do_pstack, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif /* HAVE_STACK_TRACE_ON_SEGV */ {"engine-condition-pushdown", OPT_ENGINE_CONDITION_PUSHDOWN, "Push supported query conditions to the storage engine.", - (uchar**) &global_system_variables.engine_condition_pushdown, - (uchar**) &global_system_variables.engine_condition_pushdown, + &global_system_variables.engine_condition_pushdown, + &global_system_variables.engine_condition_pushdown, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, /* See how it's handled in get_one_option() */ {"event-scheduler", OPT_EVENT_SCHEDULER, "Enable/disable the event scheduler.", NULL, NULL, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"exit-info", 'T', "Used for debugging. Use at your own risk.", 0, 0, 0, GET_LONG, OPT_ARG, 0, 0, 0, 0, 0, 0}, - {"external-locking", OPT_USE_LOCKING, "Use system (external) locking (disabled by default). With this option enabled you can run myisamchk to test (not repair) tables while the MySQL server is running. Disable with --skip-external-locking.", - (uchar**) &opt_external_locking, (uchar**) &opt_external_locking, + {"external-locking", OPT_USE_LOCKING, "Use system (external) locking " + "(disabled by default). With this option enabled you can run myisamchk " + "to test (not repair) tables while the MySQL server is running. " + "Disable with --skip-external-locking.", + &opt_external_locking, &opt_external_locking, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"flush", OPT_FLUSH, "Flush tables to disk between SQL commands.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -5973,64 +5978,61 @@ struct my_option my_long_options[] = easier to do */ {"gdb", OPT_DEBUGGING, "Set up signals usable for debugging.", - (uchar**) &opt_debugging, (uchar**) &opt_debugging, + &opt_debugging, &opt_debugging, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"general_log", OPT_GENERAL_LOG, - "Enable/disable general log.", (uchar**) &opt_log, - (uchar**) &opt_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0}, + "Enable/disable general log.", &opt_log, + &opt_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_LARGE_PAGES - {"large-pages", OPT_ENABLE_LARGE_PAGES, "Enable support for large pages. \ -Disable with --skip-large-pages.", - (uchar**) &opt_large_pages, (uchar**) &opt_large_pages, 0, GET_BOOL, NO_ARG, 0, 0, 0, - 0, 0, 0}, + {"large-pages", OPT_ENABLE_LARGE_PAGES, "Enable support for large pages. " + "Disable with --skip-large-pages.", &opt_large_pages, &opt_large_pages, + 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"ignore-builtin-innodb", OPT_IGNORE_BUILTIN_INNODB , "Disable initialization of builtin InnoDB plugin.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"init-connect", OPT_INIT_CONNECT, "Command(s) that are executed for each new connection.", - (uchar**) &opt_init_connect, (uchar**) &opt_init_connect, 0, GET_STR_ALLOC, + &opt_init_connect, &opt_init_connect, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DISABLE_GRANT_OPTIONS {"init-file", OPT_INIT_FILE, "Read SQL commands from this file at startup.", - (uchar**) &opt_init_file, (uchar**) &opt_init_file, 0, GET_STR, REQUIRED_ARG, + &opt_init_file, &opt_init_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"init-rpl-role", OPT_INIT_RPL_ROLE, "Set the replication role.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"init-slave", OPT_INIT_SLAVE, "Command(s) that are executed by a slave server \ each time the SQL thread starts.", - (uchar**) &opt_init_slave, (uchar**) &opt_init_slave, 0, GET_STR_ALLOC, + &opt_init_slave, &opt_init_slave, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"language", 'L', "Client error messages in given language. May be given as a full path.", - (uchar**) &language_ptr, (uchar**) &language_ptr, 0, GET_STR, REQUIRED_ARG, + &language_ptr, &language_ptr, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"lc-time-names", OPT_LC_TIME_NAMES, "Set the language used for the month names and the days of the week.", - (uchar**) &lc_time_names_name, - (uchar**) &lc_time_names_name, + &lc_time_names_name, &lc_time_names_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, {"local-infile", OPT_LOCAL_INFILE, "Enable/disable LOAD DATA LOCAL INFILE (takes values 1 or 0).", - (uchar**) &opt_local_infile, - (uchar**) &opt_local_infile, 0, GET_BOOL, OPT_ARG, + &opt_local_infile, &opt_local_infile, 0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0}, {"log", 'l', "Log connections and queries to file (deprecated option, use " - "--general_log/--general_log_file instead).", (uchar**) &opt_logname, - (uchar**) &opt_logname, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + "--general_log/--general_log_file instead).", &opt_logname, + &opt_logname, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"general_log_file", OPT_GENERAL_LOG_FILE, - "Log connections and queries to given file.", (uchar**) &opt_logname, - (uchar**) &opt_logname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Log connections and queries to given file.", &opt_logname, + &opt_logname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"log-bin", OPT_BIN_LOG, "Log update queries in binary format. Optional (but strongly recommended " "to avoid replication problems if server's hostname changes) argument " "should be the chosen location for the binary log files.", - (uchar**) &opt_bin_logname, (uchar**) &opt_bin_logname, 0, GET_STR_ALLOC, + &opt_bin_logname, &opt_bin_logname, 0, GET_STR_ALLOC, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"log-bin-index", OPT_BIN_LOG_INDEX, "File that holds the names for last binary log files.", - (uchar**) &opt_binlog_index_name, (uchar**) &opt_binlog_index_name, 0, GET_STR, + &opt_binlog_index_name, &opt_binlog_index_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifndef TO_BE_REMOVED_IN_5_1_OR_6_0 /* @@ -6041,7 +6043,7 @@ each time the SQL thread starts.", */ {"log-bin-trust-routine-creators", OPT_LOG_BIN_TRUST_FUNCTION_CREATORS_OLD, "(deprecated) Use log-bin-trust-function-creators.", - (uchar**) &trust_function_creators, (uchar**) &trust_function_creators, 0, + &trust_function_creators, &trust_function_creators, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif /* @@ -6056,188 +6058,195 @@ each time the SQL thread starts.", "Note that if ALL connections to this server ALWAYS use row-based binary " "logging, the security issues do not exist and the binary logging cannot " "break, so you can safely set this to 1." - ,(uchar**) &trust_function_creators, (uchar**) &trust_function_creators, 0, + ,&trust_function_creators, &trust_function_creators, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"log-error", OPT_ERROR_LOG_FILE, "Error log file.", - (uchar**) &log_error_file_ptr, (uchar**) &log_error_file_ptr, 0, GET_STR, + &log_error_file_ptr, &log_error_file_ptr, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"log-isam", OPT_ISAM_LOG, "Log all MyISAM changes to file.", - (uchar**) &myisam_log_filename, (uchar**) &myisam_log_filename, 0, GET_STR, + &myisam_log_filename, &myisam_log_filename, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"log-long-format", '0', - "Log some extra information to update log. Please note that this option is deprecated; see --log-short-format option.", + "Log some extra information to update log. Please note that this option " + "is deprecated; see --log-short-format option.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef WITH_CSV_STORAGE_ENGINE {"log-output", OPT_LOG_OUTPUT, "Syntax: log-output[=value[,value...]], where \"value\" could be TABLE, " "FILE or NONE.", - (uchar**) &log_output_str, (uchar**) &log_output_str, 0, + &log_output_str, &log_output_str, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"log-queries-not-using-indexes", OPT_LOG_QUERIES_NOT_USING_INDEXES, "Log queries that are executed without benefit of any index to the slow log if it is open.", - (uchar**) &opt_log_queries_not_using_indexes, (uchar**) &opt_log_queries_not_using_indexes, + &opt_log_queries_not_using_indexes, &opt_log_queries_not_using_indexes, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"log-short-format", OPT_SHORT_LOG_FORMAT, "Don't log extra information to update and slow-query logs.", - (uchar**) &opt_short_log_format, (uchar**) &opt_short_log_format, + &opt_short_log_format, &opt_short_log_format, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"log-slave-updates", OPT_LOG_SLAVE_UPDATES, - "Tells the slave to log the updates from the slave thread to the binary log. You will need to turn it on if you plan to daisy-chain the slaves.", - (uchar**) &opt_log_slave_updates, (uchar**) &opt_log_slave_updates, 0, GET_BOOL, + "Tells the slave to log the updates from the slave thread to the binary log. " + "You will need to turn it on if you plan to daisy-chain the slaves.", + &opt_log_slave_updates, &opt_log_slave_updates, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"log-slow-admin-statements", OPT_LOG_SLOW_ADMIN_STATEMENTS, - "Log slow OPTIMIZE, ANALYZE, ALTER and other administrative statements to the slow log if it is open.", - (uchar**) &opt_log_slow_admin_statements, - (uchar**) &opt_log_slow_admin_statements, - 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + "Log slow OPTIMIZE, ANALYZE, ALTER and other administrative statements " + "to the slow log if it is open.", &opt_log_slow_admin_statements, + &opt_log_slow_admin_statements, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"log-slow-slave-statements", OPT_LOG_SLOW_SLAVE_STATEMENTS, "Log slow statements executed by slave thread to the slow log if it is open.", - (uchar**) &opt_log_slow_slave_statements, - (uchar**) &opt_log_slow_slave_statements, + &opt_log_slow_slave_statements, + &opt_log_slow_slave_statements, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"log_slow_queries", OPT_SLOW_QUERY_LOG, "Log slow queries to a table or log file. Defaults logging to table " "mysql.slow_log or hostname-slow.log if --log-output=file is used. " "Must be enabled to activate other slow log options. " "(deprecated option, use --slow_query_log/--slow_query_log_file instead)", - (uchar**) &opt_slow_logname, (uchar**) &opt_slow_logname, 0, GET_STR, OPT_ARG, + &opt_slow_logname, &opt_slow_logname, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"slow_query_log_file", OPT_SLOW_QUERY_LOG_FILE, - "Log slow queries to given log file. Defaults logging to hostname-slow.log. Must be enabled to activate other slow log options.", - (uchar**) &opt_slow_logname, (uchar**) &opt_slow_logname, 0, GET_STR, + "Log slow queries to given log file. Defaults logging to hostname-slow.log. " + "Must be enabled to activate other slow log options.", + &opt_slow_logname, &opt_slow_logname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"log-tc", OPT_LOG_TC, "Path to transaction coordinator log (used for transactions that affect " "more than one storage engine, when binary log is disabled).", - (uchar**) &opt_tc_log_file, (uchar**) &opt_tc_log_file, 0, GET_STR, + &opt_tc_log_file, &opt_tc_log_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_MMAP {"log-tc-size", OPT_LOG_TC_SIZE, "Size of transaction coordinator log.", - (uchar**) &opt_tc_log_size, (uchar**) &opt_tc_log_size, 0, GET_ULONG, + &opt_tc_log_size, &opt_tc_log_size, 0, GET_ULONG, REQUIRED_ARG, TC_LOG_MIN_SIZE, TC_LOG_MIN_SIZE, ULONG_MAX, 0, TC_LOG_PAGE_SIZE, 0}, #endif {"log-update", OPT_UPDATE_LOG, "The update log is deprecated since version 5.0, is replaced by the binary " "log and this option just turns on --log-bin instead.", - (uchar**) &opt_update_logname, (uchar**) &opt_update_logname, 0, GET_STR, + &opt_update_logname, &opt_update_logname, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"log-warnings", 'W', "Log some not critical warnings to the log file.", - (uchar**) &global_system_variables.log_warnings, - (uchar**) &max_system_variables.log_warnings, 0, GET_ULONG, OPT_ARG, 1, 0, 0, + &global_system_variables.log_warnings, + &max_system_variables.log_warnings, 0, GET_ULONG, OPT_ARG, 1, 0, 0, 0, 0, 0}, {"low-priority-updates", OPT_LOW_PRIORITY_UPDATES, "INSERT/DELETE/UPDATE has lower priority than selects.", - (uchar**) &global_system_variables.low_priority_updates, - (uchar**) &max_system_variables.low_priority_updates, + &global_system_variables.low_priority_updates, + &max_system_variables.low_priority_updates, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"master-connect-retry", OPT_MASTER_CONNECT_RETRY, "The number of seconds the slave thread will sleep before retrying to " "connect to the master, in case the master goes down or the connection " "is lost.", - (uchar**) &master_connect_retry, (uchar**) &master_connect_retry, 0, GET_UINT, + &master_connect_retry, &master_connect_retry, 0, GET_UINT, REQUIRED_ARG, 60, 0, 0, 0, 0, 0}, {"master-host", OPT_MASTER_HOST, - "Master hostname or IP address for replication. If not set, the slave thread will not be started. Note that the setting of master-host will be ignored if there exists a valid master.info file.", - (uchar**) &master_host, (uchar**) &master_host, 0, GET_STR, REQUIRED_ARG, 0, 0, + "Master hostname or IP address for replication. If not set, the slave " + "thread will not be started. Note that the setting of master-host will " + "be ignored if there exists a valid master.info file.", + &master_host, &master_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"master-info-file", OPT_MASTER_INFO_FILE, - "The location and name of the file that remembers the master and where the I/O replication \ -thread is in the master's binlogs.", - (uchar**) &master_info_file, (uchar**) &master_info_file, 0, GET_STR, + "The location and name of the file that remembers the master and where " + "the I/O replication thread is in the master's binlogs.", + &master_info_file, &master_info_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"master-password", OPT_MASTER_PASSWORD, "The password the slave thread will authenticate with when connecting to " "the master. If not set, an empty password is assumed. The value in " "master.info will take precedence if it can be read.", - (uchar**)&master_password, (uchar**)&master_password, 0, + &master_password, &master_password, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"master-port", OPT_MASTER_PORT, - "The port the master is listening on. If not set, the compiled setting of MYSQL_PORT is assumed. If you have not tinkered with configure options, this should be 3306. The value in master.info will take precedence if it can be read.", - (uchar**) &master_port, (uchar**) &master_port, 0, GET_UINT, REQUIRED_ARG, + "The port the master is listening on. If not set, the compiled setting of " + "MYSQL_PORT is assumed. If you have not tinkered with configure options, " + "this should be 3306. The value in master.info will take precedence if it " + "can be read.", &master_port, &master_port, 0, GET_UINT, REQUIRED_ARG, MYSQL_PORT, 0, 0, 0, 0, 0}, {"master-retry-count", OPT_MASTER_RETRY_COUNT, "The number of tries the slave will make to connect to the master before giving up.", - (uchar**) &master_retry_count, (uchar**) &master_retry_count, 0, GET_ULONG, + &master_retry_count, &master_retry_count, 0, GET_ULONG, REQUIRED_ARG, 3600*24, 0, 0, 0, 0, 0}, {"master-ssl", OPT_MASTER_SSL, "Enable the slave to connect to the master using SSL.", - (uchar**) &master_ssl, (uchar**) &master_ssl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + &master_ssl, &master_ssl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"master-ssl-ca", OPT_MASTER_SSL_CA, "Master SSL CA file. Only applies if you have enabled master-ssl.", - (uchar**) &master_ssl_ca, (uchar**) &master_ssl_ca, 0, GET_STR, OPT_ARG, + &master_ssl_ca, &master_ssl_ca, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"master-ssl-capath", OPT_MASTER_SSL_CAPATH, "Master SSL CA path. Only applies if you have enabled master-ssl.", - (uchar**) &master_ssl_capath, (uchar**) &master_ssl_capath, 0, GET_STR, OPT_ARG, + &master_ssl_capath, &master_ssl_capath, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"master-ssl-cert", OPT_MASTER_SSL_CERT, "Master SSL certificate file name. Only applies if you have enabled " "master-ssl.", - (uchar**) &master_ssl_cert, (uchar**) &master_ssl_cert, 0, GET_STR, OPT_ARG, + &master_ssl_cert, &master_ssl_cert, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"master-ssl-cipher", OPT_MASTER_SSL_CIPHER, "Master SSL cipher. Only applies if you have enabled master-ssl.", - (uchar**) &master_ssl_cipher, (uchar**) &master_ssl_capath, 0, GET_STR, OPT_ARG, + &master_ssl_cipher, &master_ssl_capath, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"master-ssl-key", OPT_MASTER_SSL_KEY, "Master SSL keyfile name. Only applies if you have enabled master-ssl.", - (uchar**) &master_ssl_key, (uchar**) &master_ssl_key, 0, GET_STR, OPT_ARG, + &master_ssl_key, &master_ssl_key, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"master-user", OPT_MASTER_USER, - "The username the slave thread will use for authentication when connecting to the master. The user must have FILE privilege. If the master user is not set, user test is assumed. The value in master.info will take precedence if it can be read.", - (uchar**) &master_user, (uchar**) &master_user, 0, GET_STR, REQUIRED_ARG, 0, 0, + "The username the slave thread will use for authentication when " + "connecting to the master. The user must have FILE privilege. " + "If the master user is not set, user test is assumed. The value " + "in master.info will take precedence if it can be read.", + &master_user, &master_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_REPLICATION {"max-binlog-dump-events", OPT_MAX_BINLOG_DUMP_EVENTS, "Option used by mysql-test for debugging and testing of replication.", - (uchar**) &max_binlog_dump_events, (uchar**) &max_binlog_dump_events, 0, + &max_binlog_dump_events, &max_binlog_dump_events, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif /* HAVE_REPLICATION */ - {"memlock", OPT_MEMLOCK, "Lock mysqld in memory.", (uchar**) &locked_in_memory, - (uchar**) &locked_in_memory, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"memlock", OPT_MEMLOCK, "Lock mysqld in memory.", &locked_in_memory, + &locked_in_memory, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"myisam-recover", OPT_MYISAM_RECOVER, "Syntax: myisam-recover[=option[,option...]], where option can be DEFAULT, BACKUP, FORCE or QUICK.", - (uchar**) &myisam_recover_options_str, (uchar**) &myisam_recover_options_str, 0, + &myisam_recover_options_str, &myisam_recover_options_str, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #ifdef WITH_NDBCLUSTER_STORAGE_ENGINE {"ndb-connectstring", OPT_NDB_CONNECTSTRING, "Connect string for ndbcluster.", - (uchar**) &opt_ndb_connectstring, - (uchar**) &opt_ndb_connectstring, + &opt_ndb_connectstring, &opt_ndb_connectstring, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ndb-mgmd-host", OPT_NDB_MGMD, "Set host and port for ndb_mgmd. Syntax: hostname[:port]", - (uchar**) &opt_ndb_mgmd, - (uchar**) &opt_ndb_mgmd, + &opt_ndb_mgmd, &opt_ndb_mgmd, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ndb-nodeid", OPT_NDB_NODEID, "Nodeid for this mysqlserver in the cluster.", - (uchar**) &opt_ndb_nodeid, - (uchar**) &opt_ndb_nodeid, + &opt_ndb_nodeid, + &opt_ndb_nodeid, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"ndb-autoincrement-prefetch-sz", OPT_NDB_AUTOINCREMENT_PREFETCH_SZ, "Specify number of autoincrement values that are prefetched.", - (uchar**) &global_system_variables.ndb_autoincrement_prefetch_sz, - (uchar**) &max_system_variables.ndb_autoincrement_prefetch_sz, + &global_system_variables.ndb_autoincrement_prefetch_sz, + &max_system_variables.ndb_autoincrement_prefetch_sz, 0, GET_ULONG, REQUIRED_ARG, 1, 1, 256, 0, 0, 0}, {"ndb-force-send", OPT_NDB_FORCE_SEND, "Force send of buffers to ndb immediately without waiting for " "other threads.", - (uchar**) &global_system_variables.ndb_force_send, - (uchar**) &global_system_variables.ndb_force_send, + &global_system_variables.ndb_force_send, + &global_system_variables.ndb_force_send, 0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0}, {"ndb_force_send", OPT_NDB_FORCE_SEND, "same as --ndb-force-send.", - (uchar**) &global_system_variables.ndb_force_send, - (uchar**) &global_system_variables.ndb_force_send, + &global_system_variables.ndb_force_send, + &global_system_variables.ndb_force_send, 0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0}, {"ndb-extra-logging", OPT_NDB_EXTRA_LOGGING, "Turn on more logging in the error log.", - (uchar**) &ndb_extra_logging, - (uchar**) &ndb_extra_logging, + &ndb_extra_logging, + &ndb_extra_logging, 0, GET_INT, OPT_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_NDB_BINLOG {"ndb-report-thresh-binlog-epoch-slip", OPT_NDB_REPORT_THRESH_BINLOG_EPOCH_SLIP, @@ -6245,86 +6254,87 @@ thread is in the master's binlogs.", "E.g., 3 means that if the difference between what epoch has been received " "from the storage nodes and what has been applied to the binlog is 3 or more, " "a status message will be sent to the cluster log.", - (uchar**) &ndb_report_thresh_binlog_epoch_slip, - (uchar**) &ndb_report_thresh_binlog_epoch_slip, + &ndb_report_thresh_binlog_epoch_slip, + &ndb_report_thresh_binlog_epoch_slip, 0, GET_ULONG, REQUIRED_ARG, 3, 0, 256, 0, 0, 0}, {"ndb-report-thresh-binlog-mem-usage", OPT_NDB_REPORT_THRESH_BINLOG_MEM_USAGE, "Threshold on percentage of free memory before reporting binlog status. E.g., " "10 means that if amount of available memory for receiving binlog data from " "the storage nodes goes below 10%, " "a status message will be sent to the cluster log.", - (uchar**) &ndb_report_thresh_binlog_mem_usage, - (uchar**) &ndb_report_thresh_binlog_mem_usage, + &ndb_report_thresh_binlog_mem_usage, + &ndb_report_thresh_binlog_mem_usage, 0, GET_ULONG, REQUIRED_ARG, 10, 0, 100, 0, 0, 0}, #endif {"ndb-use-exact-count", OPT_NDB_USE_EXACT_COUNT, "Use exact records count during query planning and for fast " "select count(*), disable for faster queries.", - (uchar**) &global_system_variables.ndb_use_exact_count, - (uchar**) &global_system_variables.ndb_use_exact_count, + &global_system_variables.ndb_use_exact_count, + &global_system_variables.ndb_use_exact_count, 0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0}, {"ndb_use_exact_count", OPT_NDB_USE_EXACT_COUNT, "Same as --ndb-use-exact-count.", - (uchar**) &global_system_variables.ndb_use_exact_count, - (uchar**) &global_system_variables.ndb_use_exact_count, + &global_system_variables.ndb_use_exact_count, + &global_system_variables.ndb_use_exact_count, 0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0}, {"ndb-use-transactions", OPT_NDB_USE_TRANSACTIONS, "Use transactions for large inserts, if enabled then large " "inserts will be split into several smaller transactions", - (uchar**) &global_system_variables.ndb_use_transactions, - (uchar**) &global_system_variables.ndb_use_transactions, + &global_system_variables.ndb_use_transactions, + &global_system_variables.ndb_use_transactions, 0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0}, {"ndb_use_transactions", OPT_NDB_USE_TRANSACTIONS, "Same as --ndb-use-transactions.", - (uchar**) &global_system_variables.ndb_use_transactions, - (uchar**) &global_system_variables.ndb_use_transactions, + &global_system_variables.ndb_use_transactions, + &global_system_variables.ndb_use_transactions, 0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0}, {"ndb-shm", OPT_NDB_SHM, "Use shared memory connections when available.", - (uchar**) &opt_ndb_shm, - (uchar**) &opt_ndb_shm, + &opt_ndb_shm, &opt_ndb_shm, 0, GET_BOOL, OPT_ARG, OPT_NDB_SHM_DEFAULT, 0, 0, 0, 0, 0}, {"ndb-optimized-node-selection", OPT_NDB_OPTIMIZED_NODE_SELECTION, "Select nodes for transactions in a more optimal way.", - (uchar**) &opt_ndb_optimized_node_selection, - (uchar**) &opt_ndb_optimized_node_selection, + &opt_ndb_optimized_node_selection, + &opt_ndb_optimized_node_selection, 0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0}, { "ndb-cache-check-time", OPT_NDB_CACHE_CHECK_TIME, "A dedicated thread is created to, at the given milliseconds interval, " "invalidate the query cache if another MySQL server in the cluster has " "changed the data in the database.", - (uchar**) &opt_ndb_cache_check_time, (uchar**) &opt_ndb_cache_check_time, 0, GET_ULONG, REQUIRED_ARG, + &opt_ndb_cache_check_time, &opt_ndb_cache_check_time, 0, GET_ULONG, REQUIRED_ARG, 0, 0, LONG_TIMEOUT, 0, 1, 0}, {"ndb-index-stat-enable", OPT_NDB_INDEX_STAT_ENABLE, "Use ndb index statistics in query optimization.", - (uchar**) &global_system_variables.ndb_index_stat_enable, - (uchar**) &max_system_variables.ndb_index_stat_enable, + &global_system_variables.ndb_index_stat_enable, + &max_system_variables.ndb_index_stat_enable, 0, GET_BOOL, OPT_ARG, 0, 0, 1, 0, 0, 0}, #endif {"ndb-use-copying-alter-table", OPT_NDB_USE_COPYING_ALTER_TABLE, - "Force ndbcluster to always copy tables at alter table (should only be used if on-line alter table fails).", - (uchar**) &global_system_variables.ndb_use_copying_alter_table, - (uchar**) &global_system_variables.ndb_use_copying_alter_table, + "Force ndbcluster to always copy tables at alter table " + "(should only be used if on-line alter table fails).", + &global_system_variables.ndb_use_copying_alter_table, + &global_system_variables.ndb_use_copying_alter_table, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"new", 'n', "Use very new, possibly 'unsafe', functions.", - (uchar**) &global_system_variables.new_mode, - (uchar**) &max_system_variables.new_mode, + &global_system_variables.new_mode, + &max_system_variables.new_mode, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifdef NOT_YET {"no-mix-table-types", OPT_NO_MIX_TYPE, "Don't allow commands that use two different table types.", - (uchar**) &opt_no_mix_types, (uchar**) &opt_no_mix_types, 0, GET_BOOL, NO_ARG, + &opt_no_mix_types, &opt_no_mix_types, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"old-alter-table", OPT_OLD_ALTER_TABLE, "Use old, non-optimized alter table.", - (uchar**) &global_system_variables.old_alter_table, - (uchar**) &max_system_variables.old_alter_table, 0, GET_BOOL, NO_ARG, + &global_system_variables.old_alter_table, + &max_system_variables.old_alter_table, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"old-passwords", OPT_OLD_PASSWORDS, "Use old password encryption method (needed for 4.0 and older clients).", - (uchar**) &global_system_variables.old_passwords, - (uchar**) &max_system_variables.old_passwords, 0, GET_BOOL, NO_ARG, + {"old-passwords", OPT_OLD_PASSWORDS, "Use old password " + "encryption method (needed for 4.0 and older clients).", + &global_system_variables.old_passwords, + &max_system_variables.old_passwords, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"one-thread", OPT_ONE_THREAD, "(Deprecated): Only use one thread (for debugging under Linux). Use " @@ -6333,10 +6343,10 @@ thread is in the master's binlogs.", {"old-style-user-limits", OPT_OLD_STYLE_USER_LIMITS, "Enable old-style user limits (before 5.0.3, user resources were counted " "per each user+host vs. per account).", - (uchar**) &opt_old_style_user_limits, (uchar**) &opt_old_style_user_limits, + &opt_old_style_user_limits, &opt_old_style_user_limits, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"pid-file", OPT_PID_FILE, "Pid file used by safe_mysqld.", - (uchar**) &pidfile_name_ptr, (uchar**) &pidfile_name_ptr, 0, GET_STR, + &pidfile_name_ptr, &pidfile_name_ptr, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"port", 'P', "Port number to use for connection or 0 for default to, in " "order of preference, my.cnf, $MYSQL_TCP_PORT, " @@ -6344,64 +6354,85 @@ thread is in the master's binlogs.", "/etc/services, " #endif "built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").", - (uchar**) &mysqld_port, - (uchar**) &mysqld_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &mysqld_port, + &mysqld_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"port-open-timeout", OPT_PORT_OPEN_TIMEOUT, "Maximum time in seconds to wait for the port to become free. " - "(Default: No wait).", (uchar**) &mysqld_port_timeout, - (uchar**) &mysqld_port_timeout, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "(Default: No wait).", &mysqld_port_timeout, + &mysqld_port_timeout, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER) {"profiling_history_size", OPT_PROFILING, "Limit of query profiling memory.", - (uchar**) &global_system_variables.profiling_history_size, - (uchar**) &max_system_variables.profiling_history_size, + &global_system_variables.profiling_history_size, + &max_system_variables.profiling_history_size, 0, GET_ULONG, REQUIRED_ARG, 15, 0, 100, 0, 0, 0}, #endif {"relay-log", OPT_RELAY_LOG, "The location and name to use for relay logs.", - (uchar**) &opt_relay_logname, (uchar**) &opt_relay_logname, 0, + &opt_relay_logname, &opt_relay_logname, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"relay-log-index", OPT_RELAY_LOG_INDEX, "The location and name to use for the file that keeps a list of the last \ relay logs.", - (uchar**) &opt_relaylog_index_name, (uchar**) &opt_relaylog_index_name, 0, + &opt_relaylog_index_name, &opt_relaylog_index_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"relay-log-info-file", OPT_RELAY_LOG_INFO_FILE, "The location and name of the file that remembers where the SQL replication \ thread is in the relay logs.", - (uchar**) &relay_log_info_file, (uchar**) &relay_log_info_file, 0, GET_STR, + &relay_log_info_file, &relay_log_info_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"replicate-do-db", OPT_REPLICATE_DO_DB, - "Tells the slave thread to restrict replication to the specified database. To specify more than one database, use the directive multiple times, once for each database. Note that this will only work if you do not use cross-database queries such as UPDATE some_db.some_table SET foo='bar' while having selected a different or no database. If you need cross database updates to work, make sure you have 3.23.28 or later, and use replicate-wild-do-table=db_name.%.", + "Tells the slave thread to restrict replication to the specified database. " + "To specify more than one database, use the directive multiple times, " + "once for each database. Note that this will only work if you do not use " + "cross-database queries such as UPDATE some_db.some_table SET foo='bar' " + "while having selected a different or no database. If you need cross " + "database updates to work, make sure you have 3.23.28 or later, and use " + "replicate-wild-do-table=db_name.%.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"replicate-do-table", OPT_REPLICATE_DO_TABLE, - "Tells the slave thread to restrict replication to the specified table. To specify more than one table, use the directive multiple times, once for each table. This will work for cross-database updates, in contrast to replicate-do-db.", - 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Tells the slave thread to restrict replication to the specified table. " + "To specify more than one table, use the directive multiple times, once " + "for each table. This will work for cross-database updates, in contrast " + "to replicate-do-db.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"replicate-ignore-db", OPT_REPLICATE_IGNORE_DB, - "Tells the slave thread to not replicate to the specified database. To specify more than one database to ignore, use the directive multiple times, once for each database. This option will not work if you use cross database updates. If you need cross database updates to work, make sure you have 3.23.28 or later, and use replicate-wild-ignore-table=db_name.%. ", - 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Tells the slave thread to not replicate to the specified database. To " + "specify more than one database to ignore, use the directive multiple " + "times, once for each database. This option will not work if you use " + "cross database updates. If you need cross database updates to work, " + "make sure you have 3.23.28 or later, and use replicate-wild-ignore-" + "table=db_name.%. ", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"replicate-ignore-table", OPT_REPLICATE_IGNORE_TABLE, "Tells the slave thread to not replicate to the specified table. To specify " "more than one table to ignore, use the directive multiple times, once for " "each table. This will work for cross-database updates, in contrast to " - "replicate-ignore-db.", - 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "replicate-ignore-db.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"replicate-rewrite-db", OPT_REPLICATE_REWRITE_DB, - "Updates to a database with a different name than the original. Example: replicate-rewrite-db=master_db_name->slave_db_name.", + "Updates to a database with a different name than the original. Example: " + "replicate-rewrite-db=master_db_name->slave_db_name.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_REPLICATION {"replicate-same-server-id", OPT_REPLICATE_SAME_SERVER_ID, - "In replication, if set to 1, do not skip events having our server id. \ -Default value is 0 (to break infinite loops in circular replication). \ -Can't be set to 1 if --log-slave-updates is used.", - (uchar**) &replicate_same_server_id, - (uchar**) &replicate_same_server_id, + "In replication, if set to 1, do not skip events having our server id. " + "Default value is 0 (to break infinite loops in circular replication). " + "Can't be set to 1 if --log-slave-updates is used.", + &replicate_same_server_id, &replicate_same_server_id, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"replicate-wild-do-table", OPT_REPLICATE_WILD_DO_TABLE, - "Tells the slave thread to restrict replication to the tables that match the specified wildcard pattern. To specify more than one table, use the directive multiple times, once for each table. This will work for cross-database updates. Example: replicate-wild-do-table=foo%.bar% will replicate only updates to tables in all databases that start with foo and whose table names start with bar.", + "Tells the slave thread to restrict replication to the tables that match " + "the specified wildcard pattern. To specify more than one table, use the " + "directive multiple times, once for each table. This will work for cross-" + "database updates. Example: replicate-wild-do-table=foo%.bar% will " + "replicate only updates to tables in all databases that start with foo " + "and whose table names start with bar.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"replicate-wild-ignore-table", OPT_REPLICATE_WILD_IGNORE_TABLE, - "Tells the slave thread to not replicate to the tables that match the given wildcard pattern. To specify more than one table to ignore, use the directive multiple times, once for each table. This will work for cross-database updates. Example: replicate-wild-ignore-table=foo%.bar% will not do updates to tables in databases that start with foo and whose table names start with bar.", + "Tells the slave thread to not replicate to the tables that match the " + "given wildcard pattern. To specify more than one table to ignore, use " + "the directive multiple times, once for each table. This will work for " + "cross-database updates. Example: replicate-wild-ignore-table=foo%.bar% " + "will not do updates to tables in databases that start with foo and whose " + "table names start with bar.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, // In replication, we may need to tell the other servers how to connect {"report-host", OPT_REPORT_HOST, @@ -6412,19 +6443,22 @@ Can't be set to 1 if --log-slave-updates is used.", "from the socket once the slave connects. Due to NAT and other routing " "issues, that IP may not be valid for connecting to the slave from the " "master or other hosts.", - (uchar**) &report_host, (uchar**) &report_host, 0, GET_STR, REQUIRED_ARG, 0, 0, + &report_host, &report_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"report-password", OPT_REPORT_PASSWORD, "Undocumented.", - (uchar**) &report_password, (uchar**) &report_password, 0, GET_STR, + &report_password, &report_password, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"report-port", OPT_REPORT_PORT, - "Port for connecting to slave reported to the master during slave registration. Set it only if the slave is listening on a non-default port or if you have a special tunnel from the master or other clients to the slave. If not sure, leave this option unset.", - (uchar**) &report_port, (uchar**) &report_port, 0, GET_UINT, REQUIRED_ARG, + "Port for connecting to slave reported to the master during slave " + "registration. Set it only if the slave is listening on a non-default " + "port or if you have a special tunnel from the master or other clients " + "to the slave. If not sure, leave this option unset.", + &report_port, &report_port, 0, GET_UINT, REQUIRED_ARG, MYSQL_PORT, 0, 0, 0, 0, 0}, - {"report-user", OPT_REPORT_USER, "Undocumented.", (uchar**) &report_user, - (uchar**) &report_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"report-user", OPT_REPORT_USER, "Undocumented.", &report_user, + &report_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"rpl-recovery-rank", OPT_RPL_RECOVERY_RANK, "Undocumented.", - (uchar**) &rpl_recovery_rank, (uchar**) &rpl_recovery_rank, 0, GET_ULONG, + &rpl_recovery_rank, &rpl_recovery_rank, 0, GET_ULONG, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"safe-mode", OPT_SAFE, "Skip some optimize stages (for testing).", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -6435,21 +6469,21 @@ Can't be set to 1 if --log-slave-updates is used.", #endif {"safe-user-create", OPT_SAFE_USER_CREATE, "Don't allow new user creation by the user who has no write privileges to the mysql.user table.", - (uchar**) &opt_safe_user_create, (uchar**) &opt_safe_user_create, 0, GET_BOOL, + &opt_safe_user_create, &opt_safe_user_create, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"safemalloc-mem-limit", OPT_SAFEMALLOC_MEM_LIMIT, "Simulate memory shortage when compiled with the --with-debug=full option.", 0, 0, 0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"secure-auth", OPT_SECURE_AUTH, "Disallow authentication for accounts that have old (pre-4.1) passwords.", - (uchar**) &opt_secure_auth, (uchar**) &opt_secure_auth, 0, GET_BOOL, NO_ARG, + &opt_secure_auth, &opt_secure_auth, 0, GET_BOOL, NO_ARG, my_bool(0), 0, 0, 0, 0, 0}, {"secure-file-priv", OPT_SECURE_FILE_PRIV, "Limit LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE() to files within specified directory.", - (uchar**) &opt_secure_file_priv, (uchar**) &opt_secure_file_priv, 0, + &opt_secure_file_priv, &opt_secure_file_priv, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"server-id", OPT_SERVER_ID, "Uniquely identifies the server instance in the community of replication partners.", - (uchar**) &server_id, (uchar**) &server_id, 0, GET_ULONG, REQUIRED_ARG, 0, 0, UINT_MAX32, + &server_id, &server_id, 0, GET_ULONG, REQUIRED_ARG, 0, 0, UINT_MAX32, 0, 0, 0}, {"set-variable", 'O', "Change the value of a variable. Please note that this option is deprecated; " @@ -6457,22 +6491,22 @@ Can't be set to 1 if --log-slave-updates is used.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_SMEM {"shared-memory", OPT_ENABLE_SHARED_MEMORY, - "Enable the shared memory.",(uchar**) &opt_enable_shared_memory, (uchar**) &opt_enable_shared_memory, + "Enable the shared memory.",&opt_enable_shared_memory, &opt_enable_shared_memory, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif #ifdef HAVE_SMEM {"shared-memory-base-name",OPT_SHARED_MEMORY_BASE_NAME, - "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name, + "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"show-slave-auth-info", OPT_SHOW_SLAVE_AUTH_INFO, "Show user and password in SHOW SLAVE HOSTS on this master.", - (uchar**) &opt_show_slave_auth_info, (uchar**) &opt_show_slave_auth_info, 0, + &opt_show_slave_auth_info, &opt_show_slave_auth_info, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DISABLE_GRANT_OPTIONS {"skip-grant-tables", OPT_SKIP_GRANT, "Start without grant tables. This gives all users FULL ACCESS to all tables.", - (uchar**) &opt_noacl, (uchar**) &opt_noacl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, + &opt_noacl, &opt_noacl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"skip-host-cache", OPT_SKIP_HOST_CACHE, "Don't cache host names.", 0, 0, 0, @@ -6499,49 +6533,55 @@ Can't be set to 1 if --log-slave-updates is used.", "Don't allow 'SHOW DATABASE' commands.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"skip-slave-start", OPT_SKIP_SLAVE_START, - "If set, slave is not autostarted.", (uchar**) &opt_skip_slave_start, - (uchar**) &opt_skip_slave_start, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + "If set, slave is not autostarted.", &opt_skip_slave_start, + &opt_skip_slave_start, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"skip-stack-trace", OPT_SKIP_STACK_TRACE, "Don't print a stack trace on failure.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"skip-symlink", OPT_SKIP_SYMLINKS, "Don't allow symlinking of tables. Deprecated option. Use --skip-symbolic-links instead.", + {"skip-symlink", OPT_SKIP_SYMLINKS, "Don't allow symlinking of tables. " + "Deprecated option. Use --skip-symbolic-links instead.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"skip-thread-priority", OPT_SKIP_PRIOR, "Don't give threads different priorities. Deprecated option.", 0, 0, 0, GET_NO_ARG, NO_ARG, DEFAULT_SKIP_THREAD_PRIORITY, 0, 0, 0, 0, 0}, #ifdef HAVE_REPLICATION {"slave-load-tmpdir", OPT_SLAVE_LOAD_TMPDIR, - "The location where the slave should put its temporary files when \ -replicating a LOAD DATA INFILE command.", - (uchar**) &slave_load_tmpdir, (uchar**) &slave_load_tmpdir, 0, GET_STR_ALLOC, + "The location where the slave should put its temporary files when " + "replicating a LOAD DATA INFILE command.", + &slave_load_tmpdir, &slave_load_tmpdir, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"slave-skip-errors", OPT_SLAVE_SKIP_ERRORS, "Tells the slave thread to continue replication when a query event returns an error from the provided list.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"slave-exec-mode", OPT_SLAVE_EXEC_MODE, - "Modes for how replication events should be executed. Legal values are STRICT (default) and IDEMPOTENT. In IDEMPOTENT mode, replication will not stop for operations that are idempotent. In STRICT mode, replication will stop on any unexpected difference between the master and the slave.", - (uchar**) &slave_exec_mode_str, (uchar**) &slave_exec_mode_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Modes for how replication events should be executed. Legal values are " + "STRICT (default) and IDEMPOTENT. In IDEMPOTENT mode, replication will " + "not stop for operations that are idempotent. In STRICT mode, replication " + "will stop on any unexpected difference between the master and the slave.", + &slave_exec_mode_str, &slave_exec_mode_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"slow-query-log", OPT_SLOW_LOG, - "Enable/disable slow query log.", (uchar**) &opt_slow_log, - (uchar**) &opt_slow_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0}, + "Enable/disable slow query log.", &opt_slow_log, + &opt_slow_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"socket", OPT_SOCKET, "Socket file to use for connection.", - (uchar**) &mysqld_unix_port, (uchar**) &mysqld_unix_port, 0, GET_STR, + &mysqld_unix_port, &mysqld_unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_REPLICATION {"sporadic-binlog-dump-fail", OPT_SPORADIC_BINLOG_DUMP_FAIL, "Option used by mysql-test for debugging and testing of replication.", - (uchar**) &opt_sporadic_binlog_dump_fail, - (uchar**) &opt_sporadic_binlog_dump_fail, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, + &opt_sporadic_binlog_dump_fail, + &opt_sporadic_binlog_dump_fail, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif /* HAVE_REPLICATION */ {"sql-bin-update-same", OPT_SQL_BIN_UPDATE_SAME, - "The update log is deprecated since version 5.0, is replaced by the binary \ -log and this option does nothing anymore.", + "The update log is deprecated since version 5.0, is replaced by the " + "binary log and this option does nothing anymore.", 0, 0, 0, GET_DISABLED, NO_ARG, 0, 0, 0, 0, 0, 0}, {"sql-mode", OPT_SQL_MODE, - "Syntax: sql-mode=option[,option[,option...]] where option can be one of: REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, ONLY_FULL_GROUP_BY, NO_UNSIGNED_SUBTRACTION.", - (uchar**) &sql_mode_str, (uchar**) &sql_mode_str, 0, GET_STR, REQUIRED_ARG, 0, + "Syntax: sql-mode=option[,option[,option...]] where option can be one " + "of: REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, " + "ONLY_FULL_GROUP_BY, NO_UNSIGNED_SUBTRACTION.", + &sql_mode_str, &sql_mode_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef HAVE_OPENSSL #include "sslopt-longopts.h" @@ -6552,7 +6592,7 @@ log and this option does nothing anymore.", NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"symbolic-links", 's', "Enable symbolic link support.", - (uchar**) &my_use_symdir, (uchar**) &my_use_symdir, 0, GET_BOOL, NO_ARG, + &my_use_symdir, &my_use_symdir, 0, GET_BOOL, NO_ARG, /* The system call realpath() produces warnings under valgrind and purify. These are not suppressed: instead we disable symlinks @@ -6560,33 +6600,35 @@ log and this option does nothing anymore.", */ IF_PURIFY(0,1), 0, 0, 0, 0, 0}, {"sysdate-is-now", OPT_SYSDATE_IS_NOW, - "Non-default option to alias SYSDATE() to NOW() to make it safe-replicable. Since 5.0, SYSDATE() returns a `dynamic' value different for different invocations, even within the same statement.", - (uchar**) &global_system_variables.sysdate_is_now, + "Non-default option to alias SYSDATE() to NOW() to make it safe-replicable. " + "Since 5.0, SYSDATE() returns a `dynamic' value different for different " + "invocations, even within the same statement.", + &global_system_variables.sysdate_is_now, 0, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 1, 0}, {"tc-heuristic-recover", OPT_TC_HEURISTIC_RECOVER, - "Decision to use in heuristic recover process. Possible values are COMMIT or ROLLBACK.", - (uchar**) &opt_tc_heuristic_recover, (uchar**) &opt_tc_heuristic_recover, + "Decision to use in heuristic recover process. Possible values are COMMIT " + "or ROLLBACK.", &opt_tc_heuristic_recover, &opt_tc_heuristic_recover, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #if defined(ENABLED_DEBUG_SYNC) {"debug-sync-timeout", OPT_DEBUG_SYNC_TIMEOUT, "Enable the debug sync facility " "and optionally specify a default wait timeout in seconds. " "A zero value keeps the facility disabled.", - (uchar**) &opt_debug_sync_timeout, 0, + &opt_debug_sync_timeout, 0, 0, GET_UINT, OPT_ARG, 0, 0, UINT_MAX, 0, 0, 0}, #endif /* defined(ENABLED_DEBUG_SYNC) */ {"temp-pool", OPT_TEMP_POOL, #if (ENABLE_TEMP_POOL) - "Using this option will cause most temporary files created to use a small set of names, rather than a unique name for each new file.", + "Using this option will cause most temporary files created to use a small " + "set of names, rather than a unique name for each new file.", #else "This option is ignored on this OS.", #endif - (uchar**) &use_temp_pool, (uchar**) &use_temp_pool, 0, GET_BOOL, NO_ARG, 1, + &use_temp_pool, &use_temp_pool, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, - {"timed_mutexes", OPT_TIMED_MUTEXES, "Specify whether to time mutexes (only InnoDB mutexes are currently supported).", - (uchar**) &timed_mutexes, (uchar**) &timed_mutexes, 0, GET_BOOL, NO_ARG, 0, + &timed_mutexes, &timed_mutexes, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"tmpdir", 't', "Path for temporary files. Several paths may be specified, separated by a " @@ -6596,133 +6638,139 @@ log and this option does nothing anymore.", "colon (:)" #endif ", in this case they are used in a round-robin fashion.", - (uchar**) &opt_mysql_tmpdir, - (uchar**) &opt_mysql_tmpdir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &opt_mysql_tmpdir, &opt_mysql_tmpdir, 0, GET_STR, REQUIRED_ARG, + 0, 0, 0, 0, 0, 0}, {"transaction-isolation", OPT_TX_ISOLATION, "Default transaction isolation level.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"use-symbolic-links", OPT_SYMBOLIC_LINKS, "Enable symbolic link support. Deprecated option; use --symbolic-links instead.", - (uchar**) &my_use_symdir, (uchar**) &my_use_symdir, 0, GET_BOOL, NO_ARG, + {"use-symbolic-links", OPT_SYMBOLIC_LINKS, "Enable symbolic link support. " + "Deprecated option; use --symbolic-links instead.", + &my_use_symdir, &my_use_symdir, 0, GET_BOOL, NO_ARG, IF_PURIFY(0,1), 0, 0, 0, 0, 0}, {"user", 'u', "Run mysqld daemon as user.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"verbose", 'v', "Used with --help option for detailed help.", - (uchar**) &opt_verbose, (uchar**) &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, - 0, 0}, + &opt_verbose, &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"warnings", OPT_WARNINGS, "Deprecated; use --log-warnings instead.", - (uchar**) &global_system_variables.log_warnings, - (uchar**) &max_system_variables.log_warnings, 0, GET_ULONG, OPT_ARG, + &global_system_variables.log_warnings, + &max_system_variables.log_warnings, 0, GET_ULONG, OPT_ARG, 1, 0, ULONG_MAX, 0, 0, 0}, - { "back_log", OPT_BACK_LOG, - "The number of outstanding connection requests MySQL can have. This comes into play when the main MySQL thread gets very many connection requests in a very short time.", - (uchar**) &back_log, (uchar**) &back_log, 0, GET_ULONG, - REQUIRED_ARG, 50, 1, 65535, 0, 1, 0 }, + {"back_log", OPT_BACK_LOG, + "The number of outstanding connection requests MySQL can have. This " + "comes into play when the main MySQL thread gets very many connection " + "requests in a very short time.", &back_log, &back_log, 0, GET_ULONG, + REQUIRED_ARG, 50, 1, 65535, 0, 1, 0 }, {"binlog_cache_size", OPT_BINLOG_CACHE_SIZE, - "The size of the cache to hold the SQL statements for the binary log during a transaction. If you often use big, multi-statement transactions you can increase this to get more performance.", - (uchar**) &binlog_cache_size, (uchar**) &binlog_cache_size, 0, GET_ULONG, + "The size of the cache to hold the SQL statements for the binary log " + "during a transaction. If you often use big, multi-statement " + "transactions you can increase this to get more performance.", + &binlog_cache_size, &binlog_cache_size, 0, GET_ULONG, REQUIRED_ARG, 32*1024L, IO_SIZE, ULONG_MAX, 0, IO_SIZE, 0}, {"bulk_insert_buffer_size", OPT_BULK_INSERT_BUFFER_SIZE, - "Size of tree cache used in bulk insert optimization. Note that this is a limit per thread.", - (uchar**) &global_system_variables.bulk_insert_buff_size, - (uchar**) &max_system_variables.bulk_insert_buff_size, + "Size of tree cache used in bulk insert optimization. Note that this " + "is a limit per thread.", &global_system_variables.bulk_insert_buff_size, + &max_system_variables.bulk_insert_buff_size, 0, GET_ULONG, REQUIRED_ARG, 8192*1024, 0, ULONG_MAX, 0, 1, 0}, {"connect_timeout", OPT_CONNECT_TIMEOUT, - "The number of seconds the mysqld server is waiting for a connect packet before responding with 'Bad handshake'.", - (uchar**) &connect_timeout, (uchar**) &connect_timeout, + "The number of seconds the mysqld server is waiting for a connect packet " + "before responding with 'Bad handshake'.", &connect_timeout, &connect_timeout, 0, GET_ULONG, REQUIRED_ARG, CONNECT_TIMEOUT, 2, LONG_TIMEOUT, 0, 1, 0 }, { "date_format", OPT_DATE_FORMAT, "The DATE format (for future).", - (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_DATE], - (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_DATE], + &opt_date_time_formats[MYSQL_TIMESTAMP_DATE], + &opt_date_time_formats[MYSQL_TIMESTAMP_DATE], 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, { "datetime_format", OPT_DATETIME_FORMAT, "The DATETIME/TIMESTAMP format (for future).", - (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_DATETIME], - (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_DATETIME], + &opt_date_time_formats[MYSQL_TIMESTAMP_DATETIME], + &opt_date_time_formats[MYSQL_TIMESTAMP_DATETIME], 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, { "default_week_format", OPT_DEFAULT_WEEK_FORMAT, "The default week format used by WEEK() functions.", - (uchar**) &global_system_variables.default_week_format, - (uchar**) &max_system_variables.default_week_format, + &global_system_variables.default_week_format, + &max_system_variables.default_week_format, 0, GET_ULONG, REQUIRED_ARG, 0, 0, 7L, 0, 1, 0}, {"delayed_insert_limit", OPT_DELAYED_INSERT_LIMIT, - "After inserting delayed_insert_limit rows, the INSERT DELAYED handler will check if there are any SELECT statements pending. If so, it allows these to execute before continuing.", - (uchar**) &delayed_insert_limit, (uchar**) &delayed_insert_limit, 0, GET_ULONG, + "After inserting delayed_insert_limit rows, the INSERT DELAYED handler " + "will check if there are any SELECT statements pending. If so, it allows " + "these to execute before continuing.", + &delayed_insert_limit, &delayed_insert_limit, 0, GET_ULONG, REQUIRED_ARG, DELAYED_LIMIT, 1, ULONG_MAX, 0, 1, 0}, {"delayed_insert_timeout", OPT_DELAYED_INSERT_TIMEOUT, "How long a INSERT DELAYED thread should wait for INSERT statements before terminating.", - (uchar**) &delayed_insert_timeout, (uchar**) &delayed_insert_timeout, 0, + &delayed_insert_timeout, &delayed_insert_timeout, 0, GET_ULONG, REQUIRED_ARG, DELAYED_WAIT_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0}, { "delayed_queue_size", OPT_DELAYED_QUEUE_SIZE, - "What size queue (in rows) should be allocated for handling INSERT DELAYED. If the queue becomes full, any client that does INSERT DELAYED will wait until there is room in the queue again.", - (uchar**) &delayed_queue_size, (uchar**) &delayed_queue_size, 0, GET_ULONG, + "What size queue (in rows) should be allocated for handling INSERT DELAYED. " + "If the queue becomes full, any client that does INSERT DELAYED will wait " + "until there is room in the queue again.", + &delayed_queue_size, &delayed_queue_size, 0, GET_ULONG, REQUIRED_ARG, DELAYED_QUEUE_SIZE, 1, ULONG_MAX, 0, 1, 0}, {"div_precision_increment", OPT_DIV_PRECINCREMENT, "Precision of the result of '/' operator will be increased on that value.", - (uchar**) &global_system_variables.div_precincrement, - (uchar**) &max_system_variables.div_precincrement, 0, GET_ULONG, + &global_system_variables.div_precincrement, + &max_system_variables.div_precincrement, 0, GET_ULONG, REQUIRED_ARG, 4, 0, DECIMAL_MAX_SCALE, 0, 0, 0}, {"expire_logs_days", OPT_EXPIRE_LOGS_DAYS, "If non-zero, binary logs will be purged after expire_logs_days " "days; possible purges happen at startup and at binary log rotation.", - (uchar**) &expire_logs_days, - (uchar**) &expire_logs_days, 0, GET_ULONG, + &expire_logs_days, &expire_logs_days, 0, GET_ULONG, REQUIRED_ARG, 0, 0, 99, 0, 1, 0}, { "flush_time", OPT_FLUSH_TIME, "A dedicated thread is created to flush all tables at the given interval.", - (uchar**) &flush_time, (uchar**) &flush_time, 0, GET_ULONG, REQUIRED_ARG, + &flush_time, &flush_time, 0, GET_ULONG, REQUIRED_ARG, FLUSH_TIME, 0, LONG_TIMEOUT, 0, 1, 0}, { "ft_boolean_syntax", OPT_FT_BOOLEAN_SYNTAX, "List of operators for MATCH ... AGAINST ( ... IN BOOLEAN MODE).", - 0, 0, 0, GET_STR, - REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, { "ft_max_word_len", OPT_FT_MAX_WORD_LEN, - "The maximum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable.", - (uchar**) &ft_max_word_len, (uchar**) &ft_max_word_len, 0, GET_ULONG, + "The maximum length of the word to be included in a FULLTEXT index. " + "Note: FULLTEXT indexes must be rebuilt after changing this variable.", + &ft_max_word_len, &ft_max_word_len, 0, GET_ULONG, REQUIRED_ARG, HA_FT_MAXCHARLEN, 10, HA_FT_MAXCHARLEN, 0, 1, 0}, { "ft_min_word_len", OPT_FT_MIN_WORD_LEN, - "The minimum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable.", - (uchar**) &ft_min_word_len, (uchar**) &ft_min_word_len, 0, GET_ULONG, + "The minimum length of the word to be included in a FULLTEXT index. " + "Note: FULLTEXT indexes must be rebuilt after changing this variable.", + &ft_min_word_len, &ft_min_word_len, 0, GET_ULONG, REQUIRED_ARG, 4, 1, HA_FT_MAXCHARLEN, 0, 1, 0}, { "ft_query_expansion_limit", OPT_FT_QUERY_EXPANSION_LIMIT, "Number of best matches to use for query expansion.", - (uchar**) &ft_query_expansion_limit, (uchar**) &ft_query_expansion_limit, 0, GET_ULONG, + &ft_query_expansion_limit, &ft_query_expansion_limit, 0, GET_ULONG, REQUIRED_ARG, 20, 0, 1000, 0, 1, 0}, { "ft_stopword_file", OPT_FT_STOPWORD_FILE, "Use stopwords from this file instead of built-in list.", - (uchar**) &ft_stopword_file, (uchar**) &ft_stopword_file, 0, GET_STR, + &ft_stopword_file, &ft_stopword_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, { "group_concat_max_len", OPT_GROUP_CONCAT_MAX_LEN, "The maximum length of the result of function group_concat.", - (uchar**) &global_system_variables.group_concat_max_len, - (uchar**) &max_system_variables.group_concat_max_len, 0, GET_ULONG, + &global_system_variables.group_concat_max_len, + &max_system_variables.group_concat_max_len, 0, GET_ULONG, REQUIRED_ARG, 1024, 4, ULONG_MAX, 0, 1, 0}, {"interactive_timeout", OPT_INTERACTIVE_TIMEOUT, - "The number of seconds the server waits for activity on an interactive connection before closing it.", - (uchar**) &global_system_variables.net_interactive_timeout, - (uchar**) &max_system_variables.net_interactive_timeout, 0, + "The number of seconds the server waits for activity on an interactive " + "connection before closing it.", + &global_system_variables.net_interactive_timeout, + &max_system_variables.net_interactive_timeout, 0, GET_ULONG, REQUIRED_ARG, NET_WAIT_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0}, {"join_buffer_size", OPT_JOIN_BUFF_SIZE, "The size of the buffer that is used for full joins.", - (uchar**) &global_system_variables.join_buff_size, - (uchar**) &max_system_variables.join_buff_size, 0, GET_ULONG, + &global_system_variables.join_buff_size, + &max_system_variables.join_buff_size, 0, GET_ULONG, REQUIRED_ARG, 128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, ULONG_MAX, MALLOC_OVERHEAD, IO_SIZE, 0}, {"keep_files_on_create", OPT_KEEP_FILES_ON_CREATE, "Don't overwrite stale .MYD and .MYI even if no directory is specified.", - (uchar**) &global_system_variables.keep_files_on_create, - (uchar**) &max_system_variables.keep_files_on_create, + &global_system_variables.keep_files_on_create, + &max_system_variables.keep_files_on_create, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"key_buffer_size", OPT_KEY_BUFFER_SIZE, "The size of the buffer used for index blocks for MyISAM tables. Increase " "this to get better index handling (for all reads and multiple writes) to " "as much as you can afford; 1GB on a 4GB machine that mainly runs MySQL is " "quite common.", - (uchar**) &dflt_key_cache_var.param_buff_size, - (uchar**) 0, - 0, (GET_ULL | GET_ASK_ADDR), + &dflt_key_cache_var.param_buff_size, NULL, NULL, (GET_ULL | GET_ASK_ADDR), REQUIRED_ARG, KEY_CACHE_SIZE, MALLOC_OVERHEAD, SIZE_T_MAX, MALLOC_OVERHEAD, IO_SIZE, 0}, {"key_cache_age_threshold", OPT_KEY_CACHE_AGE_THRESHOLD, @@ -6730,34 +6778,27 @@ log and this option does nothing anymore.", "until it is considered aged enough to be downgraded to a warm block. " "This specifies the percentage ratio of that number of hits to the total " "number of blocks in key cache.", - (uchar**) &dflt_key_cache_var.param_age_threshold, - (uchar**) 0, - 0, (GET_ULONG | GET_ASK_ADDR), REQUIRED_ARG, - 300, 100, ULONG_MAX, 0, 100, 0}, + &dflt_key_cache_var.param_age_threshold, NULL, NULL, + (GET_ULONG | GET_ASK_ADDR), REQUIRED_ARG, 300, 100, ULONG_MAX, 0, 100, 0}, {"key_cache_block_size", OPT_KEY_CACHE_BLOCK_SIZE, "The default size of key cache blocks.", - (uchar**) &dflt_key_cache_var.param_block_size, - (uchar**) 0, - 0, (GET_ULONG | GET_ASK_ADDR), REQUIRED_ARG, - KEY_CACHE_BLOCK_SIZE, 512, 1024 * 16, 0, 512, 0}, + &dflt_key_cache_var.param_block_size, NULL, NULL, (GET_ULONG | GET_ASK_ADDR), + REQUIRED_ARG, KEY_CACHE_BLOCK_SIZE, 512, 1024 * 16, 0, 512, 0}, {"key_cache_division_limit", OPT_KEY_CACHE_DIVISION_LIMIT, "The minimum percentage of warm blocks in key cache.", - (uchar**) &dflt_key_cache_var.param_division_limit, - (uchar**) 0, - 0, (GET_ULONG | GET_ASK_ADDR) , REQUIRED_ARG, 100, - 1, 100, 0, 1, 0}, + &dflt_key_cache_var.param_division_limit, NULL, NULL, + (GET_ULONG | GET_ASK_ADDR) , REQUIRED_ARG, 100, 1, 100, 0, 1, 0}, {"long_query_time", OPT_LONG_QUERY_TIME, "Log all queries that have taken more than long_query_time seconds to " "execute. The argument will be treated as a decimal value with " "microsecond precision.", - (uchar**) &long_query_time, (uchar**) &long_query_time, 0, GET_DOUBLE, + &long_query_time, &long_query_time, 0, GET_DOUBLE, REQUIRED_ARG, 10, 0, LONG_TIMEOUT, 0, 0, 0}, {"lower_case_table_names", OPT_LOWER_CASE_TABLE_NAMES, "If set to 1, table names are stored in lowercase on disk and table names " "will be case-insensitive. Should be set to 2 if you are using a case-" "insensitive file system.", - (uchar**) &lower_case_table_names, - (uchar**) &lower_case_table_names, 0, GET_UINT, OPT_ARG, + &lower_case_table_names, &lower_case_table_names, 0, GET_UINT, OPT_ARG, #ifdef FN_NO_CASE_SENCE 1 #else @@ -6766,399 +6807,422 @@ log and this option does nothing anymore.", , 0, 2, 0, 1, 0}, {"max_allowed_packet", OPT_MAX_ALLOWED_PACKET, "The maximum packet length to send to or receive from server.", - (uchar**) &global_system_variables.max_allowed_packet, - (uchar**) &max_system_variables.max_allowed_packet, 0, GET_ULONG, + &global_system_variables.max_allowed_packet, + &max_system_variables.max_allowed_packet, 0, GET_ULONG, REQUIRED_ARG, 1024*1024L, 1024, 1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0}, {"max_binlog_cache_size", OPT_MAX_BINLOG_CACHE_SIZE, "Can be used to restrict the total size used to cache a multi-transaction query.", - (uchar**) &max_binlog_cache_size, (uchar**) &max_binlog_cache_size, 0, + &max_binlog_cache_size, &max_binlog_cache_size, 0, GET_ULL, REQUIRED_ARG, ULONG_MAX, IO_SIZE, ULONGLONG_MAX, 0, IO_SIZE, 0}, {"max_binlog_size", OPT_MAX_BINLOG_SIZE, - "Binary log will be rotated automatically when the size exceeds this \ -value. Will also apply to relay logs if max_relay_log_size is 0. \ -The minimum value for this variable is 4096.", - (uchar**) &max_binlog_size, (uchar**) &max_binlog_size, 0, GET_ULONG, + "Binary log will be rotated automatically when the size exceeds this " + "value. Will also apply to relay logs if max_relay_log_size is 0. " + "The minimum value for this variable is 4096.", + &max_binlog_size, &max_binlog_size, 0, GET_ULONG, REQUIRED_ARG, 1024*1024L*1024L, IO_SIZE, 1024*1024L*1024L, 0, IO_SIZE, 0}, {"max_connect_errors", OPT_MAX_CONNECT_ERRORS, - "If there is more than this number of interrupted connections from a host this host will be blocked from further connections.", - (uchar**) &max_connect_errors, (uchar**) &max_connect_errors, 0, GET_ULONG, - REQUIRED_ARG, MAX_CONNECT_ERRORS, 1, ULONG_MAX, 0, 1, 0}, + "If there is more than this number of interrupted connections from a host " + "this host will be blocked from further connections.", + &max_connect_errors, &max_connect_errors, 0, GET_ULONG, + REQUIRED_ARG, MAX_CONNECT_ERRORS, 1, ULONG_MAX, 0, 1, 0}, // Default max_connections of 151 is larger than Apache's default max // children, to avoid "too many connections" error in a common setup {"max_connections", OPT_MAX_CONNECTIONS, - "The number of simultaneous clients allowed.", (uchar**) &max_connections, - (uchar**) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 151, 1, 100000, 0, 1, - 0}, + "The number of simultaneous clients allowed.", &max_connections, + &max_connections, 0, GET_ULONG, REQUIRED_ARG, 151, 1, 100000, 0, 1, 0}, {"max_delayed_threads", OPT_MAX_DELAYED_THREADS, - "Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero, which means INSERT DELAYED is not used.", - (uchar**) &global_system_variables.max_insert_delayed_threads, - (uchar**) &max_system_variables.max_insert_delayed_threads, + "Don't start more than this number of threads to handle INSERT DELAYED " + "statements. If set to zero, which means INSERT DELAYED is not used.", + &global_system_variables.max_insert_delayed_threads, + &max_system_variables.max_insert_delayed_threads, 0, GET_ULONG, REQUIRED_ARG, 20, 0, 16384, 0, 1, 0}, {"max_error_count", OPT_MAX_ERROR_COUNT, "Max number of errors/warnings to store for a statement.", - (uchar**) &global_system_variables.max_error_count, - (uchar**) &max_system_variables.max_error_count, + &global_system_variables.max_error_count, + &max_system_variables.max_error_count, 0, GET_ULONG, REQUIRED_ARG, DEFAULT_ERROR_COUNT, 0, 65535, 0, 1, 0}, {"max_heap_table_size", OPT_MAX_HEP_TABLE_SIZE, "Don't allow creation of heap tables bigger than this.", - (uchar**) &global_system_variables.max_heap_table_size, - (uchar**) &max_system_variables.max_heap_table_size, 0, GET_ULL, + &global_system_variables.max_heap_table_size, + &max_system_variables.max_heap_table_size, 0, GET_ULL, REQUIRED_ARG, 16*1024*1024L, 16384, MAX_MEM_TABLE_SIZE, MALLOC_OVERHEAD, 1024, 0}, {"max_join_size", OPT_MAX_JOIN_SIZE, "Joins that are probably going to read more than max_join_size records return an error.", - (uchar**) &global_system_variables.max_join_size, - (uchar**) &max_system_variables.max_join_size, 0, GET_HA_ROWS, REQUIRED_ARG, + &global_system_variables.max_join_size, + &max_system_variables.max_join_size, 0, GET_HA_ROWS, REQUIRED_ARG, HA_POS_ERROR, 1, HA_POS_ERROR, 0, 1, 0}, {"max_length_for_sort_data", OPT_MAX_LENGTH_FOR_SORT_DATA, "Max number of bytes in sorted records.", - (uchar**) &global_system_variables.max_length_for_sort_data, - (uchar**) &max_system_variables.max_length_for_sort_data, 0, GET_ULONG, + &global_system_variables.max_length_for_sort_data, + &max_system_variables.max_length_for_sort_data, 0, GET_ULONG, REQUIRED_ARG, 1024, 4, 8192*1024L, 0, 1, 0}, {"max_prepared_stmt_count", OPT_MAX_PREPARED_STMT_COUNT, "Maximum number of prepared statements in the server.", - (uchar**) &max_prepared_stmt_count, (uchar**) &max_prepared_stmt_count, + &max_prepared_stmt_count, &max_prepared_stmt_count, 0, GET_ULONG, REQUIRED_ARG, 16382, 0, 1*1024*1024, 0, 1, 0}, {"max_relay_log_size", OPT_MAX_RELAY_LOG_SIZE, - "If non-zero: relay log will be rotated automatically when the size exceeds this value; if zero (the default): when the size exceeds max_binlog_size. 0 excepted, the minimum value for this variable is 4096.", - (uchar**) &max_relay_log_size, (uchar**) &max_relay_log_size, 0, GET_ULONG, + "If non-zero: relay log will be rotated automatically when the size " + "exceeds this value; if zero (the default): when the size exceeds " + "max_binlog_size. 0 excepted, the minimum value for this variable is 4096.", + &max_relay_log_size, &max_relay_log_size, 0, GET_ULONG, REQUIRED_ARG, 0L, 0L, 1024*1024L*1024L, 0, IO_SIZE, 0}, { "max_seeks_for_key", OPT_MAX_SEEKS_FOR_KEY, "Limit assumed max number of seeks when looking up rows based on a key.", - (uchar**) &global_system_variables.max_seeks_for_key, - (uchar**) &max_system_variables.max_seeks_for_key, 0, GET_ULONG, + &global_system_variables.max_seeks_for_key, + &max_system_variables.max_seeks_for_key, 0, GET_ULONG, REQUIRED_ARG, ULONG_MAX, 1, ULONG_MAX, 0, 1, 0 }, {"max_sort_length", OPT_MAX_SORT_LENGTH, - "The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored).", - (uchar**) &global_system_variables.max_sort_length, - (uchar**) &max_system_variables.max_sort_length, 0, GET_ULONG, + "The number of bytes to use when sorting BLOB or TEXT values (only the " + "first max_sort_length bytes of each value are used; the rest are ignored).", + &global_system_variables.max_sort_length, + &max_system_variables.max_sort_length, 0, GET_ULONG, REQUIRED_ARG, 1024, 4, 8192*1024L, 0, 1, 0}, {"max_sp_recursion_depth", OPT_MAX_SP_RECURSION_DEPTH, "Maximum stored procedure recursion depth. (discussed with docs).", - (uchar**) &global_system_variables.max_sp_recursion_depth, - (uchar**) &max_system_variables.max_sp_recursion_depth, 0, GET_ULONG, + &global_system_variables.max_sp_recursion_depth, + &max_system_variables.max_sp_recursion_depth, 0, GET_ULONG, OPT_ARG, 0, 0, 255, 0, 1, 0 }, {"max_tmp_tables", OPT_MAX_TMP_TABLES, "Maximum number of temporary tables a client can keep open at a time.", - (uchar**) &global_system_variables.max_tmp_tables, - (uchar**) &max_system_variables.max_tmp_tables, 0, GET_ULONG, + &global_system_variables.max_tmp_tables, + &max_system_variables.max_tmp_tables, 0, GET_ULONG, REQUIRED_ARG, 32, 1, ULONG_MAX, 0, 1, 0}, {"max_user_connections", OPT_MAX_USER_CONNECTIONS, "The maximum number of active connections for a single user (0 = no limit).", - (uchar**) &max_user_connections, (uchar**) &max_user_connections, 0, GET_UINT, + &max_user_connections, &max_user_connections, 0, GET_UINT, REQUIRED_ARG, 0, 0, UINT_MAX, 0, 1, 0}, {"max_write_lock_count", OPT_MAX_WRITE_LOCK_COUNT, "After this many write locks, allow some read locks to run in between.", - (uchar**) &max_write_lock_count, (uchar**) &max_write_lock_count, 0, GET_ULONG, + &max_write_lock_count, &max_write_lock_count, 0, GET_ULONG, REQUIRED_ARG, ULONG_MAX, 1, ULONG_MAX, 0, 1, 0}, {"min_examined_row_limit", OPT_MIN_EXAMINED_ROW_LIMIT, "Don't log queries which examine less than min_examined_row_limit rows to file.", - (uchar**) &global_system_variables.min_examined_row_limit, - (uchar**) &max_system_variables.min_examined_row_limit, 0, GET_ULONG, + &global_system_variables.min_examined_row_limit, + &max_system_variables.min_examined_row_limit, 0, GET_ULONG, REQUIRED_ARG, 0, 0, ULONG_MAX, 0, 1L, 0}, {"multi_range_count", OPT_MULTI_RANGE_COUNT, "Number of key ranges to request at once.", - (uchar**) &global_system_variables.multi_range_count, - (uchar**) &max_system_variables.multi_range_count, 0, + &global_system_variables.multi_range_count, + &max_system_variables.multi_range_count, 0, GET_ULONG, REQUIRED_ARG, 256, 1, ULONG_MAX, 0, 1, 0}, {"myisam_block_size", OPT_MYISAM_BLOCK_SIZE, "Block size to be used for MyISAM index pages.", - (uchar**) &opt_myisam_block_size, - (uchar**) &opt_myisam_block_size, 0, GET_ULONG, REQUIRED_ARG, + &opt_myisam_block_size, &opt_myisam_block_size, 0, GET_ULONG, REQUIRED_ARG, MI_KEY_BLOCK_LENGTH, MI_MIN_KEY_BLOCK_LENGTH, MI_MAX_KEY_BLOCK_LENGTH, 0, MI_MIN_KEY_BLOCK_LENGTH, 0}, {"myisam_data_pointer_size", OPT_MYISAM_DATA_POINTER_SIZE, "Default pointer size to be used for MyISAM tables.", - (uchar**) &myisam_data_pointer_size, - (uchar**) &myisam_data_pointer_size, 0, GET_ULONG, REQUIRED_ARG, + &myisam_data_pointer_size, + &myisam_data_pointer_size, 0, GET_ULONG, REQUIRED_ARG, 6, 2, 7, 0, 1, 0}, {"myisam_max_extra_sort_file_size", OPT_MYISAM_MAX_EXTRA_SORT_FILE_SIZE, - "This is a deprecated option that does nothing anymore. It will be removed in MySQL " - VER_CELOSIA, - (uchar**) &global_system_variables.myisam_max_extra_sort_file_size, - (uchar**) &max_system_variables.myisam_max_extra_sort_file_size, + "This is a deprecated option that does nothing anymore. " + "It will be removed in MySQL " VER_CELOSIA, + &global_system_variables.myisam_max_extra_sort_file_size, + &max_system_variables.myisam_max_extra_sort_file_size, 0, GET_ULL, REQUIRED_ARG, (ulonglong) MI_MAX_TEMP_LENGTH, 0, (ulonglong) MAX_FILE_SIZE, 0, 1, 0}, {"myisam_max_sort_file_size", OPT_MYISAM_MAX_SORT_FILE_SIZE, - "Don't use the fast sort index method to created index if the temporary file would get bigger than this.", - (uchar**) &global_system_variables.myisam_max_sort_file_size, - (uchar**) &max_system_variables.myisam_max_sort_file_size, 0, + "Don't use the fast sort index method to created index if the temporary " + "file would get bigger than this.", + &global_system_variables.myisam_max_sort_file_size, + &max_system_variables.myisam_max_sort_file_size, 0, GET_ULL, REQUIRED_ARG, (longlong) LONG_MAX, 0, (ulonglong) MAX_FILE_SIZE, 0, 1024*1024, 0}, {"myisam_mmap_size", OPT_MYISAM_MMAP_SIZE, "Can be used to restrict the total memory used for memory mmaping of myisam files", - (uchar**) &myisam_mmap_size, (uchar**) &myisam_mmap_size, 0, + &myisam_mmap_size, &myisam_mmap_size, 0, GET_ULL, REQUIRED_ARG, SIZE_T_MAX, MEMMAP_EXTRA_MARGIN, SIZE_T_MAX, 0, 1, 0}, {"myisam_repair_threads", OPT_MYISAM_REPAIR_THREADS, "Specifies whether several threads should be used when repairing MyISAM " "tables. For values > 1, one thread is used per index. The value of 1 " "disables parallel repair.", - (uchar**) &global_system_variables.myisam_repair_threads, - (uchar**) &max_system_variables.myisam_repair_threads, 0, + &global_system_variables.myisam_repair_threads, + &max_system_variables.myisam_repair_threads, 0, GET_ULONG, REQUIRED_ARG, 1, 1, ULONG_MAX, 0, 1, 0}, {"myisam_sort_buffer_size", OPT_MYISAM_SORT_BUFFER_SIZE, - "The buffer that is allocated when sorting the index when doing a REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE.", - (uchar**) &global_system_variables.myisam_sort_buff_size, - (uchar**) &max_system_variables.myisam_sort_buff_size, 0, + "The buffer that is allocated when sorting the index when doing a REPAIR " + "or when creating indexes with CREATE INDEX or ALTER TABLE.", + &global_system_variables.myisam_sort_buff_size, + &max_system_variables.myisam_sort_buff_size, 0, GET_ULONG, REQUIRED_ARG, 8192 * 1024, 4096, ~0L, 0, 1, 0}, {"myisam_use_mmap", OPT_MYISAM_USE_MMAP, "Use memory mapping for reading and writing MyISAM tables.", - (uchar**) &opt_myisam_use_mmap, - (uchar**) &opt_myisam_use_mmap, 0, GET_BOOL, NO_ARG, 0, - 0, 0, 0, 0, 0}, + &opt_myisam_use_mmap, &opt_myisam_use_mmap, 0, GET_BOOL, NO_ARG, + 0, 0, 0, 0, 0, 0}, {"myisam_stats_method", OPT_MYISAM_STATS_METHOD, "Specifies how MyISAM index statistics collection code should threat NULLs. " "Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), " "\"nulls_equal\" (emulate 4.0 behavior), and \"nulls_ignored\".", - (uchar**) &myisam_stats_method_str, (uchar**) &myisam_stats_method_str, 0, + &myisam_stats_method_str, &myisam_stats_method_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"net_buffer_length", OPT_NET_BUFFER_LENGTH, "Buffer length for TCP/IP and socket communication.", - (uchar**) &global_system_variables.net_buffer_length, - (uchar**) &max_system_variables.net_buffer_length, 0, GET_ULONG, + &global_system_variables.net_buffer_length, + &max_system_variables.net_buffer_length, 0, GET_ULONG, REQUIRED_ARG, 16384, 1024, 1024*1024L, 0, 1024, 0}, {"net_read_timeout", OPT_NET_READ_TIMEOUT, "Number of seconds to wait for more data from a connection before aborting the read.", - (uchar**) &global_system_variables.net_read_timeout, - (uchar**) &max_system_variables.net_read_timeout, 0, GET_ULONG, + &global_system_variables.net_read_timeout, + &max_system_variables.net_read_timeout, 0, GET_ULONG, REQUIRED_ARG, NET_READ_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0}, {"net_retry_count", OPT_NET_RETRY_COUNT, "If a read on a communication port is interrupted, retry this many times before giving up.", - (uchar**) &global_system_variables.net_retry_count, - (uchar**) &max_system_variables.net_retry_count,0, + &global_system_variables.net_retry_count, + &max_system_variables.net_retry_count,0, GET_ULONG, REQUIRED_ARG, MYSQLD_NET_RETRY_COUNT, 1, ULONG_MAX, 0, 1, 0}, {"net_write_timeout", OPT_NET_WRITE_TIMEOUT, "Number of seconds to wait for a block to be written to a connection before " "aborting the write.", - (uchar**) &global_system_variables.net_write_timeout, - (uchar**) &max_system_variables.net_write_timeout, 0, GET_ULONG, + &global_system_variables.net_write_timeout, + &max_system_variables.net_write_timeout, 0, GET_ULONG, REQUIRED_ARG, NET_WRITE_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0}, { "old", OPT_OLD_MODE, "Use compatible behavior.", - (uchar**) &global_system_variables.old_mode, - (uchar**) &max_system_variables.old_mode, 0, GET_BOOL, NO_ARG, + &global_system_variables.old_mode, + &max_system_variables.old_mode, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"open_files_limit", OPT_OPEN_FILES_LIMIT, - "If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger) number of files.", - (uchar**) &open_files_limit, (uchar**) &open_files_limit, 0, GET_ULONG, + "If this is not 0, then mysqld will use this value to reserve file " + "descriptors to use with setrlimit(). If this value is 0 then mysqld " + "will reserve max_connections*5 or max_connections + table_cache*2 " + "(whichever is larger) number of files.", + &open_files_limit, &open_files_limit, 0, GET_ULONG, REQUIRED_ARG, 0, 0, OS_FILE_LIMIT, 0, 1, 0}, {"optimizer_prune_level", OPT_OPTIMIZER_PRUNE_LEVEL, - "Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows.", - (uchar**) &global_system_variables.optimizer_prune_level, - (uchar**) &max_system_variables.optimizer_prune_level, + "Controls the heuristic(s) applied during query optimization to prune " + "less-promising partial plans from the optimizer search space. Meaning: " + "0 - do not apply any heuristic, thus perform exhaustive search; 1 - " + "prune plans based on number of retrieved rows.", + &global_system_variables.optimizer_prune_level, + &max_system_variables.optimizer_prune_level, 0, GET_ULONG, OPT_ARG, 1, 0, 1, 0, 1, 0}, {"optimizer_search_depth", OPT_OPTIMIZER_SEARCH_DEPTH, - "Maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to compile a query. Smaller values than the number of tables in a relation result in faster optimization, but may produce very bad query plans. If set to 0, the system will automatically pick a reasonable value; if set to MAX_TABLES+2, the optimizer will switch to the original find_best (used for testing/comparison).", - (uchar**) &global_system_variables.optimizer_search_depth, - (uchar**) &max_system_variables.optimizer_search_depth, + "Maximum depth of search performed by the query optimizer. Values larger " + "than the number of relations in a query result in better query plans, " + "but take longer to compile a query. Smaller values than the number of " + "tables in a relation result in faster optimization, but may produce " + "very bad query plans. If set to 0, the system will automatically pick " + "a reasonable value; if set to MAX_TABLES+2, the optimizer will switch " + "to the original find_best (used for testing/comparison).", + &global_system_variables.optimizer_search_depth, + &max_system_variables.optimizer_search_depth, 0, GET_ULONG, OPT_ARG, MAX_TABLES+1, 0, MAX_TABLES+2, 0, 1, 0}, {"optimizer_switch", OPT_OPTIMIZER_SWITCH, "optimizer_switch=option=val[,option=val...], where option={index_merge, " "index_merge_union, index_merge_sort_union, index_merge_intersection} and " "val={on, off, default}.", - (uchar**) &optimizer_switch_str, (uchar**) &optimizer_switch_str, 0, GET_STR, REQUIRED_ARG, - /*OPTIMIZER_SWITCH_DEFAULT*/0, - 0, 0, 0, 0, 0}, + &optimizer_switch_str, &optimizer_switch_str, 0, GET_STR, REQUIRED_ARG, + /*OPTIMIZER_SWITCH_DEFAULT*/0, 0, 0, 0, 0, 0}, {"plugin_dir", OPT_PLUGIN_DIR, "Directory for plugins.", - (uchar**) &opt_plugin_dir_ptr, (uchar**) &opt_plugin_dir_ptr, 0, + &opt_plugin_dir_ptr, &opt_plugin_dir_ptr, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"plugin-load", OPT_PLUGIN_LOAD, "Optional semicolon-separated list of plugins to load, where each plugin is " "identified as name=library, where name is the plugin name and library " "is the plugin library in plugin_dir.", - (uchar**) &opt_plugin_load, (uchar**) &opt_plugin_load, 0, + &opt_plugin_load, &opt_plugin_load, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"preload_buffer_size", OPT_PRELOAD_BUFFER_SIZE, "The size of the buffer that is allocated when preloading indexes.", - (uchar**) &global_system_variables.preload_buff_size, - (uchar**) &max_system_variables.preload_buff_size, 0, GET_ULONG, + &global_system_variables.preload_buff_size, + &max_system_variables.preload_buff_size, 0, GET_ULONG, REQUIRED_ARG, 32*1024L, 1024, 1024*1024*1024L, 0, 1, 0}, {"query_alloc_block_size", OPT_QUERY_ALLOC_BLOCK_SIZE, "Allocation block size for query parsing and execution.", - (uchar**) &global_system_variables.query_alloc_block_size, - (uchar**) &max_system_variables.query_alloc_block_size, 0, GET_ULONG, + &global_system_variables.query_alloc_block_size, + &max_system_variables.query_alloc_block_size, 0, GET_ULONG, REQUIRED_ARG, QUERY_ALLOC_BLOCK_SIZE, 1024, ULONG_MAX, 0, 1024, 0}, #ifdef HAVE_QUERY_CACHE {"query_cache_limit", OPT_QUERY_CACHE_LIMIT, "Don't cache results that are bigger than this.", - (uchar**) &query_cache_limit, (uchar**) &query_cache_limit, 0, GET_ULONG, + &query_cache_limit, &query_cache_limit, 0, GET_ULONG, REQUIRED_ARG, 1024*1024L, 0, ULONG_MAX, 0, 1, 0}, {"query_cache_min_res_unit", OPT_QUERY_CACHE_MIN_RES_UNIT, "Minimal size of unit in which space for results is allocated (last unit " "will be trimmed after writing all result data).", - (uchar**) &query_cache_min_res_unit, (uchar**) &query_cache_min_res_unit, + &query_cache_min_res_unit, &query_cache_min_res_unit, 0, GET_ULONG, REQUIRED_ARG, QUERY_CACHE_MIN_RESULT_DATA_SIZE, 0, ULONG_MAX, 0, 1, 0}, #endif /*HAVE_QUERY_CACHE*/ {"query_cache_size", OPT_QUERY_CACHE_SIZE, "The memory allocated to store results from old queries.", - (uchar**) &query_cache_size, (uchar**) &query_cache_size, 0, GET_ULONG, + &query_cache_size, &query_cache_size, 0, GET_ULONG, REQUIRED_ARG, 0, 0, (longlong) ULONG_MAX, 0, 1024, 0}, #ifdef HAVE_QUERY_CACHE {"query_cache_type", OPT_QUERY_CACHE_TYPE, - "0 = OFF = Don't cache or retrieve results. 1 = ON = Cache all results except SELECT SQL_NO_CACHE ... queries. 2 = DEMAND = Cache only SELECT SQL_CACHE ... queries.", - (uchar**) &global_system_variables.query_cache_type, - (uchar**) &max_system_variables.query_cache_type, + "0 = OFF = Don't cache or retrieve results. 1 = ON = Cache all results " + "except SELECT SQL_NO_CACHE ... queries. 2 = DEMAND = Cache only SELECT " + "SQL_CACHE ... queries.", &global_system_variables.query_cache_type, + &max_system_variables.query_cache_type, 0, GET_ULONG, REQUIRED_ARG, 1, 0, 2, 0, 1, 0}, {"query_cache_wlock_invalidate", OPT_QUERY_CACHE_WLOCK_INVALIDATE, "Invalidate queries in query cache on LOCK for write.", - (uchar**) &global_system_variables.query_cache_wlock_invalidate, - (uchar**) &max_system_variables.query_cache_wlock_invalidate, + &global_system_variables.query_cache_wlock_invalidate, + &max_system_variables.query_cache_wlock_invalidate, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 1, 0}, #endif /*HAVE_QUERY_CACHE*/ {"query_prealloc_size", OPT_QUERY_PREALLOC_SIZE, "Persistent buffer for query parsing and execution.", - (uchar**) &global_system_variables.query_prealloc_size, - (uchar**) &max_system_variables.query_prealloc_size, 0, GET_ULONG, + &global_system_variables.query_prealloc_size, + &max_system_variables.query_prealloc_size, 0, GET_ULONG, REQUIRED_ARG, QUERY_ALLOC_PREALLOC_SIZE, QUERY_ALLOC_PREALLOC_SIZE, ULONG_MAX, 0, 1024, 0}, {"range_alloc_block_size", OPT_RANGE_ALLOC_BLOCK_SIZE, "Allocation block size for storing ranges during optimization.", - (uchar**) &global_system_variables.range_alloc_block_size, - (uchar**) &max_system_variables.range_alloc_block_size, 0, GET_ULONG, + &global_system_variables.range_alloc_block_size, + &max_system_variables.range_alloc_block_size, 0, GET_ULONG, REQUIRED_ARG, RANGE_ALLOC_BLOCK_SIZE, RANGE_ALLOC_BLOCK_SIZE, ULONG_MAX, 0, 1024, 0}, {"read_buffer_size", OPT_RECORD_BUFFER, - "Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value.", - (uchar**) &global_system_variables.read_buff_size, - (uchar**) &max_system_variables.read_buff_size,0, GET_ULONG, REQUIRED_ARG, + "Each thread that does a sequential scan allocates a buffer of this size " + "for each table it scans. If you do many sequential scans, you may want " + "to increase this value.", &global_system_variables.read_buff_size, + &max_system_variables.read_buff_size,0, GET_ULONG, REQUIRED_ARG, 128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, INT_MAX32, MALLOC_OVERHEAD, IO_SIZE, 0}, {"read_only", OPT_READONLY, "Make all non-temporary tables read-only, with the exception of replication " "(slave) threads and users with the SUPER privilege.", - (uchar**) &opt_readonly, - (uchar**) &opt_readonly, + &opt_readonly, + &opt_readonly, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 1, 0}, {"read_rnd_buffer_size", OPT_RECORD_RND_BUFFER, "When reading rows in sorted order after a sort, the rows are read through " "this buffer to avoid disk seeks. If not set, then it's set to the value of " "record_buffer.", - (uchar**) &global_system_variables.read_rnd_buff_size, - (uchar**) &max_system_variables.read_rnd_buff_size, 0, + &global_system_variables.read_rnd_buff_size, + &max_system_variables.read_rnd_buff_size, 0, GET_ULONG, REQUIRED_ARG, 256*1024L, IO_SIZE*2+MALLOC_OVERHEAD, INT_MAX32, MALLOC_OVERHEAD, IO_SIZE, 0}, {"record_buffer", OPT_RECORD_BUFFER_OLD, "Alias for read_buffer_size. This variable is deprecated and will be removed in a future release.", - (uchar**) &global_system_variables.read_buff_size, - (uchar**) &max_system_variables.read_buff_size,0, GET_ULONG, REQUIRED_ARG, + &global_system_variables.read_buff_size, + &max_system_variables.read_buff_size,0, GET_ULONG, REQUIRED_ARG, 128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, INT_MAX32, MALLOC_OVERHEAD, IO_SIZE, 0}, #ifdef HAVE_REPLICATION {"relay_log_purge", OPT_RELAY_LOG_PURGE, "0 = do not purge relay logs. 1 = purge them as soon as they are no more needed.", - (uchar**) &relay_log_purge, - (uchar**) &relay_log_purge, 0, GET_BOOL, NO_ARG, + &relay_log_purge, + &relay_log_purge, 0, GET_BOOL, NO_ARG, 1, 0, 1, 0, 1, 0}, {"relay_log_space_limit", OPT_RELAY_LOG_SPACE_LIMIT, "Maximum space to use for all relay logs.", - (uchar**) &relay_log_space_limit, - (uchar**) &relay_log_space_limit, 0, GET_ULL, REQUIRED_ARG, 0L, 0L, + &relay_log_space_limit, + &relay_log_space_limit, 0, GET_ULL, REQUIRED_ARG, 0L, 0L, (longlong) ULONG_MAX, 0, 1, 0}, {"slave_compressed_protocol", OPT_SLAVE_COMPRESSED_PROTOCOL, "Use compression on master/slave protocol.", - (uchar**) &opt_slave_compressed_protocol, - (uchar**) &opt_slave_compressed_protocol, + &opt_slave_compressed_protocol, + &opt_slave_compressed_protocol, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 1, 0}, {"slave_net_timeout", OPT_SLAVE_NET_TIMEOUT, "Number of seconds to wait for more data from a master/slave connection before aborting the read.", - (uchar**) &slave_net_timeout, (uchar**) &slave_net_timeout, 0, + &slave_net_timeout, &slave_net_timeout, 0, GET_ULONG, REQUIRED_ARG, SLAVE_NET_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0}, {"slave_transaction_retries", OPT_SLAVE_TRANS_RETRIES, "Number of times the slave SQL thread will retry a transaction in case " "it failed with a deadlock or elapsed lock wait timeout, " "before giving up and stopping.", - (uchar**) &slave_trans_retries, (uchar**) &slave_trans_retries, 0, + &slave_trans_retries, &slave_trans_retries, 0, GET_ULONG, REQUIRED_ARG, 10L, 0L, (longlong) ULONG_MAX, 0, 1, 0}, #endif /* HAVE_REPLICATION */ {"slow_launch_time", OPT_SLOW_LAUNCH_TIME, - "If creating the thread takes longer than this value (in seconds), the Slow_launch_threads counter will be incremented.", - (uchar**) &slow_launch_time, (uchar**) &slow_launch_time, 0, GET_ULONG, + "If creating the thread takes longer than this value (in seconds), " + "the Slow_launch_threads counter will be incremented.", + &slow_launch_time, &slow_launch_time, 0, GET_ULONG, REQUIRED_ARG, 2L, 0L, LONG_TIMEOUT, 0, 1, 0}, {"sort_buffer_size", OPT_SORT_BUFFER, "Each thread that needs to do a sort allocates a buffer of this size.", - (uchar**) &global_system_variables.sortbuff_size, - (uchar**) &max_system_variables.sortbuff_size, 0, GET_ULONG, REQUIRED_ARG, + &global_system_variables.sortbuff_size, + &max_system_variables.sortbuff_size, 0, GET_ULONG, REQUIRED_ARG, MAX_SORT_MEMORY, MIN_SORT_MEMORY+MALLOC_OVERHEAD*2, ~0L, MALLOC_OVERHEAD, 1, 0}, {"sync-binlog", OPT_SYNC_BINLOG, "Synchronously flush binary log to disk after every #th event. " "Use 0 (default) to disable synchronous flushing.", - (uchar**) &sync_binlog_period, (uchar**) &sync_binlog_period, 0, GET_ULONG, + &sync_binlog_period, &sync_binlog_period, 0, GET_ULONG, REQUIRED_ARG, 0, 0, ULONG_MAX, 0, 1, 0}, {"sync-frm", OPT_SYNC_FRM, "Sync .frm to disk on create. Enabled by default.", - (uchar**) &opt_sync_frm, (uchar**) &opt_sync_frm, 0, GET_BOOL, NO_ARG, 1, 0, + &opt_sync_frm, &opt_sync_frm, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"table_cache", OPT_TABLE_OPEN_CACHE, "Deprecated; use --table_open_cache instead.", - (uchar**) &table_cache_size, (uchar**) &table_cache_size, 0, GET_ULONG, + &table_cache_size, &table_cache_size, 0, GET_ULONG, REQUIRED_ARG, TABLE_OPEN_CACHE_DEFAULT, 1, 512*1024L, 0, 1, 0}, {"table_definition_cache", OPT_TABLE_DEF_CACHE, "The number of cached table definitions.", - (uchar**) &table_def_size, (uchar**) &table_def_size, + &table_def_size, &table_def_size, 0, GET_ULONG, REQUIRED_ARG, TABLE_DEF_CACHE_DEFAULT, TABLE_DEF_CACHE_MIN, 512*1024L, 0, 1, 0}, {"table_open_cache", OPT_TABLE_OPEN_CACHE, "The number of cached open tables.", - (uchar**) &table_cache_size, (uchar**) &table_cache_size, 0, GET_ULONG, + &table_cache_size, &table_cache_size, 0, GET_ULONG, REQUIRED_ARG, TABLE_OPEN_CACHE_DEFAULT, 1, 512*1024L, 0, 1, 0}, {"table_lock_wait_timeout", OPT_TABLE_LOCK_WAIT_TIMEOUT, "Timeout in seconds to wait for a table level lock before returning an " "error. Used only if the connection has active cursors.", - (uchar**) &table_lock_wait_timeout, (uchar**) &table_lock_wait_timeout, + &table_lock_wait_timeout, &table_lock_wait_timeout, 0, GET_ULONG, REQUIRED_ARG, 50, 1, 1024 * 1024 * 1024, 0, 1, 0}, {"thread_cache_size", OPT_THREAD_CACHE_SIZE, "How many threads we should keep in a cache for reuse.", - (uchar**) &thread_cache_size, (uchar**) &thread_cache_size, 0, GET_ULONG, + &thread_cache_size, &thread_cache_size, 0, GET_ULONG, REQUIRED_ARG, 0, 0, 16384, 0, 1, 0}, {"thread_concurrency", OPT_THREAD_CONCURRENCY, - "Permits the application to give the threads system a hint for the desired number of threads that should be run at the same time.", - (uchar**) &concurrency, (uchar**) &concurrency, 0, GET_ULONG, REQUIRED_ARG, + "Permits the application to give the threads system a hint for the " + "desired number of threads that should be run at the same time.", + &concurrency, &concurrency, 0, GET_ULONG, REQUIRED_ARG, DEFAULT_CONCURRENCY, 1, 512, 0, 1, 0}, #if HAVE_POOL_OF_THREADS == 1 {"thread_pool_size", OPT_THREAD_CACHE_SIZE, "How many threads we should create to handle query requests in case of " "'thread_handling=pool-of-threads'.", - (uchar**) &thread_pool_size, (uchar**) &thread_pool_size, 0, GET_ULONG, + &thread_pool_size, &thread_pool_size, 0, GET_ULONG, REQUIRED_ARG, 20, 1, 16384, 0, 1, 0}, #endif {"thread_stack", OPT_THREAD_STACK, - "The stack size for each thread.", (uchar**) &my_thread_stack_size, - (uchar**) &my_thread_stack_size, 0, GET_ULONG, REQUIRED_ARG,DEFAULT_THREAD_STACK, + "The stack size for each thread.", &my_thread_stack_size, + &my_thread_stack_size, 0, GET_ULONG, REQUIRED_ARG,DEFAULT_THREAD_STACK, 1024L*128L, ULONG_MAX, 0, 1024, 0}, { "time_format", OPT_TIME_FORMAT, "The TIME format (for future).", - (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_TIME], - (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_TIME], + &opt_date_time_formats[MYSQL_TIMESTAMP_TIME], + &opt_date_time_formats[MYSQL_TIMESTAMP_TIME], 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"tmp_table_size", OPT_TMP_TABLE_SIZE, "If an internal in-memory temporary table exceeds this size, MySQL will" " automatically convert it to an on-disk MyISAM table.", - (uchar**) &global_system_variables.tmp_table_size, - (uchar**) &max_system_variables.tmp_table_size, 0, GET_ULL, + &global_system_variables.tmp_table_size, + &max_system_variables.tmp_table_size, 0, GET_ULL, REQUIRED_ARG, 16*1024*1024L, 1024, MAX_MEM_TABLE_SIZE, 0, 1, 0}, {"transaction_alloc_block_size", OPT_TRANS_ALLOC_BLOCK_SIZE, "Allocation block size for transactions to be stored in binary log.", - (uchar**) &global_system_variables.trans_alloc_block_size, - (uchar**) &max_system_variables.trans_alloc_block_size, 0, GET_ULONG, + &global_system_variables.trans_alloc_block_size, + &max_system_variables.trans_alloc_block_size, 0, GET_ULONG, REQUIRED_ARG, QUERY_ALLOC_BLOCK_SIZE, 1024, ULONG_MAX, 0, 1024, 0}, {"transaction_prealloc_size", OPT_TRANS_PREALLOC_SIZE, "Persistent buffer for transactions to be stored in binary log.", - (uchar**) &global_system_variables.trans_prealloc_size, - (uchar**) &max_system_variables.trans_prealloc_size, 0, GET_ULONG, + &global_system_variables.trans_prealloc_size, + &max_system_variables.trans_prealloc_size, 0, GET_ULONG, REQUIRED_ARG, TRANS_ALLOC_PREALLOC_SIZE, 1024, ULONG_MAX, 0, 1024, 0}, {"thread_handling", OPT_THREAD_HANDLING, "Define threads usage for handling queries: " "one-thread-per-connection or no-threads.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"updatable_views_with_limit", OPT_UPDATABLE_VIEWS_WITH_LIMIT, - "1 = YES = Don't issue an error message (warning only) if a VIEW without presence of a key of the underlying table is used in queries with a LIMIT clause for updating. 0 = NO = Prohibit update of a VIEW, which does not contain a key of the underlying table and the query uses a LIMIT clause (usually get from GUI tools).", - (uchar**) &global_system_variables.updatable_views_with_limit, - (uchar**) &max_system_variables.updatable_views_with_limit, + "1 = YES = Don't issue an error message (warning only) if a VIEW without " + "presence of a key of the underlying table is used in queries with a " + "LIMIT clause for updating. 0 = NO = Prohibit update of a VIEW, which " + "does not contain a key of the underlying table and the query uses a " + "LIMIT clause (usually get from GUI tools).", + &global_system_variables.updatable_views_with_limit, + &max_system_variables.updatable_views_with_limit, 0, GET_ULONG, REQUIRED_ARG, 1, 0, 1, 0, 1, 0}, {"wait_timeout", OPT_WAIT_TIMEOUT, "The number of seconds the server waits for activity on a connection before closing it.", - (uchar**) &global_system_variables.net_wait_timeout, - (uchar**) &max_system_variables.net_wait_timeout, 0, GET_ULONG, + &global_system_variables.net_wait_timeout, + &max_system_variables.net_wait_timeout, 0, GET_ULONG, REQUIRED_ARG, NET_WAIT_TIMEOUT, 1, IF_WIN(INT_MAX32/1000, LONG_TIMEOUT), 0, 1, 0}, {"binlog-direct-non-transactional-updates", OPT_BINLOG_DIRECT_NON_TRANS_UPDATE, @@ -7167,8 +7231,9 @@ The minimum value for this variable is 4096.", "there are no dependencies between transactional and non-transactional " "tables such as in the statement INSERT INTO t_myisam SELECT * FROM " "t_innodb; otherwise, slaves may diverge from the master.", - (uchar**) &global_system_variables.binlog_direct_non_trans_update, (uchar**) &max_system_variables.binlog_direct_non_trans_update, 0, GET_BOOL, NO_ARG, 0, - 0, 0, 0, 0, 0}, + &global_system_variables.binlog_direct_non_trans_update, + &max_system_variables.binlog_direct_non_trans_update, + 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; @@ -8597,13 +8662,12 @@ mysqld_get_one_option(int optid, /** Handle arguments for multiple key caches. */ +C_MODE_START +static void* mysql_getopt_value(const char *, uint, + const struct my_option *, int *); +C_MODE_END -extern "C" int mysql_getopt_value(uchar **value, - const char *keyname, uint key_length, - const struct my_option *option, - int *error); - -static uchar* * +static void* mysql_getopt_value(const char *keyname, uint key_length, const struct my_option *option, int *error) { @@ -8624,13 +8688,13 @@ mysql_getopt_value(const char *keyname, uint key_length, } switch (option->id) { case OPT_KEY_BUFFER_SIZE: - return (uchar**) &key_cache->param_buff_size; + return &key_cache->param_buff_size; case OPT_KEY_CACHE_BLOCK_SIZE: - return (uchar**) &key_cache->param_block_size; + return &key_cache->param_block_size; case OPT_KEY_CACHE_DIVISION_LIMIT: - return (uchar**) &key_cache->param_division_limit; + return &key_cache->param_division_limit; case OPT_KEY_CACHE_AGE_THRESHOLD: - return (uchar**) &key_cache->param_age_threshold; + return &key_cache->param_age_threshold; } } } diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index 94a2b506207..7383d59a1d9 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -1913,10 +1913,6 @@ typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_uint_t, uint); typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_ulong_t, ulong); typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_ulonglong_t, ulonglong); -#define SET_PLUGIN_VAR_RESOLVE(opt)\ - *(mysql_sys_var_ptr_p*)&((opt)->resolve)= mysql_sys_var_ptr -typedef uchar *(*mysql_sys_var_ptr_p)(void* a_thd, int offset); - /**************************************************************************** default variable data check and update functions @@ -2445,11 +2441,49 @@ static uchar *intern_sys_var_ptr(THD* thd, int offset, bool global_lock) return (uchar*)thd->variables.dynamic_variables_ptr + offset; } -static uchar *mysql_sys_var_ptr(void* a_thd, int offset) + +/** + For correctness and simplicity's sake, a pointer to a function + must be compatible with pointed-to type, that is, the return and + parameters types must be the same. Thus, a callback function is + defined for each scalar type. The functions are assigned in + construct_options to their respective types. +*/ + +static char *mysql_sys_var_char(THD* thd, int offset) { - return intern_sys_var_ptr((THD *)a_thd, offset, true); + return (char *) intern_sys_var_ptr(thd, offset, true); } +static int *mysql_sys_var_int(THD* thd, int offset) +{ + return (int *) intern_sys_var_ptr(thd, offset, true); +} + +static long *mysql_sys_var_long(THD* thd, int offset) +{ + return (long *) intern_sys_var_ptr(thd, offset, true); +} + +static unsigned long *mysql_sys_var_ulong(THD* thd, int offset) +{ + return (unsigned long *) intern_sys_var_ptr(thd, offset, true); +} + +static long long *mysql_sys_var_longlong(THD* thd, int offset) +{ + return (long long *) intern_sys_var_ptr(thd, offset, true); +} + +static unsigned long long *mysql_sys_var_ulonglong(THD* thd, int offset) +{ + return (unsigned long long *) intern_sys_var_ptr(thd, offset, true); +} + +static char **mysql_sys_var_str(THD* thd, int offset) +{ + return (char **) intern_sys_var_ptr(thd, offset, true); +} void plugin_thdvar_init(THD *thd) { @@ -3020,25 +3054,25 @@ static int construct_options(MEM_ROOT *mem_root, struct st_plugin_int *tmp, continue; switch (opt->flags & PLUGIN_VAR_TYPEMASK) { case PLUGIN_VAR_BOOL: - SET_PLUGIN_VAR_RESOLVE((thdvar_bool_t *) opt); + ((thdvar_bool_t *) opt)->resolve= mysql_sys_var_char; break; case PLUGIN_VAR_INT: - SET_PLUGIN_VAR_RESOLVE((thdvar_int_t *) opt); + ((thdvar_int_t *) opt)->resolve= mysql_sys_var_int; break; case PLUGIN_VAR_LONG: - SET_PLUGIN_VAR_RESOLVE((thdvar_long_t *) opt); + ((thdvar_long_t *) opt)->resolve= mysql_sys_var_long; break; case PLUGIN_VAR_LONGLONG: - SET_PLUGIN_VAR_RESOLVE((thdvar_longlong_t *) opt); + ((thdvar_longlong_t *) opt)->resolve= mysql_sys_var_longlong; break; case PLUGIN_VAR_STR: - SET_PLUGIN_VAR_RESOLVE((thdvar_str_t *) opt); + ((thdvar_str_t *) opt)->resolve= mysql_sys_var_str; break; case PLUGIN_VAR_ENUM: - SET_PLUGIN_VAR_RESOLVE((thdvar_enum_t *) opt); + ((thdvar_enum_t *) opt)->resolve= mysql_sys_var_ulong; break; case PLUGIN_VAR_SET: - SET_PLUGIN_VAR_RESOLVE((thdvar_set_t *) opt); + ((thdvar_set_t *) opt)->resolve= mysql_sys_var_ulonglong; break; default: sql_print_error("Unknown variable type code 0x%x in plugin '%s'.", diff --git a/sql/table.cc b/sql/table.cc index 0fef7fa639a..dde3654dab1 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -45,6 +45,8 @@ static uint find_field(Field **fields, uchar *record, uint start, uint length); inline bool is_system_table_name(const char *name, uint length); +static ulong get_form_pos(File file, uchar *head); + /************************************************************************** Object_creation_ctx implementation. **************************************************************************/ @@ -693,7 +695,8 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, disk_buff= 0; error= 3; - if (!(pos=get_form_pos(file,head,(TYPELIB*) 0))) + /* Position of the form in the form file. */ + if (!(pos= get_form_pos(file, head))) goto err; /* purecov: inspected */ share->frm_version= head[2]; @@ -2047,52 +2050,46 @@ void free_field_buffers_larger_than(TABLE *table, uint32 size) } } - /* Find where a form starts */ - /* if formname is NullS then only formnames is read */ +/** + Find where a form starts. -ulong get_form_pos(File file, uchar *head, TYPELIB *save_names) + @param head The start of the form file. + + @remark If formname is NULL then only formnames is read. + + @retval The form position. +*/ + +static ulong get_form_pos(File file, uchar *head) { - uint a_length,names,length; - uchar *pos,*buf; + uchar *pos, *buf; + uint names, length; ulong ret_value=0; DBUG_ENTER("get_form_pos"); - names=uint2korr(head+8); - a_length=(names+2)*sizeof(char *); /* Room for two extra */ + names= uint2korr(head+8); - if (!save_names) - a_length=0; - else - save_names->type_names=0; /* Clear if error */ + if (!(names= uint2korr(head+8))) + DBUG_RETURN(0); - if (names) + length= uint2korr(head+4); + + my_seek(file, 64L, MY_SEEK_SET, MYF(0)); + + if (!(buf= (uchar*) my_malloc(length+names*4, MYF(MY_WME)))) + DBUG_RETURN(0); + + if (my_read(file, buf, length+names*4, MYF(MY_NABP))) { - length=uint2korr(head+4); - VOID(my_seek(file,64L,MY_SEEK_SET,MYF(0))); - if (!(buf= (uchar*) my_malloc((size_t) length+a_length+names*4, - MYF(MY_WME))) || - my_read(file, buf+a_length, (size_t) (length+names*4), - MYF(MY_NABP))) - { /* purecov: inspected */ - x_free((uchar*) buf); /* purecov: inspected */ - DBUG_RETURN(0L); /* purecov: inspected */ - } - pos= buf+a_length+length; - ret_value=uint4korr(pos); - } - if (! save_names) - { - if (names) - my_free((uchar*) buf,MYF(0)); - } - else if (!names) - bzero((char*) save_names,sizeof(save_names)); - else - { - char *str; - str=(char *) (buf+a_length); - fix_type_pointers((const char ***) &buf,save_names,1,&str); + x_free(buf); + DBUG_RETURN(0); } + + pos= buf+length; + ret_value= uint4korr(pos); + + my_free(buf, MYF(0)); + DBUG_RETURN(ret_value); } diff --git a/sql/unireg.cc b/sql/unireg.cc index 60674b8390b..84160da9d77 100644 --- a/sql/unireg.cc +++ b/sql/unireg.cc @@ -108,7 +108,6 @@ bool mysql_create_frm(THD *thd, const char *file_name, File file; ulong filepos, data_offset; uchar fileinfo[64],forminfo[288],*keybuff; - TYPELIB formnames; uchar *screen_buff; char buff[128]; #ifdef WITH_PARTITION_STORAGE_ENGINE @@ -119,7 +118,7 @@ bool mysql_create_frm(THD *thd, const char *file_name, DBUG_ENTER("mysql_create_frm"); DBUG_ASSERT(*fn_rext((char*)file_name)); // Check .frm extension - formnames.type_names=0; + if (!(screen_buff=pack_screens(create_fields,&info_length,&screens,0))) DBUG_RETURN(1); DBUG_ASSERT(db_file != NULL); @@ -194,8 +193,15 @@ bool mysql_create_frm(THD *thd, const char *file_name, key_buff_length= uint4korr(fileinfo+47); keybuff=(uchar*) my_malloc(key_buff_length, MYF(0)); key_info_length= pack_keys(keybuff, keys, key_info, data_offset); - VOID(get_form_pos(file,fileinfo,&formnames)); - if (!(filepos=make_new_entry(file,fileinfo,&formnames,""))) + + /* + Ensure that there are no forms in this newly created form file. + Even if the form file exists, create_frm must truncate it to + ensure one form per form file. + */ + DBUG_ASSERT(uint2korr(fileinfo+8) == 0); + + if (!(filepos= make_new_entry(file, fileinfo, NULL, ""))) goto err; maxlength=(uint) next_io_size((ulong) (uint2korr(forminfo)+1000)); int2store(forminfo+2,maxlength); diff --git a/storage/archive/archive_reader.c b/storage/archive/archive_reader.c index 84d4e318b49..0cf795cefdf 100644 --- a/storage/archive/archive_reader.c +++ b/storage/archive/archive_reader.c @@ -355,15 +355,14 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"set-auto-increment", 'A', "Force auto_increment to start at this or higher value. If no value is given, then sets the next auto_increment value to the highest used value for the auto key + 1.", - (uchar**) &new_auto_increment, - (uchar**) &new_auto_increment, + &new_auto_increment, &new_auto_increment, 0, GET_ULL, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"silent", 's', "Only print errors. One can use two -s to make archive_reader very silent.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"tmpdir", 't', "Path for temporary files.", - (uchar**) &opt_tmpdir, + &opt_tmpdir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Print version and exit.", diff --git a/storage/myisam/ft_nlq_search.c b/storage/myisam/ft_nlq_search.c index eb563638d36..5317da78ee4 100644 --- a/storage/myisam/ft_nlq_search.c +++ b/storage/myisam/ft_nlq_search.c @@ -123,7 +123,7 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio) goto do_skip; } #if HA_FT_WTYPE == HA_KEYTYPE_FLOAT - tmp_weight=*(float*)&subkeys; + ft_floatXget(tmp_weight, info->lastkey+info->lastkey_length-extra); #else #error #endif diff --git a/storage/myisam/fulltext.h b/storage/myisam/fulltext.h index 856e93e034d..853eb6362e6 100644 --- a/storage/myisam/fulltext.h +++ b/storage/myisam/fulltext.h @@ -24,8 +24,23 @@ #define HA_FT_WLEN 4 #define FT_SEGS 2 +/** + Accessor methods for the weight and the number of subkeys in a buffer. + + The weight is of float type and subkeys number is of integer type. Both + are stored in the same position of the buffer and the stored object is + identified by the sign (bit): the weight value is positive whilst the + number of subkeys is negative. + + In light of C's strict-aliasing rules, which roughly state that an object + must not be accessed through incompatible types, these methods are used to + avoid any problems arising from the type duality inside the buffer. The + values are retrieved using a character type which can access any object. +*/ #define ft_sintXkorr(A) mi_sint4korr(A) #define ft_intXstore(T,A) mi_int4store(T,A) +#define ft_floatXget(V,M) mi_float4get(V,M) + extern const HA_KEYSEG ft_keysegs[FT_SEGS]; diff --git a/storage/myisam/mi_test1.c b/storage/myisam/mi_test1.c index f218bf4e77f..363b024737a 100644 --- a/storage/myisam/mi_test1.c +++ b/storage/myisam/mi_test1.c @@ -536,21 +536,21 @@ static struct my_option my_long_options[] = {"debug", '#', "Undocumented", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"delete_rows", 'd', "Undocumented", (uchar**) &remove_count, - (uchar**) &remove_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0}, + {"delete_rows", 'd', "Undocumented", &remove_count, + &remove_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0}, {"help", '?', "Display help and exit", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"insert_rows", 'i', "Undocumented", (uchar**) &insert_count, - (uchar**) &insert_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0}, + {"insert_rows", 'i', "Undocumented", &insert_count, + &insert_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0}, {"key_alpha", 'a', "Use a key of type HA_KEYTYPE_TEXT", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"key_binary_pack", 'B', "Undocumented", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"key_blob", 'b', "Undocumented", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"key_cache", 'K', "Undocumented", (uchar**) &key_cacheing, - (uchar**) &key_cacheing, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"key_length", 'k', "Undocumented", (uchar**) &key_length, (uchar**) &key_length, + {"key_cache", 'K', "Undocumented", &key_cacheing, + &key_cacheing, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"key_length", 'k', "Undocumented", &key_length, &key_length, 0, GET_UINT, REQUIRED_ARG, 6, 0, 0, 0, 0, 0}, {"key_multiple", 'm', "Undocumented", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -561,21 +561,21 @@ static struct my_option my_long_options[] = {"key_varchar", 'w', "Test VARCHAR keys", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"null_fields", 'N', "Define fields with NULL", - (uchar**) &null_fields, (uchar**) &null_fields, 0, GET_BOOL, NO_ARG, + &null_fields, &null_fields, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"row_fixed_size", 'S', "Undocumented", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"row_pointer_size", 'R', "Undocumented", (uchar**) &rec_pointer_size, - (uchar**) &rec_pointer_size, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"row_pointer_size", 'R', "Undocumented", &rec_pointer_size, + &rec_pointer_size, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"silent", 's', "Undocumented", - (uchar**) &silent, (uchar**) &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"skip_update", 'U', "Undocumented", (uchar**) &skip_update, - (uchar**) &skip_update, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"unique", 'C', "Undocumented", (uchar**) &opt_unique, (uchar**) &opt_unique, 0, + &silent, &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"skip_update", 'U', "Undocumented", &skip_update, + &skip_update, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"unique", 'C', "Undocumented", &opt_unique, &opt_unique, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"update_rows", 'u', "Undocumented", (uchar**) &update_count, - (uchar**) &update_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0}, - {"verbose", 'v', "Be more verbose", (uchar**) &verbose, (uchar**) &verbose, 0, + {"update_rows", 'u', "Undocumented", &update_count, + &update_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0}, + {"verbose", 'v', "Be more verbose", &verbose, &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Print version number and exit", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, diff --git a/storage/myisam/myisam_ftdump.c b/storage/myisam/myisam_ftdump.c index 63d954242a0..f1637a7e116 100644 --- a/storage/myisam/myisam_ftdump.c +++ b/storage/myisam/myisam_ftdump.c @@ -113,7 +113,7 @@ int main(int argc,char *argv[]) subkeys=ft_sintXkorr(info->lastkey+keylen+1); if (subkeys >= 0) - weight=*(float*)&subkeys; + ft_floatXget(weight, info->lastkey+keylen+1); #ifdef HAVE_SNPRINTF snprintf(buf,MAX_LEN,"%.*s",(int) keylen,info->lastkey+1); diff --git a/storage/myisam/myisamchk.c b/storage/myisam/myisamchk.c index 611fb6325c8..96ceb35b3d5 100644 --- a/storage/myisam/myisamchk.c +++ b/storage/myisam/myisamchk.c @@ -168,7 +168,7 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR, "Directory where character sets are.", - (uchar**) &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"check", 'c', "Check table for errors.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -188,8 +188,8 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"data-file-length", 'D', "Max length of data file (when recreating data-file when it's full).", - (uchar**) &check_param.max_data_file_length, - (uchar**) &check_param.max_data_file_length, + &check_param.max_data_file_length, + &check_param.max_data_file_length, 0, GET_LL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"extend-check", 'e', "If used when checking a table, ensure that the table is 100 percent consistent, which will take a long time. If used when repairing a table, try to recover every possible row from the data file. Normally this will also find a lot of garbage rows; Don't use this option with repair if you are not totally desperate.", @@ -211,13 +211,13 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"keys-used", 'k', "Tell MyISAM to update only some specific keys. # is a bit mask of which keys to use. This can be used to get faster inserts.", - (uchar**) &check_param.keys_in_use, - (uchar**) &check_param.keys_in_use, + &check_param.keys_in_use, + &check_param.keys_in_use, 0, GET_ULL, REQUIRED_ARG, -1, 0, 0, 0, 0, 0}, {"max-record-length", OPT_MAX_RECORD_LENGTH, "Skip rows bigger than this if myisamchk can't allocate memory to hold it", - (uchar**) &check_param.max_record_length, - (uchar**) &check_param.max_record_length, + &check_param.max_record_length, + &check_param.max_record_length, 0, GET_ULL, REQUIRED_ARG, LONGLONG_MAX, 0, LONGLONG_MAX, 0, 0, 0}, {"medium-check", 'm', "Faster than extend-check, but only finds 99.99% of all errors. Should be good enough for most cases.", @@ -246,12 +246,12 @@ static struct my_option my_long_options[] = #endif {"set-auto-increment", 'A', "Force auto_increment to start at this or higher value. If no value is given, then sets the next auto_increment value to the highest used value for the auto key + 1.", - (uchar**) &check_param.auto_increment_value, - (uchar**) &check_param.auto_increment_value, + &check_param.auto_increment_value, + &check_param.auto_increment_value, 0, GET_ULL, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"set-collation", OPT_SET_COLLATION, "Change the collation used by the index", - (uchar**) &set_collation_name, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &set_collation_name, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"set-variable", 'O', "Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -263,12 +263,12 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"sort-records", 'R', "Sort records according to an index. This makes your data much more localized and may speed up things. (It may be VERY slow to do a sort the first time!)", - (uchar**) &check_param.opt_sort_key, - (uchar**) &check_param.opt_sort_key, + &check_param.opt_sort_key, + &check_param.opt_sort_key, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"tmpdir", 't', "Path for temporary files.", - (uchar**) &opt_tmpdir, + &opt_tmpdir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"update-state", 'U', "Mark tables as crashed if any errors were found.", @@ -286,54 +286,54 @@ static struct my_option my_long_options[] = "Wait if table is locked.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, { "key_buffer_size", OPT_KEY_BUFFER_SIZE, "", - (uchar**) &check_param.use_buffers, (uchar**) &check_param.use_buffers, 0, + &check_param.use_buffers, &check_param.use_buffers, 0, GET_ULL, REQUIRED_ARG, USE_BUFFER_INIT, MALLOC_OVERHEAD, SIZE_T_MAX, MALLOC_OVERHEAD, IO_SIZE, 0}, { "key_cache_block_size", OPT_KEY_CACHE_BLOCK_SIZE, "", - (uchar**) &opt_key_cache_block_size, - (uchar**) &opt_key_cache_block_size, 0, + &opt_key_cache_block_size, + &opt_key_cache_block_size, 0, GET_LONG, REQUIRED_ARG, MI_KEY_BLOCK_LENGTH, MI_MIN_KEY_BLOCK_LENGTH, MI_MAX_KEY_BLOCK_LENGTH, 0, MI_MIN_KEY_BLOCK_LENGTH, 0}, { "myisam_block_size", OPT_MYISAM_BLOCK_SIZE, "", - (uchar**) &opt_myisam_block_size, (uchar**) &opt_myisam_block_size, 0, + &opt_myisam_block_size, &opt_myisam_block_size, 0, GET_LONG, REQUIRED_ARG, MI_KEY_BLOCK_LENGTH, MI_MIN_KEY_BLOCK_LENGTH, MI_MAX_KEY_BLOCK_LENGTH, 0, MI_MIN_KEY_BLOCK_LENGTH, 0}, { "read_buffer_size", OPT_READ_BUFFER_SIZE, "", - (uchar**) &check_param.read_buffer_length, - (uchar**) &check_param.read_buffer_length, 0, GET_ULONG, REQUIRED_ARG, + &check_param.read_buffer_length, + &check_param.read_buffer_length, 0, GET_ULONG, REQUIRED_ARG, (long) READ_BUFFER_INIT, (long) MALLOC_OVERHEAD, INT_MAX32, (long) MALLOC_OVERHEAD, (long) 1L, 0}, { "write_buffer_size", OPT_WRITE_BUFFER_SIZE, "", - (uchar**) &check_param.write_buffer_length, - (uchar**) &check_param.write_buffer_length, 0, GET_ULONG, REQUIRED_ARG, + &check_param.write_buffer_length, + &check_param.write_buffer_length, 0, GET_ULONG, REQUIRED_ARG, (long) READ_BUFFER_INIT, (long) MALLOC_OVERHEAD, INT_MAX32, (long) MALLOC_OVERHEAD, (long) 1L, 0}, { "sort_buffer_size", OPT_SORT_BUFFER_SIZE, "", - (uchar**) &check_param.sort_buffer_length, - (uchar**) &check_param.sort_buffer_length, 0, GET_ULONG, REQUIRED_ARG, + &check_param.sort_buffer_length, + &check_param.sort_buffer_length, 0, GET_ULONG, REQUIRED_ARG, (long) SORT_BUFFER_INIT, (long) (MIN_SORT_BUFFER + MALLOC_OVERHEAD), ULONG_MAX, (long) MALLOC_OVERHEAD, (long) 1L, 0}, { "sort_key_blocks", OPT_SORT_KEY_BLOCKS, "", - (uchar**) &check_param.sort_key_blocks, - (uchar**) &check_param.sort_key_blocks, 0, GET_ULONG, REQUIRED_ARG, + &check_param.sort_key_blocks, + &check_param.sort_key_blocks, 0, GET_ULONG, REQUIRED_ARG, BUFFERS_WHEN_SORTING, 4L, 100L, 0L, 1L, 0}, - { "decode_bits", OPT_DECODE_BITS, "", (uchar**) &decode_bits, - (uchar**) &decode_bits, 0, GET_UINT, REQUIRED_ARG, 9L, 4L, 17L, 0L, 1L, 0}, - { "ft_min_word_len", OPT_FT_MIN_WORD_LEN, "", (uchar**) &ft_min_word_len, - (uchar**) &ft_min_word_len, 0, GET_ULONG, REQUIRED_ARG, 4, 1, HA_FT_MAXCHARLEN, + { "decode_bits", OPT_DECODE_BITS, "", &decode_bits, + &decode_bits, 0, GET_UINT, REQUIRED_ARG, 9L, 4L, 17L, 0L, 1L, 0}, + { "ft_min_word_len", OPT_FT_MIN_WORD_LEN, "", &ft_min_word_len, + &ft_min_word_len, 0, GET_ULONG, REQUIRED_ARG, 4, 1, HA_FT_MAXCHARLEN, 0, 1, 0}, - { "ft_max_word_len", OPT_FT_MAX_WORD_LEN, "", (uchar**) &ft_max_word_len, - (uchar**) &ft_max_word_len, 0, GET_ULONG, REQUIRED_ARG, HA_FT_MAXCHARLEN, 10, + { "ft_max_word_len", OPT_FT_MAX_WORD_LEN, "", &ft_max_word_len, + &ft_max_word_len, 0, GET_ULONG, REQUIRED_ARG, HA_FT_MAXCHARLEN, 10, HA_FT_MAXCHARLEN, 0, 1, 0}, { "ft_stopword_file", OPT_FT_STOPWORD_FILE, "Use stopwords from this file instead of built-in list.", - (uchar**) &ft_stopword_file, (uchar**) &ft_stopword_file, 0, GET_STR, + &ft_stopword_file, &ft_stopword_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"stats_method", OPT_STATS_METHOD, "Specifies how index statistics collection code should treat NULLs. " "Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), " "\"nulls_equal\" (emulate 4.0 behavior), and \"nulls_ignored\".", - (uchar**) &myisam_stats_method_str, (uchar**) &myisam_stats_method_str, 0, + &myisam_stats_method_str, &myisam_stats_method_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/storage/myisam/myisamlog.c b/storage/myisam/myisamlog.c index fafb5140a5e..7e0d0a442a5 100644 --- a/storage/myisam/myisamlog.c +++ b/storage/myisam/myisamlog.c @@ -382,18 +382,18 @@ static int examine_log(char * file_name, char **table_names) curr_file_info->show_name); if (my_b_read(&cache,(uchar*) head,2)) goto err; + buff= 0; file_info.name=0; file_info.show_name=0; file_info.record=0; - if (read_string(&cache,(uchar**) &file_info.name, - (uint) mi_uint2korr(head))) + if (read_string(&cache, &buff, (uint) mi_uint2korr(head))) goto err; { uint i; char *pos,*to; /* Fix if old DOS files to new format */ - for (pos=file_info.name; (pos=strchr(pos,'\\')) ; pos++) + for (pos=file_info.name=(char*)buff; (pos=strchr(pos,'\\')) ; pos++) *pos= '/'; pos=file_info.name; @@ -692,7 +692,7 @@ static int read_string(IO_CACHE *file, register uchar* *to, register uint length *to= 0; DBUG_RETURN(1); } - *((char*) *to+length)= '\0'; + *((uchar*) *to+length)= '\0'; DBUG_RETURN (0); } /* read_string */ diff --git a/storage/myisam/myisampack.c b/storage/myisam/myisampack.c index 908c32e48d3..5fcfbae8f8f 100644 --- a/storage/myisam/myisampack.c +++ b/storage/myisam/myisampack.c @@ -257,10 +257,10 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"backup", 'b', "Make a backup of the table as table_name.OLD.", - (uchar**) &backup, (uchar**) &backup, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + &backup, &backup, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR_MP, - "Directory where character sets are.", (uchar**) &charsets_dir, - (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory where character sets are.", &charsets_dir, + &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"force", 'f', @@ -268,7 +268,7 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"join", 'j', "Join all given tables into 'new_table_name'. All tables MUST have identical layouts.", - (uchar**) &join_table, (uchar**) &join_table, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, + &join_table, &join_table, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -282,8 +282,8 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"wait", 'w', "Wait and retry if table is in use.", (uchar**) &opt_wait, - (uchar**) &opt_wait, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"wait", 'w', "Wait and retry if table is in use.", &opt_wait, + &opt_wait, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/strings/decimal.c b/strings/decimal.c index 282e7cae8ab..d6c33baf713 100644 --- a/strings/decimal.c +++ b/strings/decimal.c @@ -971,7 +971,7 @@ int decimal2double(decimal_t *from, double *to) *to= from->sign ? -result : result; - DBUG_PRINT("info", ("result: %f (%lx)", *to, *(ulong *)to)); + DBUG_PRINT("info", ("result: %f", *to)); return E_DEC_OK; } diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 43ba2222650..a15b6164d0c 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -18220,17 +18220,17 @@ static char **defaults_argv; static struct my_option client_test_long_options[] = { - {"basedir", 'b', "Basedir for tests.", (uchar**) &opt_basedir, - (uchar**) &opt_basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"count", 't', "Number of times test to be executed", (uchar **) &opt_count, - (uchar **) &opt_count, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0}, - {"database", 'D', "Database to use", (uchar **) &opt_db, (uchar **) &opt_db, + {"basedir", 'b', "Basedir for tests.", &opt_basedir, + &opt_basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"count", 't', "Number of times test to be executed", &opt_count, + &opt_count, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0}, + {"database", 'D', "Database to use", &opt_db, &opt_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"debug", '#', "Output debug log", (uchar**) &default_dbug_option, - (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"debug", '#', "Output debug log", &default_dbug_option, + &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"help", '?', "Display this help and exit", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"host", 'h', "Connect to host", (uchar **) &opt_host, (uchar **) &opt_host, + {"host", 'h', "Connect to host", &opt_host, &opt_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"password", 'p', "Password to use when connecting to server. If password is not given it's asked from the tty.", @@ -18241,8 +18241,7 @@ static struct my_option client_test_long_options[] = "/etc/services, " #endif "built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").", - (uchar **) &opt_port, - (uchar **) &opt_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + &opt_port, &opt_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"server-arg", 'A', "Send embedded server this as a parameter.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"show-tests", 'T', "Show all tests' names", 0, 0, 0, GET_NO_ARG, NO_ARG, @@ -18251,23 +18250,23 @@ static struct my_option client_test_long_options[] = 0}, #ifdef HAVE_SMEM {"shared-memory-base-name", 'm', "Base name of shared memory.", - (uchar**) &shared_memory_base_name, (uchar**)&shared_memory_base_name, 0, + &shared_memory_base_name, (uchar**)&shared_memory_base_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif {"socket", 'S', "Socket file to use for connection", - (uchar **) &opt_unix_socket, (uchar **) &opt_unix_socket, 0, GET_STR, + &opt_unix_socket, &opt_unix_socket, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"testcase", 'c', "May disable some code when runs as mysql-test-run testcase.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DONT_ALLOW_USER_CHANGE - {"user", 'u', "User for login if not current user", (uchar **) &opt_user, - (uchar **) &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"user", 'u', "User for login if not current user", &opt_user, + &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"vardir", 'v', "Data dir for tests.", (uchar**) &opt_vardir, - (uchar**) &opt_vardir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"vardir", 'v', "Data dir for tests.", &opt_vardir, + &opt_vardir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"getopt-ll-test", 'g', "Option for testing bug in getopt library", - (uchar **) &opt_getopt_ll_test, (uchar **) &opt_getopt_ll_test, 0, + &opt_getopt_ll_test, &opt_getopt_ll_test, 0, GET_LL, REQUIRED_ARG, 0, 0, LONGLONG_MAX, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; From 0f9ddfa9d8bb8d071266bcc63e92813cf18ccd2b Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Thu, 10 Jun 2010 17:45:22 -0300 Subject: [PATCH 152/461] Bug#42733: Type-punning warnings when compiling MySQL -- strict aliasing violations. One somewhat major source of strict-aliasing violations and related warnings is the SQL_LIST structure. For example, consider its member function `link_in_list` which takes a pointer to pointer of type T (any type) as a pointer to pointer to unsigned char. Dereferencing this pointer, which is done to reset the next field, violates strict-aliasing rules and might cause problems for surrounding code that uses the next field of the object being added to the list. The solution is to use templates to parametrize the SQL_LIST structure in order to deference the pointers with compatible types. As a side bonus, it becomes possible to remove quite a few casts related to acessing data members of SQL_LIST. sql/handler.h: Use the appropriate template type argument. sql/item.cc: Remove now-unnecessary cast. sql/item_subselect.cc: Remove now-unnecessary casts. sql/item_sum.cc: Use the appropriate template type argument. Remove now-unnecessary cast. sql/mysql_priv.h: Move SQL_LIST structure to sql_list.h Use the appropriate template type argument. sql/sp.cc: Remove now-unnecessary casts. sql/sql_delete.cc: Use the appropriate template type argument. Remove now-unnecessary casts. sql/sql_derived.cc: Remove now-unnecessary casts. sql/sql_lex.cc: Remove now-unnecessary casts. sql/sql_lex.h: SQL_LIST now takes a template type argument which must match the type of the elements of the list. Use forward declaration when the type is not available, it is used in pointers anyway. sql/sql_list.h: Rename SQL_LIST to SQL_I_List. The template parameter is the type of object that is stored in the list. sql/sql_olap.cc: Remove now-unnecessary casts. sql/sql_parse.cc: Remove now-unnecessary casts. sql/sql_prepare.cc: Remove now-unnecessary casts. sql/sql_select.cc: Remove now-unnecessary casts. sql/sql_show.cc: Remove now-unnecessary casts. sql/sql_table.cc: Remove now-unnecessary casts. sql/sql_trigger.cc: Remove now-unnecessary casts. sql/sql_union.cc: Remove now-unnecessary casts. sql/sql_update.cc: Remove now-unnecessary casts. sql/sql_view.cc: Remove now-unnecessary casts. sql/sql_yacc.yy: Remove now-unnecessary casts. storage/myisammrg/ha_myisammrg.cc: Remove now-unnecessary casts. --- sql/handler.h | 2 +- sql/item.cc | 2 +- sql/item_subselect.cc | 17 ++++---- sql/item_sum.cc | 4 +- sql/item_sum.h | 2 +- sql/mysql_priv.h | 47 +--------------------- sql/sp.cc | 24 +++++------ sql/sql_delete.cc | 10 ++--- sql/sql_derived.cc | 6 +-- sql/sql_lex.cc | 19 +++++---- sql/sql_lex.h | 23 ++++++----- sql/sql_list.h | 67 +++++++++++++++++++++++++++++++ sql/sql_olap.cc | 4 +- sql/sql_parse.cc | 60 +++++++++++++-------------- sql/sql_prepare.cc | 17 ++++---- sql/sql_select.cc | 20 ++++----- sql/sql_show.cc | 5 +-- sql/sql_table.cc | 2 +- sql/sql_trigger.cc | 7 ++-- sql/sql_union.cc | 38 +++++++++--------- sql/sql_update.cc | 8 ++-- sql/sql_view.cc | 7 ++-- sql/sql_yacc.yy | 27 +++++-------- sql/table.h | 2 +- storage/myisammrg/ha_myisammrg.cc | 6 +-- 25 files changed, 216 insertions(+), 210 deletions(-) diff --git a/sql/handler.h b/sql/handler.h index d9dfd4f0707..aa74ca19468 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -910,7 +910,7 @@ typedef struct st_ha_create_information ulong avg_row_length; ulong used_fields; ulong key_block_size; - SQL_LIST merge_list; + SQL_I_List merge_list; handlerton *db_type; /** Row type of the table definition. diff --git a/sql/item.cc b/sql/item.cc index 2175a579f4a..5f0ca4374df 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -3841,7 +3841,7 @@ resolve_ref_in_select_and_group(THD *thd, Item_ident *ref, SELECT_LEX *select) { Item **group_by_ref= NULL; Item **select_ref= NULL; - ORDER *group_list= (ORDER*) select->group_list.first; + ORDER *group_list= select->group_list.first; bool ambiguous_fields= FALSE; uint counter; enum_resolution_type resolution; diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index f3fcbc4db68..b93ea6f241b 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -244,12 +244,12 @@ bool Item_subselect::walk(Item_processor processor, bool walk_subquery, if (item->walk(processor, walk_subquery, argument)) return 1; } - for (order= (ORDER*) lex->order_list.first ; order; order= order->next) + for (order= lex->order_list.first ; order; order= order->next) { if ((*order->item)->walk(processor, walk_subquery, argument)) return 1; } - for (order= (ORDER*) lex->group_list.first ; order; order= order->next) + for (order= lex->group_list.first ; order; order= order->next) { if ((*order->item)->walk(processor, walk_subquery, argument)) return 1; @@ -1781,15 +1781,15 @@ int subselect_single_select_engine::prepare() SELECT_LEX *save_select= thd->lex->current_select; thd->lex->current_select= select_lex; if (join->prepare(&select_lex->ref_pointer_array, - (TABLE_LIST*) select_lex->table_list.first, + select_lex->table_list.first, select_lex->with_wild, select_lex->where, select_lex->order_list.elements + select_lex->group_list.elements, - (ORDER*) select_lex->order_list.first, - (ORDER*) select_lex->group_list.first, + select_lex->order_list.first, + select_lex->group_list.first, select_lex->having, - (ORDER*) 0, select_lex, + NULL, select_lex, select_lex->master_unit())) return 1; thd->lex->current_select= save_select; @@ -2450,14 +2450,13 @@ table_map subselect_engine::calc_const_tables(TABLE_LIST *table) table_map subselect_single_select_engine::upper_select_const_tables() { - return calc_const_tables((TABLE_LIST *) select_lex->outer_select()-> - leaf_tables); + return calc_const_tables(select_lex->outer_select()->leaf_tables); } table_map subselect_union_engine::upper_select_const_tables() { - return calc_const_tables((TABLE_LIST *) unit->outer_select()->leaf_tables); + return calc_const_tables(unit->outer_select()->leaf_tables); } diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 8c1e5501a1b..228e36fc9f9 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -2969,7 +2969,7 @@ int dump_leaf_key(uchar* key, element_count count __attribute__((unused)), Item_func_group_concat:: Item_func_group_concat(Name_resolution_context *context_arg, bool distinct_arg, List *select_list, - SQL_LIST *order_list, String *separator_arg) + SQL_I_List *order_list, String *separator_arg) :tmp_table_param(0), warning(0), separator(separator_arg), tree(0), unique_filter(NULL), table(0), order(0), context(context_arg), @@ -3013,7 +3013,7 @@ Item_func_group_concat(Name_resolution_context *context_arg, if (arg_count_order) { ORDER **order_ptr= order; - for (ORDER *order_item= (ORDER*) order_list->first; + for (ORDER *order_item= order_list->first; order_item != NULL; order_item= order_item->next) { diff --git a/sql/item_sum.h b/sql/item_sum.h index 5e3972698e9..fe05858ab1d 100644 --- a/sql/item_sum.h +++ b/sql/item_sum.h @@ -1221,7 +1221,7 @@ class Item_func_group_concat : public Item_sum public: Item_func_group_concat(Name_resolution_context *context_arg, bool is_distinct, List *is_select, - SQL_LIST *is_order, String *is_separator); + SQL_I_List *is_order, String *is_separator); Item_func_group_concat(THD *thd, Item_func_group_concat *item); ~Item_func_group_concat(); diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 44694c59447..88f3763ef50 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -641,49 +641,6 @@ enum enum_check_fields CHECK_FIELD_ERROR_FOR_NULL }; - -/** Struct to handle simple linked lists. */ -typedef struct st_sql_list { - uint elements; - uchar *first; - uchar **next; - - st_sql_list() {} /* Remove gcc warning */ - inline void empty() - { - elements=0; - first=0; - next= &first; - } - inline void link_in_list(uchar *element,uchar **next_ptr) - { - elements++; - (*next)=element; - next= next_ptr; - *next=0; - } - inline void save_and_clear(struct st_sql_list *save) - { - *save= *this; - empty(); - } - inline void push_front(struct st_sql_list *save) - { - *save->next= first; /* link current list last */ - first= save->first; - elements+= save->elements; - } - inline void push_back(struct st_sql_list *save) - { - if (save->first) - { - *next= save->first; - next= save->next; - elements+= save->elements; - } - } -} SQL_LIST; - #if defined(MYSQL_DYNAMIC_PLUGIN) && defined(_WIN32) extern "C" THD *_current_thd_noinline(); #define _current_thd() _current_thd_noinline() @@ -1262,7 +1219,7 @@ int check_that_all_fields_are_given_values(THD *thd, TABLE *entry, void prepare_triggers_for_insert_stmt(TABLE *table); int mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds); bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, - SQL_LIST *order, ha_rows rows, ulonglong options, + SQL_I_List *order, ha_rows rows, ulonglong options, bool reset_auto_increment); bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok); bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create); @@ -1462,7 +1419,7 @@ Create_field * new_create_field(THD *thd, char *field_name, enum_field_types typ List *interval_list, CHARSET_INFO *cs, uint uint_geom_type); void store_position_for_column(const char *name); -bool add_to_list(THD *thd, SQL_LIST &list,Item *group,bool asc); +bool add_to_list(THD *thd, SQL_I_List &list, Item *group,bool asc); bool push_new_name_resolution_context(THD *thd, TABLE_LIST *left_op, TABLE_LIST *right_op); diff --git a/sql/sp.cc b/sql/sp.cc index ef69edb96c6..e0c1fcfa378 100644 --- a/sql/sp.cc +++ b/sql/sp.cc @@ -1630,8 +1630,7 @@ extern "C" uchar* sp_sroutine_key(const uchar *ptr, size_t *plen, void sp_get_prelocking_info(THD *thd, bool *need_prelocking, bool *first_no_prelocking) { - Sroutine_hash_entry *routine; - routine= (Sroutine_hash_entry*)thd->lex->sroutines_list.first; + Sroutine_hash_entry *routine= thd->lex->sroutines_list.first; DBUG_ASSERT(routine); bool first_is_procedure= (routine->key.str[0] == TYPE_ENUM_PROCEDURE); @@ -1694,7 +1693,7 @@ static bool add_used_routine(LEX *lex, Query_arena *arena, memcpy(rn->key.str, key->str, key->length + 1); if (my_hash_insert(&lex->sroutines, (uchar *)rn)) return FALSE; - lex->sroutines_list.link_in_list((uchar *)rn, (uchar **)&rn->next); + lex->sroutines_list.link_in_list(rn, &rn->next); rn->belong_to_view= belong_to_view; return TRUE; } @@ -1740,7 +1739,7 @@ void sp_add_used_routine(LEX *lex, Query_arena *arena, void sp_remove_not_own_routines(LEX *lex) { Sroutine_hash_entry *not_own_rt, *next_rt; - for (not_own_rt= *(Sroutine_hash_entry **)lex->sroutines_list_own_last; + for (not_own_rt= *lex->sroutines_list_own_last; not_own_rt; not_own_rt= next_rt) { /* @@ -1751,7 +1750,7 @@ void sp_remove_not_own_routines(LEX *lex) hash_delete(&lex->sroutines, (uchar *)not_own_rt); } - *(Sroutine_hash_entry **)lex->sroutines_list_own_last= NULL; + *lex->sroutines_list_own_last= NULL; lex->sroutines_list.next= lex->sroutines_list_own_last; lex->sroutines_list.elements= lex->sroutines_list_own_elements; } @@ -1832,11 +1831,11 @@ sp_update_stmt_used_routines(THD *thd, LEX *lex, HASH *src, It will also add elements to end of 'LEX::sroutines_list' list. */ -static void sp_update_stmt_used_routines(THD *thd, LEX *lex, SQL_LIST *src, +static void sp_update_stmt_used_routines(THD *thd, LEX *lex, + SQL_I_List *src, TABLE_LIST *belong_to_view) { - for (Sroutine_hash_entry *rt= (Sroutine_hash_entry *)src->first; - rt; rt= rt->next) + for (Sroutine_hash_entry *rt= src->first; rt; rt= rt->next) (void)add_used_routine(lex, thd->stmt_arena, &rt->key, belong_to_view); } @@ -1971,8 +1970,7 @@ int sp_cache_routines_and_add_tables(THD *thd, LEX *lex, bool first_no_prelock) { return sp_cache_routines_and_add_tables_aux(thd, lex, - (Sroutine_hash_entry *)lex->sroutines_list.first, - first_no_prelock); + lex->sroutines_list.first, first_no_prelock); } @@ -1996,8 +1994,7 @@ sp_cache_routines_and_add_tables(THD *thd, LEX *lex, bool first_no_prelock) int sp_cache_routines_and_add_tables_for_view(THD *thd, LEX *lex, TABLE_LIST *view) { - Sroutine_hash_entry **last_cached_routine_ptr= - (Sroutine_hash_entry **)lex->sroutines_list.next; + Sroutine_hash_entry **last_cached_routine_ptr= lex->sroutines_list.next; sp_update_stmt_used_routines(thd, lex, &view->view->sroutines_list, view->top_table()); return sp_cache_routines_and_add_tables_aux(thd, lex, @@ -2026,8 +2023,7 @@ sp_cache_routines_and_add_tables_for_triggers(THD *thd, LEX *lex, { int ret= 0; - Sroutine_hash_entry **last_cached_routine_ptr= - (Sroutine_hash_entry **)lex->sroutines_list.next; + Sroutine_hash_entry **last_cached_routine_ptr= lex->sroutines_list.next; if (static_cast(table->lock_type) >= static_cast(TL_WRITE_ALLOW_WRITE)) diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 07421ca55a6..eb0fd4b5332 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -33,7 +33,7 @@ */ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, - SQL_LIST *order, ha_rows limit, ulonglong options, + SQL_I_List *order, ha_rows limit, ulonglong options, bool reset_auto_increment) { bool will_batch; @@ -84,7 +84,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, if (select_lex->setup_ref_array(thd, order->elements) || setup_order(thd, select_lex->ref_pointer_array, &tables, - fields, all_fields, (ORDER*) order->first)) + fields, all_fields, order->first)) { delete select; free_underlaid_joins(thd, &thd->lex->select_lex); @@ -230,14 +230,14 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, ha_rows examined_rows; if ((!select || table->quick_keys.is_clear_all()) && limit != HA_POS_ERROR) - usable_index= get_index_for_order(table, (ORDER*)(order->first), limit); + usable_index= get_index_for_order(table, order->first, limit); if (usable_index == MAX_KEY) { table->sort.io_cache= (IO_CACHE *) my_malloc(sizeof(IO_CACHE), MYF(MY_FAE | MY_ZEROFILL)); - if (!(sortorder= make_unireg_sortorder((ORDER*) order->first, + if (!(sortorder= make_unireg_sortorder(order->first, &length, NULL)) || (table->sort.found_records = filesort(thd, table, sortorder, length, select, HA_POS_ERROR, 1, @@ -547,7 +547,7 @@ extern "C" int refpos_order_cmp(void* arg, const void *a,const void *b) int mysql_multi_delete_prepare(THD *thd) { LEX *lex= thd->lex; - TABLE_LIST *aux_tables= (TABLE_LIST *)lex->auxiliary_table_list.first; + TABLE_LIST *aux_tables= lex->auxiliary_table_list.first; TABLE_LIST *target_tbl; DBUG_ENTER("mysql_multi_delete_prepare"); diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc index 37adf5c403a..782589f7d0f 100644 --- a/sql/sql_derived.cc +++ b/sql/sql_derived.cc @@ -281,13 +281,13 @@ bool mysql_derived_filling(THD *thd, LEX *lex, TABLE_LIST *orig_table_list) lex->current_select= first_select; res= mysql_select(thd, &first_select->ref_pointer_array, - (TABLE_LIST*) first_select->table_list.first, + first_select->table_list.first, first_select->with_wild, first_select->item_list, first_select->where, (first_select->order_list.elements+ first_select->group_list.elements), - (ORDER *) first_select->order_list.first, - (ORDER *) first_select->group_list.first, + first_select->order_list.first, + first_select->group_list.first, first_select->having, (ORDER*) NULL, (first_select->options | thd->options | SELECT_NO_UNLOCK), diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index a3776f59241..7eb2607147c 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1641,7 +1641,7 @@ void st_select_lex::init_select() linkage= UNSPECIFIED_TYPE; order_list.elements= 0; order_list.first= 0; - order_list.next= (uchar**) &order_list.first; + order_list.next= &order_list.first; /* Set limit and offset to default values */ select_limit= 0; /* denotes the default limit = HA_POS_ERROR */ offset_limit= 0; /* denotes the default offset = 0 */ @@ -1963,7 +1963,7 @@ uint st_select_lex::get_in_sum_expr() TABLE_LIST* st_select_lex::get_table_list() { - return (TABLE_LIST*) table_list.first; + return table_list.first; } List* st_select_lex::get_item_list() @@ -2020,9 +2020,8 @@ void st_select_lex_unit::print(String *str, enum_query_type query_type) if (fake_select_lex->order_list.elements) { str->append(STRING_WITH_LEN(" order by ")); - fake_select_lex->print_order( - str, - (ORDER *) fake_select_lex->order_list.first, + fake_select_lex->print_order(str, + fake_select_lex->order_list.first, query_type); } fake_select_lex->print_limit(thd, str, query_type); @@ -2667,7 +2666,7 @@ TABLE_LIST *st_lex::unlink_first_table(bool *link_to_local) { select_lex.context.table_list= select_lex.context.first_name_resolution_table= first->next_local; - select_lex.table_list.first= (uchar*) (first->next_local); + select_lex.table_list.first= first->next_local; select_lex.table_list.elements--; //safety first->next_local= 0; /* @@ -2699,7 +2698,7 @@ TABLE_LIST *st_lex::unlink_first_table(bool *link_to_local) void st_lex::first_lists_tables_same() { - TABLE_LIST *first_table= (TABLE_LIST*) select_lex.table_list.first; + TABLE_LIST *first_table= select_lex.table_list.first; if (query_tables != first_table && first_table != 0) { TABLE_LIST *next; @@ -2746,9 +2745,9 @@ void st_lex::link_first_table_back(TABLE_LIST *first, if (link_to_local) { - first->next_local= (TABLE_LIST*) select_lex.table_list.first; + first->next_local= select_lex.table_list.first; select_lex.context.table_list= first; - select_lex.table_list.first= (uchar*) first; + select_lex.table_list.first= first; select_lex.table_list.elements++; //safety } } @@ -2914,7 +2913,7 @@ void st_select_lex::fix_prepare_information(THD *thd, Item **conds, prep_having= *having_conds; *having_conds= having= prep_having->copy_andor_structure(thd); } - fix_prepare_info_in_table_list(thd, (TABLE_LIST *)table_list.first); + fix_prepare_info_in_table_list(thd, table_list.first); } } diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 54eefa22a59..fb011f05f08 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -587,8 +587,8 @@ public: st_lex *parent_lex; enum olap_type olap; /* FROM clause - points to the beginning of the TABLE_LIST::next_local list. */ - SQL_LIST table_list; - SQL_LIST group_list; /* GROUP BY clause. */ + SQL_I_List table_list; + SQL_I_List group_list; /* GROUP BY clause. */ List item_list; /* list of fields & expressions */ List interval_list; bool is_item_list_lookup; @@ -610,8 +610,8 @@ public: TABLE_LIST *leaf_tables; const char *type; /* type of select for EXPLAIN */ - SQL_LIST order_list; /* ORDER clause */ - SQL_LIST *gorder_list; + SQL_I_List order_list; /* ORDER clause */ + SQL_I_List *gorder_list; Item *select_limit, *offset_limit; /* LIMIT clause parameters */ // Arrays of pointers to top elements of all_fields list Item **ref_pointer_array; @@ -774,7 +774,7 @@ public: { order_list.elements= 0; order_list.first= 0; - order_list.next= (uchar**) &order_list.first; + order_list.next= &order_list.first; } /* This method created for reiniting LEX in mysql_admin_table() and can be @@ -953,6 +953,8 @@ enum xa_option_words {XA_NONE, XA_JOIN, XA_RESUME, XA_ONE_PHASE, XA_SUSPEND, XA_FOR_MIGRATE}; +struct Sroutine_hash_entry; + /* Class representing list of all tables used by statement. It also contains information about stored functions used by statement @@ -993,9 +995,9 @@ public: We use these two members for restoring of 'sroutines_list' to the state in which it was right after query parsing. */ - SQL_LIST sroutines_list; - uchar **sroutines_list_own_last; - uint sroutines_list_own_elements; + SQL_I_List sroutines_list; + Sroutine_hash_entry **sroutines_list_own_last; + uint sroutines_list_own_elements; /* These constructor and destructor serve for creation/destruction @@ -1599,7 +1601,8 @@ typedef struct st_lex : public Query_tables_list */ List context_stack; - SQL_LIST proc_list, auxiliary_table_list, save_list; + SQL_I_List proc_list; + SQL_I_List auxiliary_table_list, save_list; Create_field *last_field; Item_sum *in_sum_func; udf_func udf; @@ -1721,7 +1724,7 @@ typedef struct st_lex : public Query_tables_list fields to TABLE object at table open (altough for latter pointer to table being opened is probably enough). */ - SQL_LIST trg_table_fields; + SQL_I_List trg_table_fields; /* stmt_definition_begin is intended to point to the next word after diff --git a/sql/sql_list.h b/sql/sql_list.h index 22df77afeb3..3e0ba2b2ede 100644 --- a/sql/sql_list.h +++ b/sql/sql_list.h @@ -55,6 +55,73 @@ public: }; +/** + Simple intrusive linked list. + + @remark Similar in nature to base_list, but intrusive. It keeps a + a pointer to the first element in the list and a indirect + reference to the last element. +*/ +template +class SQL_I_List :public Sql_alloc +{ +public: + uint elements; + /** The first element in the list. */ + T *first; + /** A reference to the next element in the list. */ + T **next; + + SQL_I_List() { empty(); } + + SQL_I_List(const SQL_I_List &tmp) + { + elements= tmp.elements; + first= tmp.first; + next= elements ? tmp.next : &first; + } + + inline void empty() + { + elements= 0; + first= NULL; + next= &first; + } + + inline void link_in_list(T *element, T **next_ptr) + { + elements++; + (*next)= element; + next= next_ptr; + *next= NULL; + } + + inline void save_and_clear(SQL_I_List *save) + { + *save= *this; + empty(); + } + + inline void push_front(SQL_I_List *save) + { + /* link current list last */ + *save->next= first; + first= save->first; + elements+= save->elements; + } + + inline void push_back(SQL_I_List *save) + { + if (save->first) + { + *next= save->first; + next= save->next; + elements+= save->elements; + } + } +}; + + /* Basic single linked list Used for item and item_buffs. diff --git a/sql/sql_olap.cc b/sql/sql_olap.cc index dccfcbaf8ac..21deef8c664 100644 --- a/sql/sql_olap.cc +++ b/sql/sql_olap.cc @@ -146,14 +146,14 @@ int handle_olaps(LEX *lex, SELECT_LEX *select_lex) lex->last_selects=select_lex; - for (ORDER *order=(ORDER *)select_lex->group_list.first ; order ; order=order->next) + for (ORDER *order= select_lex->group_list.first ; order ; order=order->next) item_list_copy.push_back(*(order->item)); List all_fields(select_lex->item_list); if (setup_tables(lex->thd, &select_lex->context, &select_lex->top_join_list, - (TABLE_LIST *)select_lex->table_list.first + select_lex->table_list.first &select_lex->leaf_tables, FALSE) || setup_fields(lex->thd, 0, select_lex->item_list, MARK_COLUMNS_READ, &all_fields,1) || diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 6603aa55d03..c4963914036 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1368,8 +1368,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd, mysql_reset_thd_for_next_command(thd); thd->lex-> - select_lex.table_list.link_in_list((uchar*) &table_list, - (uchar**) &table_list.next_local); + select_lex.table_list.link_in_list(&table_list, + &table_list.next_local); thd->lex->add_to_query_tables(&table_list); /* switch on VIEW optimisation: do not fill temporary tables */ @@ -1845,7 +1845,7 @@ int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident, { DBUG_RETURN(1); } - TABLE_LIST *table_list= (TABLE_LIST*) select_lex->table_list.first; + TABLE_LIST *table_list= select_lex->table_list.first; table_list->schema_select_lex= schema_select_lex; table_list->schema_table_reformed= 1; DBUG_RETURN(0); @@ -2041,7 +2041,7 @@ mysql_execute_command(THD *thd) /* first SELECT_LEX (have special meaning for many of non-SELECTcommands) */ SELECT_LEX *select_lex= &lex->select_lex; /* first table of first SELECT_LEX */ - TABLE_LIST *first_table= (TABLE_LIST*) select_lex->table_list.first; + TABLE_LIST *first_table= select_lex->table_list.first; /* list of all tables in query */ TABLE_LIST *all_tables; /* most outer SELECT_LEX_UNIT of query */ @@ -2076,7 +2076,7 @@ mysql_execute_command(THD *thd) all_tables= lex->query_tables; /* set context for commands which do not use setup_tables */ select_lex-> - context.resolve_in_table_list_only((TABLE_LIST*)select_lex-> + context.resolve_in_table_list_only(select_lex-> table_list.first); /* @@ -2417,7 +2417,7 @@ mysql_execute_command(THD *thd) goto error; /* purecov: inspected */ thd->enable_slow_log= opt_log_slow_admin_statements; res = mysql_backup_table(thd, first_table); - select_lex->table_list.first= (uchar*) first_table; + select_lex->table_list.first= first_table; lex->query_tables=all_tables; break; } @@ -2429,7 +2429,7 @@ mysql_execute_command(THD *thd) goto error; /* purecov: inspected */ thd->enable_slow_log= opt_log_slow_admin_statements; res = mysql_restore_table(thd, first_table); - select_lex->table_list.first= (uchar*) first_table; + select_lex->table_list.first= first_table; lex->query_tables=all_tables; break; } @@ -2723,7 +2723,7 @@ mysql_execute_command(THD *thd) if (create_info.used_fields & HA_CREATE_USED_UNION) { TABLE_LIST *tab; - for (tab= (TABLE_LIST*) create_info.merge_list.first; + for (tab= create_info.merge_list.first; tab; tab= tab->next_local) { @@ -2893,7 +2893,6 @@ end_with_restore_list: check_access(thd,INSERT_ACL | CREATE_ACL,select_lex->db,&priv,0,0, is_schema_db(select_lex->db))|| check_merge_table_access(thd, first_table->db, - (TABLE_LIST *) create_info.merge_list.first)) goto error; /* purecov: inspected */ if (check_grant(thd, priv_needed, all_tables, 0, UINT_MAX, 0)) @@ -3028,7 +3027,7 @@ end_with_restore_list: */ res= write_bin_log(thd, TRUE, thd->query(), thd->query_length()); } - select_lex->table_list.first= (uchar*) first_table; + select_lex->table_list.first= first_table; lex->query_tables=all_tables; break; } @@ -3040,7 +3039,7 @@ end_with_restore_list: goto error; /* purecov: inspected */ thd->enable_slow_log= opt_log_slow_admin_statements; res = mysql_check_table(thd, first_table, &lex->check_opt); - select_lex->table_list.first= (uchar*) first_table; + select_lex->table_list.first= first_table; lex->query_tables=all_tables; break; } @@ -3060,7 +3059,7 @@ end_with_restore_list: */ res= write_bin_log(thd, TRUE, thd->query(), thd->query_length()); } - select_lex->table_list.first= (uchar*) first_table; + select_lex->table_list.first= first_table; lex->query_tables=all_tables; break; } @@ -3083,7 +3082,7 @@ end_with_restore_list: */ res= write_bin_log(thd, TRUE, thd->query(), thd->query_length()); } - select_lex->table_list.first= (uchar*) first_table; + select_lex->table_list.first= first_table; lex->query_tables=all_tables; break; } @@ -3101,7 +3100,7 @@ end_with_restore_list: lex->value_list, select_lex->where, select_lex->order_list.elements, - (ORDER *) select_lex->order_list.first, + select_lex->order_list.first, unit->select_limit_cnt, lex->duplicates, lex->ignore)); /* mysql_update return 2 if we need to switch to multi-update */ @@ -3261,7 +3260,7 @@ end_with_restore_list: { /* Skip first table, which is the table we are inserting in */ TABLE_LIST *second_table= first_table->next_local; - select_lex->table_list.first= (uchar*) second_table; + select_lex->table_list.first= second_table; select_lex->context.table_list= select_lex->context.first_name_resolution_table= second_table; res= mysql_insert_select_prepare(thd); @@ -3292,7 +3291,7 @@ end_with_restore_list: delete sel_result; } /* revert changes for SP */ - select_lex->table_list.first= (uchar*) first_table; + select_lex->table_list.first= first_table; } /* @@ -3354,8 +3353,7 @@ end_with_restore_list: case SQLCOM_DELETE_MULTI: { DBUG_ASSERT(first_table == all_tables && first_table != 0); - TABLE_LIST *aux_tables= - (TABLE_LIST *)thd->lex->auxiliary_table_list.first; + TABLE_LIST *aux_tables= thd->lex->auxiliary_table_list.first; multi_delete *del_result; if (!thd->locked_tables && @@ -5363,7 +5361,7 @@ static bool check_show_access(THD *thd, TABLE_LIST *table) case SCH_STATISTICS: { TABLE_LIST *dst_table; - dst_table= (TABLE_LIST *) table->schema_select_lex->table_list.first; + dst_table= table->schema_select_lex->table_list.first; DBUG_ASSERT(dst_table); @@ -6062,7 +6060,7 @@ bool mysql_test_parse_for_slave(THD *thd, char *inBuf, uint length) mysql_reset_thd_for_next_command(thd); if (!parse_sql(thd, & parser_state, NULL) && - all_tables_not_ok(thd,(TABLE_LIST*) lex->select_lex.table_list.first)) + all_tables_not_ok(thd, lex->select_lex.table_list.first)) error= 1; /* Ignore question */ thd->end_statement(); thd->cleanup_after_query(); @@ -6200,7 +6198,7 @@ add_proc_to_list(THD* thd, Item *item) *item_ptr= item; order->item=item_ptr; order->free_me=0; - thd->lex->proc_list.link_in_list((uchar*) order,(uchar**) &order->next); + thd->lex->proc_list.link_in_list(order, &order->next); return 0; } @@ -6209,7 +6207,7 @@ add_proc_to_list(THD* thd, Item *item) save order by and tables in own lists. */ -bool add_to_list(THD *thd, SQL_LIST &list,Item *item,bool asc) +bool add_to_list(THD *thd, SQL_I_List &list, Item *item,bool asc) { ORDER *order; DBUG_ENTER("add_to_list"); @@ -6221,7 +6219,7 @@ bool add_to_list(THD *thd, SQL_LIST &list,Item *item,bool asc) order->free_me=0; order->used=0; order->counter_used= 0; - list.link_in_list((uchar*) order,(uchar**) &order->next); + list.link_in_list(order, &order->next); DBUG_RETURN(0); } @@ -6335,7 +6333,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd, /* check that used name is unique */ if (lock_type != TL_IGNORE) { - TABLE_LIST *first_table= (TABLE_LIST*) table_list.first; + TABLE_LIST *first_table= table_list.first; if (lex->sql_command == SQLCOM_CREATE_VIEW) first_table= first_table ? first_table->next_local : NULL; for (TABLE_LIST *tables= first_table ; @@ -6377,7 +6375,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd, previous table reference to 'ptr'. Here we also add one element to the list 'table_list'. */ - table_list.link_in_list((uchar*) ptr, (uchar**) &ptr->next_local); + table_list.link_in_list(ptr, &ptr->next_local); ptr->next_name_resolution_table= NULL; /* Link table in global list (all used tables) */ lex->add_to_query_tables(ptr); @@ -6610,7 +6608,7 @@ void st_select_lex::set_lock_for_tables(thr_lock_type lock_type) DBUG_ENTER("set_lock_for_tables"); DBUG_PRINT("enter", ("lock_type: %d for_update: %d", lock_type, for_update)); - for (TABLE_LIST *tables= (TABLE_LIST*) table_list.first; + for (TABLE_LIST *tables= table_list.first; tables; tables= tables->next_local) { @@ -7302,8 +7300,7 @@ bool multi_update_precheck(THD *thd, TABLE_LIST *tables) bool multi_delete_precheck(THD *thd, TABLE_LIST *tables) { SELECT_LEX *select_lex= &thd->lex->select_lex; - TABLE_LIST *aux_tables= - (TABLE_LIST *)thd->lex->auxiliary_table_list.first; + TABLE_LIST *aux_tables= thd->lex->auxiliary_table_list.first; TABLE_LIST **save_query_tables_own_last= thd->lex->query_tables_own_last; DBUG_ENTER("multi_delete_precheck"); @@ -7349,13 +7346,13 @@ bool multi_delete_precheck(THD *thd, TABLE_LIST *tables) bool multi_delete_set_locks_and_link_aux_tables(LEX *lex) { - TABLE_LIST *tables= (TABLE_LIST*)lex->select_lex.table_list.first; + TABLE_LIST *tables= lex->select_lex.table_list.first; TABLE_LIST *target_tbl; DBUG_ENTER("multi_delete_set_locks_and_link_aux_tables"); lex->table_count= 0; - for (target_tbl= (TABLE_LIST *)lex->auxiliary_table_list.first; + for (target_tbl= lex->auxiliary_table_list.first; target_tbl; target_tbl= target_tbl->next_local) { lex->table_count++; @@ -7525,8 +7522,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables, &create_table->grant.privilege, 0, 0, test(create_table->schema_table)) || check_merge_table_access(thd, create_table->db, - (TABLE_LIST *) - lex->create_info.merge_list.first)) + lex->create_info.merge_list.first)) goto err; if (want_priv != CREATE_TMP_ACL && check_grant(thd, want_priv, create_table, 0, 1, 0)) diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 5979f2ca17e..4fe64732c72 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -1240,7 +1240,7 @@ static int mysql_test_update(Prepared_statement *stmt, if (mysql_prepare_update(thd, table_list, &select->where, select->order_list.elements, - (ORDER *) select->order_list.first)) + select->order_list.first)) goto error; #ifndef NO_EMBEDDED_ACCESS_CHECKS @@ -1746,11 +1746,10 @@ error: static int mysql_insert_select_prepare_tester(THD *thd) { SELECT_LEX *first_select= &thd->lex->select_lex; - TABLE_LIST *second_table= ((TABLE_LIST*)first_select->table_list.first)-> - next_local; + TABLE_LIST *second_table= first_select->table_list.first->next_local; /* Skip first table, which is the table we are inserting in */ - first_select->table_list.first= (uchar *) second_table; + first_select->table_list.first= second_table; thd->lex->select_lex.context.table_list= thd->lex->select_lex.context.first_name_resolution_table= second_table; @@ -1787,7 +1786,7 @@ static bool mysql_test_insert_select(Prepared_statement *stmt, return 1; /* store it, because mysql_insert_select_prepare_tester change it */ - first_local_table= (TABLE_LIST *)lex->select_lex.table_list.first; + first_local_table= lex->select_lex.table_list.first; DBUG_ASSERT(first_local_table != 0); res= @@ -1795,7 +1794,7 @@ static bool mysql_test_insert_select(Prepared_statement *stmt, &mysql_insert_select_prepare_tester, OPTION_SETUP_TABLES_DONE); /* revert changes made by mysql_insert_select_prepare_tester */ - lex->select_lex.table_list.first= (uchar*) first_local_table; + lex->select_lex.table_list.first= first_local_table; return res; } @@ -2339,10 +2338,10 @@ void reinit_stmt_before_use(THD *thd, LEX *lex) DBUG_ASSERT(sl->join == 0); ORDER *order; /* Fix GROUP list */ - for (order= (ORDER *)sl->group_list.first; order; order= order->next) + for (order= sl->group_list.first; order; order= order->next) order->item= &order->item_ptr; /* Fix ORDER list */ - for (order= (ORDER *)sl->order_list.first; order; order= order->next) + for (order= sl->order_list.first; order; order= order->next) order->item= &order->item_ptr; /* clear the no_error flag for INSERT/UPDATE IGNORE */ @@ -2379,7 +2378,7 @@ void reinit_stmt_before_use(THD *thd, LEX *lex) (multi-delete). We do a full clean up, although at the moment all we need to clean in the tables of MULTI-DELETE list is 'table' member. */ - for (TABLE_LIST *tables= (TABLE_LIST*) lex->auxiliary_table_list.first; + for (TABLE_LIST *tables= lex->auxiliary_table_list.first; tables; tables= tables->next_global) { diff --git a/sql/sql_select.cc b/sql/sql_select.cc index ccb63dc0ed0..296b18631e5 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -255,15 +255,15 @@ bool handle_select(THD *thd, LEX *lex, select_result *result, setup_tables_done_option changed for next rexecution */ res= mysql_select(thd, &select_lex->ref_pointer_array, - (TABLE_LIST*) select_lex->table_list.first, + select_lex->table_list.first, select_lex->with_wild, select_lex->item_list, select_lex->where, select_lex->order_list.elements + select_lex->group_list.elements, - (ORDER*) select_lex->order_list.first, - (ORDER*) select_lex->group_list.first, + select_lex->order_list.first, + select_lex->group_list.first, select_lex->having, - (ORDER*) lex->proc_list.first, + lex->proc_list.first, select_lex->options | thd->options | setup_tables_done_option, result, unit, select_lex); @@ -16803,15 +16803,15 @@ bool mysql_explain_union(THD *thd, SELECT_LEX_UNIT *unit, select_result *result) thd->lex->current_select= first; unit->set_limit(unit->global_parameters); res= mysql_select(thd, &first->ref_pointer_array, - (TABLE_LIST*) first->table_list.first, + first->table_list.first, first->with_wild, first->item_list, first->where, first->order_list.elements + first->group_list.elements, - (ORDER*) first->order_list.first, - (ORDER*) first->group_list.first, + first->order_list.first, + first->group_list.first, first->having, - (ORDER*) thd->lex->proc_list.first, + thd->lex->proc_list.first, first->options | thd->options | SELECT_DESCRIBE, result, unit, first); } @@ -17098,7 +17098,7 @@ void st_select_lex::print(THD *thd, String *str, enum_query_type query_type) if (group_list.elements) { str->append(STRING_WITH_LEN(" group by ")); - print_order(str, (ORDER *) group_list.first, query_type); + print_order(str, group_list.first, query_type); switch (olap) { case CUBE_TYPE: @@ -17129,7 +17129,7 @@ void st_select_lex::print(THD *thd, String *str, enum_query_type query_type) if (order_list.elements) { str->append(STRING_WITH_LEN(" order by ")); - print_order(str, (ORDER *) order_list.first, query_type); + print_order(str, order_list.first, query_type); } // limit diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 61a414dcb6f..f634c149fd9 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2998,8 +2998,7 @@ fill_schema_show_cols_or_idxs(THD *thd, TABLE_LIST *tables, bool res; LEX_STRING tmp_lex_string, tmp_lex_string1, *db_name, *table_name; enum_sql_command save_sql_command= lex->sql_command; - TABLE_LIST *show_table_list= (TABLE_LIST*) tables->schema_select_lex-> - table_list.first; + TABLE_LIST *show_table_list= tables->schema_select_lex->table_list.first; TABLE *table= tables->table; int error= 1; DBUG_ENTER("fill_schema_show"); @@ -3445,7 +3444,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) goto err; if (make_table_list(thd, &sel, db_name, table_name)) goto err; - TABLE_LIST *show_table_list= (TABLE_LIST*) sel.table_list.first; + TABLE_LIST *show_table_list= sel.table_list.first; lex->all_selects_list= &sel; lex->derived_tables= 0; lex->sql_command= SQLCOM_SHOW_FIELDS; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 05f9fa4e398..50045ec6d90 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -4592,7 +4592,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables, table->next_global= 0; save_next_local= table->next_local; table->next_local= 0; - select->table_list.first= (uchar*)table; + select->table_list.first= table; /* Time zone tables and SP tables can be add to lex->query_tables list, so it have to be prepared. diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index aafb25013f6..1bd3fc78400 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -653,7 +653,7 @@ bool Table_triggers_list::create_trigger(THD *thd, TABLE_LIST *tables, */ old_field= new_field= table->field; - for (trg_field= (Item_trigger_field *)(lex->trg_table_fields.first); + for (trg_field= lex->trg_table_fields.first; trg_field; trg_field= trg_field->next_trg_field) { /* @@ -1413,7 +1413,7 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, */ triggers->trigger_fields[lex.trg_chistics.event] [lex.trg_chistics.action_time]= - (Item_trigger_field *)(lex.trg_table_fields.first); + lex.trg_table_fields.first; /* Also let us bind these objects to Field objects in table being opened. @@ -1423,8 +1423,7 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, SELECT)... Anyway some things can be checked only during trigger execution. */ - for (Item_trigger_field *trg_field= - (Item_trigger_field *)(lex.trg_table_fields.first); + for (Item_trigger_field *trg_field= lex.trg_table_fields.first; trg_field; trg_field= trg_field->next_trg_field) { diff --git a/sql/sql_union.cc b/sql/sql_union.cc index 1760670f9c8..948ba1d9d9c 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -144,20 +144,19 @@ void st_select_lex_unit::init_prepare_fake_select_lex(THD *thd_arg) { thd_arg->lex->current_select= fake_select_lex; - fake_select_lex->table_list.link_in_list((uchar *)&result_table_list, - (uchar **) - &result_table_list.next_local); + fake_select_lex->table_list.link_in_list(&result_table_list, + &result_table_list.next_local); fake_select_lex->context.table_list= fake_select_lex->context.first_name_resolution_table= fake_select_lex->get_table_list(); if (!fake_select_lex->first_execution) { - for (ORDER *order= (ORDER *) global_parameters->order_list.first; + for (ORDER *order= global_parameters->order_list.first; order; order= order->next) order->item= &order->item_ptr; } - for (ORDER *order= (ORDER *)global_parameters->order_list.first; + for (ORDER *order= global_parameters->order_list.first; order; order=order->next) { @@ -249,18 +248,18 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result, can_skip_order_by= is_union_select && !(sl->braces && sl->explicit_limit); saved_error= join->prepare(&sl->ref_pointer_array, - (TABLE_LIST*) sl->table_list.first, + sl->table_list.first, sl->with_wild, sl->where, (can_skip_order_by ? 0 : sl->order_list.elements) + sl->group_list.elements, can_skip_order_by ? - (ORDER*) 0 : (ORDER *)sl->order_list.first, - (ORDER*) sl->group_list.first, + NULL : sl->order_list.first, + sl->group_list.first, sl->having, - (is_union_select ? (ORDER*) 0 : - (ORDER*) thd_arg->lex->proc_list.first), + (is_union_select ? NULL : + thd_arg->lex->proc_list.first), sl, this); /* There are no * in the statement anymore (for PS) */ sl->with_wild= 0; @@ -354,7 +353,7 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result, { ORDER *ord; Item_func::Functype ft= Item_func::FT_FUNC; - for (ord= (ORDER*)global_parameters->order_list.first; ord; ord= ord->next) + for (ord= global_parameters->order_list.first; ord; ord= ord->next) if ((*ord->item)->walk (&Item::find_function_processor, FALSE, (uchar *) &ft)) { @@ -416,12 +415,11 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result, thd_arg->lex->current_select= fake_select_lex; saved_error= fake_select_lex->join-> prepare(&fake_select_lex->ref_pointer_array, - (TABLE_LIST*) fake_select_lex->table_list.first, + fake_select_lex->table_list.first, 0, 0, fake_select_lex->order_list.elements, - (ORDER*) fake_select_lex->order_list.first, - (ORDER*) NULL, NULL, - (ORDER*) NULL, + fake_select_lex->order_list.first, + NULL, NULL, NULL, fake_select_lex, this); fake_select_lex->table_list.empty(); } @@ -597,8 +595,8 @@ bool st_select_lex_unit::exec() &result_table_list, 0, item_list, NULL, global_parameters->order_list.elements, - (ORDER*)global_parameters->order_list.first, - (ORDER*) NULL, NULL, (ORDER*) NULL, + global_parameters->order_list.first, + NULL, NULL, NULL, fake_select_lex->options | SELECT_NO_UNLOCK, result, this, fake_select_lex); } @@ -620,8 +618,8 @@ bool st_select_lex_unit::exec() &result_table_list, 0, item_list, NULL, global_parameters->order_list.elements, - (ORDER*)global_parameters->order_list.first, - (ORDER*) NULL, NULL, (ORDER*) NULL, + global_parameters->order_list.first, + NULL, NULL, NULL, fake_select_lex->options | SELECT_NO_UNLOCK, result, this, fake_select_lex); } @@ -697,7 +695,7 @@ bool st_select_lex_unit::cleanup() if (global_parameters->order_list.elements) { ORDER *ord; - for (ord= (ORDER*)global_parameters->order_list.first; ord; ord= ord->next) + for (ord= global_parameters->order_list.first; ord; ord= ord->next) (*ord->item)->walk (&Item::cleanup_processor, 0, 0); } } diff --git a/sql/sql_update.cc b/sql/sql_update.cc index b2f2897c74e..3cdbb97b90b 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -1331,7 +1331,7 @@ int multi_update::prepare(List ¬_used_values, SELECT_LEX_UNIT *lex_unit) { TABLE_LIST *table_ref; - SQL_LIST update; + SQL_I_List update; table_map tables_to_update; Item_field *item; List_iterator_fast field_it(*fields); @@ -1412,11 +1412,11 @@ int multi_update::prepare(List ¬_used_values, leaf_table_count++; if (tables_to_update & table->map) { - TABLE_LIST *tl= (TABLE_LIST*) thd->memdup((char*) table_ref, + TABLE_LIST *tl= (TABLE_LIST*) thd->memdup(table_ref, sizeof(*tl)); if (!tl) DBUG_RETURN(1); - update.link_in_list((uchar*) tl, (uchar**) &tl->next_local); + update.link_in_list(tl, &tl->next_local); tl->shared= table_count++; table->no_keyread=1; table->covering_keys.clear_all(); @@ -1437,7 +1437,7 @@ int multi_update::prepare(List ¬_used_values, table_count= update.elements; - update_tables= (TABLE_LIST*) update.first; + update_tables= update.first; tmp_tables = (TABLE**) thd->calloc(sizeof(TABLE *) * table_count); tmp_table_param = (TMP_TABLE_PARAM*) thd->calloc(sizeof(TMP_TABLE_PARAM) * diff --git a/sql/sql_view.cc b/sql/sql_view.cc index 5ec80dfb621..3d0d80c8ad1 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -887,7 +887,7 @@ static int mysql_register_view(THD *thd, TABLE_LIST *view, view->algorithm != VIEW_ALGORITHM_TMPTABLE))) { /* TODO: change here when we will support UNIONs */ - for (TABLE_LIST *tbl= (TABLE_LIST *)lex->select_lex.table_list.first; + for (TABLE_LIST *tbl= lex->select_lex.table_list.first; tbl; tbl= tbl->next_local) { @@ -1006,7 +1006,7 @@ loop_out: */ if (view->updatable_view && !lex->select_lex.master_unit()->is_union() && - !((TABLE_LIST*)lex->select_lex.table_list.first)->next_local && + !(lex->select_lex.table_list.first)->next_local && find_table_in_global_list(lex->query_tables->next_global, lex->query_tables->db, lex->query_tables->table_name)) @@ -1349,8 +1349,7 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table, This may change in future, for example if we enable merging of views with subqueries in select list. */ - view_main_select_tables= - (TABLE_LIST*)lex->select_lex.table_list.first; + view_main_select_tables= lex->select_lex.table_list.first; /* Let us set proper lock type for tables of the view's main diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index f815da006b1..5a3ad0b3eba 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -514,8 +514,7 @@ set_trigger_new_row(THD *thd, LEX_STRING *name, Item *val) Let us add this item to list of all Item_trigger_field objects in trigger. */ - lex->trg_table_fields.link_in_list((uchar *) trg_fld, - (uchar **) &trg_fld->next_trg_field); + lex->trg_table_fields.link_in_list(trg_fld, &trg_fld->next_trg_field); return lex->sphead->add_instr(sp_fld); } @@ -4678,11 +4677,9 @@ create_table_option: TABLE_LIST *table_list= lex->select_lex.get_table_list(); lex->create_info.merge_list= lex->select_lex.table_list; lex->create_info.merge_list.elements--; - lex->create_info.merge_list.first= - (uchar*) (table_list->next_local); + lex->create_info.merge_list.first= table_list->next_local; lex->select_lex.table_list.elements=1; - lex->select_lex.table_list.next= - (uchar**) &(table_list->next_local); + lex->select_lex.table_list.next= &(table_list->next_local); table_list->next_local= 0; lex->create_info.used_fields|= HA_CREATE_USED_UNION; } @@ -5638,8 +5635,7 @@ alter: lex->alter_info.reset(); lex->col_list.empty(); lex->select_lex.init_order(); - lex->select_lex.db= - ((TABLE_LIST*) lex->select_lex.table_list.first)->db; + lex->select_lex.db= (lex->select_lex.table_list.first)->db; bzero((char*) &lex->create_info,sizeof(lex->create_info)); lex->create_info.db_type= 0; lex->create_info.default_table_charset= NULL; @@ -8348,9 +8344,8 @@ opt_gorder_clause: | order_clause { SELECT_LEX *select= Select; - select->gorder_list= - (SQL_LIST*) sql_memdup((char*) &select->order_list, - sizeof(st_sql_list)); + select->gorder_list= new (YYTHD->mem_root) + SQL_I_List(select->order_list); if (select->gorder_list == NULL) MYSQL_YYABORT; select->order_list.empty(); @@ -9294,7 +9289,7 @@ procedure_clause: } lex->proc_list.elements=0; lex->proc_list.first=0; - lex->proc_list.next= (uchar**) &lex->proc_list.first; + lex->proc_list.next= &lex->proc_list.first; Item_field *item= new (YYTHD->mem_root) Item_field(&lex->current_select->context, NULL, NULL, $2.str); @@ -11252,8 +11247,8 @@ simple_ident_q: Let us add this item to list of all Item_trigger_field objects in trigger. */ - lex->trg_table_fields.link_in_list((uchar*) trg_fld, - (uchar**) &trg_fld->next_trg_field); + lex->trg_table_fields.link_in_list(trg_fld, + &trg_fld->next_trg_field); $$= trg_fld; } @@ -11339,7 +11334,7 @@ field_ident: ident { $$=$1;} | ident '.' ident '.' ident { - TABLE_LIST *table= (TABLE_LIST*) Select->table_list.first; + TABLE_LIST *table= Select->table_list.first; if (my_strcasecmp(table_alias_charset, $1.str, table->db)) { my_error(ER_WRONG_DB_NAME, MYF(0), $1.str); @@ -11355,7 +11350,7 @@ field_ident: } | ident '.' ident { - TABLE_LIST *table= (TABLE_LIST*) Select->table_list.first; + TABLE_LIST *table= Select->table_list.first; if (my_strcasecmp(table_alias_charset, $1.str, table->alias)) { my_error(ER_WRONG_TABLE_NAME, MYF(0), $1.str); diff --git a/sql/table.h b/sql/table.h index 4125c252427..3ef3c5e0cb2 100644 --- a/sql/table.h +++ b/sql/table.h @@ -1165,7 +1165,7 @@ struct TABLE_LIST } /* - List of tables local to a subquery (used by SQL_LIST). Considers + List of tables local to a subquery (used by SQL_I_List). Considers views as leaves (unlike 'next_leaf' below). Created at parse time in st_select_lex::add_table_to_list() -> table_list.link_in_list(). */ diff --git a/storage/myisammrg/ha_myisammrg.cc b/storage/myisammrg/ha_myisammrg.cc index 9ccb08a8d33..7886cc2a5a2 100644 --- a/storage/myisammrg/ha_myisammrg.cc +++ b/storage/myisammrg/ha_myisammrg.cc @@ -1130,8 +1130,8 @@ void ha_myisammrg::update_create_info(HA_CREATE_INFO *create_info) goto err; create_info->merge_list.elements++; - (*create_info->merge_list.next) = (uchar*) ptr; - create_info->merge_list.next= (uchar**) &ptr->next_local; + (*create_info->merge_list.next) = ptr; + create_info->merge_list.next= &ptr->next_local; } *create_info->merge_list.next=0; } @@ -1153,7 +1153,7 @@ int ha_myisammrg::create(const char *name, register TABLE *form, { char buff[FN_REFLEN]; const char **table_names, **pos; - TABLE_LIST *tables= (TABLE_LIST*) create_info->merge_list.first; + TABLE_LIST *tables= create_info->merge_list.first; THD *thd= current_thd; size_t dirlgt= dirname_length(name); DBUG_ENTER("ha_myisammrg::create"); From 0823afc8bf160e03ce722c5e3cef21024b63b99a Mon Sep 17 00:00:00 2001 From: Martin Hansson Date: Fri, 11 Jun 2010 09:38:29 +0200 Subject: [PATCH 153/461] Bug#53859: Valgrind: opt_sum_query(TABLE_LIST*, List&, Item*) at opt_sum.cc:305 Queries applying MIN/MAX functions to indexed columns are optimized to read directly from the index if all key parts of the index preceding the aggregated key part are bound to constants by the WHERE clause. A prefix length is also produced, equal to the total length of the bound key parts. If the aggregated column itself is bound to a constant, however, it is also included in the prefix. Such full search keys are read as closed intervals for reasons beyond the scope of this bug. However, the procedure missed one case where a key part meant for use as range endpoint was being overwritten with a NULL value destined for equality checking. In this case the key part was overwritten but the range flag remained, causing open interval reading to be performed. Bug was fixed by adding more stringent checking to the search key building procedure (matching_cond) and never allow overwrites of range predicates with non-range predicates. An assertion was added to make sure open intervals are never used with full search keys. --- mysql-test/r/group_min_max.result | 13 ++++++++++ mysql-test/t/group_min_max.test | 15 +++++++++++ sql/opt_sum.cc | 41 +++++++++++++++++++++---------- 3 files changed, 56 insertions(+), 13 deletions(-) diff --git a/mysql-test/r/group_min_max.result b/mysql-test/r/group_min_max.result index 01f27a498ef..6fef66b9d93 100644 --- a/mysql-test/r/group_min_max.result +++ b/mysql-test/r/group_min_max.result @@ -2767,4 +2767,17 @@ SELECT MIN( a ) FROM t1 WHERE a IS NULL; MIN( a ) NULL DROP TABLE t1; +# +# Bug#53859: Valgrind: opt_sum_query(TABLE_LIST*, List&, Item*) at +# opt_sum.cc:305 +# +CREATE TABLE t1 ( a INT, KEY (a) ); +INSERT INTO t1 VALUES (1), (2), (3); +SELECT MIN( a ) AS min_a +FROM t1 +WHERE a > 1 AND a IS NULL +ORDER BY min_a; +min_a +NULL +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/t/group_min_max.test b/mysql-test/t/group_min_max.test index b06f0c09fc5..8ab7e1c9cb4 100644 --- a/mysql-test/t/group_min_max.test +++ b/mysql-test/t/group_min_max.test @@ -1085,4 +1085,19 @@ INSERT INTO t1 VALUES (1), (2), (3); --source include/min_null_cond.inc DROP TABLE t1; +--echo # +--echo # Bug#53859: Valgrind: opt_sum_query(TABLE_LIST*, List&, Item*) at +--echo # opt_sum.cc:305 +--echo # +CREATE TABLE t1 ( a INT, KEY (a) ); +INSERT INTO t1 VALUES (1), (2), (3); + +SELECT MIN( a ) AS min_a +FROM t1 +WHERE a > 1 AND a IS NULL +ORDER BY min_a; + +DROP TABLE t1; + + --echo End of 5.1 tests diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index 666485fcfa2..b20a0c4fcbe 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -142,7 +142,10 @@ static int get_index_min_value(TABLE *table, TABLE_REF *ref, 1) We have only MIN() and the argument column is nullable, or 2) there is a > predicate on it, nullability is irrelevant. We need to scan the next bigger record first. + Open interval is not used if the search key involves the last keypart, + and it would not work. */ + DBUG_ASSERT(prefix_len < ref->key_length); error= table->file->index_read_map(table->record[0], ref->key_buff, make_prev_keypart_map(ref->key_parts), @@ -591,18 +594,19 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, key_part_map *key_part_used, uint *range_fl, uint *prefix_len) { + DBUG_ENTER("matching_cond"); if (!cond) - return 1; + DBUG_RETURN(TRUE); Field *field= field_part->field; if (!(cond->used_tables() & field->table->map)) { /* Condition doesn't restrict the used table */ - return 1; + DBUG_RETURN(TRUE); } if (cond->type() == Item::COND_ITEM) { if (((Item_cond*) cond)->functype() == Item_func::COND_OR_FUNC) - return 0; + DBUG_RETURN(FALSE); /* AND */ List_iterator_fast li(*((Item_cond*) cond)->argument_list()); @@ -611,13 +615,13 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, { if (!matching_cond(max_fl, ref, keyinfo, field_part, item, key_part_used, range_fl, prefix_len)) - return 0; + DBUG_RETURN(FALSE); } - return 1; + DBUG_RETURN(TRUE); } if (cond->type() != Item::FUNC_ITEM) - return 0; // Not operator, can't optimize + DBUG_RETURN(FALSE); // Not operator, can't optimize bool eq_type= 0; // =, <=> or IS NULL bool is_null_safe_eq= FALSE; // The operator is NULL safe, e.g. <=> @@ -651,7 +655,7 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, eq_type= 1; break; default: - return 0; // Can't optimize function + DBUG_RETURN(FALSE); // Can't optimize function } Item *args[3]; @@ -659,11 +663,11 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, /* Test if this is a comparison of a field and constant */ if (!simple_pred((Item_func*) cond, args, &inv)) - return 0; + DBUG_RETURN(FALSE); if (!is_null_safe_eq && !is_null && (args[1]->is_null() || (between && args[2]->is_null()))) - return FALSE; + DBUG_RETURN(FALSE); if (inv && !eq_type) less_fl= 1-less_fl; // Convert '<' -> '>' (etc) @@ -675,14 +679,14 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, { if (part > field_part) - return 0; // Field is beyond the tested parts + DBUG_RETURN(FALSE); // Field is beyond the tested parts if (part->field->eq(((Item_field*) args[0])->field)) break; // Found a part of the key for the field } bool is_field_part= part == field_part; if (!(is_field_part || eq_type)) - return 0; + DBUG_RETURN(FALSE); key_part_map org_key_part_used= *key_part_used; if (eq_type || between || max_fl == less_fl) @@ -702,6 +706,17 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, *key_part_used|= (key_part_map) 1 << (part - keyinfo->key_part); } + if (org_key_part_used == *key_part_used && + /* + The current search key is not being extended with a new key part. This + means that the a condition is added a key part for which there was a + previous condition. We can only overwrite such key parts in some special + cases, e.g. a > 2 AND a > 1 (here range_fl must be set to something). In + all other cases the WHERE condition is always false anyway. + */ + (eq_type || *range_fl == 0)) + DBUG_RETURN(FALSE); + if (org_key_part_used != *key_part_used || (is_field_part && (between || eq_type || max_fl == less_fl) && !cond->val_int())) @@ -747,11 +762,11 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, { if ((!is_null && !cond->val_int()) || (is_null && !test(part->field->is_null()))) - return 0; // Impossible test + DBUG_RETURN(FALSE); // Impossible test } else if (is_field_part) *range_fl&= ~(max_fl ? NO_MIN_RANGE : NO_MAX_RANGE); - return 1; + DBUG_RETURN(TRUE); } From 41c3732a75dad4872ccfcb61624e78a7bec8b944 Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Sat, 12 Jun 2010 09:52:31 +0400 Subject: [PATCH 154/461] Addendum for the fix for bug #42064: In Prepared_statement::prepare() bail out as soon as parser_state.init() fails, trying to continue leads to crashes. --- sql/sql_prepare.cc | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 85ec5a72d77..a4241772311 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -3034,16 +3034,21 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len) thd->stmt_arena= this; Parser_state parser_state; - if (!parser_state.init(thd, thd->query(), thd->query_length())) + if (parser_state.init(thd, thd->query(), thd->query_length())) { - parser_state.m_lip.stmt_prepare_mode= TRUE; - lex_start(thd); - - error= parse_sql(thd, & parser_state, NULL) || - thd->is_error() || - init_param_array(this); + thd->restore_backup_statement(this, &stmt_backup); + thd->restore_active_arena(this, &stmt_backup); + thd->stmt_arena= old_stmt_arena; + DBUG_RETURN(TRUE); } + parser_state.m_lip.stmt_prepare_mode= TRUE; + lex_start(thd); + + error= parse_sql(thd, & parser_state, NULL) || + thd->is_error() || + init_param_array(this); + lex->set_trg_event_type_for_tables(); /* From ec281a3c342912c21494ce2d9a64b8b9c19ccb29 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Mon, 14 Jun 2010 01:13:32 +0300 Subject: [PATCH 155/461] Fixed some bugs in the Maria storage engine - Changed default recovery mode from OFF to NORMAL to get automatic repair of not properly closed tables. - Fixed a rase condition when two threads calls external_lock and thr_lock() in different order. When this happend the transaction that called external lock first and thr_lock() last did not see see the rows from the other transaction, even if if it had to wait in thr_lock() for other to complete. - Fixed that one can run maria_chk on an automatcally recovered tables without warnings about too small transaction id - Don't give warning that crashed table could not be repaired if repair was disabled (and thus not run) - Fixed a error result from flush_key_cache() which caused a DBUG_ASSERT() when one was using concurrent reads on non transactional tables that was updated. client/mysqldump.c: Add "" around error message to make it more readable client/mysqltest.cc: Free environment variables mysql-test/r/mysqldump.result: Updated results mysql-test/r/openssl_1.result: Updated results mysql-test/suite/maria/r/maria-recover.result: Updated results mysql-test/suite/maria/r/maria3.result: Updated results mysql-test/suite/maria/t/maria3.test: Added more test of temporary tables storage/maria/ha_maria.cc: Changed default recovery mode from OFF to NORMAL to get automatic repair of not properly closed tables. Start transaction in ma_block_get_status() instead of in ha_maria::external_lock(). - This fixes a rase condition when two threads calls external lock and thr_lock() in different order. When this happend the transaction that called external lock first and thr_lock() last did not see see the rows from the other transaction, even if if it had to wait in thr_lock() for other to complete. Store latest transaction id in controll file if recovery was done. - This allows one to run maria_chk on an automatcally recovered tables without warnings about too small transaction id storage/maria/ha_maria.h: Don't give warning that crashed table could not be repaired if repair was disabled (and thus not run) storage/maria/ma_blockrec.h: Added new function "_ma_block_get_status_no_versioning()" storage/maria/ma_init.c: Added hook to create trn in ma_block_get_status() if we are using MariaDB storage/maria/ma_open.c: Ensure we call _ma_block_get_status_no_versioning() for transactional tables without versioning (like tables with fulltext) storage/maria/ma_pagecache.c: Allow one to flush blocks that are pinned for read. This fixed a error result from flush_key_cache() which caused a DBUG_ASSERT() when one was using concurrent reads on non transactional tables that was updated. storage/maria/ma_recovery.c: Set maria_recovery_changed_data to 1 if recover changed something. Set max_trid_in_control_file to max found trn if we found a bigger trn. The allows will ensure that the control file is up to date after recovery which allows one to run maria_chk on the tables without warnings about too big trn storage/maria/ma_state.c: Call maria_create_trn_hook() in _ma_setup_live_state() instead of ha_maria::external_lock() This ensures that 'state' and trn are in sync and thus fixes the race condition mentioned for ha_maria.cc storage/maria/ma_static.c: Added maria_create_trn_hook() and maria_recovery_changed_data storage/maria/maria_def.h: Added MARIA_HANDLER->external_ptr, which is used to hold MariaDB thd. Added some new external variables Removed reference to non existing function: maria_concurrent_inserts() --- client/mysqldump.c | 2 +- client/mysqltest.cc | 1 + mysql-test/r/mysqldump.result | 6 +- mysql-test/r/openssl_1.result | 2 +- mysql-test/suite/maria/r/maria-recover.result | 2 +- mysql-test/suite/maria/r/maria3.result | 26 +++++- mysql-test/suite/maria/t/maria3.test | 18 ++++ storage/maria/ha_maria.cc | 85 ++++++++++++------- storage/maria/ha_maria.h | 2 +- storage/maria/ma_blockrec.h | 3 +- storage/maria/ma_init.c | 6 ++ storage/maria/ma_open.c | 5 ++ storage/maria/ma_pagecache.c | 17 ++-- storage/maria/ma_recovery.c | 11 +++ storage/maria/ma_state.c | 47 +++++++++- storage/maria/ma_static.c | 2 + storage/maria/maria_def.h | 7 +- 17 files changed, 190 insertions(+), 52 deletions(-) diff --git a/client/mysqldump.c b/client/mysqldump.c index dca8ecb7dfb..212baca6be8 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -964,7 +964,7 @@ static int get_options(int *argc, char ***argv) static void DB_error(MYSQL *mysql_arg, const char *when) { DBUG_ENTER("DB_error"); - maybe_die(EX_MYSQLERR, "Got error: %d: %s %s", + maybe_die(EX_MYSQLERR, "Got error: %d: \"%s\" %s", mysql_errno(mysql_arg), mysql_error(mysql_arg), when); DBUG_VOID_RETURN; } diff --git a/client/mysqltest.cc b/client/mysqltest.cc index fba1b579add..8ac3c3ebd92 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -2006,6 +2006,7 @@ VAR *var_init(VAR *v, const char *name, int name_len, const char *val, void var_free(void *v) { my_free(((VAR*) v)->str_val, MYF(MY_WME)); + my_free(((VAR*) v)->env_s, MYF(MY_ALLOW_ZERO_PTR)); if (((VAR*)v)->alloced) my_free(v, MYF(MY_WME)); } diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 328f7e2a675..ad77d04d583 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -1658,8 +1658,8 @@ mysqldump: Couldn't find table: "T_1" mysqldump: Couldn't find table: "T_" test_sequence ------ Testing with illegal database names ------ -mysqldump: Got error: 1049: Unknown database 'mysqldump_test_d' when selecting the database -mysqldump: Got error: 1049: Unknown database 'mysqld\ump_test_db' when selecting the database +mysqldump: Got error: 1049: "Unknown database 'mysqldump_test_d'" when selecting the database +mysqldump: Got error: 1049: "Unknown database 'mysqld\ump_test_db'" when selecting the database drop table t1, t2, t3; drop database mysqldump_test_db; use test; @@ -1833,7 +1833,7 @@ drop table t1, t2, t3; # create table t1 (a int); mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `t1` WHERE xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' at line 1 (1064) -mysqldump: Got error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' at line 1 when retrieving data from server +mysqldump: Got error: 1064: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' at line 1" when retrieving data from server /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; diff --git a/mysql-test/r/openssl_1.result b/mysql-test/r/openssl_1.result index d68b436d089..d87aeefbc34 100644 --- a/mysql-test/r/openssl_1.result +++ b/mysql-test/r/openssl_1.result @@ -189,7 +189,7 @@ UNLOCK TABLES; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; SSL error: Unable to get private key from 'MYSQL_TEST_DIR/std_data/client-cert.pem' -mysqldump: Got error: 2026: SSL connection error when trying to connect +mysqldump: Got error: 2026: "SSL connection error" when trying to connect DROP TABLE t1; Variable_name Value Ssl_cipher DHE-RSA-AES256-SHA diff --git a/mysql-test/suite/maria/r/maria-recover.result b/mysql-test/suite/maria/r/maria-recover.result index aee4119304f..e9bfc019c81 100644 --- a/mysql-test/suite/maria/r/maria-recover.result +++ b/mysql-test/suite/maria/r/maria-recover.result @@ -8,7 +8,7 @@ OFF set global maria_recover=default; select @@global.maria_recover; @@global.maria_recover -OFF +NORMAL set global maria_recover=normal; select @@global.maria_recover; @@global.maria_recover diff --git a/mysql-test/suite/maria/r/maria3.result b/mysql-test/suite/maria/r/maria3.result index 58e170cd3c3..e632363346d 100644 --- a/mysql-test/suite/maria/r/maria3.result +++ b/mysql-test/suite/maria/r/maria3.result @@ -313,7 +313,7 @@ maria_pagecache_age_threshold 300 maria_pagecache_buffer_size 8384512 maria_pagecache_division_limit 100 maria_page_checksum OFF -maria_recover OFF +maria_recover NORMAL maria_repair_threads 1 maria_sort_buffer_size 8388608 maria_stats_method nulls_unequal @@ -549,6 +549,30 @@ select count(*) from t1 where a >= 4; count(*) 1 drop table t1, t2; +create temporary table t1 (a int, key(a)) transactional=0 row_format=page; +create temporary table t2 (a int, key(a)) transactional=0 row_format=page; +insert into t1 values (0),(1),(2),(3),(4); +insert into t2 select * from t1; +insert into t1 select NULL from t2; +select count(*) from t1; +count(*) +10 +select count(*) from t1 where a >= 4; +count(*) +1 +drop table t1, t2; +create temporary table t1 (a int, key(a)) transactional=0 row_format=fixed; +create temporary table t2 (a int, key(a)) transactional=0 row_format=dynamic; +insert into t1 values (0),(1),(2),(3),(4); +insert into t2 select * from t1; +insert into t1 select NULL from t2; +select count(*) from t1; +count(*) +10 +select count(*) from t1 where a >= 4; +count(*) +1 +drop table t1, t2; create table t1 (i int auto_increment not null primary key) transactional=0; check table t1 extended; Table Op Msg_type Msg_text diff --git a/mysql-test/suite/maria/t/maria3.test b/mysql-test/suite/maria/t/maria3.test index 45765b3b868..f2ae5d73fb2 100644 --- a/mysql-test/suite/maria/t/maria3.test +++ b/mysql-test/suite/maria/t/maria3.test @@ -433,6 +433,24 @@ select count(*) from t1; select count(*) from t1 where a >= 4; drop table t1, t2; +create temporary table t1 (a int, key(a)) transactional=0 row_format=page; +create temporary table t2 (a int, key(a)) transactional=0 row_format=page; +insert into t1 values (0),(1),(2),(3),(4); +insert into t2 select * from t1; +insert into t1 select NULL from t2; +select count(*) from t1; +select count(*) from t1 where a >= 4; +drop table t1, t2; + +create temporary table t1 (a int, key(a)) transactional=0 row_format=fixed; +create temporary table t2 (a int, key(a)) transactional=0 row_format=dynamic; +insert into t1 values (0),(1),(2),(3),(4); +insert into t2 select * from t1; +insert into t1 select NULL from t2; +select count(*) from t1; +select count(*) from t1 where a >= 4; +drop table t1, t2; + # # Test problems with small rows and row_type=page # Bug 35048 "maria table corruption reported when transactional=0" diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc index 4e18155b46e..e919dbbc3cc 100644 --- a/storage/maria/ha_maria.cc +++ b/storage/maria/ha_maria.cc @@ -202,7 +202,7 @@ static MYSQL_SYSVAR_ENUM(recover, maria_recover_options, PLUGIN_VAR_OPCMDARG, "Specifies how corrupted tables should be automatically repaired." " Possible values are \"NORMAL\" (the default), \"BACKUP\", \"FORCE\"," " \"QUICK\", or \"OFF\" which is like not using the option.", - NULL, NULL, HA_RECOVER_NONE, &maria_recover_typelib); + NULL, NULL, HA_RECOVER_DEFAULT, &maria_recover_typelib); static MYSQL_THDVAR_ULONG(repair_threads, PLUGIN_VAR_RQCMDARG, "Number of threads to use when repairing maria tables. The value of 1 " @@ -707,8 +707,54 @@ void _ma_check_print_warning(HA_CHECK *param, const char *fmt, ...) DBUG_VOID_RETURN; } +/* + Create a transaction object + + SYNOPSIS + info Maria handler + + RETURN + 0 ok + # Error number (HA_ERR_OUT_OF_MEM) +*/ + +static int maria_create_trn_for_mysql(MARIA_HA *info) +{ + THD *thd= (THD*) info->external_ptr; + TRN *trn= THD_TRN; + DBUG_ENTER("maria_create_trn_for_mysql"); + + if (!trn) /* no transaction yet - open it now */ + { + trn= trnman_new_trn(& thd->transaction.wt); + if (unlikely(!trn)) + DBUG_RETURN(HA_ERR_OUT_OF_MEM); + THD_TRN= trn; + if (thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)) + trans_register_ha(thd, TRUE, maria_hton); + } + _ma_set_trn_for_table(info, trn); + if (!trnman_increment_locked_tables(trn)) + { + trans_register_ha(thd, FALSE, maria_hton); + trnman_new_statement(trn); + } +#ifdef EXTRA_DEBUG + if (info->lock_type == F_WRLCK && + ! (trnman_get_flags(trn) & TRN_STATE_INFO_LOGGED)) + { + trnman_set_flags(trn, trnman_get_flags(trn) | TRN_STATE_INFO_LOGGED | + TRN_STATE_TABLES_CAN_CHANGE); + (void) translog_log_debug_info(trn, LOGREC_DEBUG_INFO_QUERY, + (uchar*) thd->query(), + thd->query_length()); + } +#endif + DBUG_RETURN(0); } +} /* extern "C" */ + /** Transactional table doing bulk insert with one single UNDO (UNDO_BULK_INSERT) and with repair. @@ -2313,9 +2359,9 @@ int ha_maria::delete_table(const char *name) return maria_delete_table(name); } + int ha_maria::external_lock(THD *thd, int lock_type) { - TRN *trn= THD_TRN; DBUG_ENTER("ha_maria::external_lock"); /* We don't test now_transactional because it may vary between lock/unlock @@ -2335,22 +2381,7 @@ int ha_maria::external_lock(THD *thd, int lock_type) /* Transactional table */ if (lock_type != F_UNLCK) { - /* Start of new statement */ - if (!trn) /* no transaction yet - open it now */ - { - trn= trnman_new_trn(& thd->transaction.wt); - if (unlikely(!trn)) - DBUG_RETURN(HA_ERR_OUT_OF_MEM); - THD_TRN= trn; - if (thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)) - trans_register_ha(thd, TRUE, maria_hton); - } - _ma_set_trn_for_table(file, trn); - if (!trnman_increment_locked_tables(trn)) - { - trans_register_ha(thd, FALSE, maria_hton); - trnman_new_statement(trn); - } + file->external_ptr= thd; // For maria_register_trn() if (!file->s->lock_key_trees) // If we don't use versioning { @@ -2383,20 +2414,10 @@ int ha_maria::external_lock(THD *thd, int lock_type) DBUG_PRINT("info", ("Disabling logging for table")); _ma_tmp_disable_logging_for_table(file, TRUE); } -#ifdef EXTRA_DEBUG - if (lock_type == F_WRLCK && - ! (trnman_get_flags(trn) & TRN_STATE_INFO_LOGGED)) - { - trnman_set_flags(trn, trnman_get_flags(trn) | TRN_STATE_INFO_LOGGED | - TRN_STATE_TABLES_CAN_CHANGE); - (void) translog_log_debug_info(trn, LOGREC_DEBUG_INFO_QUERY, - (uchar*) thd->query(), - thd->query_length()); - } -#endif } else { + TRN *trn= THD_TRN; /* End of transaction */ /* @@ -2421,6 +2442,8 @@ int ha_maria::external_lock(THD *thd, int lock_type) file->state= &file->s->state.state; if (trn) { + DBUG_PRINT("info", + ("locked_tables: %u", trnman_has_locked_tables(trn))); if (trnman_has_locked_tables(trn) && !trnman_decrement_locked_tables(trn)) { @@ -3187,9 +3210,11 @@ static int ha_maria_init(void *p) MYSQL_VERSION_ID, server_id, maria_log_pagecache, TRANSLOG_DEFAULT_FLAGS, 0) || maria_recovery_from_log() || - ((force_start_after_recovery_failures != 0) && mark_recovery_success()) || + ((force_start_after_recovery_failures != 0 || + maria_recovery_changed_data) && mark_recovery_success()) || ma_checkpoint_init(checkpoint_interval); maria_multi_threaded= maria_in_ha_maria= TRUE; + maria_create_trn_hook= maria_create_trn_for_mysql; #if defined(HAVE_REALPATH) && !defined(HAVE_valgrind) && !defined(HAVE_BROKEN_REALPATH) /* We can only test for sub paths if my_symlink.c is using realpath */ diff --git a/storage/maria/ha_maria.h b/storage/maria/ha_maria.h index 23fb74f1c27..ab4012ca38c 100644 --- a/storage/maria/ha_maria.h +++ b/storage/maria/ha_maria.h @@ -141,7 +141,7 @@ public: bool check_and_repair(THD * thd); bool is_crashed() const; bool is_changed() const; - bool auto_repair() const { return 1; } + bool auto_repair() const { return maria_recover_options != HA_RECOVER_NONE; } int optimize(THD * thd, HA_CHECK_OPT * check_opt); int restore(THD * thd, HA_CHECK_OPT * check_opt); int backup(THD * thd, HA_CHECK_OPT * check_opt); diff --git a/storage/maria/ma_blockrec.h b/storage/maria/ma_blockrec.h index cb682eef701..16dedc93b28 100644 --- a/storage/maria/ma_blockrec.h +++ b/storage/maria/ma_blockrec.h @@ -279,7 +279,8 @@ my_bool write_hook_for_file_id(enum translog_record_type type, my_bool write_hook_for_commit(enum translog_record_type type, TRN *trn, MARIA_HA *tbl_info, LSN *lsn, void *hook_arg); -void _ma_block_get_status(void* param, my_bool concurrent_insert); +void _ma_block_get_status(void *param, my_bool concurrent_insert); +void _ma_block_get_status_no_versioning(void *param, my_bool concurrent_ins); void _ma_block_update_status(void *param); void _ma_block_restore_status(void *param); my_bool _ma_block_check_status(void *param); diff --git a/storage/maria/ma_init.c b/storage/maria/ma_init.c index 1f2eddd7e30..9cec978166f 100644 --- a/storage/maria/ma_init.c +++ b/storage/maria/ma_init.c @@ -40,6 +40,11 @@ void history_state_free(MARIA_STATE_HISTORY_CLOSED *closed_history) } +static int dummy_maria_create_trn_hook(MARIA_HA *info __attribute__((unused))) +{ + return 0; +} + /* Initialize maria @@ -64,6 +69,7 @@ int maria_init(void) pthread_mutex_init(&THR_LOCK_maria,MY_MUTEX_INIT_SLOW); _ma_init_block_record_data(); trnman_end_trans_hook= _ma_trnman_end_trans_hook; + maria_create_trn_hook= dummy_maria_create_trn_hook; my_handler_error_register(); } hash_init(&maria_stored_state, &my_charset_bin, 32, diff --git a/storage/maria/ma_open.c b/storage/maria/ma_open.c index c86c439a702..98ccb3e23cd 100644 --- a/storage/maria/ma_open.c +++ b/storage/maria/ma_open.c @@ -892,6 +892,11 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags) share->lock_restore_status= _ma_restore_status; } } + else if (share->now_transactional) + { + DBUG_ASSERT(share->data_file_type == BLOCK_RECORD); + share->lock.get_status= _ma_block_get_status_no_versioning; + } } #endif /* diff --git a/storage/maria/ma_pagecache.c b/storage/maria/ma_pagecache.c index dd676028f05..b95a6f53c06 100644 --- a/storage/maria/ma_pagecache.c +++ b/storage/maria/ma_pagecache.c @@ -4187,7 +4187,13 @@ static int flush_cached_blocks(PAGECACHE *pagecache, { PAGECACHE_BLOCK_LINK *block= *cache; - if (block->pins) + /* + This code is only run for non transactional tables. + We may have other threads reading the block during flush, + as non transactional tables can have many readers while the + one writer is doing the flush. + */ + if (block->wlocks) { KEYCACHE_DBUG_PRINT("flush_cached_blocks", ("block: %u (0x%lx) pinned", @@ -4204,13 +4210,9 @@ static int flush_cached_blocks(PAGECACHE *pagecache, *first_errno= HA_ERR_INTERNAL_ERROR; continue; } - /* if the block is not pinned then it is not write locked */ - DBUG_ASSERT(block->wlocks == 0); - DBUG_ASSERT(block->pins == 0); if (make_lock_and_pin(pagecache, block, - PAGECACHE_LOCK_WRITE, PAGECACHE_PIN, FALSE)) + PAGECACHE_LOCK_READ, PAGECACHE_PIN, FALSE)) DBUG_ASSERT(0); - DBUG_ASSERT(block->pins == 1); KEYCACHE_DBUG_PRINT("flush_cached_blocks", ("block: %u (0x%lx) to be flushed", @@ -4222,7 +4224,6 @@ static int flush_cached_blocks(PAGECACHE *pagecache, DBUG_PRINT("info", ("block: %u (0x%lx) pins: %u", PCBLOCK_NUMBER(pagecache, block), (ulong)block, block->pins)); - DBUG_ASSERT(block->pins == 1); /** @todo IO If page is contiguous with next page to flush, group flushes in one single my_pwrite(). @@ -4241,7 +4242,7 @@ static int flush_cached_blocks(PAGECACHE *pagecache, pagecache_pthread_mutex_lock(&pagecache->cache_lock); if (make_lock_and_pin(pagecache, block, - PAGECACHE_LOCK_WRITE_UNLOCK, + PAGECACHE_LOCK_READ_UNLOCK, PAGECACHE_UNPIN, FALSE)) DBUG_ASSERT(0); diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index 7b3065b0208..e74f52b2ef6 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -266,6 +266,7 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply, DBUG_ASSERT(apply == MARIA_LOG_APPLY || !should_run_undo_phase); DBUG_ASSERT(!maria_multi_threaded); recovery_warnings= 0; + maria_recovery_changed_data= 0; /* checkpoints can happen only if TRNs have been built */ DBUG_ASSERT(should_run_undo_phase || !take_checkpoints); all_active_trans= (struct st_trn_for_recovery *) @@ -465,8 +466,18 @@ end: fflush(stderr); } if (!error) + { ma_message_no_user(ME_JUST_INFO, "recovery done"); + maria_recovery_changed_data= 1; + } } + else if (!error && max_trid_in_control_file != max_long_trid) + { + /* Set max trid in log file so that one can run maria_chk on the tables */ + max_trid_in_control_file= trnman_get_max_trid(); + maria_recovery_changed_data= 1; + } + if (error) my_message(HA_ERR_INITIALIZATION, "Maria recovery failed. Please run maria_chk -r on all maria " diff --git a/storage/maria/ma_state.c b/storage/maria/ma_state.c index d7ddc73e2b4..c8fcf1a6818 100644 --- a/storage/maria/ma_state.c +++ b/storage/maria/ma_state.c @@ -53,12 +53,16 @@ my_bool _ma_setup_live_state(MARIA_HA *info) { - TRN *trn= info->trn; + TRN *trn; MARIA_SHARE *share= info->s; MARIA_USED_TABLES *tables; MARIA_STATE_HISTORY *history; DBUG_ENTER("_ma_setup_live_state"); + if (maria_create_trn_hook(info)) + DBUG_RETURN(1); + + trn= info->trn; for (tables= (MARIA_USED_TABLES*) info->trn->used_tables; tables; tables= tables->next) @@ -69,6 +73,7 @@ my_bool _ma_setup_live_state(MARIA_HA *info) goto end; } } + /* Table was not used before, create new table state entry */ if (!(tables= (MARIA_USED_TABLES*) my_malloc(sizeof(*tables), MYF(MY_WME | MY_ZEROFILL)))) @@ -566,7 +571,8 @@ void _ma_block_get_status(void* param, my_bool concurrent_insert) { MARIA_HA *info=(MARIA_HA*) param; DBUG_ENTER("_ma_block_get_status"); - DBUG_PRINT("info", ("concurrent_insert %d", concurrent_insert)); + DBUG_PRINT("enter", ("concurrent_insert %d", concurrent_insert)); + info->row_base_length= info->s->base_length; info->row_flag= info->s->base.default_row_flag; if (concurrent_insert) @@ -589,6 +595,21 @@ void _ma_block_get_status(void* param, my_bool concurrent_insert) */ (void) _ma_setup_live_state(info); } + else + { + /* + Info->trn is set if this table is already handled and we are + called from maria_versioning() + */ + if (info->s->base.born_transactional && !info->trn) + { + /* + Assume for now that this doesn't fail (It can only fail in + out of memory conditions) + */ + (void) maria_create_trn_hook(info); + } + } DBUG_VOID_RETURN; } @@ -616,6 +637,28 @@ my_bool _ma_block_check_status(void *param __attribute__((unused))) } +/* Get status when transactional but not versioned */ + +void _ma_block_get_status_no_versioning(void* param, my_bool concurrent_insert) +{ + MARIA_HA *info=(MARIA_HA*) param; + DBUG_ENTER("_ma_block_get_status_no_version"); + DBUG_PRINT("enter", ("concurrent_insert %d", concurrent_insert)); + DBUG_ASSERT(info->s->base.born_transactional); + + info->state->changed= 0; /* from _ma_reset_update_flag() */ + if (!info->trn) + { + /* + Assume for now that this doesn't fail (It can only fail in + out of memory conditions) + */ + (void) maria_create_trn_hook(info); + } + DBUG_VOID_RETURN; +} + + /** Enable/disable versioning */ diff --git a/storage/maria/ma_static.c b/storage/maria/ma_static.c index b4589469caf..d870b034eb8 100644 --- a/storage/maria/ma_static.c +++ b/storage/maria/ma_static.c @@ -37,6 +37,7 @@ my_bool maria_flush= 0, maria_single_user= 0; my_bool maria_delay_key_write= 0, maria_page_checksums= 1; my_bool maria_inited= FALSE; my_bool maria_in_ha_maria= FALSE; /* If used from ha_maria or not */ +my_bool maria_recovery_changed_data= 0; pthread_mutex_t THR_LOCK_maria; #if defined(THREAD) && !defined(DONT_USE_RW_LOCKS) ulong maria_concurrent_insert= 2; @@ -55,6 +56,7 @@ PAGECACHE *maria_log_pagecache= &maria_log_pagecache_var; MY_TMPDIR *maria_tmpdir; /* Tempdir for redo */ char *maria_data_root; HASH maria_stored_state; +int (*maria_create_trn_hook)(MARIA_HA *); /** @brief when transactionality does not matter we can use this transaction diff --git a/storage/maria/maria_def.h b/storage/maria/maria_def.h index db6845cb345..868885c961b 100644 --- a/storage/maria/maria_def.h +++ b/storage/maria/maria_def.h @@ -482,7 +482,8 @@ typedef struct st_maria_block_scan struct st_maria_handler { MARIA_SHARE *s; /* Shared between open:s */ - struct st_ma_transaction *trn; /* Pointer to active transaction */ + struct st_ma_transaction *trn; /* Pointer to active transaction */ + void *external_ptr; /* Pointer to THD in mysql */ MARIA_STATUS_INFO *state, state_save; MARIA_STATUS_INFO *state_start; /* State at start of transaction */ MARIA_ROW cur_row; /* The active row that we just read */ @@ -788,8 +789,9 @@ extern uint32 maria_read_vec[], maria_readnext_vec[]; extern uint maria_quick_table_bits; extern char *maria_data_root; extern uchar maria_zero_string[]; -extern my_bool maria_inited, maria_in_ha_maria; +extern my_bool maria_inited, maria_in_ha_maria, maria_recovery_changed_data; extern HASH maria_stored_state; +extern int (*maria_create_trn_hook)(MARIA_HA *); /* This is used by _ma_calc_xxx_key_length och _ma_store_key */ typedef struct st_maria_s_param @@ -1242,5 +1244,4 @@ extern my_bool maria_flush_log_for_page(uchar *page, extern my_bool maria_flush_log_for_page_none(uchar *page, pgcache_page_no_t page_no, uchar *data_ptr); -void maria_concurrent_inserts(MARIA_HA *info, my_bool concurrent_insert); extern PAGECACHE *maria_log_pagecache; From 8cf2640e60955439dbef35bf054b272b00b8297b Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Mon, 14 Jun 2010 10:18:49 +0200 Subject: [PATCH 156/461] Remove a warning on Windows. There is no CMakeLists.txt in the unittest examples dir --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d7380c8f75..a79051eb706 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -327,7 +327,6 @@ ADD_SUBDIRECTORY(server-tools/instance-manager) ADD_SUBDIRECTORY(libmysql) ADD_SUBDIRECTORY(tests) ADD_SUBDIRECTORY(unittest/mytap) -ADD_SUBDIRECTORY(unittest/examples) ADD_SUBDIRECTORY(unittest/mysys) IF(WITH_EMBEDDED_SERVER) ADD_SUBDIRECTORY(libmysqld) From b89384194d0b76196d584f9aaaf351f62fe34c8d Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Mon, 14 Jun 2010 11:18:54 +0200 Subject: [PATCH 157/461] mysqltest: use setenv, not putenv, to make gcov happy. (backport from MySQL) --- client/mysqltest.cc | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/client/mysqltest.cc b/client/mysqltest.cc index 8ac3c3ebd92..e89f87758c6 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -73,6 +73,10 @@ #define QUERY_SEND_FLAG 1 #define QUERY_REAP_FLAG 2 +#ifndef HAVE_SETENV +static int setenv(const char *name, const char *value, int overwrite); +#endif + enum { OPT_SKIP_SAFEMALLOC=OPT_MAX_CLIENT_OPTION, OPT_PS_PROTOCOL, OPT_SP_PROTOCOL, OPT_CURSOR_PROTOCOL, OPT_VIEW_PROTOCOL, @@ -226,7 +230,6 @@ typedef struct int alloced_len; int int_dirty; /* do not update string if int is updated until first read */ int alloced; - char *env_s; } VAR; /*Perl/shell-like variable registers */ @@ -1981,13 +1984,20 @@ VAR *var_init(VAR *v, const char *name, int name_len, const char *val, + name_len+1, MYF(MY_WME)))) die("Out of memory"); - tmp_var->name = (name) ? (char*) tmp_var + sizeof(*tmp_var) : 0; + if (name != NULL) + { + tmp_var->name= reinterpret_cast(tmp_var) + sizeof(*tmp_var); + memcpy(tmp_var->name, name, name_len); + tmp_var->name[name_len]= 0; + } + else + tmp_var->name= NULL; + tmp_var->alloced = (v == 0); if (!(tmp_var->str_val = (char*)my_malloc(val_alloc_len+1, MYF(MY_WME)))) die("Out of memory"); - memcpy(tmp_var->name, name, name_len); if (val) { memcpy(tmp_var->str_val, val, val_len); @@ -1998,7 +2008,6 @@ VAR *var_init(VAR *v, const char *name, int name_len, const char *val, tmp_var->alloced_len = val_alloc_len; tmp_var->int_val = (val) ? atoi(val) : 0; tmp_var->int_dirty = 0; - tmp_var->env_s = 0; return tmp_var; } @@ -2006,7 +2015,6 @@ VAR *var_init(VAR *v, const char *name, int name_len, const char *val, void var_free(void *v) { my_free(((VAR*) v)->str_val, MYF(MY_WME)); - my_free(((VAR*) v)->env_s, MYF(MY_ALLOW_ZERO_PTR)); if (((VAR*)v)->alloced) my_free(v, MYF(MY_WME)); } @@ -2127,20 +2135,15 @@ void var_set(const char *var_name, const char *var_name_end, if (env_var) { - char buf[1024], *old_env_s= v->env_s; if (v->int_dirty) { sprintf(v->str_val, "%d", v->int_val); v->int_dirty= 0; v->str_val_len= strlen(v->str_val); } - my_snprintf(buf, sizeof(buf), "%.*s=%.*s", - v->name_len, v->name, - v->str_val_len, v->str_val); - if (!(v->env_s= my_strdup(buf, MYF(MY_WME)))) - die("Out of memory"); - putenv(v->env_s); - my_free(old_env_s, MYF(MY_ALLOW_ZERO_PTR)); + /* setenv() expects \0-terminated strings */ + DBUG_ASSERT(v->name[v->name_len] == 0); + setenv(v->name, v->str_val, 1); } DBUG_VOID_RETURN; } @@ -9829,3 +9832,18 @@ void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING *ds_input) delete_dynamic(&lines); DBUG_VOID_RETURN; } + +#ifndef HAVE_SETENV +static int setenv(const char *name, const char *value, int overwrite) +{ + size_t buflen= strlen(name) + strlen(value) + 2; + char *envvar= (char *)malloc(buflen); + if(!envvar) + return ENOMEM; + strcpy(envvar, name); + strcat(envvar, "="); + strcat(envvar, value); + putenv(envvar); + return 0; +} +#endif From b18902fd59596bfc0b0a0417953bbd312be8bcaa Mon Sep 17 00:00:00 2001 From: Bjorn Munch Date: Mon, 14 Jun 2010 11:26:42 +0200 Subject: [PATCH 158/461] Bug #46882 Suite timeout doesn't kill stray processes Kill mysqltest and call mtr_kill_leftovers() before terminating --- mysql-test/lib/mtr_process.pl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index a60b2822a14..ee5277d39d7 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -264,8 +264,9 @@ sub spawn_parent_impl { if ( $timer_name eq "suite" ) { # We give up here - # FIXME we should only give up the suite, not all of the run? print STDERR "\n"; + kill(9, $pid); # Kill mysqltest + mtr_kill_leftovers(); # Kill servers the hard way mtr_error("Test suite timeout"); } elsif ( $timer_name eq "testcase" ) From 3170aa677de12d5b779165fb96b306fa840ab89d Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Mon, 14 Jun 2010 13:35:15 +0300 Subject: [PATCH 159/461] Adjust suite/innodb/r/innodb_mysql.result after the merge --- mysql-test/suite/innodb/r/innodb_mysql.result | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/mysql-test/suite/innodb/r/innodb_mysql.result b/mysql-test/suite/innodb/r/innodb_mysql.result index 497a98c8121..92699cb4481 100644 --- a/mysql-test/suite/innodb/r/innodb_mysql.result +++ b/mysql-test/suite/innodb/r/innodb_mysql.result @@ -2379,3 +2379,54 @@ SECOND(c)-@bug47453 0 DROP TABLE t1, t2; # +# Bug#38999 valgrind warnings for update statement in function compare_record() +# +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 values (1),(2),(3),(4),(5); +INSERT INTO t2 values (1); +SELECT * FROM t1 WHERE a = 2; +a +2 +UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1; +DROP TABLE t1,t2; +# +# Bug #53334: wrong result for outer join with impossible ON condition +# (see the same test case for MyISAM in join.test) +# +CREATE TABLE t1 (id INT PRIMARY KEY); +CREATE TABLE t2 (id INT); +INSERT INTO t1 VALUES (75); +INSERT INTO t1 VALUES (79); +INSERT INTO t1 VALUES (78); +INSERT INTO t1 VALUES (77); +REPLACE INTO t1 VALUES (76); +REPLACE INTO t1 VALUES (76); +INSERT INTO t1 VALUES (104); +INSERT INTO t1 VALUES (103); +INSERT INTO t1 VALUES (102); +INSERT INTO t1 VALUES (101); +INSERT INTO t1 VALUES (105); +INSERT INTO t1 VALUES (106); +INSERT INTO t1 VALUES (107); +INSERT INTO t2 VALUES (107),(75),(1000); +SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0 +WHERE t2.id=75 AND t1.id IS NULL; +id id +NULL 75 +EXPLAIN SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0 +WHERE t2.id=75 AND t1.id IS NULL; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 const PRIMARY NULL NULL NULL 1 Impossible ON condition +1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where +DROP TABLE t1,t2; +# +# Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index)) +# +CREATE TABLE t1 (a INT, b INT, c INT, d INT, +PRIMARY KEY(a,b,c), KEY(b,d)) +ENGINE=InnoDB; +INSERT INTO t1 VALUES (0, 77, 1, 3); +UPDATE t1 SET d = 0 WHERE b = 77 AND c = 25; +DROP TABLE t1; +End of 5.1 tests From db40bd4cc1ec3fa65faf1da14f2e280cf17d5a47 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Mon, 14 Jun 2010 18:57:30 +0200 Subject: [PATCH 160/461] mtr: when applying @opt_extra_mysqld_opt for --help, filter out --binlog-format - it makes mysqld to fail without --log-bin, and we don't need either anyway for --help to work. --- mysql-test/mysql-test-run.pl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 6ec85d19acd..f4fb2bb7d8a 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -1566,7 +1566,9 @@ sub collect_mysqld_features { mtr_add_arg($args, "--basedir=%s", $basedir); mtr_add_arg($args, "--language=%s", $path_language); mtr_add_arg($args, "--skip-grant-tables"); - mtr_add_arg($args, $_) for (@opt_extra_mysqld_opt); + for (@opt_extra_mysqld_opt) { + mtr_add_arg($args, $_) unless /^--binlog-format\b/; + } my $euid= $>; if (!IS_WINDOWS and $euid == 0) { mtr_add_arg($args, "--user=root"); From 8d253fe2f8ee8cbb3bd9f0cba1116567a9721022 Mon Sep 17 00:00:00 2001 From: Bjorn Munch Date: Tue, 15 Jun 2010 11:00:02 +0200 Subject: [PATCH 161/461] Bug #53424 Certain combination of flags give internal error Reorder code breaks when finding tests skipped due to --skip-rpl etc. Add simple test that master_opt is non-empty --- mysql-test/lib/mtr_cases.pl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mysql-test/lib/mtr_cases.pl b/mysql-test/lib/mtr_cases.pl index b9943fb6cfa..b3b7adf1b9e 100644 --- a/mysql-test/lib/mtr_cases.pl +++ b/mysql-test/lib/mtr_cases.pl @@ -246,8 +246,10 @@ sub collect_test_cases ($) { push(@criteria, "ndb=" . ($tinfo->{'ndb_test'} ? "1" : "0")); # Group test with equal options together. # Ending with "~" makes empty sort later than filled - push(@criteria, join("!", sort @{$tinfo->{'master_opt'}}) . "~"); - + if ( $tinfo->{'master_opt'}[0] ) + { + push(@criteria, join("!", sort @{$tinfo->{'master_opt'}}) . "~"); + } $sort_criteria{$test_name} = join(" ", @criteria); } } From 8e7ce2e9d86d9a216123fa424c50846944c8fbe8 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Tue, 15 Jun 2010 02:33:26 -0700 Subject: [PATCH 162/461] Add checkin description for bug #47622 to ChangeLog. --- storage/innodb_plugin/ChangeLog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index fb577a04221..971de4a9d27 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -275,6 +275,14 @@ Fix Bug#49497 Error 1467 (ER_AUTOINC_READ_FAILED) on inserting a negative value +2010-01-28 The InnoDB Team + * handler/ha_innodb.h, handler/ha_innodb.cc, + handler/handler0alter.cc, + mysql-test/innodb_bug47622.test, + mysql-test/innodb_bug47622.result: + Fix Bug#47622 the new index is added before the existing ones + in MySQL, but after one in SE + 2010-01-27 The InnoDB Team * include/row0mysql.h, log/log0recv.c, row/row0mysql.c: From d2e58e4e49f4c42c3c6b1220ccc0004ed6963192 Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Tue, 15 Jun 2010 18:29:53 +0400 Subject: [PATCH 163/461] Backport of the patch for bug52208 to 5.1 since the root cause of 52208 resulted in another test failure in 5.1. --- sql/mysqld.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 7356d4e917e..daa1bbe8ccc 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -190,9 +190,9 @@ typedef fp_except fp_except_t; # define fpu_control_t unsigned int # define _FPU_EXTENDED 0x300 # define _FPU_DOUBLE 0x200 -# ifdef __GNUC__ -# define _FPU_GETCW(cw) __asm__ __volatile__("fnstcw %0" : "=m" (*&cw)) -# define _FPU_SETCW(cw) __asm__ __volatile__("fldcw %0" : : "m" (*&cw)) +# if defined(__GNUC__) || defined(__SUNPRO_CC) +# define _FPU_GETCW(cw) asm volatile ("fnstcw %0" : "=m" (*&cw)) +# define _FPU_SETCW(cw) asm volatile ("fldcw %0" : : "m" (*&cw)) # else # define _FPU_GETCW(cw) (cw= 0) # define _FPU_SETCW(cw) From fc241c1ace6d83899fec3af234b4df776b35bfb0 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 15 Jun 2010 21:12:13 +0200 Subject: [PATCH 164/461] plugin maturity is unsigned --- include/mysql/plugin.h | 2 +- include/mysql/plugin_auth.h.pp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mysql/plugin.h b/include/mysql/plugin.h index 835e691daf3..ad3427a3ab5 100644 --- a/include/mysql/plugin.h +++ b/include/mysql/plugin.h @@ -455,7 +455,7 @@ struct st_maria_plugin struct st_mysql_show_var *status_vars; struct st_mysql_sys_var **system_vars; const char *version_info; /* plugin version string */ - int maturity; /* MariaDB_PLUGIN_MATURITY_XXX */ + unsigned int maturity; /* MariaDB_PLUGIN_MATURITY_XXX */ }; /************************************************************************* diff --git a/include/mysql/plugin_auth.h.pp b/include/mysql/plugin_auth.h.pp index 7db3dbb4715..977c87493a4 100644 --- a/include/mysql/plugin_auth.h.pp +++ b/include/mysql/plugin_auth.h.pp @@ -91,7 +91,7 @@ struct st_maria_plugin struct st_mysql_show_var *status_vars; struct st_mysql_sys_var **system_vars; const char *version_info; - int maturity; + unsigned int maturity; }; enum enum_ftparser_mode { From a670f14ed52ced55b84f94952ddddf8f6c0d7a2b Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 15 Jun 2010 21:15:41 +0200 Subject: [PATCH 165/461] innodb_plugin needs to be built with -lmysqlservices --- storage/innodb_plugin/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/innodb_plugin/Makefile.am b/storage/innodb_plugin/Makefile.am index 1d0dd936895..807be18b2a2 100644 --- a/storage/innodb_plugin/Makefile.am +++ b/storage/innodb_plugin/Makefile.am @@ -331,7 +331,7 @@ libinnobase_a_CFLAGS= $(AM_CFLAGS) EXTRA_LTLIBRARIES= ha_innodb_plugin.la pkgplugin_LTLIBRARIES= @plugin_innodb_plugin_shared_target@ -ha_innodb_plugin_la_LDFLAGS= -module -rpath $(pkgplugindir) +ha_innodb_plugin_la_LDFLAGS= -module -rpath $(pkgplugindir) -L$(top_builddir)/libservices -lmysqlservices ha_innodb_plugin_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) ha_innodb_plugin_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) ha_innodb_plugin_la_SOURCES= $(libinnobase_a_SOURCES) From b3eac87c3cf7a3c747173483bcb02deb3421f4b3 Mon Sep 17 00:00:00 2001 From: Joerg Bruehe Date: Tue, 15 Jun 2010 22:27:48 +0200 Subject: [PATCH 166/461] Fix bug#27072: RPM autostarts the server This is the fix for 5.1, where only the behaviour on upgrade is changed: If the server was stopped when the upgrade begins, we assume the administrator is taking manual action, so we do not start the (new) server at the end of the upgrade. We still install the start/stop script, so it will be started on reboot. support-files/mysql.spec.sh: In the "pre" section of the spec file, check the server status, and write the result to a file. In the "post" section, evaluate the status file, and start the server if it was running during status analysis. In 5.1, we start the server if there is no status file (which will happen on first installation, when there is no data directory yet). --- support-files/mysql.spec.sh | 120 +++++++++++++++++++++++++++++++++--- 1 file changed, 113 insertions(+), 7 deletions(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 91848ffc8bd..21a4d0c52a0 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -1,4 +1,4 @@ -# Copyright (C) 2000-2008 MySQL AB, 2008-2010 Sun Microsystems, Inc. +# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -610,6 +610,7 @@ touch $RBR%{_sysconfdir}/mysqlmanager.passwd ############################################################################## %pre server +mysql_datadir=%{mysqldatadir} # Check if we can safely upgrade. An upgrade is only safe if it's from one # of our RPMs in the same version family. @@ -678,7 +679,74 @@ HERE fi fi +# We assume that if there is exactly one ".pid" file, +# it contains the valid PID of a running MySQL server. +NR_PID_FILES=`ls $mysql_datadir/*.pid 2>/dev/null | wc -l` +case $NR_PID_FILES in + 0 ) SERVER_TO_START='' ;; # No "*.pid" file == no running server + 1 ) SERVER_TO_START='true' ;; + * ) SERVER_TO_START='' # Situation not clear + SEVERAL_PID_FILES=true ;; +esac +# That logic may be debated: We might check whether it is non-empty, +# contains exactly one number (possibly a PID), and whether "ps" finds it. +# OTOH, if there is no such process, it means a crash without a cleanup - +# is that a reason not to start a new server after upgrade? + +STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER + +if [ -f $STATUS_FILE ]; then + echo "Some previous upgrade was not finished:" + ls -ld $STATUS_FILE + echo "Please check its status, then do" + echo " rm $STATUS_FILE" + echo "before repeating the MySQL upgrade." + exit 1 +elif [ -n "$SEVERAL_PID_FILES" ] ; then + echo "Your MySQL directory '$mysql_datadir' has more than one PID file:" + ls -ld $mysql_datadir/*.pid + echo "Please check which one (if any) corresponds to a running server" + echo "and delete all others before repeating the MySQL upgrade." + exit 1 +fi + +NEW_VERSION=%{mysql_version}-%{release} + +# The "pre" section code is also run on a first installation, +# when there is no data directory yet. Protect against error messages. +if [ -d $mysql_datadir ] ; then + echo "MySQL RPM upgrade to version $NEW_VERSION" > $STATUS_FILE + echo "'pre' step running at `date`" >> $STATUS_FILE + echo >> $STATUS_FILE + echo "ERR file(s):" >> $STATUS_FILE + ls -ltr $mysql_datadir/*.err >> $STATUS_FILE + echo >> $STATUS_FILE + echo "Latest 'Version' line in latest file:" >> $STATUS_FILE + grep '^Version' `ls -tr $mysql_datadir/*.err | tail -1` | \ + tail -1 >> $STATUS_FILE + echo >> $STATUS_FILE + + if [ -n "$SERVER_TO_START" ] ; then + # There is only one PID file, race possibility ignored + echo "PID file:" >> $STATUS_FILE + ls -l $mysql_datadir/*.pid >> $STATUS_FILE + cat $mysql_datadir/*.pid >> $STATUS_FILE + echo >> $STATUS_FILE + echo "Server process:" >> $STATUS_FILE + ps -fp `cat $mysql_datadir/*.pid` >> $STATUS_FILE + echo >> $STATUS_FILE + echo "SERVER_TO_START=$SERVER_TO_START" >> $STATUS_FILE + else + # Take a note we checked it ... + echo "PID file:" >> $STATUS_FILE + ls -l $mysql_datadir/*.pid >> $STATUS_FILE 2>&1 + fi +fi + # Shut down a previously installed server first +# Note we *could* make that depend on $SERVER_TO_START, but we rather don't, +# so a "stop" is attempted even if there is no PID file. +# (Maybe the "stop" doesn't work then, but we might fix that in itself.) if [ -x %{_sysconfdir}/init.d/mysql ] ; then %{_sysconfdir}/init.d/mysql stop > /dev/null 2>&1 echo "Giving mysqld 5 seconds to exit nicely" @@ -687,17 +755,33 @@ fi %post server mysql_datadir=%{mysqldatadir} +NEW_VERSION=%{mysql_version}-%{release} +STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER # ---------------------------------------------------------------------- -# Create data directory if needed +# Create data directory if needed, check whether upgrade or install # ---------------------------------------------------------------------- if [ ! -d $mysql_datadir ] ; then mkdir -m 755 $mysql_datadir; fi -if [ ! -d $mysql_datadir/mysql ] ; then mkdir $mysql_datadir/mysql; fi +if [ -f $STATUS_FILE ] ; then + SERVER_TO_START=`grep '^SERVER_TO_START=' $STATUS_FILE | cut -c17-` +else + SERVER_TO_START='true' # This is for 5.1 only, to not change behavior +fi +# echo "Analyzed: SERVER_TO_START=$SERVER_TO_START" +if [ ! -d $mysql_datadir/mysql ] ; then + mkdir $mysql_datadir/mysql; + echo "MySQL RPM installation of version $NEW_VERSION" >> $STATUS_FILE +else + # If the directory exists, we may assume it is an upgrade. + echo "MySQL RPM upgrade to version $NEW_VERSION" >> $STATUS_FILE +fi if [ ! -d $mysql_datadir/test ] ; then mkdir $mysql_datadir/test; fi # ---------------------------------------------------------------------- # Make MySQL start/shutdown automatically when the machine does it. # ---------------------------------------------------------------------- +# NOTE: This still needs to be debated. Should we check whether these links +# for the other run levels exist(ed) before the upgrade? # use insserv for older SuSE Linux versions if [ -x /sbin/insserv ] ; then /sbin/insserv %{_sysconfdir}/init.d/mysql @@ -741,11 +825,14 @@ chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir # ---------------------------------------------------------------------- chmod -R og-rw $mysql_datadir/mysql -# Restart in the same way that mysqld will be started normally. -%{_sysconfdir}/init.d/mysql start +# Was the server running before the upgrade? If so, restart the new one. +if [ "$SERVER_TO_START" = "true" ] ; then + # Restart in the same way that mysqld will be started normally. + %{_sysconfdir}/init.d/mysql start -# Allow mysqld_safe to start mysqld and print a message before we exit -sleep 2 + # Allow mysqld_safe to start mysqld and print a message before we exit + sleep 2 +fi #echo "Thank you for installing the MySQL Community Server! For Production #systems, we recommend MySQL Enterprise, which contains enterprise-ready @@ -753,6 +840,14 @@ sleep 2 #scheduled service packs and more. Visit www.mysql.com/enterprise for more #information." +# Collect an upgrade history ... +echo "Upgrade/install finished at `date`" >> $STATUS_FILE +echo >> $STATUS_FILE +echo "=====" >> $STATUS_FILE +STATUS_HISTORY=$mysql_datadir/RPM_UPGRADE_HISTORY +cat $STATUS_FILE >> $STATUS_HISTORY +rm $STATUS_FILE + %if %{CLUSTER_BUILD} %post ndb-storage mysql_clusterdir=/var/lib/mysql-cluster @@ -1038,6 +1133,17 @@ fi # merging BK trees) ############################################################################## %changelog + +* Tue Jun 15 2010 Joerg Bruehe + +- Change the behaviour on upgrade: + *Iff* the server was stopped before the upgrade is started, this is taken as a + sign the administrator is handling that manually, and so the new server will + not be started automatically at the end of the upgrade. + The start/stop scripts will still be installed, so the server will be started + on the next machine boot. + This is the 5.1 version of fixing bug#27072 (RPM autostarting the server). + * Mon Mar 01 2010 Joerg Bruehe - Set "Oracle and/or its affiliates" as the vendor and copyright owner, From 26968d68a99c18ba0b4c2983793b13445d0bac41 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 16 Jun 2010 00:39:28 +0300 Subject: [PATCH 167/461] Don't flush pinned pages in checkpoint (fix for my last push) storage/maria/unittest/ma_pagecache_single.c: Check if we can flush write locked page for normal flush Check that we can't flush read locked page with FLUSH_KEEP_LAZY (used by checkpoint) --- storage/maria/ma_pagecache.c | 13 ++- storage/maria/unittest/ma_pagecache_single.c | 102 +++++++++++++++++-- 2 files changed, 103 insertions(+), 12 deletions(-) diff --git a/storage/maria/ma_pagecache.c b/storage/maria/ma_pagecache.c index b95a6f53c06..441310a60ea 100644 --- a/storage/maria/ma_pagecache.c +++ b/storage/maria/ma_pagecache.c @@ -4188,12 +4188,15 @@ static int flush_cached_blocks(PAGECACHE *pagecache, PAGECACHE_BLOCK_LINK *block= *cache; /* - This code is only run for non transactional tables. - We may have other threads reading the block during flush, - as non transactional tables can have many readers while the - one writer is doing the flush. + In the case of non_transactional tables we want to flush also + block pinned with reads. This is becasue we may have other + threads reading the block during flush, as non transactional + tables can have many readers while the one writer is doing the + flush. + We don't want to do flush pinned blocks during checkpoint. + We detect the checkpoint case by checking if type is LAZY. */ - if (block->wlocks) + if ((type == FLUSH_KEEP_LAZY && block->pins) || block->wlocks) { KEYCACHE_DBUG_PRINT("flush_cached_blocks", ("block: %u (0x%lx) pinned", diff --git a/storage/maria/unittest/ma_pagecache_single.c b/storage/maria/unittest/ma_pagecache_single.c index 53c820dcd2e..32e588e165a 100644 --- a/storage/maria/unittest/ma_pagecache_single.c +++ b/storage/maria/unittest/ma_pagecache_single.c @@ -246,7 +246,7 @@ int simple_read_change_write_read_test() /* Prepare page, read page 0 (and pin) then write page 1 and page 0. - Flush the file (shold flush only page 1 and return 1 (page 0 is + Flush the file (should flush only page 1 and return 1 (page 0 is still pinned). Check file on the disk. Unpin and flush. @@ -284,7 +284,7 @@ int simple_pin_test() bfill(buffw + TEST_PAGE_SIZE/2, TEST_PAGE_SIZE/2, ((unsigned char) 129)); pagecache_write(&pagecache, &file1, 0, 3, buffw, PAGECACHE_PLAIN_PAGE, - PAGECACHE_LOCK_WRITE_TO_READ, + PAGECACHE_LOCK_LEFT_WRITELOCKED, PAGECACHE_PIN_LEFT_PINNED, PAGECACHE_WRITE_DELAY, 0, LSN_IMPOSSIBLE); @@ -304,7 +304,7 @@ int simple_pin_test() pagecache_unlock(&pagecache, &file1, 0, - PAGECACHE_LOCK_READ_UNLOCK, + PAGECACHE_LOCK_WRITE_UNLOCK, PAGECACHE_UNPIN, 0, 0, 0); if (flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE)) @@ -323,6 +323,93 @@ err: DBUG_RETURN(res); } +/* + Prepare page, read page 0 (and pin) then write page 1 and page 0. + Flush the file (should flush only page 1 and return 1 (page 0 is + still pinned). + Check file on the disk. + Unpin and flush. + Check file on the disk. +*/ +int simple_pin_test2() +{ + unsigned char *buffw= malloc(TEST_PAGE_SIZE); + int res; + DBUG_ENTER("simple_pin_test2"); + /* prepare the file */ + bfill(buffw, TEST_PAGE_SIZE, '\1'); + pagecache_write(&pagecache, &file1, 0, 3, buffw, + PAGECACHE_PLAIN_PAGE, + PAGECACHE_LOCK_LEFT_UNLOCKED, + PAGECACHE_PIN_LEFT_UNPINNED, + PAGECACHE_WRITE_DELAY, + 0, LSN_IMPOSSIBLE); + /* test */ + if (flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE)) + { + diag("Got error during flushing pagecache\n"); + exit(1); + } + pagecache_read(&pagecache, &file1, 0, 3, buffw, + PAGECACHE_PLAIN_PAGE, + PAGECACHE_LOCK_WRITE, + 0); + pagecache_write(&pagecache, &file1, 1, 3, buffw, + PAGECACHE_PLAIN_PAGE, + PAGECACHE_LOCK_LEFT_UNLOCKED, + PAGECACHE_PIN_LEFT_UNPINNED, + PAGECACHE_WRITE_DELAY, + 0, LSN_IMPOSSIBLE); + bfill(buffw + TEST_PAGE_SIZE/2, TEST_PAGE_SIZE/2, ((unsigned char) 129)); + pagecache_write(&pagecache, &file1, 0, 3, buffw, + PAGECACHE_PLAIN_PAGE, + PAGECACHE_LOCK_WRITE_TO_READ, + PAGECACHE_PIN_LEFT_PINNED, + PAGECACHE_WRITE_DELAY, + 0, LSN_IMPOSSIBLE); + /* + We have to get error because one page of the file is pinned, + other page should be flushed + */ + if (!flush_pagecache_blocks(&pagecache, &file1, FLUSH_KEEP_LAZY)) + { + diag("Did not get error in flush_pagecache_blocks 2\n"); + res= 0; + goto err; + } + ok((res= test(test_file(file1, file1_name, TEST_PAGE_SIZE*2, TEST_PAGE_SIZE*2, + simple_pin_test_file1))), + "Simple pin page file with pin 2"); + + /* Test that a normal flush goes through */ + if (flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE)) + { + diag("Got error in flush_pagecache_blocks 3\n"); + res= 0; + goto err; + } + pagecache_unlock(&pagecache, + &file1, + 0, + PAGECACHE_LOCK_READ_UNLOCK, + PAGECACHE_UNPIN, + 0, 0, 0); + if (flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE)) + { + diag("Got error in flush_pagecache_blocks 4\n"); + res= 0; + goto err; + } + ok((res&= test(test_file(file1, file1_name, TEST_PAGE_SIZE*2, TEST_PAGE_SIZE, + simple_pin_test_file2))), + "Simple pin page result file 2"); + if (res) + reset_file(&file1, file1_name); +err: + free(buffw); + DBUG_RETURN(res); +} + /* Checks pins without lock. */ @@ -357,7 +444,7 @@ int simple_pin_no_lock_test() We have to get error because one page of the file is pinned, other page should be flushed */ - if (!flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE)) + if (!flush_pagecache_blocks(&pagecache, &file1, FLUSH_KEEP_LAZY)) { diag("Did not get error in flush_pagecache_blocks 2\n"); res= 0; @@ -392,7 +479,7 @@ int simple_pin_no_lock_test() pagecache_unlock_by_link(&pagecache, link, PAGECACHE_LOCK_WRITE_UNLOCK, PAGECACHE_PIN_LEFT_PINNED, 0, 0, 1, FALSE); - if (!flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE)) + if (!flush_pagecache_blocks(&pagecache, &file1, FLUSH_KEEP_LAZY)) { diag("Did not get error in flush_pagecache_blocks 3\n"); res= 0; @@ -609,6 +696,7 @@ static void *test_thread(void *arg) if (!simple_read_write_test() || !simple_read_change_write_read_test() || !simple_pin_test() || + !simple_pin_test2() || !simple_pin_no_lock_test() || !simple_delete_forget_test() || !simple_delete_flush_test()) @@ -657,8 +745,8 @@ int main(int argc __attribute__((unused)), DBUG_ENTER("main"); DBUG_PRINT("info", ("Main thread: %s\n", my_thread_name())); - plan(16); - SKIP_BIG_TESTS(16) + plan(18); + SKIP_BIG_TESTS(18) { if ((tmp_file= my_open(file2_name, O_CREAT | O_TRUNC | O_RDWR, From cfbee9359c4282cbff7426d6e71994205964f2df Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 16 Jun 2010 01:00:51 +0300 Subject: [PATCH 168/461] Fixed compiler warnings sql/log_event.cc: Fixed compiler warning on windows storage/maria/ma_state.c: Fixed compiler warning storage/maria/maria_chk.c: Fixed compiler warning storage/myisam/mi_dynrec.c: Fixed compiler warning support-files/compiler_warnings.supp: Fixed suppression rule --- sql/log_event.cc | 10 +++++----- storage/maria/ma_state.c | 4 +++- storage/maria/maria_chk.c | 2 +- storage/myisam/mi_dynrec.c | 2 +- support-files/compiler_warnings.supp | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/sql/log_event.cc b/sql/log_event.cc index f00b271e491..7d8bedd6c79 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -1716,13 +1716,13 @@ beg: case MYSQL_TYPE_DATETIME: { - size_t d, t; + ulong d, t; uint64 i64= uint8korr(ptr); /* YYYYMMDDhhmmss */ - d= i64 / 1000000; - t= i64 % 1000000; + d= (ulong) (i64 / 1000000); + t= (ulong) (i64 % 1000000); my_b_printf(file, "%04d-%02d-%02d %02d:%02d:%02d", - d / 10000, (d % 10000) / 100, d % 100, - t / 10000, (t % 10000) / 100, t % 100); + (int) (d / 10000), (int) (d % 10000) / 100, (int) (d % 100), + (int) (t / 10000), (int) (t % 10000) / 100, (int) t % 100); my_snprintf(typestr, typestr_length, "DATETIME"); return 8; } diff --git a/storage/maria/ma_state.c b/storage/maria/ma_state.c index c8fcf1a6818..cc5eea578a5 100644 --- a/storage/maria/ma_state.c +++ b/storage/maria/ma_state.c @@ -639,7 +639,9 @@ my_bool _ma_block_check_status(void *param __attribute__((unused))) /* Get status when transactional but not versioned */ -void _ma_block_get_status_no_versioning(void* param, my_bool concurrent_insert) +void _ma_block_get_status_no_versioning(void* param, + my_bool concurrent_insert + __attribute__((unused))) { MARIA_HA *info=(MARIA_HA*) param; DBUG_ENTER("_ma_block_get_status_no_version"); diff --git a/storage/maria/maria_chk.c b/storage/maria/maria_chk.c index ab3c641b55f..0bf38ac5dc8 100644 --- a/storage/maria/maria_chk.c +++ b/storage/maria/maria_chk.c @@ -1094,7 +1094,7 @@ static int maria_chk(HA_CHECK *param, char *filename) */ maria_lock_database(info, F_EXTRA_LCK); datafile= info->dfile.file; - if (init_pagecache(maria_pagecache, param->use_buffers, 0, 0, + if (init_pagecache(maria_pagecache, (size_t) param->use_buffers, 0, 0, maria_block_size, MY_WME) == 0) { _ma_check_print_error(param, "Can't initialize page cache with %lu memory", diff --git a/storage/myisam/mi_dynrec.c b/storage/myisam/mi_dynrec.c index adae7076858..dae8fbe50a8 100644 --- a/storage/myisam/mi_dynrec.c +++ b/storage/myisam/mi_dynrec.c @@ -116,7 +116,7 @@ int mi_munmap_file(MI_INFO *info) { int ret; DBUG_ENTER("mi_unmap_file"); - if ((ret= my_munmap(info->s->file_map, info->s->mmaped_length))) + if ((ret= my_munmap(info->s->file_map, (size_t) info->s->mmaped_length))) DBUG_RETURN(ret); info->s->file_read= mi_nommap_pread; info->s->file_write= mi_nommap_pwrite; diff --git a/support-files/compiler_warnings.supp b/support-files/compiler_warnings.supp index 8e2b63e7a46..c8d2926145d 100644 --- a/support-files/compiler_warnings.supp +++ b/support-files/compiler_warnings.supp @@ -130,7 +130,7 @@ xaction_xt\.cc: may be used uninitialized in this function # storage/pbxt/ : typedef.*was ignored in this declaration ha_pbxt\.cc : variable.*might be clobbered by.*longjmp -table_xt\.cc : variable.*might be clobbered by ~longjm~p or ~vfork~ +table_xt\.cc : variable.*might be clobbered by.*longjmp # # Yassl From fdd62e53c21f01381e2b366b757d2c3d0e1a207c Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 16 Jun 2010 09:52:12 +0200 Subject: [PATCH 169/461] bug in converting st_mysql_plugin to st_maria_plugin - all but the last plugin in a dl were lost --- sql/sql_plugin.cc | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index 658688d7159..7512150856c 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -460,32 +460,32 @@ static my_bool read_mysql_plugin_info(struct st_plugin_dl *plugin_dl, i++) { - cur->type= old->type; - cur->info= old->info; - cur->name= old->name; - cur->author= old->author; - cur->descr= old->descr; - cur->license= old->license; - cur->init= old->init; - cur->deinit= old->deinit; - cur->version= old->version; - cur->status_vars= old->status_vars; - cur->system_vars= old->system_vars; + cur[i].type= old->type; + cur[i].info= old->info; + cur[i].name= old->name; + cur[i].author= old->author; + cur[i].descr= old->descr; + cur[i].license= old->license; + cur[i].init= old->init; + cur[i].deinit= old->deinit; + cur[i].version= old->version; + cur[i].status_vars= old->status_vars; + cur[i].system_vars= old->system_vars; /* Something like this should be added to process new mysql plugin versions: if (plugin_dl->mysqlversion > 0x0101) { - cur->newfield= CONSTANT_MEANS_UNKNOWN; + cur[i].newfield= CONSTANT_MEANS_UNKNOWN; } else { - cur->newfield= old->newfield; + cur[i].newfield= old->newfield; } */ /* Maria only fields */ - cur->version_info= "Unknown"; - cur->maturity= MariaDB_PLUGIN_MATURITY_UNKNOWN; + cur[i].version_info= "Unknown"; + cur[i].maturity= MariaDB_PLUGIN_MATURITY_UNKNOWN; } plugin_dl->allocated= true; plugin_dl->plugins= (struct st_maria_plugin *)cur; From 97d610d69f46366fe1e9a3b8738d9bd4b8043eed Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 16 Jun 2010 19:01:22 +0200 Subject: [PATCH 170/461] --plugin_maturity command-line option --- mysql-test/r/plugin_maturity.result | 2 ++ mysql-test/t/plugin_maturity-master.opt | 1 + mysql-test/t/plugin_maturity.test | 4 +++ sql/mysql_priv.h | 1 + sql/mysqld.cc | 33 ++++++++++++++++++------- sql/set_var.cc | 14 ++++------- sql/set_var.h | 17 ++++--------- sql/sql_class.h | 1 - sql/sql_plugin.cc | 23 +++++++++++++++++ sql/sql_plugin.h | 3 +++ 10 files changed, 68 insertions(+), 31 deletions(-) create mode 100644 mysql-test/r/plugin_maturity.result create mode 100644 mysql-test/t/plugin_maturity-master.opt create mode 100644 mysql-test/t/plugin_maturity.test diff --git a/mysql-test/r/plugin_maturity.result b/mysql-test/r/plugin_maturity.result new file mode 100644 index 00000000000..97147459f6f --- /dev/null +++ b/mysql-test/r/plugin_maturity.result @@ -0,0 +1,2 @@ +INSTALL PLUGIN example SONAME 'ha_example.so'; +ERROR HY000: Can't open shared library 'ha_example.so' (errno: 0 Loading of experimental plugins is prohibited by --plugin-maturity=stable) diff --git a/mysql-test/t/plugin_maturity-master.opt b/mysql-test/t/plugin_maturity-master.opt new file mode 100644 index 00000000000..70ba6280117 --- /dev/null +++ b/mysql-test/t/plugin_maturity-master.opt @@ -0,0 +1 @@ +--plugin-maturity=stable diff --git a/mysql-test/t/plugin_maturity.test b/mysql-test/t/plugin_maturity.test new file mode 100644 index 00000000000..7557a4355e3 --- /dev/null +++ b/mysql-test/t/plugin_maturity.test @@ -0,0 +1,4 @@ +# test for --plugin_maturity +--replace_regex /\.dll/.so/ +--error 1126 +eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO'; diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 21fe4f47a88..299222e4c95 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -2052,6 +2052,7 @@ extern bool volatile abort_loop, shutdown_in_progress; extern bool in_bootstrap; extern uint volatile thread_count, thread_running, global_read_lock; extern ulong thread_created; +extern uint thread_handling; extern uint connection_count, extra_connection_count; extern my_bool opt_sql_bin_update, opt_safe_user_create, opt_no_mix_types; extern my_bool opt_safe_show_db, opt_local_infile, opt_myisam_use_mmap; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 2b484a4cdb6..3d03c5efaa0 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -348,6 +348,16 @@ TYPELIB thread_handling_typelib= thread_handling_names, NULL }; +const char *plugin_maturity_names[]= +{ "unknown", "experimental", "alpha", "beta", "gamma", "stable", 0 }; + +TYPELIB plugin_maturity_values= +{ + array_elements(plugin_maturity_names) - 1, "", plugin_maturity_names, 0 +}; + +const int server_maturity= MariaDB_PLUGIN_MATURITY_UNKNOWN; + const char *first_keyword= "first", *binary_keyword= "BINARY"; const char *my_localhost= "localhost", *delayed_user= "DELAYED"; #if SIZEOF_OFF_T > 4 && defined(BIG_TABLES) @@ -387,6 +397,7 @@ static my_bool opt_short_log_format= 0; static my_bool opt_ignore_wrong_options= 0, opt_expect_abort= 0; static uint kill_cached_threads, wake_thread; ulong thread_created; +uint thread_handling; static ulong max_used_connections; static ulong my_bind_addr; /**< the address we bind to */ static volatile ulong cached_thread_count= 0; @@ -5924,6 +5935,7 @@ enum options_mysqld OPT_TABLE_LOCK_WAIT_TIMEOUT, OPT_PLUGIN_LOAD, OPT_PLUGIN_DIR, + OPT_PLUGIN_MATURITY, OPT_SYMBOLIC_LINKS, OPT_WARNINGS, OPT_RECORD_BUFFER_OLD, @@ -7208,7 +7220,7 @@ The minimum value for this variable is 4096.", (uchar**) &optimizer_switch_str, (uchar**) &optimizer_switch_str, 0, GET_STR, REQUIRED_ARG, /*OPTIMIZER_SWITCH_DEFAULT*/0, 0, 0, 0, 0, 0}, - {"plugin_dir", OPT_PLUGIN_DIR, + {"plugin-dir", OPT_PLUGIN_DIR, "Directory for plugins.", (uchar**) &opt_plugin_dir_ptr, (uchar**) &opt_plugin_dir_ptr, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -7218,6 +7230,10 @@ The minimum value for this variable is 4096.", "is the plugin library in plugin_dir.", (uchar**) &opt_plugin_load, (uchar**) &opt_plugin_load, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"plugin-maturity", OPT_PLUGIN_MATURITY, + "The lowest desirable plugin maturity. Plugins less mature than that will not be installed or loaded.", + (uchar**) &plugin_maturity, (uchar**) &plugin_maturity, &plugin_maturity_values, + GET_ENUM, REQUIRED_ARG, server_maturity, 0, 0, 0, 0, 0}, {"preload_buffer_size", OPT_PRELOAD_BUFFER_SIZE, "The size of the buffer that is allocated when preloading indexes.", (uchar**) &global_system_variables.preload_buff_size, @@ -8907,16 +8923,16 @@ mysqld_get_one_option(int optid, break; } case OPT_ONE_THREAD: - global_system_variables.thread_handling= SCHEDULER_NO_THREADS; - opt_thread_handling= thread_handling_typelib.type_names[global_system_variables.thread_handling]; + thread_handling= SCHEDULER_NO_THREADS; + opt_thread_handling= thread_handling_typelib.type_names[thread_handling]; break; case OPT_THREAD_HANDLING: { int id; LINT_INIT(id); if (!find_opt_type(argument, &thread_handling_typelib, opt->name, &id)) - global_system_variables.thread_handling= id - 1; - opt_thread_handling= thread_handling_typelib.type_names[global_system_variables.thread_handling]; + thread_handling= id - 1; + opt_thread_handling= thread_handling_typelib.type_names[thread_handling]; break; } case OPT_FT_BOOLEAN_SYNTAX: @@ -9078,7 +9094,7 @@ static int get_options(int *argc,char **argv) if (mysqld_chroot) set_root(mysqld_chroot); #else - global_system_variables.thread_handling = SCHEDULER_NO_THREADS; + thread_handling = SCHEDULER_NO_THREADS; max_allowed_packet= global_system_variables.max_allowed_packet; net_buffer_length= global_system_variables.net_buffer_length; #endif @@ -9117,11 +9133,10 @@ static int get_options(int *argc,char **argv) one_thread_scheduler(&thread_scheduler); one_thread_scheduler(&extra_thread_scheduler); #else - if (global_system_variables.thread_handling <= - SCHEDULER_ONE_THREAD_PER_CONNECTION) + if (thread_handling <= SCHEDULER_ONE_THREAD_PER_CONNECTION) one_thread_per_connection_scheduler(&thread_scheduler, &max_connections, &connection_count); - else if (global_system_variables.thread_handling == SCHEDULER_NO_THREADS) + else if (thread_handling == SCHEDULER_NO_THREADS) one_thread_scheduler(&thread_scheduler); else pool_of_threads_scheduler(&thread_scheduler); /* purecov: tested */ diff --git a/sql/set_var.cc b/sql/set_var.cc index 9b8d4cf801c..5a5e498c785 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -592,9 +592,8 @@ static sys_var_thd_ulong sys_trans_prealloc_size(&vars, "transaction_prealloc_si &SV::trans_prealloc_size, 0, fix_trans_mem_root); sys_var_enum_const sys_thread_handling(&vars, "thread_handling", - &SV::thread_handling, - &thread_handling_typelib, - NULL); + &thread_handling, + &thread_handling_typelib); #ifdef HAVE_QUERY_CACHE static sys_var_long_ptr sys_query_cache_limit(&vars, "query_cache_limit", @@ -957,6 +956,9 @@ static sys_var_readonly sys_myisam_mmap_size(&vars, "myisam_mmap_size", SHOW_LONGLONG, get_myisam_mmap_size); +static sys_var_enum_const sys_plugin_maturity(&vars, "plugin_maturity", + &plugin_maturity, + &plugin_maturity_values); bool sys_var::check(THD *thd, set_var *var) { @@ -1689,12 +1691,6 @@ uchar *sys_var_enum::value_ptr(THD *thd, enum_var_type type, LEX_STRING *base) return (uchar*) enum_names->type_names[*value]; } -uchar *sys_var_enum_const::value_ptr(THD *thd, enum_var_type type, - LEX_STRING *base) -{ - return (uchar*) enum_names->type_names[global_system_variables.*offset]; -} - bool sys_var_thd_ulong::check(THD *thd, set_var *var) { if (get_unsigned(thd, var, max_system_variables.*offset, GET_ULONG)) diff --git a/sql/set_var.h b/sql/set_var.h index 5b8fa1358cb..4f0ef390cce 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -376,21 +376,14 @@ public: }; -class sys_var_enum_const :public sys_var +class sys_var_enum_const :public sys_var_enum { - ulong SV::*offset; - TYPELIB *enum_names; public: - sys_var_enum_const(sys_var_chain *chain, const char *name_arg, ulong SV::*offset_arg, - TYPELIB *typelib, sys_after_update_func func) - :sys_var(name_arg,func), offset(offset_arg), enum_names(typelib) - { chain_sys_var(chain); } - bool check(THD *thd, set_var *var) { return 1; } - bool update(THD *thd, set_var *var) { return 1; } - SHOW_TYPE show_type() { return SHOW_CHAR; } - bool check_update_type(Item_result type) { return 1; } + sys_var_enum_const(sys_var_chain *chain, const char *name_arg, + uint *value_arg, TYPELIB *typelib) + :sys_var_enum(chain, name_arg, value_arg, typelib, 0) + { } bool is_readonly() const { return 1; } - uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base); }; diff --git a/sql/sql_class.h b/sql/sql_class.h index 038dff7bcac..e9129983240 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -339,7 +339,6 @@ struct system_variables ulong read_rnd_buff_size; ulong div_precincrement; ulong sortbuff_size; - ulong thread_handling; ulong tx_isolation; ulong completion_type; /* Determines which non-standard SQL behaviour should be enabled */ diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index 7512150856c..71c735fee66 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -37,6 +37,18 @@ static TYPELIB global_plugin_typelib= char *opt_plugin_load= NULL; char *opt_plugin_dir_ptr; char opt_plugin_dir[FN_REFLEN]; +uint plugin_maturity; + +/* + not really needed now, this map will become essential when we add more + maturity levels. We cannot change existing maturity constants, + so the next value - even if it will be MariaDB_PLUGIN_MATURITY_VERY_BUGGY - + will inevitably be larger than MariaDB_PLUGIN_MATURITY_STABLE. + To be able to compare them we use this mapping array +*/ +uint plugin_maturity_map[]= +{ 0, 1, 2, 3, 4, 5, 6 }; + /* When you ad a new plugin type, add both a string and make sure that the init and deinit array are correctly updated. @@ -953,6 +965,17 @@ static bool plugin_add(MEM_ROOT *tmp_root, report_error(report, ER_CANT_OPEN_LIBRARY, dl->str, 0, buf); goto err; } + if (plugin_maturity_map[plugin->maturity] < plugin_maturity) + { + char buf[256]; + strxnmov(buf, sizeof(buf) - 1, "Loading of ", + plugin_maturity_names[plugin->maturity], + " plugins is prohibited by --plugin-maturity=", + plugin_maturity_names[plugin_maturity], + NullS); + report_error(report, ER_CANT_OPEN_LIBRARY, dl->str, 0, buf); + goto err; + } tmp.plugin= plugin; tmp.name.str= (char *)plugin->name; tmp.name.length= name_len; diff --git a/sql/sql_plugin.h b/sql/sql_plugin.h index 5822b096fa0..149b7e0cbb1 100644 --- a/sql/sql_plugin.h +++ b/sql/sql_plugin.h @@ -107,6 +107,9 @@ extern char *opt_plugin_load; extern char *opt_plugin_dir_ptr; extern char opt_plugin_dir[FN_REFLEN]; extern const LEX_STRING plugin_type_names[]; +extern uint plugin_maturity; +extern TYPELIB plugin_maturity_values; +extern const char *plugin_maturity_names[]; extern int plugin_init(int *argc, char **argv, int init_flags); extern void plugin_shutdown(void); From 3c0be2c7b3faf98cb0e09994f4c992160c5a62ab Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Wed, 16 Jun 2010 19:12:04 -0700 Subject: [PATCH 171/461] Fix Bug #54330 Broken fast index creation. Add additional array to account for each merge run's start offset, so correct offsets are paired up for multiple merge runs. rb://377 approved by Marko --- storage/innodb_plugin/ChangeLog | 5 ++ storage/innodb_plugin/row/row0merge.c | 87 +++++++++++++++++---------- 2 files changed, 61 insertions(+), 31 deletions(-) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 971de4a9d27..a76329c85eb 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,8 @@ +2010-06-16 The InnoDB Team + + * row/row0merge.c: + Fix Bug#54330 Broken fast index creation + 2010-06-08 The InnoDB Team * dict/dict0load.c: diff --git a/storage/innodb_plugin/row/row0merge.c b/storage/innodb_plugin/row/row0merge.c index 1f6851bf63c..f7bc0299b70 100644 --- a/storage/innodb_plugin/row/row0merge.c +++ b/storage/innodb_plugin/row/row0merge.c @@ -1578,22 +1578,28 @@ row_merge( const dict_index_t* index, /*!< in: index being created */ merge_file_t* file, /*!< in/out: file containing index entries */ - ulint* half, /*!< in/out: half the file */ row_merge_block_t* block, /*!< in/out: 3 buffers */ int* tmpfd, /*!< in/out: temporary file handle */ - TABLE* table) /*!< in/out: MySQL table, for + TABLE* table, /*!< in/out: MySQL table, for reporting erroneous key value if applicable */ + ulint* num_run,/*!< in/out: Number of runs remain + to be merged */ + ulint* run_offset) /*!< in/out: Array contains the + first offset number for each merge + run */ { ulint foffs0; /*!< first input offset */ ulint foffs1; /*!< second input offset */ ulint error; /*!< error code */ merge_file_t of; /*!< output file */ - const ulint ihalf = *half; + const ulint ihalf = run_offset[*num_run / 2]; /*!< half the input file */ - ulint ohalf; /*!< half the output file */ + ulint n_run = 0; + /*!< num of runs generated from this merge */ UNIV_MEM_ASSERT_W(block[0], 3 * sizeof block[0]); + ut_ad(ihalf < file->offset); of.fd = *tmpfd; @@ -1601,17 +1607,20 @@ row_merge( of.n_rec = 0; /* Merge blocks to the output file. */ - ohalf = 0; foffs0 = 0; foffs1 = ihalf; + UNIV_MEM_INVALID(run_offset, *num_run * sizeof *run_offset); + for (; foffs0 < ihalf && foffs1 < file->offset; foffs0++, foffs1++) { - ulint ahalf; /*!< arithmetic half the input file */ if (UNIV_UNLIKELY(trx_is_interrupted(trx))) { return(DB_INTERRUPTED); } + /* Remember the offset number for this run */ + run_offset[n_run++] = of.offset; + error = row_merge_blocks(index, file, block, &foffs0, &foffs1, &of, table); @@ -1619,21 +1628,6 @@ row_merge( return(error); } - /* Record the offset of the output file when - approximately half the output has been generated. In - this way, the next invocation of row_merge() will - spend most of the time in this loop. The initial - estimate is ohalf==0. */ - ahalf = file->offset / 2; - ut_ad(ohalf <= of.offset); - - /* Improve the estimate until reaching half the input - file size, or we can not get any closer to it. All - comparands should be non-negative when !(ohalf < ahalf) - because ohalf <= of.offset. */ - if (ohalf < ahalf || of.offset - ahalf < ohalf - ahalf) { - ohalf = of.offset; - } } /* Copy the last blocks, if there are any. */ @@ -1643,6 +1637,9 @@ row_merge( return(DB_INTERRUPTED); } + /* Remember the offset number for this run */ + run_offset[n_run++] = of.offset; + if (!row_merge_blocks_copy(index, file, block, &foffs0, &of)) { return(DB_CORRUPTION); } @@ -1655,6 +1652,9 @@ row_merge( return(DB_INTERRUPTED); } + /* Remember the offset number for this run */ + run_offset[n_run++] = of.offset; + if (!row_merge_blocks_copy(index, file, block, &foffs1, &of)) { return(DB_CORRUPTION); } @@ -1666,10 +1666,23 @@ row_merge( return(DB_CORRUPTION); } + ut_ad(n_run < *num_run); + + *num_run = n_run; + + /* Each run can contain one or more offsets. As merge goes on, + the number of runs (to merge) will reduce until we have one + single run. So the number of runs will always be smaller than + the number of offsets in file */ + ut_ad((*num_run) <= file->offset); + + /* The number of offsets in output file is always equal or + smaller than input file */ + ut_ad(of.offset <= file->offset); + /* Swap file descriptors for the next pass. */ *tmpfd = file->fd; *file = of; - *half = ohalf; UNIV_MEM_INVALID(block[0], 3 * sizeof block[0]); @@ -1694,27 +1707,39 @@ row_merge_sort( if applicable */ { ulint half = file->offset / 2; + ulint num_runs; + ulint* run_offset; + ulint error = DB_SUCCESS; + + /* Record the number of merge runs we need to perform */ + num_runs = file->offset; + + /* "run_offset" records each run's first offset number */ + run_offset = (ulint*) mem_alloc(file->offset * sizeof(ulint)); + + /* This tells row_merge() where to start for the first round + of merge. */ + run_offset[half] = half; /* The file should always contain at least one byte (the end of file marker). Thus, it must be at least one block. */ ut_ad(file->offset > 0); + /* Merge the runs until we have one big run */ do { - ulint error; + error = row_merge(trx, index, file, block, tmpfd, + table, &num_runs, run_offset); - error = row_merge(trx, index, file, &half, - block, tmpfd, table); + UNIV_MEM_ASSERT_RW(run_offset, num_runs * sizeof *run_offset); if (error != DB_SUCCESS) { - return(error); + break; } + } while (num_runs > 1); - /* half > 0 should hold except when the file consists - of one block. No need to merge further then. */ - ut_ad(half > 0 || file->offset == 1); - } while (half < file->offset && half > 0); + mem_free(run_offset); - return(DB_SUCCESS); + return(error); } /*************************************************************//** From 5b80e6cd5df050104aa59d16ceb4c11cf1062484 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 17 Jun 2010 15:52:23 +0200 Subject: [PATCH 172/461] fix for valgrind warning --- sql/tztime.cc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/sql/tztime.cc b/sql/tztime.cc index 457bbeec676..3f3060fbc10 100644 --- a/sql/tztime.cc +++ b/sql/tztime.cc @@ -1814,6 +1814,7 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables) my_time_t ttime; char buff[MAX_FIELD_WIDTH]; uchar keybuff[32]; + Field *field; String abbr(buff, sizeof(buff), &my_charset_latin1); char *alloc_buff, *tz_name_buff; /* @@ -1891,8 +1892,12 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables) */ table= tz_tables->table; tz_tables= tz_tables->next_local; - table->field[0]->store((longlong) tzid, TRUE); - table->field[0]->get_key_image(keybuff, sizeof(keybuff), Field::itRAW); + field= table->field[0]; + field->store((longlong) tzid, TRUE); + DBUG_ASSERT(field->key_length() <= sizeof(keybuff)); + field->get_key_image(keybuff, + min(field->key_length(), sizeof(keybuff)), + Field::itRAW); (void)table->file->ha_index_init(0, 1); if (table->file->ha_index_read_map(table->record[0], keybuff, @@ -1919,8 +1924,12 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables) */ table= tz_tables->table; tz_tables= tz_tables->next_local; - table->field[0]->store((longlong) tzid, TRUE); - table->field[0]->get_key_image(keybuff, sizeof(keybuff), Field::itRAW); + field= table->field[0]; + field->store((longlong) tzid, TRUE); + DBUG_ASSERT(field->key_length() <= sizeof(keybuff)); + field->get_key_image(keybuff, + min(field->key_length(), sizeof(keybuff)), + Field::itRAW); (void)table->file->ha_index_init(0, 1); res= table->file->ha_index_read_map(table->record[0], keybuff, From 84074519a590c7843d49529b92ed557e5fa9cd63 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 17 Jun 2010 15:53:05 +0200 Subject: [PATCH 173/461] plugin_maturity.test needs example plugin to be built --- mysql-test/t/plugin_maturity.test | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/t/plugin_maturity.test b/mysql-test/t/plugin_maturity.test index 7557a4355e3..fe95f19b803 100644 --- a/mysql-test/t/plugin_maturity.test +++ b/mysql-test/t/plugin_maturity.test @@ -1,3 +1,5 @@ +--source include/have_example_plugin.inc + # test for --plugin_maturity --replace_regex /\.dll/.so/ --error 1126 From 69bc6dd01ce962932a1083f162b29cffc0fda834 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Thu, 17 Jun 2010 10:33:03 -0700 Subject: [PATCH 174/461] Fix an overly asserted assertion during previous checkin for bug #54330. --- storage/innodb_plugin/row/row0merge.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/storage/innodb_plugin/row/row0merge.c b/storage/innodb_plugin/row/row0merge.c index f7bc0299b70..28e7faed1f8 100644 --- a/storage/innodb_plugin/row/row0merge.c +++ b/storage/innodb_plugin/row/row0merge.c @@ -1666,7 +1666,7 @@ row_merge( return(DB_CORRUPTION); } - ut_ad(n_run < *num_run); + ut_ad(n_run <= *num_run); *num_run = n_run; @@ -1714,6 +1714,11 @@ row_merge_sort( /* Record the number of merge runs we need to perform */ num_runs = file->offset; + /* If num_runs are less than 1, nothing to merge */ + if (num_runs <= 1) { + return(error); + } + /* "run_offset" records each run's first offset number */ run_offset = (ulint*) mem_alloc(file->offset * sizeof(ulint)); From 609e65ba54505531f228983912155de10750a3da Mon Sep 17 00:00:00 2001 From: Joerg Bruehe Date: Thu, 17 Jun 2010 19:47:38 +0200 Subject: [PATCH 175/461] Bug#54590 "make_binary_distribution" fails because a command line exceeds the limit The number and/or names of our files for the main test suite (contents of "mysql-test/t/") now exceeds the command line length limit on AIX. Solve the problem by using separate "cp" commands for the various file name extensions. --- scripts/make_binary_distribution.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/make_binary_distribution.sh b/scripts/make_binary_distribution.sh index 1be5d253e2f..a089e8ef55d 100644 --- a/scripts/make_binary_distribution.sh +++ b/scripts/make_binary_distribution.sh @@ -336,9 +336,11 @@ $CP mysql-test/t/*.def $BASE/mysql-test/t $CP mysql-test/include/*.inc $BASE/mysql-test/include $CP mysql-test/include/*.test $BASE/mysql-test/include $CP mysql-test/t/*.def $BASE/mysql-test/t -$CP mysql-test/t/*.test mysql-test/t/*.imtest \ - mysql-test/t/*.disabled mysql-test/t/*.opt \ - mysql-test/t/*.slave-mi mysql-test/t/*.sh mysql-test/t/*.sql $BASE/mysql-test/t +# Attention: when the wildcards expand to a line that is very long, +# it may exceed the command line length limit on some platform(s). Bug#54590 +$CP mysql-test/t/*.test mysql-test/t/*.imtest $BASE/mysql-test/t +$CP mysql-test/t/*.disabled mysql-test/t/*.opt $BASE/mysql-test/t +$CP mysql-test/t/*.slave-mi mysql-test/t/*.sh mysql-test/t/*.sql $BASE/mysql-test/t $CP mysql-test/r/*.result mysql-test/r/*.require \ $BASE/mysql-test/r From 4d446d4c104925d866d0b28cd99111218abf22cb Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Thu, 17 Jun 2010 22:38:22 -0700 Subject: [PATCH 176/461] Check in fix for Bug #52814 InnoDB: Use the new ha_data interfaces rb://290, approved by Sunny --- storage/innobase/handler/ha_innodb.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index cf7ec4d6e6f..9990d7c28f0 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -583,13 +583,13 @@ thd_is_select( /************************************************************************ Obtain the InnoDB transaction of a MySQL thread. */ inline -trx_t*& +trx_t* thd_to_trx( /*=======*/ /* out: reference to transaction pointer */ THD* thd) /* in: MySQL thread */ { - return(*(trx_t**) thd_ha_data(thd, innodb_hton_ptr)); + return((trx_t*) thd_get_ha_data(thd, innodb_hton_ptr)); } /************************************************************************ @@ -1164,7 +1164,7 @@ check_trx_exists( /* out: InnoDB transaction handle */ THD* thd) /* in: user thread handle */ { - trx_t*& trx = thd_to_trx(thd); + trx_t* trx = thd_to_trx(thd); ut_ad(thd == current_thd); @@ -1178,6 +1178,9 @@ check_trx_exists( /* Update the info whether we should skip XA steps that eat CPU time */ trx->support_xa = THDVAR(thd, support_xa); + + /* We have a new trx, register with the thread handle */ + thd_set_ha_data(thd, innodb_hton_ptr, trx); } else { if (trx->magic_n != TRX_MAGIC_N) { mem_analyze_corruption(trx); @@ -2482,6 +2485,9 @@ innobase_close_connection( innobase_rollback_trx(trx); + /* Release the lock in thread handler */ + thd_set_ha_data(thd, hton, NULL); + thr_local_free(trx->mysql_thread_id); trx_free_for_mysql(trx); From 40c13ca9bd2dfd439bb9b4fc7ed840867d878398 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Fri, 18 Jun 2010 10:00:01 +0300 Subject: [PATCH 177/461] Increment InnoDB Plugin version from 1.0.9 to 1.0.10, after 1.0.9 has been released with MySQL 5.1.48. --- storage/innodb_plugin/include/univ.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/innodb_plugin/include/univ.i b/storage/innodb_plugin/include/univ.i index 018fd157a25..9da08c894cd 100644 --- a/storage/innodb_plugin/include/univ.i +++ b/storage/innodb_plugin/include/univ.i @@ -46,7 +46,7 @@ Created 1/20/1994 Heikki Tuuri #define INNODB_VERSION_MAJOR 1 #define INNODB_VERSION_MINOR 0 -#define INNODB_VERSION_BUGFIX 9 +#define INNODB_VERSION_BUGFIX 10 /* The following is the InnoDB version as shown in SELECT plugin_version FROM information_schema.plugins; From 5088fb1394a51003038efc6fb901461ad880255a Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Fri, 18 Jun 2010 21:32:23 +0400 Subject: [PATCH 178/461] Fix for bug #54393: crash and/or valgrind errors in mysql_client_binlog_statement Problem: server may read from unassigned memory performing "wrong" BINLOG queries. Fix: never read from unassigned memory. mysql-test/suite/binlog/r/binlog_base64_flag.result: Fix for bug #54393: crash and/or valgrind errors in mysql_client_binlog_statement - test result. mysql-test/suite/binlog/t/binlog_base64_flag.test: Fix for bug #54393: crash and/or valgrind errors in mysql_client_binlog_statement - test case. sql/sql_binlog.cc: Fix for bug #54393: crash and/or valgrind errors in mysql_client_binlog_statement - coded_len should not count trailing '/0'; - never read from unassigned memory. --- .../suite/binlog/r/binlog_base64_flag.result | 11 +++++++ .../suite/binlog/t/binlog_base64_flag.test | 13 +++++++++ sql/sql_binlog.cc | 29 ++++++++----------- 3 files changed, 36 insertions(+), 17 deletions(-) diff --git a/mysql-test/suite/binlog/r/binlog_base64_flag.result b/mysql-test/suite/binlog/r/binlog_base64_flag.result index 58c444c9571..7fb5e50a219 100644 --- a/mysql-test/suite/binlog/r/binlog_base64_flag.result +++ b/mysql-test/suite/binlog/r/binlog_base64_flag.result @@ -91,3 +91,14 @@ iONkSBcBAAAAKwAAAMQBAAAQABAAAAAAAAEAA//4AQAAAAMAMTIzAQAAAA== '; ERROR HY000: master may suffer from http://bugs.mysql.com/bug.php?id=37426 so slave stops; check error log on slave for more info drop table t1, char63_utf8, char128_utf8; +# +# Bug #54393: crash and/or valgrind errors in +# mysql_client_binlog_statement +# +BINLOG ''; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use +BINLOG '123'; +BINLOG '-2079193929'; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use +BINLOG 'xç↓%~∙Dâ•’Æ’â•¡'; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use diff --git a/mysql-test/suite/binlog/t/binlog_base64_flag.test b/mysql-test/suite/binlog/t/binlog_base64_flag.test index e6271ec6ccc..3f1e4e98bec 100644 --- a/mysql-test/suite/binlog/t/binlog_base64_flag.test +++ b/mysql-test/suite/binlog/t/binlog_base64_flag.test @@ -150,3 +150,16 @@ iONkSBcBAAAAKwAAAMQBAAAQABAAAAAAAAEAA//4AQAAAAMAMTIzAQAAAA== '; drop table t1, char63_utf8, char128_utf8; + + +--echo # +--echo # Bug #54393: crash and/or valgrind errors in +--echo # mysql_client_binlog_statement +--echo # +--error ER_SYNTAX_ERROR +BINLOG ''; +BINLOG '123'; +--error ER_SYNTAX_ERROR +BINLOG '-2079193929'; +--error ER_SYNTAX_ERROR +BINLOG 'xç↓%~∙Dâ•’Æ’â•¡'; diff --git a/sql/sql_binlog.cc b/sql/sql_binlog.cc index ee51480411b..82de6feb1a9 100644 --- a/sql/sql_binlog.cc +++ b/sql/sql_binlog.cc @@ -42,9 +42,13 @@ void mysql_client_binlog_statement(THD* thd) if (check_global_access(thd, SUPER_ACL)) DBUG_VOID_RETURN; - size_t coded_len= thd->lex->comment.length + 1; + size_t coded_len= thd->lex->comment.length; + if (!coded_len) + { + my_error(ER_SYNTAX_ERROR, MYF(0)); + DBUG_VOID_RETURN; + } size_t decoded_len= base64_needed_decoded_length(coded_len); - DBUG_ASSERT(coded_len > 0); /* Allocation @@ -145,14 +149,16 @@ void mysql_client_binlog_statement(THD* thd) /* Checking that the first event in the buffer is not truncated. */ - ulong event_len= uint4korr(bufptr + EVENT_LEN_OFFSET); - DBUG_PRINT("info", ("event_len=%lu, bytes_decoded=%d", - event_len, bytes_decoded)); - if (bytes_decoded < EVENT_LEN_OFFSET || (uint) bytes_decoded < event_len) + ulong event_len; + if (bytes_decoded < EVENT_LEN_OFFSET + 4 || + (event_len= uint4korr(bufptr + EVENT_LEN_OFFSET)) > + (uint) bytes_decoded) { my_error(ER_SYNTAX_ERROR, MYF(0)); goto end; } + DBUG_PRINT("info", ("event_len=%lu, bytes_decoded=%d", + event_len, bytes_decoded)); /* If we have not seen any Format_description_event, then we must @@ -190,17 +196,6 @@ void mysql_client_binlog_statement(THD* thd) bufptr += event_len; DBUG_PRINT("info",("ev->get_type_code()=%d", ev->get_type_code())); -#ifndef HAVE_purify - /* - This debug printout should not be used for valgrind builds - since it will read from unassigned memory. - */ - DBUG_PRINT("info",("bufptr+EVENT_TYPE_OFFSET: 0x%lx", - (long) (bufptr+EVENT_TYPE_OFFSET))); - DBUG_PRINT("info", ("bytes_decoded: %d bufptr: 0x%lx buf[EVENT_LEN_OFFSET]: %lu", - bytes_decoded, (long) bufptr, - (ulong) uint4korr(bufptr+EVENT_LEN_OFFSET))); -#endif ev->thd= thd; /* We go directly to the application phase, since we don't need From 1614c3c1288ad9d71879d44ef4e8c1edee84d96a Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Sun, 20 Jun 2010 02:02:58 +0400 Subject: [PATCH 179/461] Fix for bug #54575: crash when joining tables with unique set column Problem: a flaw (derefencing a NULL pointer) in the LIKE optimization code may lead to a server crash in some rare cases. Fix: check the pointer before its dereferencing. mysql-test/r/func_like.result: Fix for bug #54575: crash when joining tables with unique set column - test result. mysql-test/t/func_like.test: Fix for bug #54575: crash when joining tables with unique set column - test case. sql/item_cmpfunc.cc: Fix for bug #54575: crash when joining tables with unique set column - check res2 buffer pointer before its dereferencing as it may be NULL in some cases. --- mysql-test/r/func_like.result | 14 ++++++++++++++ mysql-test/t/func_like.test | 18 ++++++++++++++++-- sql/item_cmpfunc.cc | 7 ++++--- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/mysql-test/r/func_like.result b/mysql-test/r/func_like.result index 9338a76e320..21da211160b 100644 --- a/mysql-test/r/func_like.result +++ b/mysql-test/r/func_like.result @@ -169,3 +169,17 @@ select 'andre%' like 'andre select _cp1251'andre%' like convert('andreÊ%' using cp1251) escape 'Ê'; _cp1251'andre%' like convert('andreÊ%' using cp1251) escape 'Ê' 1 +End of 4.1 tests +# +# Bug #54575: crash when joining tables with unique set column +# +CREATE TABLE t1(a SET('a') NOT NULL, UNIQUE KEY(a)); +CREATE TABLE t2(b INT PRIMARY KEY); +INSERT INTO t1 VALUES (); +Warnings: +Warning 1364 Field 'a' doesn't have a default value +INSERT INTO t2 VALUES (1), (2), (3); +SELECT 1 FROM t2 JOIN t1 ON 1 LIKE a GROUP BY a; +1 +DROP TABLE t1, t2; +End of 5.1 tests diff --git a/mysql-test/t/func_like.test b/mysql-test/t/func_like.test index 741ea5533da..1204d04d9a0 100644 --- a/mysql-test/t/func_like.test +++ b/mysql-test/t/func_like.test @@ -112,5 +112,19 @@ select 'andre%' like 'andre # select _cp1251'andre%' like convert('andreÊ%' using cp1251) escape 'Ê'; -# -# End of 4.1 tests + +--echo End of 4.1 tests + + +--echo # +--echo # Bug #54575: crash when joining tables with unique set column +--echo # +CREATE TABLE t1(a SET('a') NOT NULL, UNIQUE KEY(a)); +CREATE TABLE t2(b INT PRIMARY KEY); +INSERT INTO t1 VALUES (); +INSERT INTO t2 VALUES (1), (2), (3); +SELECT 1 FROM t2 JOIN t1 ON 1 LIKE a GROUP BY a; +DROP TABLE t1, t2; + + +--echo End of 5.1 tests diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 6e38220abd1..ca225f129ee 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -4568,13 +4568,14 @@ Item_func::optimize_type Item_func_like::select_optimize() const if (args[1]->const_item()) { String* res2= args[1]->val_str((String *)&cmp.value2); + const char *ptr2; - if (!res2) + if (!res2 || !(ptr2= res2->ptr())) return OPTIMIZE_NONE; - if (*res2->ptr() != wild_many) + if (*ptr2 != wild_many) { - if (args[0]->result_type() != STRING_RESULT || *res2->ptr() != wild_one) + if (args[0]->result_type() != STRING_RESULT || *ptr2 != wild_one) return OPTIMIZE_OP; } } From aebf6c06c4a02d44e76efbd3d9e4cabba0b6d43d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 21 Jun 2010 12:40:08 +0300 Subject: [PATCH 180/461] Bug #54658: InnoDB: Warning: allocated tablespace %lu, old maximum was 0 dict_check_tablespaces_and_store_max_id(): Initialize max_space_id and fil_system->max_assigned_id from DICT_HDR_MAX_SPACE_ID. fil_space_create(): Suppress the warning unless !recv_recovery_on (do not complain while applying the redo log). --- storage/innodb_plugin/dict/dict0load.c | 7 ++++++- storage/innodb_plugin/fil/fil0fil.c | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/storage/innodb_plugin/dict/dict0load.c b/storage/innodb_plugin/dict/dict0load.c index f86aa0848bd..3c495d21786 100644 --- a/storage/innodb_plugin/dict/dict0load.c +++ b/storage/innodb_plugin/dict/dict0load.c @@ -316,7 +316,7 @@ dict_check_tablespaces_and_store_max_id( dict_index_t* sys_index; btr_pcur_t pcur; const rec_t* rec; - ulint max_space_id = 0; + ulint max_space_id; mtr_t mtr; mutex_enter(&(dict_sys->mutex)); @@ -327,6 +327,11 @@ dict_check_tablespaces_and_store_max_id( sys_index = UT_LIST_GET_FIRST(sys_tables->indexes); ut_a(!dict_table_is_comp(sys_tables)); + max_space_id = mtr_read_ulint(dict_hdr_get(&mtr) + + DICT_HDR_MAX_SPACE_ID, + MLOG_4BYTES, &mtr); + fil_set_max_space_id_if_bigger(max_space_id); + btr_pcur_open_at_index_side(TRUE, sys_index, BTR_SEARCH_LEAF, &pcur, TRUE, &mtr); loop: diff --git a/storage/innodb_plugin/fil/fil0fil.c b/storage/innodb_plugin/fil/fil0fil.c index 219eb5f500f..796fe921a7e 100644 --- a/storage/innodb_plugin/fil/fil0fil.c +++ b/storage/innodb_plugin/fil/fil0fil.c @@ -1197,7 +1197,7 @@ try_again: space->tablespace_version = fil_system->tablespace_version; space->mark = FALSE; - if (UNIV_LIKELY(purpose == FIL_TABLESPACE) + if (UNIV_LIKELY(purpose == FIL_TABLESPACE && !recv_recovery_on) && UNIV_UNLIKELY(id > fil_system->max_assigned_id)) { if (!fil_system->space_id_reuse_warned) { fil_system->space_id_reuse_warned = TRUE; From a6c1d93e02e2b3fffe6e80b219e571262ffc2fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 21 Jun 2010 12:51:48 +0300 Subject: [PATCH 181/461] Bug#54658: Add ChangeLog entry --- storage/innodb_plugin/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index a76329c85eb..3be5373f3af 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-06-21 The InnoDB Team + + * dict/dict0load.c, fil/fil0fil.c: + Fix Bug#54658: InnoDB: Warning: allocated tablespace %lu, + old maximum was 0 (introduced in Bug #53578 fix) + 2010-06-16 The InnoDB Team * row/row0merge.c: From 0251b868ac09a12d5231adf92276aaaf77602432 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Mon, 21 Jun 2010 14:06:14 +0300 Subject: [PATCH 182/461] Switched the mailing lists --- .bzr-mysql/default.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.bzr-mysql/default.conf b/.bzr-mysql/default.conf index 557df1b1ffe..d0ddf92f211 100644 --- a/.bzr-mysql/default.conf +++ b/.bzr-mysql/default.conf @@ -1,4 +1,4 @@ [MYSQL] -post_commit_to = "commits@lists.mysql.com" -post_push_to = "commits@lists.mysql.com" +post_commit_to = "dbg_mysql_security@sun.com" +post_push_to = "dbg_mysql_security@sun.com" tree_name = "mysql-5.0-bugteam" From 5e22f73ad37236bf214b0daf487e112fca88e5ab Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Mon, 21 Jun 2010 14:09:23 +0300 Subject: [PATCH 183/461] tree name change --- .bzr-mysql/default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bzr-mysql/default.conf b/.bzr-mysql/default.conf index d0ddf92f211..4b2affc1529 100644 --- a/.bzr-mysql/default.conf +++ b/.bzr-mysql/default.conf @@ -1,4 +1,4 @@ [MYSQL] post_commit_to = "dbg_mysql_security@sun.com" post_push_to = "dbg_mysql_security@sun.com" -tree_name = "mysql-5.0-bugteam" +tree_name = "mysql-5.0-security" From b36a02822430ce90285f067f8e6e8d87859732aa Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Mon, 21 Jun 2010 15:09:58 +0400 Subject: [PATCH 184/461] Bug#50389 Using intersect does not return all rows In process of record search it is not taken into account that inital quick->file->ref value could be inapplicable to range interval. After proper row is found this value is stored into the record buffer and later the record is filtered out at condition evaluation stage. The fix is store a refernce of found row to the handler ref field. mysql-test/r/innodb_mysql.result: test case mysql-test/std_data/intersect-bug50389.tsv: test case mysql-test/t/innodb_mysql.test: test case sql/opt_range.cc: store a refernce of found row to the handler ref field. --- mysql-test/r/innodb_mysql.result | 38 ++ mysql-test/std_data/intersect-bug50389.tsv | 441 +++++++++++++++++++++ mysql-test/t/innodb_mysql.test | 31 ++ sql/opt_range.cc | 1 + 4 files changed, 511 insertions(+) create mode 100644 mysql-test/std_data/intersect-bug50389.tsv diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 6590bac9c47..2af3db75adc 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -2417,4 +2417,42 @@ ENGINE=InnoDB; INSERT INTO t1 VALUES (0, 77, 1, 3); UPDATE t1 SET d = 0 WHERE b = 77 AND c = 25; DROP TABLE t1; +# +# Bug#50389 Using intersect does not return all rows +# +CREATE TABLE t1 ( +f1 INT(10) NOT NULL, +f2 INT(10), +f3 INT(10), +f4 TINYINT(4), +f5 VARCHAR(50), +PRIMARY KEY (f1), +KEY idx1 (f2,f5,f4), +KEY idx2 (f2,f4) +) ENGINE=InnoDB; +LOAD DATA INFILE '../../std_data/intersect-bug50389.tsv' INTO TABLE t1; +SELECT * FROM t1 WHERE f1 IN +(3305028,3353871,3772880,3346860,4228206,3336022, +3470988,3305175,3329875,3817277,3856380,3796193, +3784744,4180925,4559596,3963734,3856391,4494153) +AND f5 = 'abcdefghijklmnopwrst' AND f2 = 1221457 AND f4 = 0 ; +f1 f2 f3 f4 f5 +3305175 1221457 0 0 abcdefghijklmnopwrst +3329875 1221457 1382427 0 abcdefghijklmnopwrst +3336022 1221457 0 0 abcdefghijklmnopwrst +3346860 1221457 0 0 abcdefghijklmnopwrst +3772880 1221457 0 0 abcdefghijklmnopwrst +3784744 1221457 1382427 0 abcdefghijklmnopwrst +3796193 1221457 0 0 abcdefghijklmnopwrst +4228206 1221457 0 0 abcdefghijklmnopwrst +4494153 1221457 0 0 abcdefghijklmnopwrst +4559596 1221457 0 0 abcdefghijklmnopwrst +EXPLAIN SELECT * FROM t1 WHERE f1 IN +(3305028,3353871,3772880,3346860,4228206,3336022, +3470988,3305175,3329875,3817277,3856380,3796193, +3784744,4180925,4559596,3963734,3856391,4494153) +AND f5 = 'abcdefghijklmnopwrst' AND f2 = 1221457 AND f4 = 0 ; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index_merge PRIMARY,idx1,idx2 idx2,idx1,PRIMARY 7,60,4 NULL 1 Using intersect(idx2,idx1,PRIMARY); Using where +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/std_data/intersect-bug50389.tsv b/mysql-test/std_data/intersect-bug50389.tsv new file mode 100644 index 00000000000..f84359603a8 --- /dev/null +++ b/mysql-test/std_data/intersect-bug50389.tsv @@ -0,0 +1,441 @@ +3304605 1221256 0 0 abcdefghijklmnopwrst +3304606 1221259 0 0 abcdefghijklmnopwrst +3304607 1221260 0 0 asdfghjklzxcvbnm +3304629 1221273 0 0 asdfghjklzxcvbnm +3304630 1221273 0 0 asdfghjklzxcvbnm +3304634 1221259 0 0 asdfghjklzxcvbnm +3304644 1221278 0 0 abcdefghijklmnopwrst +3304648 1221278 0 0 abcdefghijklmnopwrst +3304649 1221278 0 1 asdfghjklzxcvbnm +3304650 1221278 0 0 asdfghjklzxcvbnm +3304651 1221282 0 0 abcdefghijklmnopwrst +3304660 1221287 0 0 asdfghjklzxcvbnm +3304662 1221288 0 0 abcdefghijklmnopwrst +3304663 1221288 0 0 abcdefghijklmnopwrst +3304664 1221290 0 0 abcdefghijklmnopwrst +3304670 1221290 0 0 asdfghjklzxcvbnm +3304671 1221292 0 0 abcdefghijklmnopwrst +3304672 1221287 0 0 asdfghjklzxcvbnm +3304673 1221294 0 0 asdfghjklzxcvbnm +3304674 1221287 0 0 asdfghjklzxcvbnm +3304676 1221296 0 0 abcdefghijklmnopwrst +3304677 1221287 0 0 abcdefghijklmnopwrst +3304678 1221287 0 0 abcdefghijklmnopwrst +3304679 1221297 0 0 asdfghjklzxcvbnm +3304680 1221290 0 0 abcdefghijklmnopwrst +3304681 1221290 0 0 abcdefghijklmnopwrst +3304685 1221300 0 0 asdfghjklzxcvbnm +3304687 1221302 0 0 abcdefghijklmnopwrst +3304688 1221296 1221298 0 abcdefghijklmnopwrst +3304692 1221309 0 0 asdfghjklzxcvbnm +3304694 1221309 0 0 asdfghjklzxcvbnm +3304695 1221290 0 0 abcdefghijklmnopwrst +3304696 1221313 0 0 asdfghjklzxcvbnm +3304701 1221314 0 0 asdfghjklzxcvbnm +3304703 1221313 0 0 abcdefghijklmnopwrst +3304707 1221313 0 0 asdfghjklzxcvbnm +3304709 1221313 0 0 abcdefghijklmnopwrst +3304713 1221314 0 0 abcdefghijklmnopwrst +3304715 1221317 0 0 abcdefghijklmnopwrst +3304717 1221319 0 0 asdfghjklzxcvbnm +3304718 1221320 0 0 abcdefghijklmnopwrst +3304723 1221314 0 0 abcdefghijklmnopwrst +3304724 1221314 0 0 asdfghjklzxcvbnm +3304725 1221300 0 0 asdfghjklzxcvbnm +3304726 1221314 0 0 asdfghjklzxcvbnm +3304730 1221326 0 0 asdfghjklzxcvbnm +3304732 1221328 0 0 asdfghjklzxcvbnm +3304733 1221329 0 0 asdfghjklzxcvbnm +3304745 1221331 0 0 abcdefghijklmnopwrst +3304747 1221300 0 0 abcdefghijklmnopwrst +3304752 1221332 0 0 asdfghjklzxcvbnm +3304756 1221333 0 0 asdfghjklzxcvbnm +3304765 1221336 0 0 asdfghjklzxcvbnm +3304767 1221338 0 0 abcdefghijklmnopwrst +3304769 1221340 0 0 asdfghjklzxcvbnm +3304770 1221328 0 0 asdfghjklzxcvbnm +3304771 1221328 0 0 abcdefghijklmnopwrst +3304773 1221340 0 0 asdfghjklzxcvbnm +3304774 1221340 0 0 abcdefghijklmnopwrst +3304775 1221338 1221342 1 asdfghjklzxcvbnm +3304778 1221345 0 0 asdfghjklzxcvbnm +3304786 1221332 0 0 asdfghjklzxcvbnm +3304787 1221347 0 0 abcdefghijklmnopwrst +3304789 1221347 0 0 asdfghjklzxcvbnm +3304793 1221349 0 0 abcdefghijklmnopwrst +3304794 1221350 0 0 asdfghjklzxcvbnm +3304800 1221290 0 0 asdfghjklzxcvbnm +3304802 1221290 0 0 asdfghjklzxcvbnm +3304803 1221290 0 0 asdfghjklzxcvbnm +3304810 1221356 0 0 asdfghjklzxcvbnm +3304811 1221356 0 0 asdfghjklzxcvbnm +3304821 1221364 0 0 asdfghjklzxcvbnm +3304823 1221365 0 0 asdfghjklzxcvbnm +3304824 1221366 0 0 abcdefghijklmnopwrst +3304825 1221365 0 0 asdfghjklzxcvbnm +3304826 1221367 0 0 asdfghjklzxcvbnm +3304828 1221369 0 0 abcdefghijklmnopwrst +3304829 1221366 1221368 0 asdfghjklzxcvbnm +3304831 1221372 0 0 abcdefghijklmnopwrst +3304832 1221364 1221373 0 abcdefghijklmnopwrst +3304833 1221364 1221371 0 asdfghjklzxcvbnm +3304834 1221364 0 0 abcdefghijklmnopwrst +3304836 1221375 0 0 abcdefghijklmnopwrst +3304837 1221364 0 0 abcdefghijklmnopwrst +3304838 1221364 1221376 0 asdfghjklzxcvbnm +3304840 1221372 0 0 asdfghjklzxcvbnm +3304842 1221372 0 1 abcdefghijklmnopwrst +3304844 1221372 0 0 asdfghjklzxcvbnm +3304845 1221372 0 0 abcdefghijklmnopwrst +3304847 1221382 0 0 abcdefghijklmnopwrst +3304848 1221372 0 0 abcdefghijklmnopwrst +3304849 1221372 0 0 asdfghjklzxcvbnm +3304852 1221364 1221378 0 asdfghjklzxcvbnm +3304853 1221383 0 0 abcdefghijklmnopwrst +3304854 1221384 0 0 asdfghjklzxcvbnm +3304855 1221347 0 0 asdfghjklzxcvbnm +3304858 1221383 0 0 abcdefghijklmnopwrst +3304862 1221386 0 0 abcdefghijklmnopwrst +3304864 1221387 0 0 abcdefghijklmnopwrst +3304867 1221389 0 0 abcdefghijklmnopwrst +3304868 1221390 0 0 asdfghjklzxcvbnm +3304869 1221391 0 0 asdfghjklzxcvbnm +3304871 1221393 0 0 asdfghjklzxcvbnm +3304874 1221395 0 0 abcdefghijklmnopwrst +3304877 1221396 0 0 abcdefghijklmnopwrst +3304879 1221396 0 0 asdfghjklzxcvbnm +3304882 1221398 0 0 abcdefghijklmnopwrst +3304883 1221399 0 0 abcdefghijklmnopwrst +3304884 1221400 0 0 abcdefghijklmnopwrst +3304889 1221405 0 0 abcdefghijklmnopwrst +3304895 1221409 0 0 asdfghjklzxcvbnm +3304899 1221395 0 0 asdfghjklzxcvbnm +3304900 1221395 0 0 asdfghjklzxcvbnm +3304902 1221395 0 0 abcdefghijklmnopwrst +3304903 1221395 0 0 asdfghjklzxcvbnm +3304924 1221414 0 0 abcdefghijklmnopwrst +3304925 1221415 0 0 asdfghjklzxcvbnm +3304935 1221416 0 0 asdfghjklzxcvbnm +3304936 1221418 0 0 asdfghjklzxcvbnm +3304944 1221419 0 0 abcdefghijklmnopwrst +3304959 1221427 0 0 asdfghjklzxcvbnm +3304963 1221415 0 0 asdfghjklzxcvbnm +3304964 1221428 0 0 asdfghjklzxcvbnm +3304965 1221429 0 0 abcdefghijklmnopwrst +3304978 1221433 0 0 abcdefghijklmnopwrst +3304986 1221437 0 0 asdfghjklzxcvbnm +3304988 1221439 0 0 asdfghjklzxcvbnm +3304994 1221441 0 0 asdfghjklzxcvbnm +3304996 1221442 0 0 asdfghjklzxcvbnm +3304998 1221443 0 0 asdfghjklzxcvbnm +3305003 1221446 0 0 abcdefghijklmnopwrst +3305008 1221433 0 0 abcdefghijklmnopwrst +3305009 1221447 0 0 asdfghjklzxcvbnm +3305012 1221447 0 0 asdfghjklzxcvbnm +3305013 1221449 0 0 abcdefghijklmnopwrst +3305015 1221451 0 0 asdfghjklzxcvbnm +3305019 1221453 0 0 asdfghjklzxcvbnm +3305023 1221449 0 0 asdfghjklzxcvbnm +3305026 1221456 0 0 abcdefghijklmnopwrst +3305028 1221457 0 0 asdfghjklzxcvbnm +3305032 1221449 0 0 asdfghjklzxcvbnm +3305037 1221453 0 0 asdfghjklzxcvbnm +3305040 1221451 0 0 asdfghjklzxcvbnm +3305061 1221446 0 0 abcdefghijklmnopwrst +3305175 1221457 0 0 abcdefghijklmnopwrst +3305304 1221453 0 0 abcdefghijklmnopwrst +3305308 1221453 0 1 abcdefghijklmnopwrst +3305333 1221457 1221577 0 asdfghjklzxcvbnm +3305335 1221453 0 0 asdfghjklzxcvbnm +3305354 1221457 0 1 asdfghjklzxcvbnm +3306089 1221442 0 0 abcdefghijklmnopwrst +3306090 1221442 0 0 abcdefghijklmnopwrst +3306092 1221442 0 0 asdfghjklzxcvbnm +3306345 1221366 0 0 asdfghjklzxcvbnm +3306349 1221366 0 0 asdfghjklzxcvbnm +3306419 1221364 1221371 0 asdfghjklzxcvbnm +3307390 1221453 0 0 abcdefghijklmnopwrst +3308002 1221416 1221417 0 abcdefghijklmnopwrst +3308331 1221366 1222821 0 abcdefghijklmnopwrst +3309991 1221347 0 0 asdfghjklzxcvbnm +3311917 1221287 0 0 abcdefghijklmnopwrst +3311937 1221287 0 0 abcdefghijklmnopwrst +3311945 1221287 0 0 asdfghjklzxcvbnm +3311955 1221287 0 0 abcdefghijklmnopwrst +3311961 1221287 0 0 asdfghjklzxcvbnm +3311963 1221287 0 1 asdfghjklzxcvbnm +3311968 1221287 0 0 asdfghjklzxcvbnm +3311974 1221287 0 1 abcdefghijklmnopwrst +3311976 1221287 0 1 abcdefghijklmnopwrst +3311981 1221287 0 1 abcdefghijklmnopwrst +3311985 1221287 0 1 asdfghjklzxcvbnm +3312014 1221287 0 0 abcdefghijklmnopwrst +3312018 1221287 0 1 abcdefghijklmnopwrst +3312025 1221287 0 0 abcdefghijklmnopwrst +3312027 1221287 0 0 abcdefghijklmnopwrst +3312030 1221287 0 0 abcdefghijklmnopwrst +3313755 1221288 0 0 abcdefghijklmnopwrst +3313767 1221288 0 0 asdfghjklzxcvbnm +3314668 1221290 0 0 asdfghjklzxcvbnm +3314670 1221290 0 0 abcdefghijklmnopwrst +3323440 1221338 0 0 abcdefghijklmnopwrst +3323736 1221338 0 0 asdfghjklzxcvbnm +3323739 1221338 0 0 asdfghjklzxcvbnm +3324077 1221290 0 0 asdfghjklzxcvbnm +3324081 1221290 0 0 abcdefghijklmnopwrst +3324082 1221290 0 0 abcdefghijklmnopwrst +3324639 1221457 1221563 1 asdfghjklzxcvbnm +3326180 1221287 0 0 abcdefghijklmnopwrst +3326204 1221287 0 0 asdfghjklzxcvbnm +3326945 1221457 1221563 1 asdfghjklzxcvbnm +3328393 1221364 1221373 0 asdfghjklzxcvbnm +3328966 1221287 0 0 abcdefghijklmnopwrst +3329875 1221457 1382427 0 abcdefghijklmnopwrst +3333449 1221278 1231113 0 abcdefghijklmnopwrst +3336022 1221457 0 0 abcdefghijklmnopwrst +3340069 1221364 1221373 0 abcdefghijklmnopwrst +3340073 1221364 1221373 0 abcdefghijklmnopwrst +3340563 1221290 0 0 asdfghjklzxcvbnm +3341553 1221453 0 0 abcdefghijklmnopwrst +3345868 1221287 0 0 asdfghjklzxcvbnm +3345873 1221287 0 0 abcdefghijklmnopwrst +3345879 1221287 0 0 asdfghjklzxcvbnm +3346860 1221457 0 0 abcdefghijklmnopwrst +3347053 1221287 0 0 asdfghjklzxcvbnm +3347109 1221287 0 1 abcdefghijklmnopwrst +3350589 1221372 1236415 0 abcdefghijklmnopwrst +3350594 1221372 1236415 1 asdfghjklzxcvbnm +3353871 1221457 0 0 asdfghjklzxcvbnm +3354727 1221364 1221373 0 abcdefghijklmnopwrst +3355270 1221393 0 1 abcdefghijklmnopwrst +3357638 1221287 0 0 asdfghjklzxcvbnm +3357644 1221287 0 0 abcdefghijklmnopwrst +3357648 1221287 0 0 abcdefghijklmnopwrst +3357651 1221287 0 0 asdfghjklzxcvbnm +3357661 1221287 0 0 abcdefghijklmnopwrst +3357678 1221287 0 0 abcdefghijklmnopwrst +3357697 1221287 0 0 asdfghjklzxcvbnm +3357737 1221287 0 0 asdfghjklzxcvbnm +3357744 1221287 0 0 abcdefghijklmnopwrst +3357754 1221287 0 1 asdfghjklzxcvbnm +3357760 1221287 0 1 abcdefghijklmnopwrst +3357774 1221287 0 1 abcdefghijklmnopwrst +3357779 1221287 0 0 abcdefghijklmnopwrst +3357796 1221287 0 0 asdfghjklzxcvbnm +3357814 1221287 0 0 asdfghjklzxcvbnm +3357833 1221287 0 1 asdfghjklzxcvbnm +3357835 1221287 0 0 abcdefghijklmnopwrst +3357840 1221287 0 1 asdfghjklzxcvbnm +3357842 1221287 0 0 abcdefghijklmnopwrst +3357845 1221287 0 1 abcdefghijklmnopwrst +3357849 1221287 0 1 abcdefghijklmnopwrst +3357852 1221287 0 0 abcdefghijklmnopwrst +3358935 1221443 0 1 abcdefghijklmnopwrst +3358967 1221443 0 1 abcdefghijklmnopwrst +3359181 1221256 0 0 abcdefghijklmnopwrst +3360512 1221319 0 0 asdfghjklzxcvbnm +3362004 1221287 0 0 abcdefghijklmnopwrst +3362009 1221287 0 1 abcdefghijklmnopwrst +3362358 1221287 0 0 asdfghjklzxcvbnm +3363214 1221287 0 0 abcdefghijklmnopwrst +3363238 1221287 0 1 asdfghjklzxcvbnm +3363616 1221287 0 1 asdfghjklzxcvbnm +3363631 1221287 0 0 asdfghjklzxcvbnm +3364281 1221287 0 0 abcdefghijklmnopwrst +3365900 1221347 0 0 asdfghjklzxcvbnm +3365901 1221347 0 0 asdfghjklzxcvbnm +3365906 1221347 0 0 asdfghjklzxcvbnm +3365907 1221347 0 0 asdfghjklzxcvbnm +3365910 1221347 0 0 abcdefghijklmnopwrst +3365936 1221347 0 0 abcdefghijklmnopwrst +3367846 1221287 0 0 abcdefghijklmnopwrst +3368011 1221428 0 0 abcdefghijklmnopwrst +3369882 1221300 0 0 asdfghjklzxcvbnm +3370856 1221443 0 0 asdfghjklzxcvbnm +3370861 1221443 1221445 0 abcdefghijklmnopwrst +3375327 1221443 0 0 abcdefghijklmnopwrst +3375333 1221443 1221445 0 abcdefghijklmnopwrst +3376219 1221453 0 1 abcdefghijklmnopwrst +3376228 1221453 0 0 abcdefghijklmnopwrst +3376238 1221453 0 0 asdfghjklzxcvbnm +3376243 1221453 0 0 abcdefghijklmnopwrst +3376248 1221453 0 1 abcdefghijklmnopwrst +3376254 1221453 0 0 abcdefghijklmnopwrst +3376263 1221453 0 0 abcdefghijklmnopwrst +3376272 1221453 0 1 asdfghjklzxcvbnm +3376281 1221453 0 0 asdfghjklzxcvbnm +3376290 1221453 0 0 abcdefghijklmnopwrst +3376296 1221453 0 1 abcdefghijklmnopwrst +3376301 1221453 0 0 asdfghjklzxcvbnm +3376350 1221453 0 0 asdfghjklzxcvbnm +3379002 1221453 0 0 abcdefghijklmnopwrst +3379015 1221453 0 0 asdfghjklzxcvbnm +3379025 1221453 0 0 abcdefghijklmnopwrst +3379032 1221453 0 0 asdfghjklzxcvbnm +3380181 1221372 1245650 0 asdfghjklzxcvbnm +3380186 1221372 1245650 0 abcdefghijklmnopwrst +3380190 1221372 1245650 0 asdfghjklzxcvbnm +3380195 1221372 1245650 0 abcdefghijklmnopwrst +3380202 1221372 1245650 0 asdfghjklzxcvbnm +3380683 1221287 0 0 asdfghjklzxcvbnm +3382317 1221453 0 0 abcdefghijklmnopwrst +3382417 1221287 0 0 asdfghjklzxcvbnm +3383523 1221338 0 1 abcdefghijklmnopwrst +3387213 1221287 0 0 abcdefghijklmnopwrst +3388139 1221453 0 0 asdfghjklzxcvbnm +3398039 1221443 1251164 0 abcdefghijklmnopwrst +3401835 1221453 0 0 asdfghjklzxcvbnm +3412582 1221443 1255886 0 asdfghjklzxcvbnm +3412583 1221443 1255886 0 asdfghjklzxcvbnm +3413795 1221443 1255886 0 asdfghjklzxcvbnm +3413813 1221443 1256258 0 asdfghjklzxcvbnm +3420306 1221453 0 0 asdfghjklzxcvbnm +3420354 1221453 0 0 asdfghjklzxcvbnm +3425653 1221443 0 0 abcdefghijklmnopwrst +3425658 1221443 0 0 asdfghjklzxcvbnm +3431409 1221453 0 0 asdfghjklzxcvbnm +3432510 1221443 1262320 0 asdfghjklzxcvbnm +3432513 1221443 1262320 0 asdfghjklzxcvbnm +3444444 1221443 1262320 0 abcdefghijklmnopwrst +3445447 1221287 0 1 asdfghjklzxcvbnm +3448662 1221338 0 0 asdfghjklzxcvbnm +3450032 1221347 0 0 abcdefghijklmnopwrst +3450259 1221453 0 0 abcdefghijklmnopwrst +3452176 1221453 0 0 asdfghjklzxcvbnm +3459239 1221347 0 0 asdfghjklzxcvbnm +3463196 1221347 0 0 abcdefghijklmnopwrst +3468759 1221453 0 0 abcdefghijklmnopwrst +3470988 1221457 0 0 asdfghjklzxcvbnm +3477116 1221287 0 0 asdfghjklzxcvbnm +3477639 1221372 1277136 0 abcdefghijklmnopwrst +3477656 1221372 1277136 0 asdfghjklzxcvbnm +3488071 1221256 1238964 0 abcdefghijklmnopwrst +3488079 1221256 0 0 asdfghjklzxcvbnm +3488108 1221256 0 1 asdfghjklzxcvbnm +3507126 1221287 0 1 asdfghjklzxcvbnm +3511898 1221347 0 0 asdfghjklzxcvbnm +3521780 1221453 0 0 abcdefghijklmnopwrst +3536908 1221287 0 0 abcdefghijklmnopwrst +3544231 1221329 0 1 asdfghjklzxcvbnm +3545379 1221329 1298955 0 abcdefghijklmnopwrst +3545384 1221329 1298955 0 abcdefghijklmnopwrst +3545387 1221329 1298955 0 abcdefghijklmnopwrst +3545389 1221329 1298955 1 abcdefghijklmnopwrst +3545398 1221329 1298955 1 abcdefghijklmnopwrst +3555715 1221287 0 0 asdfghjklzxcvbnm +3563557 1221329 1298955 0 abcdefghijklmnopwrst +3564322 1221338 0 0 asdfghjklzxcvbnm +3565475 1221453 0 0 abcdefghijklmnopwrst +3577588 1221287 0 0 asdfghjklzxcvbnm +3600047 1221453 0 0 abcdefghijklmnopwrst +3600062 1221453 0 0 asdfghjklzxcvbnm +3600071 1221453 0 0 abcdefghijklmnopwrst +3600080 1221453 0 1 abcdefghijklmnopwrst +3600086 1221453 0 0 asdfghjklzxcvbnm +3600091 1221453 0 1 abcdefghijklmnopwrst +3600097 1221453 0 0 asdfghjklzxcvbnm +3600103 1221453 0 0 asdfghjklzxcvbnm +3600106 1221453 0 0 abcdefghijklmnopwrst +3600113 1221453 0 0 abcdefghijklmnopwrst +3600119 1221453 0 0 asdfghjklzxcvbnm +3600124 1221453 0 0 abcdefghijklmnopwrst +3600144 1221453 0 0 asdfghjklzxcvbnm +3600152 1221453 0 0 asdfghjklzxcvbnm +3600165 1221453 0 0 asdfghjklzxcvbnm +3610561 1221287 0 0 abcdefghijklmnopwrst +3617030 1221329 0 0 asdfghjklzxcvbnm +3628347 1221443 1327098 0 abcdefghijklmnopwrst +3628348 1221443 1327098 0 abcdefghijklmnopwrst +3628646 1221443 0 0 asdfghjklzxcvbnm +3633673 1221372 1328838 0 abcdefghijklmnopwrst +3648489 1221443 0 0 asdfghjklzxcvbnm +3648490 1221443 0 0 asdfghjklzxcvbnm +3648534 1221443 1333827 0 asdfghjklzxcvbnm +3653046 1221329 1298955 0 asdfghjklzxcvbnm +3662680 1221287 0 0 asdfghjklzxcvbnm +3699529 1221288 0 0 asdfghjklzxcvbnm +3706659 1221453 0 0 asdfghjklzxcvbnm +3723399 1221287 0 1 asdfghjklzxcvbnm +3749934 1221278 0 0 abcdefghijklmnopwrst +3761370 1221443 1371176 0 asdfghjklzxcvbnm +3765884 1221443 1333827 0 abcdefghijklmnopwrst +3772880 1221457 0 0 abcdefghijklmnopwrst +3779574 1221457 1372998 1 abcdefghijklmnopwrst +3784656 1221457 1372998 1 abcdefghijklmnopwrst +3784700 1221457 1372998 1 abcdefghijklmnopwrst +3784744 1221457 1382427 0 abcdefghijklmnopwrst +3796187 1221457 1382427 1 abcdefghijklmnopwrst +3796193 1221457 0 0 abcdefghijklmnopwrst +3817277 1221457 1382427 0 asdfghjklzxcvbnm +3828282 1221457 0 0 abcdefghijklmnopwrst +3828297 1221457 0 0 abcdefghijklmnopwrst +3828300 1221457 0 0 abcdefghijklmnopwrst +3833022 1221287 0 0 asdfghjklzxcvbnm +3856380 1221457 1395359 0 asdfghjklzxcvbnm +3856391 1221457 0 0 asdfghjklzxcvbnm +3861413 1221256 0 0 abcdefghijklmnopwrst +3864734 1221393 0 1 abcdefghijklmnopwrst +3868051 1221329 0 0 abcdefghijklmnopwrst +3868059 1221329 0 0 abcdefghijklmnopwrst +3869088 1221329 0 0 abcdefghijklmnopwrst +3878669 1221329 1298955 0 asdfghjklzxcvbnm +3878684 1221329 1298955 0 asdfghjklzxcvbnm +3881785 1221287 0 0 abcdefghijklmnopwrst +3882333 1221287 0 0 asdfghjklzxcvbnm +3882389 1221287 0 0 abcdefghijklmnopwrst +3908680 1221372 1245650 0 asdfghjklzxcvbnm +3908690 1221372 1245650 0 asdfghjklzxcvbnm +3908697 1221372 1245650 0 abcdefghijklmnopwrst +3911434 1221453 0 0 abcdefghijklmnopwrst +3911446 1221453 0 0 asdfghjklzxcvbnm +3911448 1221453 0 0 abcdefghijklmnopwrst +3911489 1221453 0 0 abcdefghijklmnopwrst +3917384 1221453 0 0 abcdefghijklmnopwrst +3939602 1221457 0 1 asdfghjklzxcvbnm +3962210 1221453 0 0 asdfghjklzxcvbnm +3963734 1221457 0 0 asdfghjklzxcvbnm +3977364 1221287 0 0 asdfghjklzxcvbnm +3981725 1221453 0 0 abcdefghijklmnopwrst +4042952 1221453 0 0 abcdefghijklmnopwrst +4042953 1221453 0 0 abcdefghijklmnopwrst +4042958 1221453 0 0 abcdefghijklmnopwrst +4042960 1221453 0 1 abcdefghijklmnopwrst +4042965 1221453 0 0 asdfghjklzxcvbnm +4066893 1221453 0 1 abcdefghijklmnopwrst +4066896 1221453 0 0 abcdefghijklmnopwrst +4066900 1221453 0 0 abcdefghijklmnopwrst +4066908 1221453 0 0 abcdefghijklmnopwrst +4066912 1221453 0 0 asdfghjklzxcvbnm +4066915 1221453 0 0 asdfghjklzxcvbnm +4066919 1221453 0 0 abcdefghijklmnopwrst +4066924 1221453 0 0 asdfghjklzxcvbnm +4066929 1221453 0 0 abcdefghijklmnopwrst +4066934 1221453 0 0 asdfghjklzxcvbnm +4066941 1221453 0 0 abcdefghijklmnopwrst +4066946 1221453 0 0 asdfghjklzxcvbnm +4066955 1221453 0 0 abcdefghijklmnopwrst +4116291 1221433 1487238 0 asdfghjklzxcvbnm +4116295 1221433 1487238 0 abcdefghijklmnopwrst +4116450 1221433 1487238 0 abcdefghijklmnopwrst +4121149 1221287 0 0 asdfghjklzxcvbnm +4137325 1221453 0 0 abcdefghijklmnopwrst +4149051 1221287 0 0 abcdefghijklmnopwrst +4162347 1221287 0 0 abcdefghijklmnopwrst +4164485 1221457 0 1 asdfghjklzxcvbnm +4174706 1221457 0 0 abcdefghijklmnopwrst +4178645 1221457 0 0 abcdefghijklmnopwrst +4180122 1221457 1382427 0 asdfghjklzxcvbnm +4180925 1221457 1382427 0 asdfghjklzxcvbnm +4186417 1221457 0 0 abcdefghijklmnopwrst +4189624 1221457 0 1 asdfghjklzxcvbnm +4203132 1221453 0 0 asdfghjklzxcvbnm +4228206 1221457 0 0 abcdefghijklmnopwrst +4278829 1221453 0 0 abcdefghijklmnopwrst +4326422 1221453 0 0 abcdefghijklmnopwrst +4337061 1221287 0 0 abcdefghijklmnopwrst +4379354 1221287 0 0 abcdefghijklmnopwrst +4404901 1221457 0 0 abcdefghijklmnopwrst +4494153 1221457 0 0 abcdefghijklmnopwrst +4535721 1221287 0 0 asdfghjklzxcvbnm +4559596 1221457 0 0 abcdefghijklmnopwrst +4617751 1221393 0 0 abcdefghijklmnopwrst diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index 52a30d2fbb4..47135578697 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -663,4 +663,35 @@ UPDATE t1 SET d = 0 WHERE b = 77 AND c = 25; DROP TABLE t1; +--echo # +--echo # Bug#50389 Using intersect does not return all rows +--echo # + +CREATE TABLE t1 ( + f1 INT(10) NOT NULL, + f2 INT(10), + f3 INT(10), + f4 TINYINT(4), + f5 VARCHAR(50), + PRIMARY KEY (f1), + KEY idx1 (f2,f5,f4), + KEY idx2 (f2,f4) +) ENGINE=InnoDB; + +LOAD DATA INFILE '../../std_data/intersect-bug50389.tsv' INTO TABLE t1; + +SELECT * FROM t1 WHERE f1 IN +(3305028,3353871,3772880,3346860,4228206,3336022, + 3470988,3305175,3329875,3817277,3856380,3796193, + 3784744,4180925,4559596,3963734,3856391,4494153) +AND f5 = 'abcdefghijklmnopwrst' AND f2 = 1221457 AND f4 = 0 ; + +EXPLAIN SELECT * FROM t1 WHERE f1 IN +(3305028,3353871,3772880,3346860,4228206,3336022, + 3470988,3305175,3329875,3817277,3856380,3796193, + 3784744,4180925,4559596,3963734,3856391,4494153) +AND f5 = 'abcdefghijklmnopwrst' AND f2 = 1221457 AND f4 = 0 ; + +DROP TABLE t1; + --echo End of 5.1 tests diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 5c6cb64c04f..2f4281d539f 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -8349,6 +8349,7 @@ int QUICK_ROR_INTERSECT_SELECT::get_next() if ((error= quick->get_next())) DBUG_RETURN(error); } + quick->file->position(quick->record); } memcpy(last_rowid, quick->file->ref, head->file->ref_length); last_rowid_count= 1; From a1ac083fc324d729d3347d7e7c418a08f11cae9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 22 Jun 2010 14:52:15 +0300 Subject: [PATCH 185/461] Bug#54686 "field->col->mtype == type" assertion error at row/row0sel.c ha_innobase::index_read(), ha_innobase::records_in_range(): Check that the index is useable before invoking row_sel_convert_mysql_key_to_innobase(). This fix is based on a suggestion by Yasufumi Kinoshita. --- storage/innodb_plugin/handler/ha_innodb.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index 34249b7718a..3f8dc97e4b5 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -5379,6 +5379,9 @@ ha_innobase::index_read( prebuilt->index_usable = FALSE; DBUG_RETURN(HA_ERR_CRASHED); } + if (UNIV_UNLIKELY(!prebuilt->index_usable)) { + DBUG_RETURN(HA_ERR_TABLE_DEF_CHANGED); + } /* Note that if the index for which the search template is built is not necessarily prebuilt->index, but can also be the clustered index */ @@ -7221,6 +7224,10 @@ ha_innobase::records_in_range( n_rows = HA_POS_ERROR; goto func_exit; } + if (UNIV_UNLIKELY(!row_merge_is_index_usable(prebuilt->trx, index))) { + n_rows = HA_ERR_TABLE_DEF_CHANGED; + goto func_exit; + } heap = mem_heap_create(2 * (key->key_parts * sizeof(dfield_t) + sizeof(dtuple_t))); From 31939e0d14efb4d0c2aa02cb4805aab398c1db73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 22 Jun 2010 14:59:49 +0300 Subject: [PATCH 186/461] ChangeLog for Bug#54686 "field->col->mtype == type" assertion error at row/row0sel.c --- storage/innodb_plugin/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 3be5373f3af..085edd8ad83 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-06-22 The InnoDB Team + + * handler/ha_innodb.cc: + Fix Bug#54686: "field->col->mtype == type" assertion error at + row/row0sel.c + 2010-06-21 The InnoDB Team * dict/dict0load.c, fil/fil0fil.c: From ba04d5382614214104c33145474bab7b7f3a66d1 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Tue, 22 Jun 2010 19:30:43 +0300 Subject: [PATCH 187/461] Fix Bug#47991 InnoDB Dictionary Cache memory usage increases indefinitely when renaming tables Allocate the table name using ut_malloc() instead of table->heap because the latter cannot be freed. Adjust dict_sys->size calculations all over the code. Change dict_table_t::name from const char* to char* because we need to ut_malloc()/ut_free() it. Reviewed by: Inaam, Marko, Heikki (rb://384) Approved by: Heikki (rb://384) --- storage/innodb_plugin/dict/dict0dict.c | 34 ++++++++++++++++++------ storage/innodb_plugin/dict/dict0mem.c | 4 ++- storage/innodb_plugin/include/dict0mem.h | 2 +- storage/innodb_plugin/include/univ.i | 6 +++++ storage/innodb_plugin/page/page0zip.c | 1 + storage/innodb_plugin/row/row0merge.c | 13 ++++++++- 6 files changed, 49 insertions(+), 11 deletions(-) diff --git a/storage/innodb_plugin/dict/dict0dict.c b/storage/innodb_plugin/dict/dict0dict.c index 61f70c72720..8be5b7acac5 100644 --- a/storage/innodb_plugin/dict/dict0dict.c +++ b/storage/innodb_plugin/dict/dict0dict.c @@ -850,7 +850,8 @@ dict_table_add_to_cache( /* Add table to LRU list of tables */ UT_LIST_ADD_FIRST(table_LRU, dict_sys->table_LRU, table); - dict_sys->size += mem_heap_get_size(table->heap); + dict_sys->size += mem_heap_get_size(table->heap) + + strlen(table->name) + 1; } /**********************************************************************//** @@ -904,14 +905,21 @@ dict_table_rename_in_cache( dict_foreign_t* foreign; dict_index_t* index; ulint fold; - ulint old_size; - const char* old_name; + char old_name[MAX_TABLE_NAME_LEN + 1]; ut_ad(table); ut_ad(mutex_own(&(dict_sys->mutex))); - old_size = mem_heap_get_size(table->heap); - old_name = table->name; + /* store the old/current name to an automatic variable */ + if (strlen(table->name) + 1 <= sizeof(old_name)) { + memcpy(old_name, table->name, strlen(table->name) + 1); + } else { + ut_print_timestamp(stderr); + fprintf(stderr, "InnoDB: too long table name: '%s', " + "max length is %d\n", table->name, + MAX_TABLE_NAME_LEN); + ut_error; + } fold = ut_fold_string(new_name); @@ -957,12 +965,22 @@ dict_table_rename_in_cache( /* Remove table from the hash tables of tables */ HASH_DELETE(dict_table_t, name_hash, dict_sys->table_hash, ut_fold_string(old_name), table); - table->name = mem_heap_strdup(table->heap, new_name); + + if (strlen(new_name) > strlen(table->name)) { + /* We allocate MAX_TABLE_NAME_LEN+1 bytes here to avoid + memory fragmentation, we assume a repeated calls of + ut_realloc() with the same size do not cause fragmentation */ + ut_a(strlen(new_name) <= MAX_TABLE_NAME_LEN); + table->name = ut_realloc(table->name, MAX_TABLE_NAME_LEN + 1); + } + memcpy(table->name, new_name, strlen(new_name) + 1); /* Add table to hash table of tables */ HASH_INSERT(dict_table_t, name_hash, dict_sys->table_hash, fold, table); - dict_sys->size += (mem_heap_get_size(table->heap) - old_size); + + dict_sys->size += strlen(new_name) - strlen(old_name); + ut_a(dict_sys->size > 0); /* Update the table_name field in indexes */ index = dict_table_get_first_index(table); @@ -1187,7 +1205,7 @@ dict_table_remove_from_cache( /* Remove table from LRU list of tables */ UT_LIST_REMOVE(table_LRU, dict_sys->table_LRU, table); - size = mem_heap_get_size(table->heap); + size = mem_heap_get_size(table->heap) + strlen(table->name) + 1; ut_ad(dict_sys->size >= size); diff --git a/storage/innodb_plugin/dict/dict0mem.c b/storage/innodb_plugin/dict/dict0mem.c index 66b4b43f296..3287247029f 100644 --- a/storage/innodb_plugin/dict/dict0mem.c +++ b/storage/innodb_plugin/dict/dict0mem.c @@ -68,7 +68,8 @@ dict_mem_table_create( table->heap = heap; table->flags = (unsigned int) flags; - table->name = mem_heap_strdup(heap, name); + table->name = ut_malloc(strlen(name) + 1); + memcpy(table->name, name, strlen(name) + 1); table->space = (unsigned int) space; table->n_cols = (unsigned int) (n_cols + DATA_N_SYS_COLS); @@ -106,6 +107,7 @@ dict_mem_table_free( #ifndef UNIV_HOTBACKUP mutex_free(&(table->autoinc_mutex)); #endif /* UNIV_HOTBACKUP */ + ut_free(table->name); mem_heap_free(table->heap); } diff --git a/storage/innodb_plugin/include/dict0mem.h b/storage/innodb_plugin/include/dict0mem.h index 9996fb59a75..2fce1e00927 100644 --- a/storage/innodb_plugin/include/dict0mem.h +++ b/storage/innodb_plugin/include/dict0mem.h @@ -382,7 +382,7 @@ initialized to 0, NULL or FALSE in dict_mem_table_create(). */ struct dict_table_struct{ dulint id; /*!< id of the table */ mem_heap_t* heap; /*!< memory heap */ - const char* name; /*!< table name */ + char* name; /*!< table name */ const char* dir_path_of_temp_table;/*!< NULL or the directory path where a TEMPORARY table that was explicitly created by a user should be placed if diff --git a/storage/innodb_plugin/include/univ.i b/storage/innodb_plugin/include/univ.i index 9da08c894cd..b8e595161b9 100644 --- a/storage/innodb_plugin/include/univ.i +++ b/storage/innodb_plugin/include/univ.i @@ -290,6 +290,12 @@ management to ensure correct alignment for doubles etc. */ /* Maximum number of parallel threads in a parallelized operation */ #define UNIV_MAX_PARALLELISM 32 +/* The maximum length of a table name. This is the MySQL limit and is +defined in mysql_com.h like NAME_CHAR_LEN*SYSTEM_CHARSET_MBMAXLEN, the +number does not include a terminating '\0'. InnoDB probably can handle +longer names internally */ +#define MAX_TABLE_NAME_LEN 192 + /* UNIVERSAL TYPE DEFINITIONS ========================== diff --git a/storage/innodb_plugin/page/page0zip.c b/storage/innodb_plugin/page/page0zip.c index 8d9632a3548..d3b1edefc6b 100644 --- a/storage/innodb_plugin/page/page0zip.c +++ b/storage/innodb_plugin/page/page0zip.c @@ -1464,6 +1464,7 @@ page_zip_fields_free( dict_table_t* table = index->table; mem_heap_free(index->heap); mutex_free(&(table->autoinc_mutex)); + ut_free(table->name); mem_heap_free(table->heap); } } diff --git a/storage/innodb_plugin/row/row0merge.c b/storage/innodb_plugin/row/row0merge.c index 28e7faed1f8..70cc7912fad 100644 --- a/storage/innodb_plugin/row/row0merge.c +++ b/storage/innodb_plugin/row/row0merge.c @@ -2336,7 +2336,7 @@ row_merge_rename_tables( { ulint err = DB_ERROR; pars_info_t* info; - const char* old_name= old_table->name; + char old_name[MAX_TABLE_NAME_LEN + 1]; ut_ad(trx->mysql_thread_id == os_thread_get_curr_id()); ut_ad(old_table != new_table); @@ -2344,6 +2344,17 @@ row_merge_rename_tables( ut_a(trx->dict_operation_lock_mode == RW_X_LATCH); + /* store the old/current name to an automatic variable */ + if (strlen(old_table->name) + 1 <= sizeof(old_name)) { + memcpy(old_name, old_table->name, strlen(old_table->name) + 1); + } else { + ut_print_timestamp(stderr); + fprintf(stderr, "InnoDB: too long table name: '%s', " + "max length is %d\n", old_table->name, + MAX_TABLE_NAME_LEN); + ut_error; + } + trx->op_info = "renaming tables"; /* We use the private SQL parser of Innobase to generate the query From e42ab1af8d6d0eb3a612a92379e03cb4b2eed0b0 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Tue, 22 Jun 2010 20:04:54 +0300 Subject: [PATCH 188/461] Add ChangeLog entry for the fix of Bug#47991 --- storage/innodb_plugin/ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 3be5373f3af..d17c6e058d4 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,10 @@ +2010-06-22 The InnoDB Team + + * dict/dict0dict.c, dict/dict0mem.c, include/dict0mem.h, + include/univ.i, page/page0zip.c, row/row0merge.c: + Fix Bug#47991 InnoDB Dictionary Cache memory usage increases + indefinitely when renaming tables + 2010-06-21 The InnoDB Team * dict/dict0load.c, fil/fil0fil.c: From ebdd52838299fbb036b8399b53dd347400644a8d Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Jun 2010 19:21:25 +0200 Subject: [PATCH 189/461] Set version number for mysql-5.1.46sp1 release --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 904c54abb5f..9098ed1f3cb 100644 --- a/configure.in +++ b/configure.in @@ -12,7 +12,7 @@ dnl dnl When changing the major version number please also check the switch dnl statement in mysqlbinlog::check_master_version(). You may also need dnl to update version.c in ndb. -AC_INIT([MySQL Server], [5.1.46], [], [mysql]) +AC_INIT([MySQL Server], [5.1.46sp1], [], [mysql]) AC_CONFIG_SRCDIR([sql/mysqld.cc]) AC_CANONICAL_SYSTEM From 0e6560398cea2e3277a7384d86186b0cb65ecfb2 Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Tue, 22 Jun 2010 22:53:08 +0400 Subject: [PATCH 190/461] Bug#54477: Crash on IN / CASE with NULL arguments Incorrect handling of NULL arguments could lead to a crash on the IN or CASE operations when either NULL arguments were passed explicitly as arguments (IN) or implicitly generated by the WITH ROLLUP modifier (both IN and CASE). Item_func_case::find_item() assumed all necessary comparators to be instantiated in fix_length_and_dec(). However, in the presence of WITH ROLLUP modifier, arguments could be substituted with an Item_null leading to an "unexpected" STRING_RESULT comparator being invoked. In addition to the problem identical to the above, Item_func_in::val_int() could crash even with explicitly passed NULL arguments due to an optimization in fix_length_and_dec() leading to NULL arguments being ignored during comparators creation. mysql-test/r/func_in.result: Test cases for bug#54477. mysql-test/t/func_in.test: Test cases for bug#54477. sql/item_cmpfunc.cc: Added additional checks for Item_nulls in Item_func_case::find_item() and Item_func_in::val_int(). --- mysql-test/r/func_in.result | 20 ++++++++++++++++++++ mysql-test/t/func_in.test | 15 +++++++++++++++ sql/item_cmpfunc.cc | 10 ++++++++++ 3 files changed, 45 insertions(+) diff --git a/mysql-test/r/func_in.result b/mysql-test/r/func_in.result index ffdacc43735..fdeec2755ca 100644 --- a/mysql-test/r/func_in.result +++ b/mysql-test/r/func_in.result @@ -750,4 +750,24 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables DROP TABLE t1; # +# Bug#54477: Crash on IN / CASE with NULL arguments +# +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1), (2); +SELECT 1 IN (NULL, a) FROM t1; +1 IN (NULL, a) +1 +NULL +SELECT a IN (a, a) FROM t1 GROUP BY a WITH ROLLUP; +a IN (a, a) +1 +1 +NULL +SELECT CASE a WHEN a THEN a END FROM t1 GROUP BY a WITH ROLLUP; +CASE a WHEN a THEN a END +1 +2 +NULL +DROP TABLE t1; +# End of 5.1 tests diff --git a/mysql-test/t/func_in.test b/mysql-test/t/func_in.test index 61ae812d874..6efeb2866e6 100644 --- a/mysql-test/t/func_in.test +++ b/mysql-test/t/func_in.test @@ -539,6 +539,21 @@ EXPLAIN SELECT * FROM t1 WHERE c_char IN (NULL, NULL); DROP TABLE t1; +--echo # +--echo # Bug#54477: Crash on IN / CASE with NULL arguments +--echo # + +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1), (2); + +SELECT 1 IN (NULL, a) FROM t1; + +SELECT a IN (a, a) FROM t1 GROUP BY a WITH ROLLUP; + +SELECT CASE a WHEN a THEN a END FROM t1 GROUP BY a WITH ROLLUP; + +DROP TABLE t1; + --echo # --echo End of 5.1 tests diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 6e38220abd1..9ff72d56050 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -2773,6 +2773,8 @@ Item *Item_func_case::find_item(String *str) /* Compare every WHEN argument with it and return the first match */ for (uint i=0 ; i < ncases ; i+=2) { + if (args[i]->real_item()->type() == NULL_ITEM) + continue; cmp_type= item_cmp_type(left_result_type, args[i]->result_type()); DBUG_ASSERT(cmp_type != ROW_RESULT); DBUG_ASSERT(cmp_items[(uint)cmp_type]); @@ -4002,9 +4004,17 @@ longlong Item_func_in::val_int() return (longlong) (!null_value && tmp != negated); } + if ((null_value= args[0]->real_item()->type() == NULL_ITEM)) + return 0; + have_null= 0; for (uint i= 1 ; i < arg_count ; i++) { + if (args[i]->real_item()->type() == NULL_ITEM) + { + have_null= TRUE; + continue; + } Item_result cmp_type= item_cmp_type(left_result_type, args[i]->result_type()); in_item= cmp_items[(uint)cmp_type]; DBUG_ASSERT(in_item); From eea50ea20dcdae7fe8c3bb182d030cdb79e8c1e0 Mon Sep 17 00:00:00 2001 From: MySQL Build Team Date: Tue, 22 Jun 2010 21:42:14 +0200 Subject: [PATCH 191/461] Backport into build-201006221614-5.1.46sp1 > ------------------------------------------------------------ > revno: 3362 > revision-id: davi.arnaut@sun.com-20100401131522-895y8uzvv8ag44gs > parent: ramil@mysql.com-20100429045409-r7r5lcyiruis15v7 > committer: Davi Arnaut > branch nick: 50755-5.1 > timestamp: Thu 2010-04-01 10:15:22 -0300 > message: > Bug#50755: Crash if stored routine def contains version comments > > The problem was that a syntactically invalid trigger could cause > the server to crash when trying to list triggers. The crash would > happen due to a mishap in the backup/restore procedure that should > protect parser items which are not associated with the trigger. The > backup/restore is used to isolate the parse tree (and context) of > a statement from the load (and parsing) of a trigger. In this case, > a error during the parsing of a trigger could cause the improper > backup/restore sequence. > > The solution is to properly restore the original statement context > before the parser is exited due to syntax errors in the trigger body. --- mysql-test/r/trigger.result | 23 +++++++++++++++++++++++ mysql-test/t/trigger.test | 31 +++++++++++++++++++++++++++++++ sql/sp_head.cc | 36 ++++++++++++++---------------------- sql/sp_head.h | 4 ---- sql/sql_lex.cc | 1 + 5 files changed, 69 insertions(+), 26 deletions(-) diff --git a/mysql-test/r/trigger.result b/mysql-test/r/trigger.result index 3446babbb52..e3c0b0e1dd9 100644 --- a/mysql-test/r/trigger.result +++ b/mysql-test/r/trigger.result @@ -2128,4 +2128,27 @@ Warning 1048 Column 'id' cannot be null Warning 1048 Column 'id' cannot be null DROP TRIGGER t1_bu; DROP TABLE t1,t2; +# +# Bug#50755: Crash if stored routine def contains version comments +# +DROP DATABASE IF EXISTS db1; +DROP TRIGGER IF EXISTS trg1; +DROP TABLE IF EXISTS t1, t2; +CREATE DATABASE db1; +USE db1; +CREATE TABLE t1 (b INT); +CREATE TABLE t2 (a INT); +CREATE TRIGGER trg1 BEFORE INSERT ON t2 FOR EACH ROW INSERT/*!INTO*/t1 VALUES (1); +# Used to crash +SHOW TRIGGERS IN db1; +Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation +Warnings: +Warning 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES (1)' at line 1 +INSERT INTO t2 VALUES (1); +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES (1)' at line 1 +SELECT * FROM t1; +b +# Work around Bug#45235 +DROP DATABASE db1; +USE test; End of 5.1 tests. diff --git a/mysql-test/t/trigger.test b/mysql-test/t/trigger.test index 368271f1fb2..bcbca4d2139 100644 --- a/mysql-test/t/trigger.test +++ b/mysql-test/t/trigger.test @@ -2439,4 +2439,35 @@ UPDATE t1 SET id=NULL; DROP TRIGGER t1_bu; DROP TABLE t1,t2; +--echo # +--echo # Bug#50755: Crash if stored routine def contains version comments +--echo # + +--disable_warnings +DROP DATABASE IF EXISTS db1; +DROP TRIGGER IF EXISTS trg1; +DROP TABLE IF EXISTS t1, t2; +--enable_warnings + +CREATE DATABASE db1; +USE db1; + +CREATE TABLE t1 (b INT); +CREATE TABLE t2 (a INT); + +CREATE TRIGGER trg1 BEFORE INSERT ON t2 FOR EACH ROW INSERT/*!INTO*/t1 VALUES (1); +--echo # Used to crash +SHOW TRIGGERS IN db1; +--error ER_PARSE_ERROR +INSERT INTO t2 VALUES (1); +SELECT * FROM t1; + +--echo # Work around Bug#45235 +let $MYSQLD_DATADIR = `select @@datadir`; +--remove_file $MYSQLD_DATADIR/db1/t2.TRG +--remove_file $MYSQLD_DATADIR/db1/trg1.TRN + +DROP DATABASE db1; +USE test; + --echo End of 5.1 tests. diff --git a/sql/sp_head.cc b/sql/sp_head.cc index 11d5e5f830b..cadda38053c 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -745,21 +745,12 @@ sp_head::create(THD *thd) sp_head::~sp_head() { - DBUG_ENTER("sp_head::~sp_head"); - destroy(); - delete m_next_cached_sp; - if (m_thd) - restore_thd_mem_root(m_thd); - DBUG_VOID_RETURN; -} - -void -sp_head::destroy() -{ - sp_instr *i; LEX *lex; - DBUG_ENTER("sp_head::destroy"); - DBUG_PRINT("info", ("name: %s", m_name.str)); + sp_instr *i; + DBUG_ENTER("sp_head::~sp_head"); + + /* sp_head::restore_thd_mem_root() must already have been called. */ + DBUG_ASSERT(m_thd == NULL); for (uint ip = 0 ; (i = get_instr(ip)) ; ip++) delete i; @@ -770,21 +761,22 @@ sp_head::destroy() /* If we have non-empty LEX stack then we just came out of parser with error. Now we should delete all auxilary LEXes and restore original - THD::lex (In this case sp_head::restore_thd_mem_root() was not called - too, so m_thd points to the current thread context). - It is safe to not update LEX::ptr because further query string parsing - and execution will be stopped anyway. + THD::lex. It is safe to not update LEX::ptr because further query + string parsing and execution will be stopped anyway. */ - DBUG_ASSERT(m_lex.is_empty() || m_thd); while ((lex= (LEX *)m_lex.pop())) { - lex_end(m_thd->lex); - delete m_thd->lex; - m_thd->lex= lex; + THD *thd= lex->thd; + lex_end(thd->lex); + delete thd->lex; + thd->lex= lex; } hash_free(&m_sptabs); hash_free(&m_sroutines); + + delete m_next_cached_sp; + DBUG_VOID_RETURN; } diff --git a/sql/sp_head.h b/sql/sp_head.h index 00c96d44f70..d422adc8927 100644 --- a/sql/sp_head.h +++ b/sql/sp_head.h @@ -289,10 +289,6 @@ public: virtual ~sp_head(); - /// Free memory - void - destroy(); - bool execute_trigger(THD *thd, const LEX_STRING *db_name, diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 5097ca2ad5b..a3776f59241 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -2106,6 +2106,7 @@ void st_lex::cleanup_lex_after_parse_error(THD *thd) */ if (thd->lex->sphead) { + thd->lex->sphead->restore_thd_mem_root(thd); delete thd->lex->sphead; thd->lex->sphead= NULL; } From d2c104fd129c648b6b89d612d9144b4594525732 Mon Sep 17 00:00:00 2001 From: MySQL Build Team Date: Tue, 22 Jun 2010 21:50:47 +0200 Subject: [PATCH 192/461] Backport into build-201006221614-5.1.46sp1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > ------------------------------------------------------------ > revno: 3351.14.50 > revision-id: marko.makela@oracle.com-20100421185359-8qaxoa2yyrpzwdd7 > parent: marko.makela@oracle.com-20100421102723-0i80uezbyu0ekj5d > committer: Marko Mäkelä > branch nick: 5.1-innodb > timestamp: Wed 2010-04-21 21:53:59 +0300 > message: > btr_page_split_and_insert(): Avoid an infinite loop. (Bug #52964) > > btr_page_tuple_smaller(): New function, refactored from > btr_page_split_and_insert(). > > btr_page_get_split_rec(): Renamed from btr_page_get_sure_split_rec(). > Note that a NULL return may mean that the tuple is to be inserted into > either the lower or upper page, to be determined by btr_page_tuple_smaller(). > > btr_page_split_and_insert(): When btr_page_get_split_rec() returns NULL, > invoke btr_page_tuple_smaller() to determine which half-page the tuple > belongs to. > > Reviewed by Sunny Bains --- storage/innodb_plugin/btr/btr0btr.c | 91 +++++++++++++++++++---------- 1 file changed, 59 insertions(+), 32 deletions(-) diff --git a/storage/innodb_plugin/btr/btr0btr.c b/storage/innodb_plugin/btr/btr0btr.c index fa4fc05d96b..cd8f42b3818 100644 --- a/storage/innodb_plugin/btr/btr0btr.c +++ b/storage/innodb_plugin/btr/btr0btr.c @@ -1451,11 +1451,11 @@ Calculates a split record such that the tuple will certainly fit on its half-page when the split is performed. We assume in this function only that the cursor page has at least one user record. @return split record, or NULL if tuple will be the first record on -upper half-page */ +the lower or upper half-page (determined by btr_page_tuple_smaller()) */ static rec_t* -btr_page_get_sure_split_rec( -/*========================*/ +btr_page_get_split_rec( +/*===================*/ btr_cur_t* cursor, /*!< in: cursor at which insert should be made */ const dtuple_t* tuple, /*!< in: tuple to insert */ ulint n_ext) /*!< in: number of externally stored columns */ @@ -1831,6 +1831,37 @@ btr_attach_half_pages( btr_page_set_next(upper_page, upper_page_zip, next_page_no, mtr); } +/*************************************************************//** +Determine if a tuple is smaller than any record on the page. +@return TRUE if smaller */ +static +ibool +btr_page_tuple_smaller( +/*===================*/ + btr_cur_t* cursor, /*!< in: b-tree cursor */ + const dtuple_t* tuple, /*!< in: tuple to consider */ + ulint* offsets,/*!< in/out: temporary storage */ + ulint n_uniq, /*!< in: number of unique fields + in the index page records */ + mem_heap_t** heap) /*!< in/out: heap for offsets */ +{ + buf_block_t* block; + const rec_t* first_rec; + page_cur_t pcur; + + /* Read the first user record in the page. */ + block = btr_cur_get_block(cursor); + page_cur_set_before_first(block, &pcur); + page_cur_move_to_next(&pcur); + first_rec = page_cur_get_rec(&pcur); + + offsets = rec_get_offsets( + first_rec, cursor->index, offsets, + n_uniq, heap); + + return(cmp_dtuple_rec(tuple, first_rec, offsets) < 0); +} + /*************************************************************//** Splits an index page to halves and inserts the tuple. It is assumed that mtr holds an x-latch to the index tree. NOTE: the tree x-latch is @@ -1905,49 +1936,45 @@ func_start: if (n_iterations > 0) { direction = FSP_UP; hint_page_no = page_no + 1; - split_rec = btr_page_get_sure_split_rec(cursor, tuple, n_ext); + split_rec = btr_page_get_split_rec(cursor, tuple, n_ext); + if (UNIV_UNLIKELY(split_rec == NULL)) { + insert_left = btr_page_tuple_smaller( + cursor, tuple, offsets, n_uniq, &heap); + } } else if (btr_page_get_split_rec_to_right(cursor, &split_rec)) { direction = FSP_UP; hint_page_no = page_no + 1; + insert_left = FALSE; } else if (btr_page_get_split_rec_to_left(cursor, &split_rec)) { direction = FSP_DOWN; hint_page_no = page_no - 1; + ut_ad(split_rec); } else { direction = FSP_UP; hint_page_no = page_no + 1; - if (page_get_n_recs(page) == 1) { - page_cur_t pcur; + /* If there is only one record in the index page, we + can't split the node in the middle by default. We need + to determine whether the new record will be inserted + to the left or right. */ - /* There is only one record in the index page - therefore we can't split the node in the middle - by default. We need to determine whether the - new record will be inserted to the left or right. */ - - /* Read the first (and only) record in the page. */ - page_cur_set_before_first(block, &pcur); - page_cur_move_to_next(&pcur); - first_rec = page_cur_get_rec(&pcur); - - offsets = rec_get_offsets( - first_rec, cursor->index, offsets, - n_uniq, &heap); - - /* If the new record is less than the existing record - the split in the middle will copy the existing - record to the new node. */ - if (cmp_dtuple_rec(tuple, first_rec, offsets) < 0) { - split_rec = page_get_middle_rec(page); - } else { - split_rec = NULL; - } - } else { + if (page_get_n_recs(page) > 1) { split_rec = page_get_middle_rec(page); + } else if (btr_page_tuple_smaller(cursor, tuple, + offsets, n_uniq, &heap)) { + split_rec = page_rec_get_next( + page_get_infimum_rec(page)); + } else { + split_rec = NULL; + insert_left = FALSE; } } + /* At this point, insert_left is initialized if split_rec == NULL + and may be uninitialized otherwise. */ + /* 2. Allocate a new page to the index */ new_block = btr_page_alloc(cursor->index, hint_page_no, direction, btr_page_get_level(page, mtr), mtr); @@ -1974,11 +2001,11 @@ func_start: avoid further splits by inserting the record to an empty page. */ split_rec = NULL; - goto insert_right; + goto insert_empty; } } else { -insert_right: - insert_left = FALSE; +insert_empty: + ut_ad(!split_rec); buf = mem_alloc(rec_get_converted_size(cursor->index, tuple, n_ext)); From 65379cccc84bb5324413dfd6d3fd09b496612361 Mon Sep 17 00:00:00 2001 From: MySQL Build Team Date: Tue, 22 Jun 2010 21:52:43 +0200 Subject: [PATCH 193/461] Backport into build-201006221614-5.1.46sp1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > ------------------------------------------------------------ > revno: 3351.14.74 > revision-id: marko.makela@oracle.com-20100504093128-44v6glupe1dsh0ug > parent: marko.makela@oracle.com-20100503122859-k73bl51re93o0mt4 > committer: Marko Mäkelä > branch nick: 5.1-innodb > timestamp: Tue 2010-05-04 12:31:28 +0300 > message: > btr_page_split_and_insert(): Correct the fix of Bug #52964. > When split_rec==NULL, choose the correct node pointer key (first_rec). --- storage/innodb_plugin/btr/btr0btr.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/storage/innodb_plugin/btr/btr0btr.c b/storage/innodb_plugin/btr/btr0btr.c index cd8f42b3818..1d6b4f5a0e6 100644 --- a/storage/innodb_plugin/btr/btr0btr.c +++ b/storage/innodb_plugin/btr/btr0btr.c @@ -2003,9 +2003,13 @@ func_start: split_rec = NULL; goto insert_empty; } + } else if (UNIV_UNLIKELY(insert_left)) { + first_rec = page_rec_get_next(page_get_infimum_rec(page)); + move_limit = page_rec_get_next(btr_cur_get_rec(cursor)); } else { insert_empty: ut_ad(!split_rec); + ut_ad(!insert_left); buf = mem_alloc(rec_get_converted_size(cursor->index, tuple, n_ext)); @@ -2029,7 +2033,11 @@ insert_empty: && btr_page_insert_fits(cursor, split_rec, offsets, tuple, n_ext, heap); } else { - mem_free(buf); + if (!insert_left) { + mem_free(buf); + buf = NULL; + } + insert_will_fit = !new_page_zip && btr_page_insert_fits(cursor, NULL, NULL, tuple, n_ext, heap); From 1cab479221f6d9fbe0fc44414b5b6a9bc7c9f009 Mon Sep 17 00:00:00 2001 From: MySQL Build Team Date: Tue, 22 Jun 2010 21:54:41 +0200 Subject: [PATCH 194/461] Backport into build-201006221614-5.1.46sp1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > ------------------------------------------------------------ > revno: 3351.47.1 > revision-id: marko.makela@oracle.com-20100511104500-c6kzd0bg5s42p8e9 > parent: vasil.dimov@oracle.com-20100510132852-cz457uqvj8iiy9mm > committer: Marko Mäkelä > branch nick: mysql-5.1-innodb2 > timestamp: Tue 2010-05-11 13:45:00 +0300 > message: > Remove a stray expression. Spotted by Sunny Bains. --- storage/innodb_plugin/page/page0zip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/innodb_plugin/page/page0zip.c b/storage/innodb_plugin/page/page0zip.c index aa5e39ff04a..a64a41ea518 100644 --- a/storage/innodb_plugin/page/page0zip.c +++ b/storage/innodb_plugin/page/page0zip.c @@ -571,7 +571,7 @@ page_zip_dir_encode( /* Traverse the list of stored records in the collation order, starting from the first user record. */ - rec = page + PAGE_NEW_INFIMUM, TRUE; + rec = page + PAGE_NEW_INFIMUM; i = 0; From e87a2d917b39043ce7124aae8788e8247e611211 Mon Sep 17 00:00:00 2001 From: MySQL Build Team Date: Tue, 22 Jun 2010 21:56:18 +0200 Subject: [PATCH 195/461] Backport into build-201006221614-5.1.46sp1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > ------------------------------------------------------------ > revno: 3351.47.2 > revision-id: marko.makela@oracle.com-20100511104910-nim8kgguawpis7zo > parent: marko.makela@oracle.com-20100511104500-c6kzd0bg5s42p8e9 > committer: Marko Mäkelä > branch nick: mysql-5.1-innodb2 > timestamp: Tue 2010-05-11 13:49:10 +0300 > message: > btr_page_split_and_insert(): Add an assertion > suggested by Sunny Bains when reviewing Bug #52964. --- storage/innodb_plugin/btr/btr0btr.c | 1 + 1 file changed, 1 insertion(+) diff --git a/storage/innodb_plugin/btr/btr0btr.c b/storage/innodb_plugin/btr/btr0btr.c index 1d6b4f5a0e6..0fd209e0216 100644 --- a/storage/innodb_plugin/btr/btr0btr.c +++ b/storage/innodb_plugin/btr/btr0btr.c @@ -2004,6 +2004,7 @@ func_start: goto insert_empty; } } else if (UNIV_UNLIKELY(insert_left)) { + ut_a(n_iterations > 0); first_rec = page_rec_get_next(page_get_infimum_rec(page)); move_limit = page_rec_get_next(btr_cur_get_rec(cursor)); } else { From f5a0316a3962ce34f3586574be5598d2bacd5ccb Mon Sep 17 00:00:00 2001 From: MySQL Build Team Date: Tue, 22 Jun 2010 21:59:35 +0200 Subject: [PATCH 196/461] Backport into build-201006221614-5.1.46sp1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > ------------------------------------------------------------ > revno: 3351.14.47 > revision-id: marko.makela@oracle.com-20100421095033-0acvzxb8um8cms0a > parent: marko.makela@oracle.com-20100421094032-ir4glqk46qvg2ywn > committer: Marko Mäkelä > branch nick: 5.1-innodb > timestamp: Wed 2010-04-21 12:50:33 +0300 > message: > dtuple_convert_big_rec(): Store locally any fields whose maximum length > is less than 256 bytes. (Bug #52745) > Add related comments and debug assertions to the "offsets" > functions in rem0rec.c. > Approved by Sunny Bains --- storage/innodb_plugin/data/data0data.c | 15 +++++++ storage/innodb_plugin/rem/rem0rec.c | 59 +++++++++++++++++++++++++- 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/storage/innodb_plugin/data/data0data.c b/storage/innodb_plugin/data/data0data.c index e3c1f1b4f23..0715b49bf9c 100644 --- a/storage/innodb_plugin/data/data0data.c +++ b/storage/innodb_plugin/data/data0data.c @@ -666,6 +666,21 @@ dtuple_convert_big_rec( goto skip_field; } + /* In DYNAMIC and COMPRESSED format, store + locally any non-BLOB columns whose maximum + length does not exceed 256 bytes. This is + because there is no room for the "external + storage" flag when the maximum length is 255 + bytes or less. This restriction trivially + holds in REDUNDANT and COMPACT format, because + there we always store locally columns whose + length is up to local_len == 788 bytes. + @see rec_init_offsets_comp_ordinary */ + if (ifield->col->mtype != DATA_BLOB + && ifield->col->len < 256) { + goto skip_field; + } + longest_i = i; longest = savings; diff --git a/storage/innodb_plugin/rem/rem0rec.c b/storage/innodb_plugin/rem/rem0rec.c index 27c11dacc8c..59cf6e887d1 100644 --- a/storage/innodb_plugin/rem/rem0rec.c +++ b/storage/innodb_plugin/rem/rem0rec.c @@ -212,6 +212,13 @@ rec_get_n_extern_new( const dict_col_t* col = dict_field_get_col(field); len = *lens--; + /* If the maximum length of the field is up + to 255 bytes, the actual length is always + stored in one byte. If the maximum length is + more than 255 bytes, the actual length is + stored in one byte for 0..127. The length + will be encoded in two bytes when it is 128 or + more, or when the field is stored externally. */ if (UNIV_UNLIKELY(col->len > 255) || UNIV_UNLIKELY(col->mtype == DATA_BLOB)) { if (len & 0x80) { @@ -294,6 +301,13 @@ rec_init_offsets_comp_ordinary( const dict_col_t* col = dict_field_get_col(field); len = *lens--; + /* If the maximum length of the field is up + to 255 bytes, the actual length is always + stored in one byte. If the maximum length is + more than 255 bytes, the actual length is + stored in one byte for 0..127. The length + will be encoded in two bytes when it is 128 or + more, or when the field is stored externally. */ if (UNIV_UNLIKELY(col->len > 255) || UNIV_UNLIKELY(col->mtype == DATA_BLOB)) { @@ -425,6 +439,15 @@ rec_init_offsets( const dict_col_t* col = dict_field_get_col(field); len = *lens--; + /* If the maximum length of the field + is up to 255 bytes, the actual length + is always stored in one byte. If the + maximum length is more than 255 bytes, + the actual length is stored in one + byte for 0..127. The length will be + encoded in two bytes when it is 128 or + more, or when the field is stored + externally. */ if (UNIV_UNLIKELY(col->len > 255) || UNIV_UNLIKELY(col->mtype == DATA_BLOB)) { @@ -647,6 +670,13 @@ rec_get_offsets_reverse( const dict_col_t* col = dict_field_get_col(field); len = *lens++; + /* If the maximum length of the field is up + to 255 bytes, the actual length is always + stored in one byte. If the maximum length is + more than 255 bytes, the actual length is + stored in one byte for 0..127. The length + will be encoded in two bytes when it is 128 or + more, or when the field is stored externally. */ if (UNIV_UNLIKELY(col->len > 255) || UNIV_UNLIKELY(col->mtype == DATA_BLOB)) { if (len & 0x80) { @@ -781,12 +811,20 @@ rec_get_converted_size_comp_prefix( ut_ad(len <= col->len || col->mtype == DATA_BLOB); + /* If the maximum length of a variable-length field + is up to 255 bytes, the actual length is always stored + in one byte. If the maximum length is more than 255 + bytes, the actual length is stored in one byte for + 0..127. The length will be encoded in two bytes when + it is 128 or more, or when the field is stored externally. */ + if (field->fixed_len) { ut_ad(len == field->fixed_len); /* dict_index_add_col() should guarantee this */ ut_ad(!field->prefix_len || field->fixed_len == field->prefix_len); } else if (dfield_is_ext(&fields[i])) { + ut_ad(col->len >= 256 || col->mtype == DATA_BLOB); extra_size += 2; } else if (len < 128 || (col->len < 256 && col->mtype != DATA_BLOB)) { @@ -1086,6 +1124,8 @@ rec_convert_dtuple_to_rec_comp( /* Store the data and the offsets */ for (i = 0, field = fields; i < n_fields; i++, field++) { + const dict_field_t* ifield; + type = dfield_get_type(field); len = dfield_get_len(field); @@ -1120,12 +1160,20 @@ rec_convert_dtuple_to_rec_comp( /* only nullable fields can be null */ ut_ad(!dfield_is_null(field)); - fixed_len = dict_index_get_nth_field(index, i)->fixed_len; - + ifield = dict_index_get_nth_field(index, i); + fixed_len = ifield->fixed_len; + /* If the maximum length of a variable-length field + is up to 255 bytes, the actual length is always stored + in one byte. If the maximum length is more than 255 + bytes, the actual length is stored in one byte for + 0..127. The length will be encoded in two bytes when + it is 128 or more, or when the field is stored externally. */ if (fixed_len) { ut_ad(len == fixed_len); ut_ad(!dfield_is_ext(field)); } else if (dfield_is_ext(field)) { + ut_ad(ifield->col->len >= 256 + || ifield->col->mtype == DATA_BLOB); ut_ad(len <= REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE); *lens-- = (byte) (len >> 8) | 0xc0; @@ -1402,6 +1450,13 @@ rec_copy_prefix_to_buf( prefix_len += field->fixed_len; } else { ulint len = *lens--; + /* If the maximum length of the column is up + to 255 bytes, the actual length is always + stored in one byte. If the maximum length is + more than 255 bytes, the actual length is + stored in one byte for 0..127. The length + will be encoded in two bytes when it is 128 or + more, or when the column is stored externally. */ if (col->len > 255 || col->mtype == DATA_BLOB) { if (len & 0x80) { /* 1exxxxxx */ From 4f066e52694cb41ed950ed0a92d4518de9cd89bf Mon Sep 17 00:00:00 2001 From: MySQL Build Team Date: Tue, 22 Jun 2010 22:09:31 +0200 Subject: [PATCH 197/461] Backport into 5.1.46sp1: > revno: 3351.14.56 > committer: Marko Mdkeld > branch nick: 5.1-innodb > timestamp: Mon 2010-04-26 14:08:56 +0300 > message: > Add a test case for Bug #52745. --- .../innodb_plugin/r/innodb_bug52745.result | 130 ++++++++++++++++++ .../innodb_plugin/t/innodb_bug52745.test | 109 +++++++++++++++ 2 files changed, 239 insertions(+) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug52745.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug52745.test diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug52745.result b/mysql-test/suite/innodb_plugin/r/innodb_bug52745.result new file mode 100644 index 00000000000..254c6525257 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug52745.result @@ -0,0 +1,130 @@ +SET GLOBAL innodb_file_format='Barracuda'; +SET GLOBAL innodb_file_per_table=on; +CREATE TABLE bug52745 ( +a2 int(10) unsigned DEFAULT NULL, +col37 time DEFAULT NULL, +col38 char(229) CHARACTER SET utf8 DEFAULT NULL, +col39 text, +col40 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, +col41 int(10) unsigned DEFAULT NULL, +col42 varchar(248) CHARACTER SET utf8 DEFAULT NULL, +col43 smallint(5) unsigned zerofill DEFAULT NULL, +col44 varchar(150) CHARACTER SET utf8 DEFAULT NULL, +col45 float unsigned zerofill DEFAULT NULL, +col46 binary(1) DEFAULT NULL, +col47 tinyint(4) DEFAULT NULL, +col48 tinyint(1) DEFAULT NULL, +col49 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', +col50 binary(1) DEFAULT NULL, +col51 double unsigned zerofill DEFAULT NULL, +col52 int(10) unsigned DEFAULT NULL, +col53 time DEFAULT NULL, +col54 double unsigned DEFAULT NULL, +col55 time DEFAULT NULL, +col56 mediumtext CHARACTER SET latin2, +col57 blob, +col58 decimal(52,16) unsigned zerofill NOT NULL DEFAULT '000000000000000000000000000000000000.0000000000000000', +col59 binary(1) DEFAULT NULL, +col60 longblob, +col61 time DEFAULT NULL, +col62 longtext CHARACTER SET utf8 COLLATE utf8_persian_ci, +col63 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', +col64 int(10) unsigned DEFAULT NULL, +col65 date DEFAULT NULL, +col66 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', +col67 binary(1) DEFAULT NULL, +col68 tinyblob, +col69 date DEFAULT NULL, +col70 tinyint(3) unsigned zerofill DEFAULT NULL, +col71 varchar(44) CHARACTER SET utf8 DEFAULT NULL, +col72 datetime DEFAULT NULL, +col73 smallint(5) unsigned zerofill DEFAULT NULL, +col74 longblob, +col75 bit(34) DEFAULT NULL, +col76 float unsigned zerofill DEFAULT NULL, +col77 year(2) DEFAULT NULL, +col78 tinyint(3) unsigned DEFAULT NULL, +col79 set('msfheowh','tbpxbgf','by','wahnrjw','myqfasxz','rsokyumrt') CHARACTER SET latin2 DEFAULT NULL, +col80 datetime DEFAULT NULL, +col81 smallint(6) DEFAULT NULL, +col82 enum('xtaurnqfqz','rifrse','kuzwpbvb','niisabk','zxavro','rbvasv','','uulrfaove','','') DEFAULT NULL, +col83 bigint(20) unsigned zerofill DEFAULT NULL, +col84 float unsigned zerofill DEFAULT NULL, +col85 double DEFAULT NULL, +col86 enum('ylannv','','vlkhycqc','snke','cxifustp','xiaxaswzp','oxl') CHARACTER SET latin1 COLLATE latin1_german2_ci DEFAULT NULL, +col87 varbinary(221) DEFAULT NULL, +col88 double unsigned DEFAULT NULL, +col89 float unsigned zerofill DEFAULT NULL, +col90 tinyblob +) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1; +Warnings: +Note 1291 Column 'col82' has duplicated value '' in ENUM +Note 1291 Column 'col82' has duplicated value '' in ENUM +INSERT INTO bug52745 SET +col40='0000-00-00 00:00:00', +col51=16547, +col53='7711484', +col54=-28604, +col55='7112612', +col56='wakefulness\'', +col57=repeat('absorbefacient\'',106), +col58=11027, +col59='AM09gW7', +col60=repeat('Noelani\'',16), +col61='2520576', +col62='substitutiv', +col63='19950106155112', +col64=-12038, +col65='86238806', +col66='19600719080256', +col68=repeat('Sagittarius\'',54), +col69='38943902', +col70=1232, +col71='Elora\'', +col74=repeat('zipp',11), +col75='0', +col76=23254, +col78=13247, +col79='56219', +col80='20500609035724', +col81=11632, +col82=7, +col84=-23863, +col85=6341, +col87='HZdkf.4 s7t,5Rmq 8so fmr,ruGLUG25TrtI.yQ 2SuHq0ML7rw7.4 b2yf2E5TJxOtBBZImezDnzpj,uPYfznnEUDN1e9aQoO 2DsplB7TFWy oQJ br HLF :F,eQ p4i1oWsr lL3PG,hjCz6hYqN h1QTjLCjrv:QCdSzpYBibJAtZCxLOk3l6Blsh.W', +col88=16894, +col89=6161, +col90=repeat('gale',48); +Warnings: +Warning 1265 Data truncated for column 'col53' at row 1 +Warning 1264 Out of range value for column 'col54' at row 1 +Warning 1265 Data truncated for column 'col59' at row 1 +Warning 1265 Data truncated for column 'col61' at row 1 +Warning 1264 Out of range value for column 'col64' at row 1 +Warning 1265 Data truncated for column 'col65' at row 1 +Warning 1264 Out of range value for column 'col66' at row 1 +Warning 1265 Data truncated for column 'col68' at row 1 +Warning 1265 Data truncated for column 'col69' at row 1 +Warning 1264 Out of range value for column 'col70' at row 1 +Warning 1264 Out of range value for column 'col78' at row 1 +Warning 1265 Data truncated for column 'col79' at row 1 +Warning 1264 Out of range value for column 'col84' at row 1 +SHOW WARNINGS; +Level Code Message +Warning 1265 Data truncated for column 'col53' at row 1 +Warning 1264 Out of range value for column 'col54' at row 1 +Warning 1265 Data truncated for column 'col59' at row 1 +Warning 1265 Data truncated for column 'col61' at row 1 +Warning 1264 Out of range value for column 'col64' at row 1 +Warning 1265 Data truncated for column 'col65' at row 1 +Warning 1264 Out of range value for column 'col66' at row 1 +Warning 1265 Data truncated for column 'col68' at row 1 +Warning 1265 Data truncated for column 'col69' at row 1 +Warning 1264 Out of range value for column 'col70' at row 1 +Warning 1264 Out of range value for column 'col78' at row 1 +Warning 1265 Data truncated for column 'col79' at row 1 +Warning 1264 Out of range value for column 'col84' at row 1 +DROP TABLE bug52745; +SET GLOBAL innodb_file_format=Antelope; +SET GLOBAL innodb_file_format_check=Antelope; +SET GLOBAL innodb_file_per_table=0; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug52745.test b/mysql-test/suite/innodb_plugin/t/innodb_bug52745.test new file mode 100644 index 00000000000..b20a993a2d1 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug52745.test @@ -0,0 +1,109 @@ +-- source include/have_innodb_plugin.inc + +let $file_format=`select @@innodb_file_format`; +let $file_format_check=`select @@innodb_file_format_check`; +let $file_per_table=`select @@innodb_file_per_table`; +SET GLOBAL innodb_file_format='Barracuda'; +SET GLOBAL innodb_file_per_table=on; + +CREATE TABLE bug52745 ( + a2 int(10) unsigned DEFAULT NULL, + col37 time DEFAULT NULL, + col38 char(229) CHARACTER SET utf8 DEFAULT NULL, + col39 text, + col40 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + col41 int(10) unsigned DEFAULT NULL, + col42 varchar(248) CHARACTER SET utf8 DEFAULT NULL, + col43 smallint(5) unsigned zerofill DEFAULT NULL, + col44 varchar(150) CHARACTER SET utf8 DEFAULT NULL, + col45 float unsigned zerofill DEFAULT NULL, + col46 binary(1) DEFAULT NULL, + col47 tinyint(4) DEFAULT NULL, + col48 tinyint(1) DEFAULT NULL, + col49 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', + col50 binary(1) DEFAULT NULL, + col51 double unsigned zerofill DEFAULT NULL, + col52 int(10) unsigned DEFAULT NULL, + col53 time DEFAULT NULL, + col54 double unsigned DEFAULT NULL, + col55 time DEFAULT NULL, + col56 mediumtext CHARACTER SET latin2, + col57 blob, + col58 decimal(52,16) unsigned zerofill NOT NULL DEFAULT '000000000000000000000000000000000000.0000000000000000', + col59 binary(1) DEFAULT NULL, + col60 longblob, + col61 time DEFAULT NULL, + col62 longtext CHARACTER SET utf8 COLLATE utf8_persian_ci, + col63 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', + col64 int(10) unsigned DEFAULT NULL, + col65 date DEFAULT NULL, + col66 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', + col67 binary(1) DEFAULT NULL, + col68 tinyblob, + col69 date DEFAULT NULL, + col70 tinyint(3) unsigned zerofill DEFAULT NULL, + col71 varchar(44) CHARACTER SET utf8 DEFAULT NULL, + col72 datetime DEFAULT NULL, + col73 smallint(5) unsigned zerofill DEFAULT NULL, + col74 longblob, + col75 bit(34) DEFAULT NULL, + col76 float unsigned zerofill DEFAULT NULL, + col77 year(2) DEFAULT NULL, + col78 tinyint(3) unsigned DEFAULT NULL, + col79 set('msfheowh','tbpxbgf','by','wahnrjw','myqfasxz','rsokyumrt') CHARACTER SET latin2 DEFAULT NULL, + col80 datetime DEFAULT NULL, + col81 smallint(6) DEFAULT NULL, + col82 enum('xtaurnqfqz','rifrse','kuzwpbvb','niisabk','zxavro','rbvasv','','uulrfaove','','') DEFAULT NULL, + col83 bigint(20) unsigned zerofill DEFAULT NULL, + col84 float unsigned zerofill DEFAULT NULL, + col85 double DEFAULT NULL, + col86 enum('ylannv','','vlkhycqc','snke','cxifustp','xiaxaswzp','oxl') CHARACTER SET latin1 COLLATE latin1_german2_ci DEFAULT NULL, + col87 varbinary(221) DEFAULT NULL, + col88 double unsigned DEFAULT NULL, + col89 float unsigned zerofill DEFAULT NULL, + col90 tinyblob +) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1; + +INSERT INTO bug52745 SET +col40='0000-00-00 00:00:00', +col51=16547, +col53='7711484', +col54=-28604, +col55='7112612', +col56='wakefulness\'', +col57=repeat('absorbefacient\'',106), +col58=11027, +col59='AM09gW7', +col60=repeat('Noelani\'',16), +col61='2520576', +col62='substitutiv', +col63='19950106155112', +col64=-12038, +col65='86238806', +col66='19600719080256', +col68=repeat('Sagittarius\'',54), +col69='38943902', +col70=1232, +col71='Elora\'', +col74=repeat('zipp',11), +col75='0', +col76=23254, +col78=13247, +col79='56219', +col80='20500609035724', +col81=11632, +col82=7, +col84=-23863, +col85=6341, +col87='HZdkf.4 s7t,5Rmq 8so fmr,ruGLUG25TrtI.yQ 2SuHq0ML7rw7.4 b2yf2E5TJxOtBBZImezDnzpj,uPYfznnEUDN1e9aQoO 2DsplB7TFWy oQJ br HLF :F,eQ p4i1oWsr lL3PG,hjCz6hYqN h1QTjLCjrv:QCdSzpYBibJAtZCxLOk3l6Blsh.W', +col88=16894, +col89=6161, +col90=repeat('gale',48); + +SHOW WARNINGS; + +DROP TABLE bug52745; + +EVAL SET GLOBAL innodb_file_format=$file_format; +EVAL SET GLOBAL innodb_file_format_check=$file_format_check; +EVAL SET GLOBAL innodb_file_per_table=$file_per_table; From 01490413d26cd31f319928e30724bd5a28e82e42 Mon Sep 17 00:00:00 2001 From: MySQL Build Team Date: Tue, 22 Jun 2010 22:34:48 +0200 Subject: [PATCH 198/461] Backport into build-201006221614-5.1.46sp1 > ------------------------------------------------------------ > revno: 1810.3987.13 > revision-id: ramil@mysql.com-20100429044232-f0pkyx8fnpszf142 > parent: alexey.kopytov@sun.com-20100426200600-op06qy98llzpzgl1 > committer: Ramil Kalimullin > branch nick: b53237-5.0-bugteam > timestamp: Thu 2010-04-29 08:42:32 +0400 > message: > Fix for bug #53237: mysql_list_fields/COM_FIELD_LIST stack smashing > > Problem: "COM_FIELD_LIST is an old command of the MySQL server, before there was real move to only > SQL. Seems that the data sent to COM_FIELD_LIST( mysql_list_fields() function) is not > checked for sanity. By sending long data for the table a buffer is overflown, which can > be used deliberately to include code that harms". > > Fix: check incoming data length. The patch did not apply cleanly: - Line numbers are completely off, roughly it is 2030 -> 1313 - What is called "pend" in the patch, is "arg_end" in the source. --- sql/sql_parse.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 5228a37f490..11481933c8a 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1300,8 +1300,16 @@ bool dispatch_command(enum enum_server_command command, THD *thd, We have name + wildcard in packet, separated by endzero */ arg_end= strend(packet); + uint arg_length= arg_end - packet; + + /* Check given table name length. */ + if (arg_length >= packet_length || arg_length > NAME_LEN) + { + my_message(ER_UNKNOWN_COM_ERROR, ER(ER_UNKNOWN_COM_ERROR), MYF(0)); + break; + } thd->convert_string(&conv_name, system_charset_info, - packet, (uint) (arg_end - packet), thd->charset()); + packet, arg_length, thd->charset()); table_list.alias= table_list.table_name= conv_name.str; packet= arg_end + 1; From fb8791e2bc36c3da93540b68d86ff1f2c3ddb2b2 Mon Sep 17 00:00:00 2001 From: MySQL Build Team Date: Tue, 22 Jun 2010 22:51:35 +0200 Subject: [PATCH 199/461] Backport into build-201006221614-5.1.46sp1 > ------------------------------------------------------------ > revno: 1810.3987.14 > revision-id: davi.arnaut@sun.com-20100429132816-ictyul6d75itek22 > parent: ramil@mysql.com-20100429044232-f0pkyx8fnpszf142 > committer: Davi Arnaut > branch nick: 50974-5.0 > timestamp: Thu 2010-04-29 10:28:16 -0300 > message: > Bug#50974: Server keeps receiving big (> max_allowed_packet) packets indefinitely. > > The server could be tricked to read packets indefinitely if it > received a packet larger than the maximum size of one packet. > This problem is aggravated by the fact that it can be triggered > before authentication. > > The solution is to no skip big packets for non-authenticated > sessions. If a big packet is sent before a session is authen- > ticated, a error is returned and the connection is closed. > ------------------------------------------------------------ > revno: 3363 [merge] > revision-id: davi.arnaut@sun.com-20100429231819-i3anwzrdasjmezvt > parent: davi.arnaut@sun.com-20100401131522-895y8uzvv8ag44gs > parent: davi.arnaut@sun.com-20100429132816-ictyul6d75itek22 > committer: Davi Arnaut > branch nick: mysql-5.1-bugteam > timestamp: Thu 2010-04-29 20:18:19 -0300 > message: > Manual merge. > ------------------------------------------------------------ > Use --include-merges or -n0 to see merged revisions. --- include/mysql_com.h | 10 ++++++++++ sql/net_serv.cc | 4 ++++ sql/sql_connect.cc | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/include/mysql_com.h b/include/mysql_com.h index db5a5eb8741..7d3dd3d4f34 100644 --- a/include/mysql_com.h +++ b/include/mysql_com.h @@ -277,6 +277,16 @@ typedef struct st_net { /** Client library sqlstate buffer. Set along with the error message. */ char sqlstate[SQLSTATE_LENGTH+1]; void *extension; +#if defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY) + /* + Controls whether a big packet should be skipped. + + Initially set to FALSE by default. Unauthenticated sessions must have + this set to FALSE so that the server can't be tricked to read packets + indefinitely. + */ + my_bool skip_big_packet; +#endif } NET; diff --git a/sql/net_serv.cc b/sql/net_serv.cc index 73892f31ccf..15c0c581108 100644 --- a/sql/net_serv.cc +++ b/sql/net_serv.cc @@ -136,6 +136,9 @@ my_bool my_net_init(NET *net, Vio* vio) #else net->query_cache_query= 0; #endif +#if defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY) + net->skip_big_packet= FALSE; +#endif if (vio != 0) /* If real connection */ { @@ -949,6 +952,7 @@ my_real_read(NET *net, size_t *complen) { #if defined(MYSQL_SERVER) && !defined(NO_ALARM) if (!net->compress && + net->skip_big_packet && !my_net_skip_rest(net, (uint32) len, &alarmed, &alarm_buff)) net->error= 3; /* Successfully skiped packet */ #endif diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc index 16f11fe22c4..2039c7f7449 100644 --- a/sql/sql_connect.cc +++ b/sql/sql_connect.cc @@ -471,6 +471,13 @@ check_user(THD *thd, enum enum_server_command command, } my_ok(thd); thd->password= test(passwd_len); // remember for error messages + /* + Allow the network layer to skip big packets. Although a malicious + authenticated session might use this to trick the server to read + big packets indefinitely, this is a previously established behavior + that needs to be preserved as to not break backwards compatibility. + */ + thd->net.skip_big_packet= TRUE; /* Ready to handle queries */ DBUG_RETURN(0); } From a0a850318b964ca92b660e0127c35061ad8f7a54 Mon Sep 17 00:00:00 2001 From: MySQL Build Team Date: Tue, 22 Jun 2010 22:53:01 +0200 Subject: [PATCH 200/461] Backport into build-201006221614-5.1.46sp1 > ------------------------------------------------------------ > revno: 3351.41.1 > revision-id: alexey.kopytov@sun.com-20100430111048-jdls6ofn4kkmpt09 > parent: sergey.glukhov@sun.com-20100329134249-03wyhzp5k92dzhcb > committer: Alexey Kopytov > branch nick: my51-bug48419 > timestamp: Fri 2010-04-30 15:10:48 +0400 > message: > Bug #48419: another explain crash.. > > WHERE predicates containing references to empty tables in a > subquery were handled incorrectly by the optimizer when > executing EXPLAIN. As a result, the optimizer could try to > evaluate such predicates rather than just stop with > "Impossible WHERE noticed after reading const tables" as > it would do in a non-subquery case. This led to valgrind > errors and crashes. > > Fixed the code checking the above condition so that subqueries > are not excluded and hence are handled in the same way as top > level SELECTs. --- mysql-test/r/explain.result | 12 ++++++++++++ mysql-test/r/ps.result | 12 ++++++------ mysql-test/t/explain.test | 15 +++++++++++++++ sql/sql_select.cc | 3 +-- 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/mysql-test/r/explain.result b/mysql-test/r/explain.result index b8db8b53e06..8f2d704b312 100644 --- a/mysql-test/r/explain.result +++ b/mysql-test/r/explain.result @@ -226,4 +226,16 @@ Warnings: Note 1276 Field or reference 'test.t1.c' of SELECT #2 was resolved in SELECT #1 Note 1003 select (select 1 from `test`.`t2` where (`test`.`t2`.`d` = NULL)) AS `(SELECT 1 FROM t2 WHERE d = c)` from `test`.`t1` DROP TABLE t1, t2; +# +# Bug #48419: another explain crash.. +# +CREATE TABLE t1 (a INT); +CREATE TABLE t2 (b BLOB, KEY b(b(100))); +INSERT INTO t2 VALUES ('1'), ('2'), ('3'); +FLUSH TABLES; +EXPLAIN SELECT 1 FROM t1 WHERE a = (SELECT 1 FROM t1 t JOIN t2 WHERE b <= 1 AND t.a); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +DROP TABLE t1, t2; End of 5.1 tests. diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result index cf08d763e5c..84b9cdf930c 100644 --- a/mysql-test/r/ps.result +++ b/mysql-test/r/ps.result @@ -155,24 +155,24 @@ execute stmt1 ; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 6 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table -5 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found -4 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found +5 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +4 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables execute stmt1 ; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 6 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table -5 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found -4 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found +5 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +4 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables explain SELECT (SELECT SUM(c1 + c12 + 0.0) FROM t2 where (t1.c2 - 0e-3) = t2.c2 GROUP BY t1.c15 LIMIT 1) as scalar_s, exists (select 1.0e+0 from t2 where t2.c3 * 9.0000000000 = t1.c4) as exists_s, c5 * 4 in (select c6 + 0.3e+1 from t2) as in_s, (c7 - 4, c8 - 4) in (select c9 + 4.0, c10 + 40e-1 from t2) as in_row_s FROM t1, (select c25 x, c32 y from t2) tt WHERE x * 1 = c25; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 6 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table -5 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found -4 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found +5 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +4 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables deallocate prepare stmt1; diff --git a/mysql-test/t/explain.test b/mysql-test/t/explain.test index 3c2f7bbbe96..ba6be72dbdc 100644 --- a/mysql-test/t/explain.test +++ b/mysql-test/t/explain.test @@ -198,4 +198,19 @@ INSERT INTO t2 VALUES (NULL), (0); EXPLAIN EXTENDED SELECT (SELECT 1 FROM t2 WHERE d = c) FROM t1; DROP TABLE t1, t2; + +--echo # +--echo # Bug #48419: another explain crash.. +--echo # + +CREATE TABLE t1 (a INT); +CREATE TABLE t2 (b BLOB, KEY b(b(100))); +INSERT INTO t2 VALUES ('1'), ('2'), ('3'); + +FLUSH TABLES; + +EXPLAIN SELECT 1 FROM t1 WHERE a = (SELECT 1 FROM t1 t JOIN t2 WHERE b <= 1 AND t.a); + +DROP TABLE t1, t2; + --echo End of 5.1 tests. diff --git a/sql/sql_select.cc b/sql/sql_select.cc index a426f4b68a1..291432c2bb6 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1107,8 +1107,7 @@ JOIN::optimize() } if (conds && const_table_map != found_const_table_map && - (select_options & SELECT_DESCRIBE) && - select_lex->master_unit() == &thd->lex->unit) // upper level SELECT + (select_options & SELECT_DESCRIBE)) { conds=new Item_int((longlong) 0,1); // Always false } From 5a2f40d48a6fda6b83f788a0f849299bd44b621e Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 23 Jun 2010 03:48:11 +0300 Subject: [PATCH 201/461] Fixes for Opensolaris (to get buildbot green) - Fixed memory leaks in mysqldump - Fixed printf of NULL which caused crashes on OpenSolaris when using --debug - Fixed realloc() problem that caused out of memory when running mysqldump.test on OpenSolaris client/mysqldump.c: Fixed memory leaks Fixed printf of NULL which caused crashes on OpenSolaris when using --debug client/mysqltest.cc: Fixed printf of NULL which caused crashes on OpenSolaris when using --debug include/my_global.h: Added simple macro val_or_null() to simplify detecting of NULL strings for printf sql/handler.cc: Fixed printf of NULL which caused crashes on OpenSolaris when using --debug sql/sql_db.cc: Fixed printf of NULL which caused crashes on OpenSolaris when using --debug Removed testing of 'new_db_name' as this is guranteed never NULL sql/sql_show.cc: Fixed printf of NULL which caused crashes on OpenSolaris when using --debug storage/csv/ha_tina.cc: Fixed realloc() problem that caused out of memory when running mysqldump.test on OpenSolaris (OpenSolaris default malloc() can't handle a lot of reallocs() of strings that are growing one byte at a time) This did speed up logging to cvs with a magnitude for large strings. --- client/mysqldump.c | 8 ++++++-- client/mysqltest.cc | 2 +- include/my_global.h | 3 +++ sql/handler.cc | 3 ++- sql/sql_db.cc | 9 +++------ sql/sql_show.cc | 6 +++--- storage/csv/ha_tina.cc | 3 +++ 7 files changed, 21 insertions(+), 13 deletions(-) diff --git a/client/mysqldump.c b/client/mysqldump.c index 212baca6be8..a9fe3f8e1fa 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -1441,6 +1441,7 @@ static void free_resources() if (md_result_file && md_result_file != stdout) my_fclose(md_result_file, MYF(0)); my_free(opt_password, MYF(MY_ALLOW_ZERO_PTR)); + my_free(current_host, MYF(MY_ALLOW_ZERO_PTR)); if (hash_inited(&ignore_table)) hash_free(&ignore_table); if (extended_insert) @@ -4222,7 +4223,7 @@ static char *get_actual_table_name(const char *old_table_name, MEM_ROOT *root) } mysql_free_result(table_res); } - DBUG_PRINT("exit", ("new_table_name: %s", name)); + DBUG_PRINT("exit", ("new_table_name: %s", val_or_null(name))); DBUG_RETURN(name); } @@ -4818,6 +4819,7 @@ static my_bool get_view_structure(char *table, char* db) field= mysql_fetch_field_direct(table_res, 0); if (strcmp(field->name, "View") != 0) { + mysql_free_result(table_res); switch_character_set_results(mysql, default_charset); verbose_msg("-- It's base table, skipped\n"); DBUG_RETURN(0); @@ -4827,8 +4829,10 @@ static my_bool get_view_structure(char *table, char* db) if (path) { if (!(sql_file= open_sql_file_for_table(table, O_WRONLY))) + { + mysql_free_result(table_res); DBUG_RETURN(1); - + } write_header(sql_file, db); } diff --git a/client/mysqltest.cc b/client/mysqltest.cc index e89f87758c6..a6bfc72070c 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -541,7 +541,7 @@ public: { DBUG_ENTER("LogFile::open"); DBUG_PRINT("enter", ("dir: '%s', name: '%s'", - dir, name)); + val_or_null(dir), val_or_null(name))); if (!name) { m_file= stdout; diff --git a/include/my_global.h b/include/my_global.h index a32db3c87b6..9d9daf5aa1a 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -90,6 +90,9 @@ #define IF_WIN(A,B) (B) #endif +/* Make it easier to print null strings */ +#define val_or_null(A) ((A) ? (const char*) (A) : "(null)") + #ifndef EMBEDDED_LIBRARY #ifdef WITH_NDB_BINLOG #define HAVE_NDB_BINLOG 1 diff --git a/sql/handler.cc b/sql/handler.cc index b7903468b69..e455523d508 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -3865,7 +3865,8 @@ ha_find_files(THD *thd,const char *db,const char *path, int error= 0; DBUG_ENTER("ha_find_files"); DBUG_PRINT("enter", ("db: '%s' path: '%s' wild: '%s' dir: %d", - db, path, wild ? wild : "NULL", dir)); + val_or_null(db), val_or_null(path), + val_or_null(wild), dir)); st_find_files_args args= {db, path, wild, dir, files}; plugin_foreach(thd, find_files_handlerton, diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 94be8a5f240..b4a0e5c4c7d 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -1539,12 +1539,9 @@ bool mysql_change_db(THD *thd, const LEX_STRING *new_db_name, bool force_switch) Security_context *sctx= thd->security_ctx; ulong db_access= sctx->db_access; CHARSET_INFO *db_default_cl; - DBUG_ENTER("mysql_change_db"); - DBUG_PRINT("enter",("name: '%s'", new_db_name->str)); - if (new_db_name == NULL || - new_db_name->length == 0) + if (new_db_name->length == 0) { if (force_switch) { @@ -1553,8 +1550,7 @@ bool mysql_change_db(THD *thd, const LEX_STRING *new_db_name, bool force_switch) after loading stored program. The thing is that loading of stored program can happen when there is no current database. - TODO: actually, new_db_name and new_db_name->str seem to be always - non-NULL. In case of stored program, new_db_name->str == "" and + In case of stored program, new_db_name->str == "" and new_db_name->length == 0. */ @@ -1569,6 +1565,7 @@ bool mysql_change_db(THD *thd, const LEX_STRING *new_db_name, bool force_switch) DBUG_RETURN(TRUE); } } + DBUG_PRINT("enter",("name: '%s'", new_db_name->str)); if (is_schema_db(new_db_name->str, new_db_name->length)) { diff --git a/sql/sql_show.cc b/sql/sql_show.cc index a288cad88d7..6f59f54fe11 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -3563,9 +3563,9 @@ int fill_schema_schemata(THD *thd, TABLE_LIST *tables, COND *cond) if (get_lookup_field_values(thd, cond, tables, &lookup_field_vals)) DBUG_RETURN(0); - DBUG_PRINT("INDEX VALUES",("db_name='%s', table_name='%s'", - lookup_field_vals.db_value.str, - lookup_field_vals.table_value.str)); + DBUG_PRINT("INDEX VALUES",("db_name: %s table_name: %s", + val_or_null(lookup_field_vals.db_value.str), + val_or_null(lookup_field_vals.table_value.str))); if (make_db_list(thd, &db_names, &lookup_field_vals, &with_i_schema)) DBUG_RETURN(1); diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index 8a30467f16c..e013440ecca 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -489,6 +489,9 @@ int ha_tina::encode_quote(uchar *buf) ptr= attribute.ptr(); end_ptr= attribute.length() + ptr; + if (buffer.realloc(attribute.length()*2+2)) + return 0; // Failure + buffer.append('"'); while (ptr < end_ptr) From 1ac84a45dfa6f4140ad97b3e026bf756cee6f1cc Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Tue, 22 Jun 2010 19:04:31 -0700 Subject: [PATCH 202/461] Fix bug #54044, Create temporary tables and using innodb crashes. Screen out NULL type columns, and return without creating the table. rb://378 approved by Marko --- .../suite/innodb/r/innodb_bug54044.result | 3 +++ .../suite/innodb/t/innodb_bug54044.test | 11 +++++++++ storage/innobase/handler/ha_innodb.cc | 24 +++++++++++++++++-- 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 mysql-test/suite/innodb/r/innodb_bug54044.result create mode 100644 mysql-test/suite/innodb/t/innodb_bug54044.test diff --git a/mysql-test/suite/innodb/r/innodb_bug54044.result b/mysql-test/suite/innodb/r/innodb_bug54044.result new file mode 100644 index 00000000000..9574381d8e1 --- /dev/null +++ b/mysql-test/suite/innodb/r/innodb_bug54044.result @@ -0,0 +1,3 @@ +CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB +AS SELECT IF(NULL IS NOT NULL, NULL, NULL); +ERROR HY000: Can't create table 'test.TABLE_54044' (errno: -1) diff --git a/mysql-test/suite/innodb/t/innodb_bug54044.test b/mysql-test/suite/innodb/t/innodb_bug54044.test new file mode 100644 index 00000000000..824450ae1a6 --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_bug54044.test @@ -0,0 +1,11 @@ +# This is the test for bug #54044. Special handle MYSQL_TYPE_NULL type +# during create table, so it will not trigger assertion failure. + +--source include/have_innodb.inc + +# This 'create table' operation should fail because of +# using NULL datatype +--error ER_CANT_CREATE_TABLE +CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB + AS SELECT IF(NULL IS NOT NULL, NULL, NULL); + diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 9990d7c28f0..d10fcb8d31e 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -3242,6 +3242,11 @@ get_innobase_type_from_mysql_type( case MYSQL_TYPE_BLOB: case MYSQL_TYPE_LONG_BLOB: return(DATA_BLOB); + case MYSQL_TYPE_NULL: + /* MySQL currently accepts "NULL" datatype, but will + reject such datatype in the next release. We will cope + with it and not trigger assertion failure in 5.1 */ + break; default: assert(0); } @@ -5263,7 +5268,22 @@ create_table_def( field = form->field[i]; col_type = get_innobase_type_from_mysql_type(&unsigned_type, - field); + field); + + if (!col_type) { + push_warning_printf( + (THD*) trx->mysql_thd, + MYSQL_ERROR::WARN_LEVEL_WARN, + ER_CANT_CREATE_TABLE, + "Error creating table '%s' with " + "column '%s'. Please check its " + "column type and try to re-create " + "the table with an appropriate " + "column type.", + table->name, (char*) field->field_name); + goto err_col; + } + if (field->null_ptr) { nulls_allowed = 0; } else { @@ -5320,7 +5340,7 @@ create_table_def( "different column name.", table->name, (char*) field->field_name, (char*) field->field_name); - +err_col: dict_mem_table_free(table); trx_commit_for_mysql(trx); From 95586f2c83e9ec1e7f7430546b187ee476be71c4 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Tue, 22 Jun 2010 19:39:20 -0700 Subject: [PATCH 203/461] Port fix for "bug #54044 Create temporary tables and using innodb crashes" to 5.1 plugin codeline. rb://378, approved by Marko --- .../innodb_plugin/r/innodb_bug54044.result | 3 +++ .../innodb_plugin/t/innodb_bug54044.test | 11 +++++++++ storage/innodb_plugin/ChangeLog | 5 ++++ storage/innodb_plugin/handler/ha_innodb.cc | 24 +++++++++++++++++-- 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug54044.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug54044.test diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result b/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result new file mode 100644 index 00000000000..9574381d8e1 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result @@ -0,0 +1,3 @@ +CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB +AS SELECT IF(NULL IS NOT NULL, NULL, NULL); +ERROR HY000: Can't create table 'test.TABLE_54044' (errno: -1) diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test b/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test new file mode 100644 index 00000000000..824450ae1a6 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test @@ -0,0 +1,11 @@ +# This is the test for bug #54044. Special handle MYSQL_TYPE_NULL type +# during create table, so it will not trigger assertion failure. + +--source include/have_innodb.inc + +# This 'create table' operation should fail because of +# using NULL datatype +--error ER_CANT_CREATE_TABLE +CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB + AS SELECT IF(NULL IS NOT NULL, NULL, NULL); + diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 36bc5551a2b..d1d36bf812b 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,8 @@ +2010-06-22 The InnoDB Team + + * handler/ha_innodb.cc, innodb_bug54044.test, innodb_bug54044.result + Fix Bug#54044, Create temporary tables and using innodb crashes. + 2010-06-22 The InnoDB Team * dict/dict0dict.c, dict/dict0mem.c, include/dict0mem.h, diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index 3f8dc97e4b5..7d918a033ee 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -3950,6 +3950,11 @@ get_innobase_type_from_mysql_type( case MYSQL_TYPE_BLOB: case MYSQL_TYPE_LONG_BLOB: return(DATA_BLOB); + case MYSQL_TYPE_NULL: + /* MySQL currently accepts "NULL" datatype, but will + reject such datatype in the next release. We will cope + with it and not trigger assertion failure in 5.1 */ + break; default: ut_error; } @@ -6000,7 +6005,22 @@ create_table_def( field = form->field[i]; col_type = get_innobase_type_from_mysql_type(&unsigned_type, - field); + field); + + if (!col_type) { + push_warning_printf( + (THD*) trx->mysql_thd, + MYSQL_ERROR::WARN_LEVEL_WARN, + ER_CANT_CREATE_TABLE, + "Error creating table '%s' with " + "column '%s'. Please check its " + "column type and try to re-create " + "the table with an appropriate " + "column type.", + table->name, (char*) field->field_name); + goto err_col; + } + if (field->null_ptr) { nulls_allowed = 0; } else { @@ -6058,7 +6078,7 @@ create_table_def( if (dict_col_name_is_reserved(field->field_name)){ my_error(ER_WRONG_COLUMN_NAME, MYF(0), field->field_name); - +err_col: dict_mem_table_free(table); trx_commit_for_mysql(trx); From f7d6a2ed654949f662da0a8c33f8e85b6d9e7f41 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 23 Jun 2010 10:33:00 +0300 Subject: [PATCH 204/461] Fixed trival bug introduced in last patch (buffer was not extended) --- storage/csv/ha_tina.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index e013440ecca..4a9754922e5 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -489,7 +489,11 @@ int ha_tina::encode_quote(uchar *buf) ptr= attribute.ptr(); end_ptr= attribute.length() + ptr; - if (buffer.realloc(attribute.length()*2+2)) + /* + Ensure that buffer is big enough. This will also speed things up + as we don't have to do any new allocation in the loop below + */ + if (buffer.realloc(buffer.length() + attribute.length()*2+2)) return 0; // Failure buffer.append('"'); From c658c3ed34b99e8fef0c41898ad295b1223071f3 Mon Sep 17 00:00:00 2001 From: sunanda Date: Wed, 23 Jun 2010 12:03:22 +0200 Subject: [PATCH 205/461] Backport into build-201006221614-5.1.46sp1 > ------------------------------------------------------------ > revno: 3367 [merge] > revision-id: joro@sun.com-20100504140328-srxf3c088j2twnq6 > parent: kristofer.pettersson@sun.com-20100503172109-f9hracq5pqsaomb1 > parent: joro@sun.com-20100503151651-nakknn8amrapmdp7 > committer: Georgi Kodinov > branch nick: B53371-5.1-bugteam > timestamp: Tue 2010-05-04 17:03:28 +0300 > message: > Bug #53371: COM_FIELD_LIST can be abused to bypass table level grants. > > This is the 5.1 merge and extension of the fix. > The server was happily accepting paths in table name in all places a table > name is accepted (e.g. a SELECT). This allowed all users that have some > privilege over some database to read all tables in all databases in all > mysql server instances that the server file system has access to. > Fixed by : > 1. making sure no path elements are allowed in quoted table name when > constructing the path (note that the path symbols are still valid in table names > when they're properly escaped by the server). > 2. checking the #mysql50# prefixed names the same way they're checked for > path elements in mysql-5.0. > ------------------------------------------------------------ > Use --include-merges or -n0 to see merged revisions. --- mysql-test/r/grant.result | 16 ++++++++++++++ mysql-test/t/grant.test | 25 ++++++++++++++++++++++ sql/mysql_priv.h | 2 +- sql/partition_info.cc | 4 ++-- sql/sql_parse.cc | 9 +++++++- sql/sql_table.cc | 14 ++++++++++++ sql/sql_yacc.yy | 2 +- sql/table.cc | 29 ++++++++++++++++++++++--- tests/mysql_client_test.c | 45 +++++++++++++++++++++++++++++++++++++++ 9 files changed, 138 insertions(+), 8 deletions(-) diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result index 92beccd2a9e..6831ef6183d 100644 --- a/mysql-test/r/grant.result +++ b/mysql-test/r/grant.result @@ -1413,3 +1413,19 @@ DROP USER 'user1'; DROP USER 'user1'@'localhost'; DROP USER 'user2'; DROP DATABASE db1; +CREATE DATABASE db1; +CREATE DATABASE db2; +GRANT SELECT ON db1.* to 'testbug'@localhost; +USE db2; +CREATE TABLE t1 (a INT); +USE test; +SELECT * FROM `../db2/tb2`; +ERROR 42S02: Table 'db1.../db2/tb2' doesn't exist +SELECT * FROM `../db2`.tb2; +ERROR 42000: SELECT command denied to user 'testbug'@'localhost' for table 'tb2' +SELECT * FROM `#mysql50#/../db2/tb2`; +ERROR 42S02: Table 'db1.#mysql50#/../db2/tb2' doesn't exist +DROP USER 'testbug'@localhost; +DROP TABLE db2.t1; +DROP DATABASE db1; +DROP DATABASE db2; diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test index bcd393bd6ab..cb8d3c63be8 100644 --- a/mysql-test/t/grant.test +++ b/mysql-test/t/grant.test @@ -1525,5 +1525,30 @@ DROP USER 'user1'@'localhost'; DROP USER 'user2'; DROP DATABASE db1; + +# +# Bug #53371: COM_FIELD_LIST can be abused to bypass table level grants. +# + +CREATE DATABASE db1; +CREATE DATABASE db2; +GRANT SELECT ON db1.* to 'testbug'@localhost; +USE db2; +CREATE TABLE t1 (a INT); +USE test; +connect (con1,localhost,testbug,,db1); +--error ER_NO_SUCH_TABLE +SELECT * FROM `../db2/tb2`; +--error ER_TABLEACCESS_DENIED_ERROR +SELECT * FROM `../db2`.tb2; +--error ER_NO_SUCH_TABLE +SELECT * FROM `#mysql50#/../db2/tb2`; +connection default; +disconnect con1; +DROP USER 'testbug'@localhost; +DROP TABLE db2.t1; +DROP DATABASE db1; +DROP DATABASE db2; + # Wait till we reached the initial number of concurrent sessions --source include/wait_until_count_sessions.inc diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 56175d069c5..3ecbef4d456 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -2263,7 +2263,7 @@ void update_create_info_from_table(HA_CREATE_INFO *info, TABLE *form); int rename_file_ext(const char * from,const char * to,const char * ext); bool check_db_name(LEX_STRING *db); bool check_column_name(const char *name); -bool check_table_name(const char *name, uint length); +bool check_table_name(const char *name, uint length, bool check_for_path_chars); char *get_field(MEM_ROOT *mem, Field *field); bool get_field(MEM_ROOT *mem, Field *field, class String *res); int wild_case_compare(CHARSET_INFO *cs, const char *str,const char *wildstr); diff --git a/sql/partition_info.cc b/sql/partition_info.cc index ba9ea0e876e..6e2f7dfad26 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -972,7 +972,7 @@ bool partition_info::check_partition_info(THD *thd, handlerton **eng_type, part_elem->engine_type= default_engine_type; } if (check_table_name(part_elem->partition_name, - strlen(part_elem->partition_name))) + strlen(part_elem->partition_name), FALSE)) { my_error(ER_WRONG_PARTITION_NAME, MYF(0)); goto end; @@ -990,7 +990,7 @@ bool partition_info::check_partition_info(THD *thd, handlerton **eng_type, { sub_elem= sub_it++; if (check_table_name(sub_elem->partition_name, - strlen(sub_elem->partition_name))) + strlen(sub_elem->partition_name), FALSE)) { my_error(ER_WRONG_PARTITION_NAME, MYF(0)); goto end; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 11481933c8a..93d80164ffb 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1310,6 +1310,13 @@ bool dispatch_command(enum enum_server_command command, THD *thd, } thd->convert_string(&conv_name, system_charset_info, packet, arg_length, thd->charset()); + if (check_table_name(conv_name.str, conv_name.length, FALSE)) + { + /* this is OK due to convert_string() null-terminating the string */ + my_error(ER_WRONG_TABLE_NAME, MYF(0), conv_name.str); + break; + } + table_list.alias= table_list.table_name= conv_name.str; packet= arg_end + 1; @@ -6233,7 +6240,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd, DBUG_RETURN(0); // End of memory alias_str= alias ? alias->str : table->table.str; if (!test(table_options & TL_OPTION_ALIAS) && - check_table_name(table->table.str, table->table.length)) + check_table_name(table->table.str, table->table.length, FALSE)) { my_error(ER_WRONG_TABLE_NAME, MYF(0), table->table.str); DBUG_RETURN(0); diff --git a/sql/sql_table.cc b/sql/sql_table.cc index ad72cab664e..84e6c721d72 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -435,7 +435,21 @@ uint tablename_to_filename(const char *from, char *to, uint to_length) DBUG_PRINT("enter", ("from '%s'", from)); if ((length= check_n_cut_mysql50_prefix(from, to, to_length))) + { + /* + Check if the name supplied is a valid mysql 5.0 name and + make the name a zero length string if it's not. + Note that just returning zero length is not enough : + a lot of places don't check the return value and expect + a zero terminated string. + */ + if (check_table_name(to, length, TRUE)) + { + to[0]= 0; + length= 0; + } DBUG_RETURN(length); + } length= strconvert(system_charset_info, from, &my_charset_filename, to, to_length, &errors); if (check_if_legal_tablename(to) && diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 4f43ab8bebd..f815da006b1 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -6133,7 +6133,7 @@ alter_list_item: { MYSQL_YYABORT; } - if (check_table_name($3->table.str,$3->table.length) || + if (check_table_name($3->table.str,$3->table.length, FALSE) || ($3->db.str && check_db_name(&$3->db))) { my_error(ER_WRONG_TABLE_NAME, MYF(0), $3->table.str); diff --git a/sql/table.cc b/sql/table.cc index a4e2c59fb87..04d7b3a8d0a 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -494,6 +494,26 @@ inline bool is_system_table_name(const char *name, uint length) } +/** + Check if a string contains path elements +*/ + +static inline bool has_disabled_path_chars(const char *str) +{ + for (; *str; str++) + switch (*str) + { + case FN_EXTCHAR: + case '/': + case '\\': + case '~': + case '@': + return TRUE; + } + return FALSE; +} + + /* Read table definition from a binary / text based .frm file @@ -549,7 +569,8 @@ int open_table_def(THD *thd, TABLE_SHARE *share, uint db_flags) This kind of tables must have been opened only by the my_open() above. */ - if (strchr(share->table_name.str, '@') || + if (has_disabled_path_chars(share->table_name.str) || + has_disabled_path_chars(share->db.str) || !strncmp(share->db.str, MYSQL50_TABLE_NAME_PREFIX, MYSQL50_TABLE_NAME_PREFIX_LENGTH) || !strncmp(share->table_name.str, MYSQL50_TABLE_NAME_PREFIX, @@ -2711,7 +2732,6 @@ bool check_db_name(LEX_STRING *org_name) (name_length > NAME_CHAR_LEN)); /* purecov: inspected */ } - /* Allow anything as a table name, as long as it doesn't contain an ' ' at the end @@ -2719,7 +2739,7 @@ bool check_db_name(LEX_STRING *org_name) */ -bool check_table_name(const char *name, uint length) +bool check_table_name(const char *name, uint length, bool check_for_path_chars) { uint name_length= 0; // name length in symbols const char *end= name+length; @@ -2746,6 +2766,9 @@ bool check_table_name(const char *name, uint length) continue; } } + if (check_for_path_chars && + (*name == '/' || *name == '\\' || *name == '~' || *name == FN_EXTCHAR)) + return 1; #endif name++; name_length++; diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index f65e549fd96..b99461ecd06 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -18049,6 +18049,50 @@ static void test_bug44495() DBUG_VOID_RETURN; } +static void test_bug53371() +{ + int rc; + MYSQL_RES *result; + + myheader("test_bug53371"); + + rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1"); + myquery(rc); + rc= mysql_query(mysql, "DROP DATABASE IF EXISTS bug53371"); + myquery(rc); + rc= mysql_query(mysql, "DROP USER 'testbug'@localhost"); + + rc= mysql_query(mysql, "CREATE TABLE t1 (a INT)"); + myquery(rc); + rc= mysql_query(mysql, "CREATE DATABASE bug53371"); + myquery(rc); + rc= mysql_query(mysql, "GRANT SELECT ON bug53371.* to 'testbug'@localhost"); + myquery(rc); + + rc= mysql_change_user(mysql, "testbug", NULL, "bug53371"); + myquery(rc); + + rc= mysql_query(mysql, "SHOW COLUMNS FROM client_test_db.t1"); + DIE_UNLESS(rc); + DIE_UNLESS(mysql_errno(mysql) == 1142); + + result= mysql_list_fields(mysql, "../client_test_db/t1", NULL); + DIE_IF(result); + + result= mysql_list_fields(mysql, "#mysql50#/../client_test_db/t1", NULL); + DIE_IF(result); + + rc= mysql_change_user(mysql, opt_user, opt_password, current_db); + myquery(rc); + rc= mysql_query(mysql, "DROP TABLE t1"); + myquery(rc); + rc= mysql_query(mysql, "DROP DATABASE bug53371"); + myquery(rc); + rc= mysql_query(mysql, "DROP USER 'testbug'@localhost"); + myquery(rc); +} + + /* Read and parse arguments and MySQL options from my.cnf */ @@ -18358,6 +18402,7 @@ static struct my_tests_st my_tests[]= { { "test_bug30472", test_bug30472 }, { "test_bug20023", test_bug20023 }, { "test_bug45010", test_bug45010 }, + { "test_bug53371", test_bug53371 }, { "test_bug31418", test_bug31418 }, { "test_bug31669", test_bug31669 }, { "test_bug28386", test_bug28386 }, From 12c4c7a0ee06685e727d1fb0b8d6d5560a732816 Mon Sep 17 00:00:00 2001 From: sunanda Date: Wed, 23 Jun 2010 12:14:23 +0200 Subject: [PATCH 206/461] Backport into build-201006221614-5.1.46sp1 > ------------------------------------------------------------ > revno: 3386 > revision-id: sergey.glukhov@sun.com-20100518082821-yajhvbv1ghmlpu1n > parent: aelkin@mysql.com-20100516170332-x8priwrdjwolc065 > committer: Sergey Glukhov > branch nick: mysql-5.1-bugteam > timestamp: Tue 2010-05-18 13:28:21 +0500 > message: > Bug#48729 SELECT ... FROM INFORMATION_SCHEMA.ROUTINES causes memory to grow > Analysis showed that in case of accessing I_S table > ROUTINES we perform unnecessary allocations > with get_field() function for every processed row that > in their turn causes significant memory growth. > the fix is to avoid use of get_field(). --- sql/sql_show.cc | 74 ++++++++++++++++++++++++------------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/sql/sql_show.cc b/sql/sql_show.cc index cb60027842d..b4881125b14 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -4180,24 +4180,37 @@ int fill_schema_coll_charset_app(THD *thd, TABLE_LIST *tables, COND *cond) } +static inline void copy_field_as_string(Field *to_field, Field *from_field) +{ + char buff[MAX_FIELD_WIDTH]; + String tmp_str(buff, sizeof(buff), system_charset_info); + from_field->val_str(&tmp_str); + to_field->store(tmp_str.ptr(), tmp_str.length(), system_charset_info); +} + + bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table, const char *wild, bool full_access, const char *sp_user) { - String tmp_string; - String sp_db, sp_name, definer; MYSQL_TIME time; LEX *lex= thd->lex; CHARSET_INFO *cs= system_charset_info; - get_field(thd->mem_root, proc_table->field[0], &sp_db); - get_field(thd->mem_root, proc_table->field[1], &sp_name); - get_field(thd->mem_root, proc_table->field[11], &definer); + char sp_db_buff[NAME_LEN + 1], sp_name_buff[NAME_LEN + 1], + definer_buff[USERNAME_LENGTH + HOSTNAME_LENGTH + 2]; + String sp_db(sp_db_buff, sizeof(sp_db_buff), cs); + String sp_name(sp_name_buff, sizeof(sp_name_buff), cs); + String definer(definer_buff, sizeof(definer_buff), cs); + + proc_table->field[0]->val_str(&sp_db); + proc_table->field[1]->val_str(&sp_name); + proc_table->field[11]->val_str(&definer); + if (!full_access) - full_access= !strcmp(sp_user, definer.ptr()); - if (!full_access && check_some_routine_access(thd, sp_db.ptr(), - sp_name.ptr(), - proc_table->field[2]-> - val_int() == - TYPE_ENUM_PROCEDURE)) + full_access= !strcmp(sp_user, definer.c_ptr_safe()); + if (!full_access && + check_some_routine_access(thd, sp_db.c_ptr_safe(), sp_name.c_ptr_safe(), + proc_table->field[2]->val_int() == + TYPE_ENUM_PROCEDURE)) return 0; if ((lex->sql_command == SQLCOM_SHOW_STATUS_PROC && @@ -4207,55 +4220,42 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table, (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) { restore_record(table, s->default_values); - if (!wild || !wild[0] || !wild_compare(sp_name.ptr(), wild, 0)) + if (!wild || !wild[0] || !wild_compare(sp_name.c_ptr_safe(), wild, 0)) { int enum_idx= (int) proc_table->field[5]->val_int(); table->field[3]->store(sp_name.ptr(), sp_name.length(), cs); - get_field(thd->mem_root, proc_table->field[3], &tmp_string); - table->field[0]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[0], proc_table->field[3]); table->field[2]->store(sp_db.ptr(), sp_db.length(), cs); - get_field(thd->mem_root, proc_table->field[2], &tmp_string); - table->field[4]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[4], proc_table->field[2]); if (proc_table->field[2]->val_int() == TYPE_ENUM_FUNCTION) { - get_field(thd->mem_root, proc_table->field[9], &tmp_string); - table->field[5]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[5], proc_table->field[9]); table->field[5]->set_notnull(); } if (full_access) { - get_field(thd->mem_root, proc_table->field[19], &tmp_string); - table->field[7]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[7], proc_table->field[19]); table->field[7]->set_notnull(); } table->field[6]->store(STRING_WITH_LEN("SQL"), cs); table->field[10]->store(STRING_WITH_LEN("SQL"), cs); - get_field(thd->mem_root, proc_table->field[6], &tmp_string); - table->field[11]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[11], proc_table->field[6]); table->field[12]->store(sp_data_access_name[enum_idx].str, sp_data_access_name[enum_idx].length , cs); - get_field(thd->mem_root, proc_table->field[7], &tmp_string); - table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[14], proc_table->field[7]); + bzero((char *)&time, sizeof(time)); ((Field_timestamp *) proc_table->field[12])->get_time(&time); table->field[15]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); bzero((char *)&time, sizeof(time)); ((Field_timestamp *) proc_table->field[13])->get_time(&time); table->field[16]->store_time(&time, MYSQL_TIMESTAMP_DATETIME); - get_field(thd->mem_root, proc_table->field[14], &tmp_string); - table->field[17]->store(tmp_string.ptr(), tmp_string.length(), cs); - get_field(thd->mem_root, proc_table->field[15], &tmp_string); - table->field[18]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[17], proc_table->field[14]); + copy_field_as_string(table->field[18], proc_table->field[15]); table->field[19]->store(definer.ptr(), definer.length(), cs); - - get_field(thd->mem_root, proc_table->field[16], &tmp_string); - table->field[20]->store(tmp_string.ptr(), tmp_string.length(), cs); - - get_field(thd->mem_root, proc_table->field[17], &tmp_string); - table->field[21]->store(tmp_string.ptr(), tmp_string.length(), cs); - - get_field(thd->mem_root, proc_table->field[18], &tmp_string); - table->field[22]->store(tmp_string.ptr(), tmp_string.length(), cs); + copy_field_as_string(table->field[20], proc_table->field[16]); + copy_field_as_string(table->field[21], proc_table->field[17]); + copy_field_as_string(table->field[22], proc_table->field[18]); return schema_table_store_record(thd, table); } From 1c87c8b1eeaf06e77a2651bbff80ec1a0170547d Mon Sep 17 00:00:00 2001 From: sunanda Date: Wed, 23 Jun 2010 12:22:05 +0200 Subject: [PATCH 207/461] Backport into build-201006221614-5.1.46sp1 > ------------------------------------------------------------ > revno: 3392.1.1 > revision-id: gshchepa@mysql.com-20100521184732-0jvpzinv0uwyvr2d > parent: sven.sandberg@sun.com-20100520153801-yyhujm1qqa4eyfn0 > committer: Gleb Shchepa > branch nick: 53804-5.1 > timestamp: Fri 2010-05-21 22:47:32 +0400 > message: > Bug #53804: serious flaws in the alter database .. upgrade > data directory name command > > The check_db_name function has been modified to validate tails of > #mysql50#-prefixed database names for compliance with MySQL 5.0 > database name encoding rules (the check_table_name function call > has been reused). --- mysql-test/r/renamedb.result | 2 +- mysql-test/r/upgrade.result | 28 ++++++++++++++++++++++++++++ mysql-test/t/renamedb.test | 2 +- mysql-test/t/upgrade.test | 34 ++++++++++++++++++++++++++++++++++ sql/mysql_priv.h | 1 + sql/sql_table.cc | 23 ++++++++++++++++++++--- sql/table.cc | 34 ++++++++++------------------------ 7 files changed, 95 insertions(+), 29 deletions(-) diff --git a/mysql-test/r/renamedb.result b/mysql-test/r/renamedb.result index ff8f89592fc..e77aca0d0b7 100644 --- a/mysql-test/r/renamedb.result +++ b/mysql-test/r/renamedb.result @@ -7,6 +7,6 @@ ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and n ALTER DATABASE `#mysql51#not-yet` UPGRADE DATA DIRECTORY NAME; ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and name ALTER DATABASE `#mysql50#` UPGRADE DATA DIRECTORY NAME; -ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and name +ERROR 42000: Incorrect database name '#mysql50#' ALTER DATABASE `#mysql50#upgrade-me` UPGRADE DATA DIRECTORY NAME; ERROR 42000: Unknown database '#mysql50#upgrade-me' diff --git a/mysql-test/r/upgrade.result b/mysql-test/r/upgrade.result index 034242079b1..da2f55b5bb1 100644 --- a/mysql-test/r/upgrade.result +++ b/mysql-test/r/upgrade.result @@ -112,3 +112,31 @@ select * from `a-b-c`.v1; f1 drop database `a-b-c`; use test; +# End of 5.0 tests +# +# Bug #53804: serious flaws in the alter database .. upgrade data +# directory name command +# +ALTER DATABASE `#mysql50#:` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Unknown database '#mysql50#:' +ALTER DATABASE `#mysql50#.` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#.' +ALTER DATABASE `#mysql50#../` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#../' +ALTER DATABASE `#mysql50#../..` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#../..' +ALTER DATABASE `#mysql50#../../` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#../../' +ALTER DATABASE `#mysql50#./blablabla` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#./blablabla' +ALTER DATABASE `#mysql50#../blablabla` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#../blablabla' +ALTER DATABASE `#mysql50#/` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#/' +ALTER DATABASE `#mysql50#/.` UPGRADE DATA DIRECTORY NAME; +ERROR 42000: Incorrect database name '#mysql50#/.' +USE `#mysql50#.`; +ERROR 42000: Incorrect database name '#mysql50#.' +USE `#mysql50#../blablabla`; +ERROR 42000: Incorrect database name '#mysql50#../blablabla' +# End of 5.1 tests diff --git a/mysql-test/t/renamedb.test b/mysql-test/t/renamedb.test index 84315090b7a..71d0c127058 100644 --- a/mysql-test/t/renamedb.test +++ b/mysql-test/t/renamedb.test @@ -44,7 +44,7 @@ ALTER DATABASE `#mysql41#not-supported` UPGRADE DATA DIRECTORY NAME; --error ER_WRONG_USAGE ALTER DATABASE `#mysql51#not-yet` UPGRADE DATA DIRECTORY NAME; ---error ER_WRONG_USAGE +--error ER_WRONG_DB_NAME ALTER DATABASE `#mysql50#` UPGRADE DATA DIRECTORY NAME; --error ER_BAD_DB_ERROR diff --git a/mysql-test/t/upgrade.test b/mysql-test/t/upgrade.test index e390e8a1253..a7b9a1531ff 100644 --- a/mysql-test/t/upgrade.test +++ b/mysql-test/t/upgrade.test @@ -137,3 +137,37 @@ select * from `a-b-c`.v1; --enable_ps_protocol drop database `a-b-c`; use test; + +--echo # End of 5.0 tests + +--echo # +--echo # Bug #53804: serious flaws in the alter database .. upgrade data +--echo # directory name command +--echo # + +--error ER_BAD_DB_ERROR +ALTER DATABASE `#mysql50#:` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#.` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#../` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#../..` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#../../` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#./blablabla` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#../blablabla` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#/` UPGRADE DATA DIRECTORY NAME; +--error ER_WRONG_DB_NAME +ALTER DATABASE `#mysql50#/.` UPGRADE DATA DIRECTORY NAME; + +--error ER_WRONG_DB_NAME +USE `#mysql50#.`; +--error ER_WRONG_DB_NAME +USE `#mysql50#../blablabla`; + +--echo # End of 5.1 tests + diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 3ecbef4d456..30f3a1af437 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -2287,6 +2287,7 @@ uint explain_filename(THD* thd, const char *from, char *to, uint to_length, uint filename_to_tablename(const char *from, char *to, uint to_length); uint tablename_to_filename(const char *from, char *to, uint to_length); uint check_n_cut_mysql50_prefix(const char *from, char *to, uint to_length); +bool check_mysql50_prefix(const char *name); #endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */ #ifdef MYSQL_SERVER uint build_table_filename(char *buff, size_t bufflen, const char *db, diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 84e6c721d72..babc025db87 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -391,6 +391,25 @@ uint filename_to_tablename(const char *from, char *to, uint to_length) } +/** + Check if given string begins with "#mysql50#" prefix + + @param name string to check cut + + @retval + FALSE no prefix found + @retval + TRUE prefix found +*/ + +bool check_mysql50_prefix(const char *name) +{ + return (name[0] == '#' && + !strncmp(name, MYSQL50_TABLE_NAME_PREFIX, + MYSQL50_TABLE_NAME_PREFIX_LENGTH)); +} + + /** Check if given string begins with "#mysql50#" prefix, cut it if so. @@ -406,9 +425,7 @@ uint filename_to_tablename(const char *from, char *to, uint to_length) uint check_n_cut_mysql50_prefix(const char *from, char *to, uint to_length) { - if (from[0] == '#' && - !strncmp(from, MYSQL50_TABLE_NAME_PREFIX, - MYSQL50_TABLE_NAME_PREFIX_LENGTH)) + if (check_mysql50_prefix(from)) return (uint) (strmake(to, from + MYSQL50_TABLE_NAME_PREFIX_LENGTH, to_length - 1) - to); return 0; diff --git a/sql/table.cc b/sql/table.cc index 04d7b3a8d0a..23d41760495 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -2701,44 +2701,30 @@ bool check_db_name(LEX_STRING *org_name) { char *name= org_name->str; uint name_length= org_name->length; + bool check_for_path_chars; if (!name_length || name_length > NAME_LEN) return 1; + if ((check_for_path_chars= check_mysql50_prefix(name))) + { + name+= MYSQL50_TABLE_NAME_PREFIX_LENGTH; + name_length-= MYSQL50_TABLE_NAME_PREFIX_LENGTH; + } + if (lower_case_table_names && name != any_db) my_casedn_str(files_charset_info, name); -#if defined(USE_MB) && defined(USE_MB_IDENT) - if (use_mb(system_charset_info)) - { - name_length= 0; - bool last_char_is_space= TRUE; - char *end= name + org_name->length; - while (name < end) - { - int len; - last_char_is_space= my_isspace(system_charset_info, *name); - len= my_ismbchar(system_charset_info, name, end); - if (!len) - len= 1; - name+= len; - name_length++; - } - return (last_char_is_space || name_length > NAME_CHAR_LEN); - } - else -#endif - return ((org_name->str[org_name->length - 1] != ' ') || - (name_length > NAME_CHAR_LEN)); /* purecov: inspected */ + return check_table_name(name, name_length, check_for_path_chars); } + /* Allow anything as a table name, as long as it doesn't contain an ' ' at the end returns 1 on error */ - bool check_table_name(const char *name, uint length, bool check_for_path_chars) { uint name_length= 0; // name length in symbols @@ -2766,10 +2752,10 @@ bool check_table_name(const char *name, uint length, bool check_for_path_chars) continue; } } +#endif if (check_for_path_chars && (*name == '/' || *name == '\\' || *name == '~' || *name == FN_EXTCHAR)) return 1; -#endif name++; name_length++; } From f801ca68c65167a82f0dc2619540ef1c83e7826b Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 9 Jul 2010 16:37:52 -0300 Subject: [PATCH 208/461] Use UNINIT_VAR workaround instead of LINT_INIT. --- client/mysqlshow.c | 3 +-- regex/regcomp.c | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/client/mysqlshow.c b/client/mysqlshow.c index 2f5582cb668..8c64d61ded2 100644 --- a/client/mysqlshow.c +++ b/client/mysqlshow.c @@ -669,8 +669,7 @@ list_fields(MYSQL *mysql,const char *db,const char *table, char query[1024],*end; MYSQL_RES *result; MYSQL_ROW row; - ulong rows; - LINT_INIT(rows); + ulong UNINIT_VAR(rows); if (mysql_select_db(mysql,db)) { diff --git a/regex/regcomp.c b/regex/regcomp.c index 8280fbfd6c8..81c435ed552 100644 --- a/regex/regcomp.c +++ b/regex/regcomp.c @@ -1563,13 +1563,13 @@ struct parse *p; register struct re_guts *g; { register sop *scan; - sop *start; - register sop *newstart; + sop *UNINIT_VAR(start); + register sop *UNINIT_VAR(newstart); register sopno newlen; register sop s; register char *cp; register sopno i; - LINT_INIT(start); LINT_INIT(newstart); + /* avoid making error situations worse */ if (p->error != 0) return; From 266ca421da5903a97a7a52fed2032afab5df74d6 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 9 Jul 2010 14:11:12 +0300 Subject: [PATCH 209/461] Bug #52274 : Missing path to mysql in mysql_secure_installation Added some code to try to find the mysql command line in the most common places and stop if it's not there. --- scripts/mysql_secure_installation.sh | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/scripts/mysql_secure_installation.sh b/scripts/mysql_secure_installation.sh index 25d6343ee2c..188cd030dba 100644 --- a/scripts/mysql_secure_installation.sh +++ b/scripts/mysql_secure_installation.sh @@ -17,6 +17,7 @@ config=".my.cnf.$$" command=".mysql.$$" +mysql_client="" trap "interrupt" 2 @@ -37,10 +38,26 @@ prepare() { chmod 600 $config $command } +find_mysql_client() +{ + for n in ./bin/mysql mysql + do + $n --no-defaults --help > /dev/null 2>&1 + status=$? + if test $status -eq 0 + then + mysql_client=$n + return + fi + done + echo "Can't find a 'mysql' client in PATH or ./bin" + exit 1 +} + do_query() { echo "$1" >$command #sed 's,^,> ,' < $command # Debugging - mysql --defaults-file=$config <$command + $mysql_client --defaults-file=$config <$command return $? } @@ -204,6 +221,7 @@ cleanup() { # The actual script starts here prepare +find_mysql_client set_echo_compat echo From 1919414fbea08e73d326b92356b89133ed447e1d Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Wed, 14 Jul 2010 13:53:49 +0300 Subject: [PATCH 210/461] Bug #54004 : mysql_secure_installation identifies "local host" incorrectly The removal of non-local root users is overzealous in mysql_secure_installation. (Bug #54004) --- scripts/mysql_secure_installation.pl.in | 2 +- scripts/mysql_secure_installation.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/mysql_secure_installation.pl.in b/scripts/mysql_secure_installation.pl.in index 25339f9b916..0cd99267cdb 100755 --- a/scripts/mysql_secure_installation.pl.in +++ b/scripts/mysql_secure_installation.pl.in @@ -208,7 +208,7 @@ sub remove_anonymous_users { } sub remove_remote_root { - if (do_query("DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';")) { + if (do_query("DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');")) { print " ... Success!\n"; } else { print " ... Failed!\n"; diff --git a/scripts/mysql_secure_installation.sh b/scripts/mysql_secure_installation.sh index 188cd030dba..ed789677bf0 100644 --- a/scripts/mysql_secure_installation.sh +++ b/scripts/mysql_secure_installation.sh @@ -164,7 +164,7 @@ remove_anonymous_users() { } remove_remote_root() { - do_query "DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';" + do_query "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" if [ $? -eq 0 ]; then echo " ... Success!" else From 678640019debce6c77109dc5f52e323eaee45a9f Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Wed, 14 Jul 2010 11:50:17 +0300 Subject: [PATCH 211/461] Bug #53493 : add_to_status does not handle the longlong fields in STATUS_VAR bytes_received/bytes_sent are ulonglong so they cannot be handled by the ulong handling code in add_to_status/add_diff_to_status(). Fixed by adding code to handle these two variables in add_to_status()/add_diff_to_status() and making sure they are not a subject to the ulong handling code. --- sql/sql_class.cc | 6 ++++++ sql/sql_class.h | 17 ++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 2ce03708a9a..1028a9fccf4 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1063,6 +1063,9 @@ void add_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var) while (to != end) *(to++)+= *(from++); + + to_var->bytes_received+= from_var->bytes_received; + to_var->bytes_sent+= from_var->bytes_sent; } /* @@ -1088,6 +1091,9 @@ void add_diff_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var, while (to != end) *(to++)+= *(from++) - *(dec++); + + to_var->bytes_received+= from_var->bytes_received - dec_var->bytes_received;; + to_var->bytes_sent+= from_var->bytes_sent - dec_var->bytes_sent; } diff --git a/sql/sql_class.h b/sql/sql_class.h index 5155ffe0603..1627b6ec02d 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -405,12 +405,14 @@ struct system_variables }; -/* per thread status variables */ +/** + Per thread status variables. + Must be long/ulong up to last_system_status_var so that + add_to_status/add_diff_to_status can work. +*/ typedef struct system_status_var { - ulonglong bytes_received; - ulonglong bytes_sent; ulong com_other; ulong com_stat[(uint) SQLCOM_END]; ulong created_tmp_disk_tables; @@ -466,13 +468,14 @@ typedef struct system_status_var Number of statements sent from the client */ ulong questions; + + ulonglong bytes_received; + ulonglong bytes_sent; /* IMPORTANT! SEE last_system_status_var DEFINITION BELOW. - Below 'last_system_status_var' are all variables which doesn't make any - sense to add to the /global/ status variable counter. - Status variables which it does not make sense to add to - global status variable counter + Below 'last_system_status_var' are all variables that cannot be handled + automatically by add_to_status()/add_diff_to_status(). */ double last_query_cost; } STATUS_VAR; From dbb643d64e0981f56b6c7b35586f430b08091834 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Wed, 14 Jul 2010 14:54:51 +0300 Subject: [PATCH 212/461] Bug #51876: crash/memory underrun when loading data with ucs2 and reverse() function 3 problems fixed : 1. The reported problem : caused by incorrect parsing of the file as ucs data resulting in wrong length of the parsed string. Fixed by truncating the invalid trailing bytes (non-complete multibyte characters) when reading from the file 2. LOAD DATA when reading from a proper UCS2 file wasn't recognizing the new line characters. Fixed by first looking if a byte is a new line (or any other special) character before reading it as a part of a multibyte character. 3. When using user variables to hold the column data in LOAD DATA the character set of the user variable was set incorrectly to the database charset. Fixed by setting it to the charset specified by LOAD DATA (if any). --- mysql-test/r/loaddata.result | 29 +++++++++++++++++++ mysql-test/t/loaddata.test | 32 +++++++++++++++++++++ sql/item_func.cc | 5 +++- sql/sql_load.cc | 56 +++++++++++++++++++++--------------- 4 files changed, 98 insertions(+), 24 deletions(-) diff --git a/mysql-test/r/loaddata.result b/mysql-test/r/loaddata.result index 665e80b8ba2..40c278380b1 100644 --- a/mysql-test/r/loaddata.result +++ b/mysql-test/r/loaddata.result @@ -503,4 +503,33 @@ DROP TABLE t1; CREATE TABLE t1 (id INT NOT NULL); LOAD DATA LOCAL INFILE 'tb.txt' INTO TABLE t1; DROP TABLE t1; +# +# Bug #51876 : crash/memory underrun when loading data with ucs2 +# and reverse() function +# +# Problem # 1 (original report): wrong parsing of ucs2 data +SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt'; +CREATE TABLE t1(a INT); +LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2 +(@b) SET a=REVERSE(@b); +Warnings: +Warning 1366 Incorrect integer value: '00' for column 'a' at row 1 +Warning 1366 Incorrect integer value: '10' for column 'a' at row 2 +# should return 2 zeroes (as the value is truncated) +SELECT * FROM t1; +a +0 +0 +DROP TABLE t1; +# Problem # 2 : if you write and read ucs2 data to a file they're lost +SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2; +CREATE TABLE t1(a INT); +LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2 +(@b) SET a=REVERSE(@b); +# should return 0 and 1 (10 reversed) +SELECT * FROM t1; +a +0 +1 +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/t/loaddata.test b/mysql-test/t/loaddata.test index e24f0b16705..821453777f5 100644 --- a/mysql-test/t/loaddata.test +++ b/mysql-test/t/loaddata.test @@ -580,4 +580,36 @@ DROP TABLE t1; connection default; disconnect con1; + +--echo # +--echo # Bug #51876 : crash/memory underrun when loading data with ucs2 +--echo # and reverse() function +--echo # + +--echo # Problem # 1 (original report): wrong parsing of ucs2 data +SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt'; +CREATE TABLE t1(a INT); +LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2 +(@b) SET a=REVERSE(@b); +--echo # should return 2 zeroes (as the value is truncated) +SELECT * FROM t1; + +DROP TABLE t1; +let $MYSQLD_DATADIR= `select @@datadir`; +remove_file $MYSQLD_DATADIR/test/tmpp.txt; + + +--echo # Problem # 2 : if you write and read ucs2 data to a file they're lost +SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2; +CREATE TABLE t1(a INT); +LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2 +(@b) SET a=REVERSE(@b); +--echo # should return 0 and 1 (10 reversed) +SELECT * FROM t1; + +DROP TABLE t1; +let $MYSQLD_DATADIR= `select @@datadir`; +remove_file $MYSQLD_DATADIR/test/tmpp2.txt; + + --echo End of 5.1 tests diff --git a/sql/item_func.cc b/sql/item_func.cc index 1e31755179b..1bec4700bff 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -4715,6 +4715,7 @@ bool Item_func_get_user_var::set_value(THD *thd, bool Item_user_var_as_out_param::fix_fields(THD *thd, Item **ref) { DBUG_ASSERT(fixed == 0); + DBUG_ASSERT(thd->lex->exchange); if (Item::fix_fields(thd, ref) || !(entry= get_variable(&thd->user_vars, name, 1))) return TRUE; @@ -4724,7 +4725,9 @@ bool Item_user_var_as_out_param::fix_fields(THD *thd, Item **ref) of fields in LOAD DATA INFILE. (Since Item_user_var_as_out_param is used only there). */ - entry->collation.set(thd->variables.collation_database); + entry->collation.set(thd->lex->exchange->cs ? + thd->lex->exchange->cs : + thd->variables.collation_database); entry->update_query_id= thd->query_id; return FALSE; } diff --git a/sql/sql_load.cc b/sql/sql_load.cc index 552473e4fc2..ee7481234a4 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -1208,29 +1208,6 @@ int READ_INFO::read_field() while ( to < end_of_buff) { chr = GET; -#ifdef USE_MB - if ((my_mbcharlen(read_charset, chr) > 1) && - to+my_mbcharlen(read_charset, chr) <= end_of_buff) - { - uchar* p = (uchar*)to; - *to++ = chr; - int ml = my_mbcharlen(read_charset, chr); - int i; - for (i=1; i 1 && + to + my_mbcharlen(read_charset, chr) <= end_of_buff) + { + uchar* p= (uchar*) to; + int ml, i; + *to++ = chr; + + ml= my_mbcharlen(read_charset, chr); + + for (i= 1; i < ml; i++) + { + chr= GET; + if (chr == my_b_EOF) + { + /* + Need to back up the bytes already ready from illformed + multi-byte char + */ + to-= i; + goto found_eof; + } + *to++ = chr; + } + if (my_ismbchar(read_charset, + (const char *)p, + (const char *)to)) + continue; + for (i= 0; i < ml; i++) + PUSH((uchar) *--to); + chr= GET; + } +#endif *to++ = (uchar) chr; } /* From ce78970202c076b5c9967ea4e31e5add94c73d82 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Wed, 14 Jul 2010 10:10:12 -0300 Subject: [PATCH 213/461] Bug#48327: Some crashes specific to FreeBSD ("embedded") Backport fixes from ndb: Rework the constructors of some static object's to not call dbug functions since the constructors will be called before main, and consequently, before the dbug library is initialized. --- storage/ndb/src/common/portlib/NdbMutex.c | 21 ++++++--------- storage/ndb/src/ndbapi/DictCache.cpp | 32 ++++++++++++++++++----- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/storage/ndb/src/common/portlib/NdbMutex.c b/storage/ndb/src/common/portlib/NdbMutex.c index c9184e5d1f2..5595baba7c4 100644 --- a/storage/ndb/src/common/portlib/NdbMutex.c +++ b/storage/ndb/src/common/portlib/NdbMutex.c @@ -24,36 +24,31 @@ NdbMutex* NdbMutex_Create(void) { NdbMutex* pNdbMutex; int result; - DBUG_ENTER("NdbMutex_Create"); - + pNdbMutex = (NdbMutex*)NdbMem_Allocate(sizeof(NdbMutex)); - DBUG_PRINT("info",("NdbMem_Allocate 0x%lx", (long) pNdbMutex)); - + if (pNdbMutex == NULL) - DBUG_RETURN(NULL); - + return NULL; + result = pthread_mutex_init(pNdbMutex, NULL); assert(result == 0); - - DBUG_RETURN(pNdbMutex); + + return pNdbMutex; } int NdbMutex_Destroy(NdbMutex* p_mutex) { int result; - DBUG_ENTER("NdbMutex_Destroy"); if (p_mutex == NULL) - DBUG_RETURN(-1); + return -1; result = pthread_mutex_destroy(p_mutex); - DBUG_PRINT("info",("NdbMem_Free 0x%lx", (long) p_mutex)); NdbMem_Free(p_mutex); - - DBUG_RETURN(result); + return result; } diff --git a/storage/ndb/src/ndbapi/DictCache.cpp b/storage/ndb/src/ndbapi/DictCache.cpp index 04be3711847..9c66b2be9d2 100644 --- a/storage/ndb/src/ndbapi/DictCache.cpp +++ b/storage/ndb/src/ndbapi/DictCache.cpp @@ -20,8 +20,10 @@ #include #include -static NdbTableImpl f_invalid_table; -static NdbTableImpl f_altered_table; +static NdbTableImpl * f_invalid_table = 0; +static NdbTableImpl * f_altered_table = 0; + +static int ndb_dict_cache_count = 0; Ndb_local_table_info * Ndb_local_table_info::create(NdbTableImpl *table_impl, Uint32 sz) @@ -93,11 +95,29 @@ GlobalDictCache::GlobalDictCache(){ DBUG_ENTER("GlobalDictCache::GlobalDictCache"); m_tableHash.createHashTable(); m_waitForTableCondition = NdbCondition_Create(); + if (f_invalid_table == NULL) + f_invalid_table = new NdbTableImpl(); + if (f_altered_table == NULL) + f_altered_table = new NdbTableImpl(); + ndb_dict_cache_count++; DBUG_VOID_RETURN; } GlobalDictCache::~GlobalDictCache(){ DBUG_ENTER("GlobalDictCache::~GlobalDictCache"); + if (--ndb_dict_cache_count == 0) + { + if (f_invalid_table) + { + delete f_invalid_table; + f_invalid_table = 0; + } + if (f_altered_table) + { + delete f_altered_table; + f_altered_table = 0; + } + } NdbElement_t > * curr = m_tableHash.getNext(0); while(curr != 0){ Vector * vers = curr->theData; @@ -254,7 +274,7 @@ GlobalDictCache::put(const char * name, NdbTableImpl * tab) TableVersion & ver = vers->back(); if(ver.m_status != RETREIVING || !(ver.m_impl == 0 || - ver.m_impl == &f_invalid_table || ver.m_impl == &f_altered_table) || + ver.m_impl == f_invalid_table || ver.m_impl == f_altered_table) || ver.m_version != 0 || ver.m_refCount == 0){ abort(); @@ -271,7 +291,7 @@ GlobalDictCache::put(const char * name, NdbTableImpl * tab) ver.m_version = tab->m_version; ver.m_status = OK; } - else if (ver.m_impl == &f_invalid_table) + else if (ver.m_impl == f_invalid_table) { DBUG_PRINT("info", ("Table DROPPED invalid")); ver.m_impl = tab; @@ -279,7 +299,7 @@ GlobalDictCache::put(const char * name, NdbTableImpl * tab) ver.m_status = DROPPED; ver.m_impl->m_status = NdbDictionary::Object::Invalid; } - else if(ver.m_impl == &f_altered_table) + else if(ver.m_impl == f_altered_table) { DBUG_PRINT("info", ("Table DROPPED altered")); ver.m_impl = tab; @@ -440,7 +460,7 @@ GlobalDictCache::alter_table_rep(const char * name, if(i == sz - 1 && ver.m_status == RETREIVING) { - ver.m_impl = altered ? &f_altered_table : &f_invalid_table; + ver.m_impl = altered ? f_altered_table : f_invalid_table; DBUG_VOID_RETURN; } } From f317d3a6fb413cfc04c1ed005df8e859664e41d5 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Wed, 14 Jul 2010 09:27:13 -0300 Subject: [PATCH 214/461] Bug#42733: Type-punning warnings when compiling MySQL -- strict aliasing violations. Another rather noisy violation of strict aliasing rules is the spatial code which makes use of stack-based memory (of type Geometry_buffer) to provide placement for Geometry objects. Although a placement new is allowed to dynamically change the type of a object, the object returned by the new placement was being ignored and the original stack-based object was being casted to the new type, thus violating strict aliasing rules. The solution is to reorganize the code so that the object returned by the new placement is used instead of casting the original object. Also, to ensure that the stack-based object is properly aligned with respect to the objects it provides placement for, a set of compiler-dependent macros and types are introduced so that the alignment of objects can be inquired and specified. include/Makefile.am: Add new header. include/my_compiler.h: Add new header. include/my_global.h: Remove now-unnecessary macros. sql/spatial.cc: Make object creation functions return the object whose type was dynamically changed by the new placement. Move static method from the header in order to avoid having to access a forward declaration. sql/spatial.h: Object creation callbacks now take a array of chars as the storage area. Move create_by_typeid to a source file as to not access the forward declaration of Geometry_buffer. Ensure that Geometry_buffer is properly aligned. sql/sql_show.cc: Use newly added aligned storage helper. --- include/Makefile.am | 2 +- include/my_compiler.h | 127 ++++++++++++++++++++++++++++++++++++++++++ include/my_global.h | 3 - sql/spatial.cc | 43 ++++++++------ sql/spatial.h | 28 ++++------ sql/sql_show.cc | 4 +- 6 files changed, 166 insertions(+), 41 deletions(-) create mode 100644 include/my_compiler.h diff --git a/include/Makefile.am b/include/Makefile.am index 130517a405e..182011c25a3 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -37,7 +37,7 @@ noinst_HEADERS = config-win.h config-netware.h my_bit.h \ my_aes.h my_tree.h my_trie.h hash.h thr_alarm.h \ thr_lock.h t_ctype.h violite.h my_md5.h base64.h \ my_handler.h my_time.h my_vle.h my_user.h \ - my_libwrap.h my_stacktrace.h + my_libwrap.h my_stacktrace.h my_compiler.h EXTRA_DIST = mysql.h.pp mysql/plugin.h.pp diff --git a/include/my_compiler.h b/include/my_compiler.h new file mode 100644 index 00000000000..0a83c6587a5 --- /dev/null +++ b/include/my_compiler.h @@ -0,0 +1,127 @@ +#ifndef MY_COMPILER_INCLUDED +#define MY_COMPILER_INCLUDED + +/* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + +/** + Header for compiler-dependent features. + + Intended to contain a set of reusable wrappers for preprocessor + macros, attributes, pragmas, and any other features that are + specific to a target compiler. +*/ + +#include /* stddef.h offsetof */ + +/** + Compiler-dependent internal convenience macros. +*/ + +/* GNU C/C++ */ +#if defined __GNUC__ +/* Any after 2.95... */ +# define MY_ALIGN_EXT + +/* Microsoft Visual C++ */ +#elif defined _MSC_VER +# define MY_ALIGNOF(type) __alignof(type) +# define MY_ALIGNED(n) __declspec(align(n)) + +/* Oracle Solaris Studio */ +#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# if (__SUNPRO_C >= 0x590) || (__SUNPRO_CC >= 0x590) +# define MY_ALIGN_EXT +# endif + +/* IBM XL C/C++ */ +#elif defined __xlC__ +# if __xlC__ >= 0x0600 +# define MY_ALIGN_EXT +# endif + +/* HP aCC */ +#elif defined(__HP_aCC) || defined(__HP_cc) +# if (__HP_aCC >= 60000) || (__HP_cc >= 60000) +# define MY_ALIGN_EXT +# endif +#endif + +#ifdef MY_ALIGN_EXT +/** Specifies the minimum alignment of a type. */ +# define MY_ALIGNOF(type) __alignof__(type) +/** Determine the alignment requirement of a type. */ +# define MY_ALIGNED(n) __attribute__((__aligned__((n)))) +#endif + +/** + Generic compiler-dependent features. +*/ +#ifndef MY_ALIGNOF +# ifdef __cplusplus + template struct my_alignof_helper { char m1; type m2; }; + /* Invalid for non-POD types, but most compilers give the right answer. */ +# define MY_ALIGNOF(type) offsetof(my_alignof_helper, m2) +# else +# define MY_ALIGNOF(type) offsetof(struct { char m1; type m2; }, m2) +# endif +#endif + +/** + C++ Type Traits +*/ + +#ifdef __cplusplus + +/** + Opaque storage with a particular alignment. +*/ +# if defined(MY_ALIGNED) +/* Partial specialization used due to MSVC++. */ +template struct my_alignment_imp; +template<> struct MY_ALIGNED(1) my_alignment_imp<1> {}; +template<> struct MY_ALIGNED(2) my_alignment_imp<2> {}; +template<> struct MY_ALIGNED(4) my_alignment_imp<4> {}; +template<> struct MY_ALIGNED(8) my_alignment_imp<8> {}; +template<> struct MY_ALIGNED(16) my_alignment_imp<16> {}; +/* ... expand as necessary. */ +# else +template +struct my_alignment_imp { double m1; }; +# endif + +/** + A POD type with a given size and alignment. + + @remark If the compiler does not support a alignment attribute + (MY_ALIGN macro), the default alignment of a double is + used instead. + + @tparam size The minimum size. + @tparam alignment The desired alignment: 1, 2, 4, 8 or 16. +*/ +template +struct my_aligned_storage +{ + union + { + char data[size]; + my_alignment_imp align; + }; +}; + +#endif /* __cplusplus */ + +#endif /* MY_COMPILER_INCLUDED */ diff --git a/include/my_global.h b/include/my_global.h index f03ed665d5a..6723267ae50 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -941,9 +941,6 @@ typedef long long my_ptrdiff_t; #define ADD_TO_PTR(ptr,size,type) (type) ((uchar*) (ptr)+size) #define PTR_BYTE_DIFF(A,B) (my_ptrdiff_t) ((uchar*) (A) - (uchar*) (B)) -#define MY_DIV_UP(A, B) (((A) + (B) - 1) / (B)) -#define MY_ALIGNED_BYTE_ARRAY(N, S, T) T N[MY_DIV_UP(S, sizeof(T))] - /* Custom version of standard offsetof() macro which can be used to get offsets of members in class for non-POD types (according to the current diff --git a/sql/spatial.cc b/sql/spatial.cc index 9114c81514d..11df6c00dc5 100644 --- a/sql/spatial.cc +++ b/sql/spatial.cc @@ -53,7 +53,7 @@ static Geometry::Class_info **ci_collection_end= Geometry::ci_collection+Geometry::wkb_last + 1; Geometry::Class_info::Class_info(const char *name, int type_id, - void(*create_func)(void *)): + create_geom_t create_func): m_type_id(type_id), m_create_func(create_func) { m_name.str= (char *) name; @@ -62,39 +62,39 @@ Geometry::Class_info::Class_info(const char *name, int type_id, ci_collection[type_id]= this; } -static void create_point(void *buffer) +static Geometry *create_point(char *buffer) { - new(buffer) Gis_point; + return new (buffer) Gis_point; } -static void create_linestring(void *buffer) +static Geometry *create_linestring(char *buffer) { - new(buffer) Gis_line_string; + return new (buffer) Gis_line_string; } -static void create_polygon(void *buffer) +static Geometry *create_polygon(char *buffer) { - new(buffer) Gis_polygon; + return new (buffer) Gis_polygon; } -static void create_multipoint(void *buffer) +static Geometry *create_multipoint(char *buffer) { - new(buffer) Gis_multi_point; + return new (buffer) Gis_multi_point; } -static void create_multipolygon(void *buffer) +static Geometry *create_multipolygon(char *buffer) { - new(buffer) Gis_multi_polygon; + return new (buffer) Gis_multi_polygon; } -static void create_multilinestring(void *buffer) +static Geometry *create_multilinestring(char *buffer) { - new(buffer) Gis_multi_line_string; + return new (buffer) Gis_multi_line_string; } -static void create_geometrycollection(void *buffer) +static Geometry *create_geometrycollection(char *buffer) { - new(buffer) Gis_geometry_collection; + return new (buffer) Gis_geometry_collection; } @@ -145,6 +145,15 @@ Geometry::Class_info *Geometry::find_class(const char *name, uint32 len) } +Geometry *Geometry::create_by_typeid(Geometry_buffer *buffer, int type_id) +{ + Class_info *ci; + if (!(ci= find_class(type_id))) + return NULL; + return (*ci->m_create_func)(buffer->data); +} + + Geometry *Geometry::construct(Geometry_buffer *buffer, const char *data, uint32 data_len) { @@ -179,9 +188,7 @@ Geometry *Geometry::create_from_wkt(Geometry_buffer *buffer, if (!(ci= find_class(name.str, name.length)) || wkt->reserve(1 + 4, 512)) return NULL; - (*ci->m_create_func)((void *)buffer); - Geometry *result= (Geometry *)buffer; - + Geometry *result= (*ci->m_create_func)(buffer->data); wkt->q_append((char) wkb_ndr); wkt->q_append((uint32) result->get_class_info()->m_type_id); if (trs->check_next_symbol('(') || diff --git a/sql/spatial.h b/sql/spatial.h index 86c2ed8c197..67edc077e04 100644 --- a/sql/spatial.h +++ b/sql/spatial.h @@ -16,6 +16,8 @@ #ifndef _spatial_h #define _spatial_h +#include + #ifdef HAVE_SPATIAL const uint SRID_SIZE= 4; @@ -225,15 +227,18 @@ public: { wkb_xdr= 0, /* Big Endian */ wkb_ndr= 1 /* Little Endian */ - }; + }; + + /** Callback which creates Geometry objects on top of a given placement. */ + typedef Geometry *(*create_geom_t)(char *); class Class_info { public: LEX_STRING m_name; int m_type_id; - void (*m_create_func)(void *); - Class_info(const char *name, int type_id, void(*create_func)(void *)); + create_geom_t m_create_func; + Class_info(const char *name, int type_id, create_geom_t create_func); }; virtual const Class_info *get_class_info() const=0; @@ -263,15 +268,7 @@ public: virtual int geometry_n(uint32 num, String *result) const { return -1; } public: - static Geometry *create_by_typeid(Geometry_buffer *buffer, int type_id) - { - Class_info *ci; - if (!(ci= find_class((int) type_id))) - return NULL; - (*ci->m_create_func)((void *)buffer); - return my_reinterpret_cast(Geometry *)(buffer); - } - + static Geometry *create_by_typeid(Geometry_buffer *buffer, int type_id); static Geometry *construct(Geometry_buffer *buffer, const char *data, uint32 data_len); static Geometry *create_from_wkt(Geometry_buffer *buffer, @@ -528,11 +525,8 @@ public: const Class_info *get_class_info() const; }; -const int geometry_buffer_size= sizeof(Gis_point); -struct Geometry_buffer -{ - void *arr[(geometry_buffer_size - 1)/sizeof(void *) + 1]; -}; +struct Geometry_buffer : public + my_aligned_storage {}; #endif /*HAVE_SPATAIAL*/ #endif diff --git a/sql/sql_show.cc b/sql/sql_show.cc index ca0d16697cd..091bd09aa25 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2202,8 +2202,8 @@ static bool show_status_array(THD *thd, const char *wild, bool ucase_names, COND *cond) { - MY_ALIGNED_BYTE_ARRAY(buff_data, SHOW_VAR_FUNC_BUFF_SIZE, long); - char * const buff= (char *) &buff_data; + my_aligned_storage buffer; + char * const buff= buffer.data; char *prefix_end; /* the variable name should not be longer than 64 characters */ char name_buffer[64]; From d7944b621e895383482792df3b8aa3eed6ee5f6d Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Wed, 14 Jul 2010 16:39:40 -0300 Subject: [PATCH 215/461] Bug#42733: Type-punning warnings when compiling MySQL -- strict aliasing violations. Post-merge fix: include my_compiler.h before my_attribute.h as the latter will undef __attribute__ if the compiler is not GCC. Based on the compiler version, in my_compiler.h we know for sure whether the aligned attribute is supported. Furthermore, undefining attribute might cause bugs if some system header uses it. include/my_compiler.h: Drop aligned attribute support from Sun Studio C++ compiler as its not clear exactly which version of it supports the attribute. --- include/my_compiler.h | 4 +++- include/my_global.h | 2 +- sql/spatial.h | 2 -- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/my_compiler.h b/include/my_compiler.h index 0a83c6587a5..1cd46ff4260 100644 --- a/include/my_compiler.h +++ b/include/my_compiler.h @@ -42,7 +42,7 @@ /* Oracle Solaris Studio */ #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) -# if (__SUNPRO_C >= 0x590) || (__SUNPRO_CC >= 0x590) +# if __SUNPRO_C >= 0x590 # define MY_ALIGN_EXT # endif @@ -124,4 +124,6 @@ struct my_aligned_storage #endif /* __cplusplus */ +#include + #endif /* MY_COMPILER_INCLUDED */ diff --git a/include/my_global.h b/include/my_global.h index 6723267ae50..ec22a57329b 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -623,7 +623,7 @@ typedef unsigned short ushort; #define my_const_cast(A) (A) #endif -#include +#include /* Wen using the embedded library, users might run into link problems, diff --git a/sql/spatial.h b/sql/spatial.h index 67edc077e04..f778acd6c34 100644 --- a/sql/spatial.h +++ b/sql/spatial.h @@ -16,8 +16,6 @@ #ifndef _spatial_h #define _spatial_h -#include - #ifdef HAVE_SPATIAL const uint SRID_SIZE= 4; From 25bfbf684c0fefe658f6244e1f2cf23dd0246eae Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Wed, 23 Jun 2010 19:25:31 +0300 Subject: [PATCH 216/461] Bug #53814: NUMERIC_PRECISION for unsigned bigint field is 19, should be 20 Fixed the numeric precision of the unsigned BIGINT column to be 20 instead of 19. --- mysql-test/r/information_schema.result | 17 +++++++++++++++++ mysql-test/t/information_schema.test | 16 ++++++++++++++++ sql/sql_show.cc | 5 ++++- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index b7b65598c6d..0da9ed40b9a 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -1757,4 +1757,21 @@ WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'variables'; COLUMN_DEFAULT TABLE_NAME NULL variables DROP TABLE variables; +# +# Bug #53814: NUMERIC_PRECISION for unsigned bigint field is 19, +# should be 20 +# +CREATE TABLE ubig (a BIGINT, b BIGINT UNSIGNED); +SELECT TABLE_NAME, COLUMN_NAME, NUMERIC_PRECISION +FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='ubig'; +TABLE_NAME COLUMN_NAME NUMERIC_PRECISION +ubig a 19 +ubig b 20 +INSERT INTO ubig VALUES (0xFFFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFFFF); +Warnings: +Warning 1264 Out of range value for column 'a' at row 1 +SELECT length(CAST(b AS CHAR)) FROM ubig; +length(CAST(b AS CHAR)) +20 +DROP TABLE ubig; End of 5.1 tests. diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index fa4b880aead..1fa4d6da600 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -1455,6 +1455,22 @@ FROM INFORMATION_SCHEMA.COLUMNS WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'variables'; DROP TABLE variables; +--echo # +--echo # Bug #53814: NUMERIC_PRECISION for unsigned bigint field is 19, +--echo # should be 20 +--echo # + +CREATE TABLE ubig (a BIGINT, b BIGINT UNSIGNED); + +SELECT TABLE_NAME, COLUMN_NAME, NUMERIC_PRECISION + FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='ubig'; + +INSERT INTO ubig VALUES (0xFFFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFFFF); +SELECT length(CAST(b AS CHAR)) FROM ubig; + +DROP TABLE ubig; + + --echo End of 5.1 tests. # Wait till all disconnects are completed diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 091bd09aa25..d0e76e501e2 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -3965,10 +3965,13 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables, case MYSQL_TYPE_TINY: case MYSQL_TYPE_SHORT: case MYSQL_TYPE_LONG: - case MYSQL_TYPE_LONGLONG: case MYSQL_TYPE_INT24: field_length= field->max_display_length() - 1; break; + case MYSQL_TYPE_LONGLONG: + field_length= field->max_display_length() - + ((field->flags & UNSIGNED_FLAG) ? 0 : 1); + break; case MYSQL_TYPE_BIT: field_length= field->max_display_length(); decimals= -1; // return NULL From 08a801e40968c15a48bca5a6010b02bf0a87eb32 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Wed, 23 Jun 2010 19:10:10 -0700 Subject: [PATCH 217/461] Move the fix for bug #54044 to security branch, and revert commit -r3520:3521. --- .../suite/innodb/r/innodb_bug54044.result | 3 --- .../suite/innodb/t/innodb_bug54044.test | 11 --------- .../innodb_plugin/r/innodb_bug54044.result | 3 --- .../innodb_plugin/t/innodb_bug54044.test | 11 --------- storage/innobase/handler/ha_innodb.cc | 24 ++----------------- storage/innodb_plugin/ChangeLog | 5 ---- storage/innodb_plugin/handler/ha_innodb.cc | 24 ++----------------- 7 files changed, 4 insertions(+), 77 deletions(-) delete mode 100644 mysql-test/suite/innodb/r/innodb_bug54044.result delete mode 100644 mysql-test/suite/innodb/t/innodb_bug54044.test delete mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug54044.result delete mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug54044.test diff --git a/mysql-test/suite/innodb/r/innodb_bug54044.result b/mysql-test/suite/innodb/r/innodb_bug54044.result deleted file mode 100644 index 9574381d8e1..00000000000 --- a/mysql-test/suite/innodb/r/innodb_bug54044.result +++ /dev/null @@ -1,3 +0,0 @@ -CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB -AS SELECT IF(NULL IS NOT NULL, NULL, NULL); -ERROR HY000: Can't create table 'test.TABLE_54044' (errno: -1) diff --git a/mysql-test/suite/innodb/t/innodb_bug54044.test b/mysql-test/suite/innodb/t/innodb_bug54044.test deleted file mode 100644 index 824450ae1a6..00000000000 --- a/mysql-test/suite/innodb/t/innodb_bug54044.test +++ /dev/null @@ -1,11 +0,0 @@ -# This is the test for bug #54044. Special handle MYSQL_TYPE_NULL type -# during create table, so it will not trigger assertion failure. - ---source include/have_innodb.inc - -# This 'create table' operation should fail because of -# using NULL datatype ---error ER_CANT_CREATE_TABLE -CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB - AS SELECT IF(NULL IS NOT NULL, NULL, NULL); - diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result b/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result deleted file mode 100644 index 9574381d8e1..00000000000 --- a/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result +++ /dev/null @@ -1,3 +0,0 @@ -CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB -AS SELECT IF(NULL IS NOT NULL, NULL, NULL); -ERROR HY000: Can't create table 'test.TABLE_54044' (errno: -1) diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test b/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test deleted file mode 100644 index 824450ae1a6..00000000000 --- a/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test +++ /dev/null @@ -1,11 +0,0 @@ -# This is the test for bug #54044. Special handle MYSQL_TYPE_NULL type -# during create table, so it will not trigger assertion failure. - ---source include/have_innodb.inc - -# This 'create table' operation should fail because of -# using NULL datatype ---error ER_CANT_CREATE_TABLE -CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB - AS SELECT IF(NULL IS NOT NULL, NULL, NULL); - diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index d10fcb8d31e..9990d7c28f0 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -3242,11 +3242,6 @@ get_innobase_type_from_mysql_type( case MYSQL_TYPE_BLOB: case MYSQL_TYPE_LONG_BLOB: return(DATA_BLOB); - case MYSQL_TYPE_NULL: - /* MySQL currently accepts "NULL" datatype, but will - reject such datatype in the next release. We will cope - with it and not trigger assertion failure in 5.1 */ - break; default: assert(0); } @@ -5268,22 +5263,7 @@ create_table_def( field = form->field[i]; col_type = get_innobase_type_from_mysql_type(&unsigned_type, - field); - - if (!col_type) { - push_warning_printf( - (THD*) trx->mysql_thd, - MYSQL_ERROR::WARN_LEVEL_WARN, - ER_CANT_CREATE_TABLE, - "Error creating table '%s' with " - "column '%s'. Please check its " - "column type and try to re-create " - "the table with an appropriate " - "column type.", - table->name, (char*) field->field_name); - goto err_col; - } - + field); if (field->null_ptr) { nulls_allowed = 0; } else { @@ -5340,7 +5320,7 @@ create_table_def( "different column name.", table->name, (char*) field->field_name, (char*) field->field_name); -err_col: + dict_mem_table_free(table); trx_commit_for_mysql(trx); diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index d1d36bf812b..36bc5551a2b 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,8 +1,3 @@ -2010-06-22 The InnoDB Team - - * handler/ha_innodb.cc, innodb_bug54044.test, innodb_bug54044.result - Fix Bug#54044, Create temporary tables and using innodb crashes. - 2010-06-22 The InnoDB Team * dict/dict0dict.c, dict/dict0mem.c, include/dict0mem.h, diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index 7d918a033ee..3f8dc97e4b5 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -3950,11 +3950,6 @@ get_innobase_type_from_mysql_type( case MYSQL_TYPE_BLOB: case MYSQL_TYPE_LONG_BLOB: return(DATA_BLOB); - case MYSQL_TYPE_NULL: - /* MySQL currently accepts "NULL" datatype, but will - reject such datatype in the next release. We will cope - with it and not trigger assertion failure in 5.1 */ - break; default: ut_error; } @@ -6005,22 +6000,7 @@ create_table_def( field = form->field[i]; col_type = get_innobase_type_from_mysql_type(&unsigned_type, - field); - - if (!col_type) { - push_warning_printf( - (THD*) trx->mysql_thd, - MYSQL_ERROR::WARN_LEVEL_WARN, - ER_CANT_CREATE_TABLE, - "Error creating table '%s' with " - "column '%s'. Please check its " - "column type and try to re-create " - "the table with an appropriate " - "column type.", - table->name, (char*) field->field_name); - goto err_col; - } - + field); if (field->null_ptr) { nulls_allowed = 0; } else { @@ -6078,7 +6058,7 @@ create_table_def( if (dict_col_name_is_reserved(field->field_name)){ my_error(ER_WRONG_COLUMN_NAME, MYF(0), field->field_name); -err_col: + dict_mem_table_free(table); trx_commit_for_mysql(trx); From 4e8728635b7fc2993374f3af98084d4f39512798 Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Thu, 24 Jun 2010 12:00:48 +0400 Subject: [PATCH 218/461] Fix for bug #54459: Assertion failed: param.sort_length, file .\filesort.cc, line 149 (part II) Problem: the server didn't disregard sort order for some zero length tuples. Fix: skip sort order in such a case (zero length NOT NULL string functions). mysql-test/r/select.result: Fix for bug #54459: Assertion failed: param.sort_length, file .\filesort.cc, line 149 (part II) - test result. mysql-test/t/select.test: Fix for bug #54459: Assertion failed: param.sort_length, file .\filesort.cc, line 149 (part II) - test case. sql/sql_select.cc: Fix for bug #54459: Assertion failed: param.sort_length, file .\filesort.cc, line 149 (part II) - disregard sort order for zero length NOT NULL string functions along with zero length NOT NULL fields. --- mysql-test/r/select.result | 15 +++++++++++++++ mysql-test/t/select.test | 15 +++++++++++++++ sql/sql_select.cc | 18 +++++++++++++----- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index fb4175ed5ca..fb3de514f62 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -4782,4 +4782,19 @@ a b c SELECT * FROM t1 WHERE 102 < c; a b c DROP TABLE t1; +# +# Bug #54459: Assertion failed: param.sort_length, +# file .\filesort.cc, line 149 (part II) +# +CREATE TABLE t1(a ENUM('') NOT NULL); +INSERT INTO t1 VALUES (), (), (); +EXPLAIN SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 3 +SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci; +1 +1 +1 +1 +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index f61db538fb4..37f3675780b 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -4077,4 +4077,19 @@ SELECT * FROM t1 WHERE 102 < c; DROP TABLE t1; +--echo # +--echo # Bug #54459: Assertion failed: param.sort_length, +--echo # file .\filesort.cc, line 149 (part II) +--echo # +CREATE TABLE t1(a ENUM('') NOT NULL); +INSERT INTO t1 VALUES (), (), (); +EXPLAIN SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci; +SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci; +DROP TABLE t1; + +create table t1(a enum('a'))engine=myisam charset=latin1; +insert into t1 values (''),(''),(''),(NULL); +select a, substr(a, 0, 0) from t1 order by substr(a, 0, 0); +select a, a collate latin1_german2_ci from t1 order by a collate latin1_german2_ci; + --echo End of 5.1 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 296b18631e5..c9cca2e601f 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -564,13 +564,21 @@ JOIN::prepare(Item ***rref_pointer_array, { Item *item= *ord->item; /* - Disregard sort order if there's only "{VAR}CHAR(0) NOT NULL" fields - there. Such fields don't contain any data to sort. + Disregard sort order if there's only + zero length NOT NULL fields (e.g. {VAR}CHAR(0) NOT NULL") or + zero length NOT NULL string functions there. + Such tuples don't contain any data to sort. */ if (!real_order && - (item->type() != Item::FIELD_ITEM || - ((Item_field *) item)->field->maybe_null() || - ((Item_field *) item)->field->sort_length())) + /* Not a zero length NOT NULL field */ + ((item->type() != Item::FIELD_ITEM || + ((Item_field *) item)->field->maybe_null() || + ((Item_field *) item)->field->sort_length()) && + /* AND not a zero length NOT NULL string function. */ + (item->type() != Item::FUNC_ITEM || + item->maybe_null || + item->result_type() != STRING_RESULT || + item->max_length))) real_order= TRUE; if (item->with_sum_func && item->type() != Item::SUM_FUNC_ITEM) From f2dfe5e8a57ff48fb39e257ed5c516d8bc8e1863 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Thu, 24 Jun 2010 01:20:25 -0700 Subject: [PATCH 219/461] Fix Bug #54044 Create temporary tables and using innodb crashes. --- .../suite/innodb/r/innodb_bug54044.result | 3 +++ .../suite/innodb/t/innodb_bug54044.test | 11 +++++++++ .../innodb_plugin/r/innodb_bug54044.result | 3 +++ .../innodb_plugin/t/innodb_bug54044.test | 11 +++++++++ storage/innobase/handler/ha_innodb.cc | 24 +++++++++++++++++-- storage/innodb_plugin/ChangeLog | 5 ++++ storage/innodb_plugin/handler/ha_innodb.cc | 24 +++++++++++++++++-- 7 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 mysql-test/suite/innodb/r/innodb_bug54044.result create mode 100644 mysql-test/suite/innodb/t/innodb_bug54044.test create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug54044.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug54044.test diff --git a/mysql-test/suite/innodb/r/innodb_bug54044.result b/mysql-test/suite/innodb/r/innodb_bug54044.result new file mode 100644 index 00000000000..9574381d8e1 --- /dev/null +++ b/mysql-test/suite/innodb/r/innodb_bug54044.result @@ -0,0 +1,3 @@ +CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB +AS SELECT IF(NULL IS NOT NULL, NULL, NULL); +ERROR HY000: Can't create table 'test.TABLE_54044' (errno: -1) diff --git a/mysql-test/suite/innodb/t/innodb_bug54044.test b/mysql-test/suite/innodb/t/innodb_bug54044.test new file mode 100644 index 00000000000..824450ae1a6 --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_bug54044.test @@ -0,0 +1,11 @@ +# This is the test for bug #54044. Special handle MYSQL_TYPE_NULL type +# during create table, so it will not trigger assertion failure. + +--source include/have_innodb.inc + +# This 'create table' operation should fail because of +# using NULL datatype +--error ER_CANT_CREATE_TABLE +CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB + AS SELECT IF(NULL IS NOT NULL, NULL, NULL); + diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result b/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result new file mode 100644 index 00000000000..9574381d8e1 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result @@ -0,0 +1,3 @@ +CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB +AS SELECT IF(NULL IS NOT NULL, NULL, NULL); +ERROR HY000: Can't create table 'test.TABLE_54044' (errno: -1) diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test b/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test new file mode 100644 index 00000000000..8958dba1c9b --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test @@ -0,0 +1,11 @@ +# This is the test for bug #54044. Special handle MYSQL_TYPE_NULL type +# during create table, so it will not trigger assertion failure. + +--source include/have_innodb_plugin.inc + +# This 'create table' operation should fail because of +# using NULL datatype +--error ER_CANT_CREATE_TABLE +CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB + AS SELECT IF(NULL IS NOT NULL, NULL, NULL); + diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index cf7ec4d6e6f..49fa3907bc4 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -3236,6 +3236,11 @@ get_innobase_type_from_mysql_type( case MYSQL_TYPE_BLOB: case MYSQL_TYPE_LONG_BLOB: return(DATA_BLOB); + case MYSQL_TYPE_NULL: + /* MySQL currently accepts "NULL" datatype, but will + reject such datatype in the next release. We will cope + with it and not trigger assertion failure in 5.1 */ + break; default: assert(0); } @@ -5257,7 +5262,22 @@ create_table_def( field = form->field[i]; col_type = get_innobase_type_from_mysql_type(&unsigned_type, - field); + field); + + if (!col_type) { + push_warning_printf( + (THD*) trx->mysql_thd, + MYSQL_ERROR::WARN_LEVEL_WARN, + ER_CANT_CREATE_TABLE, + "Error creating table '%s' with " + "column '%s'. Please check its " + "column type and try to re-create " + "the table with an appropriate " + "column type.", + table->name, (char*) field->field_name); + goto err_col; + } + if (field->null_ptr) { nulls_allowed = 0; } else { @@ -5314,7 +5334,7 @@ create_table_def( "different column name.", table->name, (char*) field->field_name, (char*) field->field_name); - +err_col: dict_mem_table_free(table); trx_commit_for_mysql(trx); diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 89823642957..9ea9d2cd153 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,8 @@ +2010-06-22 The InnoDB Team + + * handler/ha_innodb.cc, innodb_bug54044.test, innodb_bug54044.result + Fix Bug#54044, Create temporary tables and using innodb crashes. + 2010-05-25 The InnoDB Team * handler/ha_innodb.cc, include/row0mysql.h, row/row0mysql.c: diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index c65ba3163fc..e5327863db4 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -3950,6 +3950,11 @@ get_innobase_type_from_mysql_type( case MYSQL_TYPE_BLOB: case MYSQL_TYPE_LONG_BLOB: return(DATA_BLOB); + case MYSQL_TYPE_NULL: + /* MySQL currently accepts "NULL" datatype, but will + reject such datatype in the next release. We will cope + with it and not trigger assertion failure in 5.1 */ + break; default: ut_error; } @@ -5997,7 +6002,22 @@ create_table_def( field = form->field[i]; col_type = get_innobase_type_from_mysql_type(&unsigned_type, - field); + field); + + if (!col_type) { + push_warning_printf( + (THD*) trx->mysql_thd, + MYSQL_ERROR::WARN_LEVEL_WARN, + ER_CANT_CREATE_TABLE, + "Error creating table '%s' with " + "column '%s'. Please check its " + "column type and try to re-create " + "the table with an appropriate " + "column type.", + table->name, (char*) field->field_name); + goto err_col; + } + if (field->null_ptr) { nulls_allowed = 0; } else { @@ -6055,7 +6075,7 @@ create_table_def( if (dict_col_name_is_reserved(field->field_name)){ my_error(ER_WRONG_COLUMN_NAME, MYF(0), field->field_name); - +err_col: dict_mem_table_free(table); trx_commit_for_mysql(trx); From 42011fb716a751f3e71ce47191a93c6ac6d69d32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 24 Jun 2010 13:46:20 +0300 Subject: [PATCH 220/461] Bug#54679: alter table causes compressed row_format to revert to compact ha_innobase::create(): Add the local variable row_type = form->s->row_type. Adjust it to ROW_TYPE_COMPRESSED when ROW_FORMAT is not specified or inherited but KEY_BLOCK_SIZE is. Observe the inherited ROW_FORMAT even when it is not explicitly specified. innodb_bug54679.test: New test, to test the bug and to ensure that there are no regressions. (The only difference in the test result without the patch applied is that the first ALTER TABLE changes ROW_FORMAT to Compact.) --- .../innodb_plugin/r/innodb_bug54679.result | 91 ++++++++++ .../innodb_plugin/t/innodb_bug54679.test | 97 +++++++++++ storage/innodb_plugin/handler/ha_innodb.cc | 159 +++++++++--------- 3 files changed, 268 insertions(+), 79 deletions(-) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug54679.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug54679.test diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug54679.result b/mysql-test/suite/innodb_plugin/r/innodb_bug54679.result new file mode 100644 index 00000000000..14fd32ca469 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug54679.result @@ -0,0 +1,91 @@ +SET GLOBAL innodb_file_format='Barracuda'; +SET GLOBAL innodb_file_per_table=ON; +SET innodb_strict_mode=ON; +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; +TABLE_NAME ROW_FORMAT CREATE_OPTIONS +bug54679 Compressed row_format=COMPRESSED +ALTER TABLE bug54679 ADD COLUMN b INT; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; +TABLE_NAME ROW_FORMAT CREATE_OPTIONS +bug54679 Compressed row_format=COMPRESSED +DROP TABLE bug54679; +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; +TABLE_NAME ROW_FORMAT CREATE_OPTIONS +bug54679 Compact +ALTER TABLE bug54679 KEY_BLOCK_SIZE=1; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; +TABLE_NAME ROW_FORMAT CREATE_OPTIONS +bug54679 Compressed KEY_BLOCK_SIZE=1 +ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT; +ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) +SHOW WARNINGS; +Level Code Message +Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE. +Error 1005 Can't create table '#sql-temporary' (errno: 1478) +DROP TABLE bug54679; +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; +TABLE_NAME ROW_FORMAT CREATE_OPTIONS +bug54679 Redundant row_format=REDUNDANT +ALTER TABLE bug54679 KEY_BLOCK_SIZE=2; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; +TABLE_NAME ROW_FORMAT CREATE_OPTIONS +bug54679 Compressed row_format=REDUNDANT KEY_BLOCK_SIZE=2 +SET GLOBAL innodb_file_format=Antelope; +ALTER TABLE bug54679 KEY_BLOCK_SIZE=4; +ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) +SHOW WARNINGS; +Level Code Message +Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. +Error 1005 Can't create table '#sql-temporary' (errno: 1478) +ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC; +ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) +SHOW WARNINGS; +Level Code Message +Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. +Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope. +Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE. +Error 1005 Can't create table '#sql-temporary' (errno: 1478) +DROP TABLE bug54679; +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +ERROR HY000: Can't create table 'test.bug54679' (errno: 1478) +SHOW WARNINGS; +Level Code Message +Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope. +Error 1005 Can't create table 'test.bug54679' (errno: 1478) +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB; +SET GLOBAL innodb_file_format=Barracuda; +SET GLOBAL innodb_file_per_table=OFF; +ALTER TABLE bug54679 KEY_BLOCK_SIZE=4; +ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) +SHOW WARNINGS; +Level Code Message +Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table. +Error 1005 Can't create table '#sql-temporary' (errno: 1478) +ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC; +ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) +SHOW WARNINGS; +Level Code Message +Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table. +Error 1005 Can't create table '#sql-temporary' (errno: 1478) +DROP TABLE bug54679; +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +ERROR HY000: Can't create table 'test.bug54679' (errno: 1478) +SHOW WARNINGS; +Level Code Message +Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table. +Error 1005 Can't create table 'test.bug54679' (errno: 1478) +SET GLOBAL innodb_file_per_table=ON; +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +DROP TABLE bug54679; +SET GLOBAL innodb_file_format=Antelope; +SET GLOBAL innodb_file_format_check=Antelope; +SET GLOBAL innodb_file_per_table=0; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug54679.test b/mysql-test/suite/innodb_plugin/t/innodb_bug54679.test new file mode 100644 index 00000000000..863d9847ac1 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug54679.test @@ -0,0 +1,97 @@ +# Test Bug #54679 alter table causes compressed row_format to revert to compact + +--source include/have_innodb_plugin.inc + +let $file_format=`select @@innodb_file_format`; +let $file_format_check=`select @@innodb_file_format_check`; +let $file_per_table=`select @@innodb_file_per_table`; +SET GLOBAL innodb_file_format='Barracuda'; +SET GLOBAL innodb_file_per_table=ON; +SET innodb_strict_mode=ON; + +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; + +# The ROW_FORMAT of the table should be preserved when it is not specified +# in ALTER TABLE. +ALTER TABLE bug54679 ADD COLUMN b INT; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; + +DROP TABLE bug54679; + +# Check that the ROW_FORMAT conversion to/from COMPRESSED works. + +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; + +# KEY_BLOCK_SIZE implies COMPRESSED. +ALTER TABLE bug54679 KEY_BLOCK_SIZE=1; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; + +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +--error ER_CANT_CREATE_TABLE +ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT; +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +SHOW WARNINGS; +DROP TABLE bug54679; +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; + +ALTER TABLE bug54679 KEY_BLOCK_SIZE=2; +SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables +WHERE TABLE_NAME='bug54679'; + +# This prevents other than REDUNDANT or COMPACT ROW_FORMAT for new tables. +SET GLOBAL innodb_file_format=Antelope; + +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +--error ER_CANT_CREATE_TABLE +ALTER TABLE bug54679 KEY_BLOCK_SIZE=4; +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +SHOW WARNINGS; +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +--error ER_CANT_CREATE_TABLE +ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC; +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +SHOW WARNINGS; +DROP TABLE bug54679; +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +--error ER_CANT_CREATE_TABLE +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +SHOW WARNINGS; +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB; + +SET GLOBAL innodb_file_format=Barracuda; +# This will prevent ROW_FORMAT=COMPRESSED, because the system tablespace +# cannot be compressed. +SET GLOBAL innodb_file_per_table=OFF; + +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +--error ER_CANT_CREATE_TABLE +ALTER TABLE bug54679 KEY_BLOCK_SIZE=4; +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +SHOW WARNINGS; +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +--error ER_CANT_CREATE_TABLE +ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC; +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +SHOW WARNINGS; +DROP TABLE bug54679; +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +--error ER_CANT_CREATE_TABLE +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/ +SHOW WARNINGS; +SET GLOBAL innodb_file_per_table=ON; +CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +DROP TABLE bug54679; + +EVAL SET GLOBAL innodb_file_format=$file_format; +EVAL SET GLOBAL innodb_file_format_check=$file_format_check; +EVAL SET GLOBAL innodb_file_per_table=$file_per_table; diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index 3f8dc97e4b5..aa80814dbe0 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -6460,6 +6460,7 @@ ha_innobase::create( const ulint file_format = srv_file_format; const char* stmt; size_t stmt_len; + enum row_type row_type; DBUG_ENTER("ha_innobase::create"); @@ -6580,94 +6581,94 @@ ha_innobase::create( } } - if (create_info->used_fields & HA_CREATE_USED_ROW_FORMAT) { - if (flags) { - /* KEY_BLOCK_SIZE was specified. */ - if (form->s->row_type != ROW_TYPE_COMPRESSED) { - /* ROW_FORMAT other than COMPRESSED - ignores KEY_BLOCK_SIZE. It does not - make sense to reject conflicting - KEY_BLOCK_SIZE and ROW_FORMAT, because - such combinations can be obtained - with ALTER TABLE anyway. */ - push_warning_printf( - thd, - MYSQL_ERROR::WARN_LEVEL_WARN, - ER_ILLEGAL_HA_CREATE_OPTION, - "InnoDB: ignoring KEY_BLOCK_SIZE=%lu" - " unless ROW_FORMAT=COMPRESSED.", - create_info->key_block_size); - flags = 0; - } - } else { - /* No KEY_BLOCK_SIZE */ - if (form->s->row_type == ROW_TYPE_COMPRESSED) { - /* ROW_FORMAT=COMPRESSED without - KEY_BLOCK_SIZE implies half the - maximum KEY_BLOCK_SIZE. */ - flags = (DICT_TF_ZSSIZE_MAX - 1) - << DICT_TF_ZSSIZE_SHIFT - | DICT_TF_COMPACT - | DICT_TF_FORMAT_ZIP - << DICT_TF_FORMAT_SHIFT; + row_type = form->s->row_type; + + if (flags) { + /* KEY_BLOCK_SIZE was specified. */ + if (!(create_info->used_fields & HA_CREATE_USED_ROW_FORMAT)) { + /* ROW_FORMAT was not specified; + default to ROW_FORMAT=COMPRESSED */ + row_type = ROW_TYPE_COMPRESSED; + } else if (row_type != ROW_TYPE_COMPRESSED) { + /* ROW_FORMAT other than COMPRESSED + ignores KEY_BLOCK_SIZE. It does not + make sense to reject conflicting + KEY_BLOCK_SIZE and ROW_FORMAT, because + such combinations can be obtained + with ALTER TABLE anyway. */ + push_warning_printf( + thd, + MYSQL_ERROR::WARN_LEVEL_WARN, + ER_ILLEGAL_HA_CREATE_OPTION, + "InnoDB: ignoring KEY_BLOCK_SIZE=%lu" + " unless ROW_FORMAT=COMPRESSED.", + create_info->key_block_size); + flags = 0; + } + } else { + /* No KEY_BLOCK_SIZE */ + if (row_type == ROW_TYPE_COMPRESSED) { + /* ROW_FORMAT=COMPRESSED without + KEY_BLOCK_SIZE implies half the + maximum KEY_BLOCK_SIZE. */ + flags = (DICT_TF_ZSSIZE_MAX - 1) + << DICT_TF_ZSSIZE_SHIFT + | DICT_TF_COMPACT + | DICT_TF_FORMAT_ZIP + << DICT_TF_FORMAT_SHIFT; #if DICT_TF_ZSSIZE_MAX < 1 # error "DICT_TF_ZSSIZE_MAX < 1" #endif - } } + } - switch (form->s->row_type) { - const char* row_format_name; - case ROW_TYPE_REDUNDANT: - break; - case ROW_TYPE_COMPRESSED: - case ROW_TYPE_DYNAMIC: - row_format_name - = form->s->row_type == ROW_TYPE_COMPRESSED - ? "COMPRESSED" - : "DYNAMIC"; + switch (row_type) { + const char* row_format_name; + case ROW_TYPE_REDUNDANT: + break; + case ROW_TYPE_COMPRESSED: + case ROW_TYPE_DYNAMIC: + row_format_name + = row_type == ROW_TYPE_COMPRESSED + ? "COMPRESSED" + : "DYNAMIC"; - if (!srv_file_per_table) { - push_warning_printf( - thd, - MYSQL_ERROR::WARN_LEVEL_WARN, - ER_ILLEGAL_HA_CREATE_OPTION, - "InnoDB: ROW_FORMAT=%s" - " requires innodb_file_per_table.", - row_format_name); - } else if (file_format < DICT_TF_FORMAT_ZIP) { - push_warning_printf( - thd, - MYSQL_ERROR::WARN_LEVEL_WARN, - ER_ILLEGAL_HA_CREATE_OPTION, - "InnoDB: ROW_FORMAT=%s" - " requires innodb_file_format >" - " Antelope.", - row_format_name); - } else { - flags |= DICT_TF_COMPACT - | (DICT_TF_FORMAT_ZIP - << DICT_TF_FORMAT_SHIFT); - break; - } - - /* fall through */ - case ROW_TYPE_NOT_USED: - case ROW_TYPE_FIXED: - default: - push_warning(thd, - MYSQL_ERROR::WARN_LEVEL_WARN, - ER_ILLEGAL_HA_CREATE_OPTION, - "InnoDB: assuming ROW_FORMAT=COMPACT."); - case ROW_TYPE_DEFAULT: - case ROW_TYPE_COMPACT: - flags = DICT_TF_COMPACT; + if (!srv_file_per_table) { + push_warning_printf( + thd, + MYSQL_ERROR::WARN_LEVEL_WARN, + ER_ILLEGAL_HA_CREATE_OPTION, + "InnoDB: ROW_FORMAT=%s" + " requires innodb_file_per_table.", + row_format_name); + } else if (file_format < DICT_TF_FORMAT_ZIP) { + push_warning_printf( + thd, + MYSQL_ERROR::WARN_LEVEL_WARN, + ER_ILLEGAL_HA_CREATE_OPTION, + "InnoDB: ROW_FORMAT=%s" + " requires innodb_file_format >" + " Antelope.", + row_format_name); + } else { + flags |= DICT_TF_COMPACT + | (DICT_TF_FORMAT_ZIP + << DICT_TF_FORMAT_SHIFT); break; } - } else if (!flags) { - /* No KEY_BLOCK_SIZE or ROW_FORMAT specified: - use ROW_FORMAT=COMPACT by default. */ + + /* fall through */ + case ROW_TYPE_NOT_USED: + case ROW_TYPE_FIXED: + default: + push_warning(thd, + MYSQL_ERROR::WARN_LEVEL_WARN, + ER_ILLEGAL_HA_CREATE_OPTION, + "InnoDB: assuming ROW_FORMAT=COMPACT."); + case ROW_TYPE_DEFAULT: + case ROW_TYPE_COMPACT: flags = DICT_TF_COMPACT; + break; } /* Look for a primary key */ From 79f71e1915f1337e3d866fb9e874f0df0bdf1fa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 24 Jun 2010 13:48:20 +0300 Subject: [PATCH 221/461] Add ChangeLog entry for Bug#54679 --- storage/innodb_plugin/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 36bc5551a2b..5103538cb69 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-06-24 The InnoDB Team + + * handler/ha_innodb.cc: + Fix Bug#54679 alter table causes compressed row_format to revert + to compact + 2010-06-22 The InnoDB Team * dict/dict0dict.c, dict/dict0mem.c, include/dict0mem.h, From 4cf3e93339dbd16ab0901900ce64ecb4a6362a3f Mon Sep 17 00:00:00 2001 From: Inaam Rana Date: Thu, 24 Jun 2010 08:44:50 -0400 Subject: [PATCH 222/461] Add ChangeLog for bug#39168 --- storage/innodb_plugin/ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 971de4a9d27..cc794fab33a 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,10 @@ +2010-06-10 The InnoDB Team + + * include/log0log.ic, row/row0ins.c, row/row0purge.c, + row/row0uins.c, row/row0umod.c, row/row0upd.c: + Fix Bug#39168 ERROR: the age of the last checkpoint ... exceeds + the log group capacity + 2010-06-08 The InnoDB Team * dict/dict0load.c: From 2b734bbee9aeb98a64a5b59808f56342819053a7 Mon Sep 17 00:00:00 2001 From: Martin Hansson Date: Thu, 24 Jun 2010 15:21:23 +0200 Subject: [PATCH 223/461] Bug#41660: Sort-index_merge for non-first join table may require O(#scans) memory When an index merge operation was restarted, it would re-allocate the Unique object controlling the duplicate row ID elimination. Fixed by making the Unique object a member of QUICK_INDEX_MERGE_SELECT and thus reusing it throughout the lifetime of this object. --- mysql-test/r/error_simulation.result | 35 ++++++++++++++++++++++++++ mysql-test/t/error_simulation.test | 29 ++++++++++++++++++++++ sql/opt_range.cc | 37 ++++++++++++++-------------- sql/opt_range.h | 3 ++- sql/sql_class.h | 3 +++ 5 files changed, 88 insertions(+), 19 deletions(-) diff --git a/mysql-test/r/error_simulation.result b/mysql-test/r/error_simulation.result index fc58687cc86..b6b79cb596b 100644 --- a/mysql-test/r/error_simulation.result +++ b/mysql-test/r/error_simulation.result @@ -48,5 +48,40 @@ Got one of the listed errors SET SESSION debug=DEFAULT; DROP TABLE t1; # +# Bug#41660: Sort-index_merge for non-first join table may require +# O(#scans) memory +# +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9); +CREATE TABLE t2 (a INT, b INT, filler CHAR(100), KEY(a), KEY(b)); +INSERT INTO t2 SELECT 1000, 1000, 'filler' FROM t1 A, t1 B, t1 C; +INSERT INTO t2 VALUES (1, 1, 'data'); +# the example query uses LEFT JOIN only for the sake of being able to +# demonstrate the issue with a very small dataset. (left outer join +# disables the use of join buffering, so we get the second table +# re-scanned for every record in the outer table. if we used inner join, +# we would need to have thousands of records and/or more columns in both +# tables so that the join buffer is filled and re-scans are triggered). +SET SESSION debug = '+d,only_one_Unique_may_be_created'; +EXPLAIN +SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 ); +id select_type table type possible_keys key key_len ref rows Extra +x x x x x x x x x +x x x x x x x x x Using sort_union(a,b); Using where +SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 ); +a a b filler +0 1 1 data +1 1 1 data +2 1 1 data +3 1 1 data +4 1 1 data +5 1 1 data +6 1 1 data +7 1 1 data +8 1 1 data +9 1 1 data +SET SESSION debug = DEFAULT; +DROP TABLE t1, t2; +# # End of 5.1 tests # diff --git a/mysql-test/t/error_simulation.test b/mysql-test/t/error_simulation.test index 7a48a2e3231..8e65c338f36 100644 --- a/mysql-test/t/error_simulation.test +++ b/mysql-test/t/error_simulation.test @@ -45,6 +45,35 @@ SHOW CREATE TABLE t1; SELECT * FROM t1; DROP TABLE t1; +-- echo # +-- echo # Bug#41660: Sort-index_merge for non-first join table may require +-- echo # O(#scans) memory +-- echo # + +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9); + +CREATE TABLE t2 (a INT, b INT, filler CHAR(100), KEY(a), KEY(b)); +INSERT INTO t2 SELECT 1000, 1000, 'filler' FROM t1 A, t1 B, t1 C; +INSERT INTO t2 VALUES (1, 1, 'data'); + +--echo # the example query uses LEFT JOIN only for the sake of being able to +--echo # demonstrate the issue with a very small dataset. (left outer join +--echo # disables the use of join buffering, so we get the second table +--echo # re-scanned for every record in the outer table. if we used inner join, +--echo # we would need to have thousands of records and/or more columns in both +--echo # tables so that the join buffer is filled and re-scans are triggered). + +SET SESSION debug = '+d,only_one_Unique_may_be_created'; + +--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x +EXPLAIN +SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 ); +SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 ); + +SET SESSION debug = DEFAULT; + +DROP TABLE t1, t2; --echo # --echo # Bug#42064: low memory crash when importing hex strings, in Item_hex_string::Item_hex_string diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 2f4281d539f..f2f14a2dcc9 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -1194,7 +1194,7 @@ QUICK_RANGE_SELECT::~QUICK_RANGE_SELECT() QUICK_INDEX_MERGE_SELECT::QUICK_INDEX_MERGE_SELECT(THD *thd_param, TABLE *table) - :pk_quick_select(NULL), thd(thd_param) + :unique(NULL), pk_quick_select(NULL), thd(thd_param) { DBUG_ENTER("QUICK_INDEX_MERGE_SELECT::QUICK_INDEX_MERGE_SELECT"); index= MAX_KEY; @@ -1236,6 +1236,7 @@ QUICK_INDEX_MERGE_SELECT::~QUICK_INDEX_MERGE_SELECT() List_iterator_fast quick_it(quick_selects); QUICK_RANGE_SELECT* quick; DBUG_ENTER("QUICK_INDEX_MERGE_SELECT::~QUICK_INDEX_MERGE_SELECT"); + delete unique; quick_it.rewind(); while ((quick= quick_it++)) quick->file= NULL; @@ -8153,7 +8154,6 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_and_merge() List_iterator_fast cur_quick_it(quick_selects); QUICK_RANGE_SELECT* cur_quick; int result; - Unique *unique; handler *file= head->file; DBUG_ENTER("QUICK_INDEX_MERGE_SELECT::read_keys_and_merge"); @@ -8172,9 +8172,22 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_and_merge() if (cur_quick->init() || cur_quick->reset()) DBUG_RETURN(1); - unique= new Unique(refpos_order_cmp, (void *)file, - file->ref_length, - thd->variables.sortbuff_size); + if (unique == NULL) + { + DBUG_EXECUTE_IF("index_merge_may_not_create_a_Unique", abort(); ); + DBUG_EXECUTE_IF("only_one_Unique_may_be_created", + DBUG_SET("+d,index_merge_may_not_create_a_Unique"); ); + + unique= new Unique(refpos_order_cmp, (void *)file, + file->ref_length, + thd->variables.sortbuff_size); + } + else + unique->reset(); + + DBUG_ASSERT(file->ref_length == unique->get_size()); + DBUG_ASSERT(thd->variables.sortbuff_size == unique->get_max_in_memory_size()); + if (!unique) DBUG_RETURN(1); for (;;) @@ -8189,10 +8202,7 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_and_merge() if (cur_quick->file->inited != handler::NONE) cur_quick->file->ha_index_end(); if (cur_quick->init() || cur_quick->reset()) - { - delete unique; DBUG_RETURN(1); - } } if (result) @@ -8200,17 +8210,13 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_and_merge() if (result != HA_ERR_END_OF_FILE) { cur_quick->range_end(); - delete unique; DBUG_RETURN(result); } break; } if (thd->killed) - { - delete unique; DBUG_RETURN(1); - } /* skip row if it will be retrieved by clustered PK scan */ if (pk_quick_select && pk_quick_select->row_in_ranges()) @@ -8219,10 +8225,7 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_and_merge() cur_quick->file->position(cur_quick->record); result= unique->unique_add((char*)cur_quick->file->ref); if (result) - { - delete unique; DBUG_RETURN(1); - } } /* @@ -8231,7 +8234,6 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_and_merge() sequence. */ result= unique->get(head); - delete unique; doing_pk_scan= FALSE; /* index_merge currently doesn't support "using index" at all */ head->set_keyread(FALSE); @@ -10277,7 +10279,7 @@ QUICK_GROUP_MIN_MAX_SELECT(TABLE *table, JOIN *join_arg, bool have_min_arg, uint use_index, double read_cost_arg, ha_rows records_arg, uint key_infix_len_arg, uchar *key_infix_arg, MEM_ROOT *parent_alloc) - :join(join_arg), index_info(index_info_arg), + :file(table->file), join(join_arg), index_info(index_info_arg), group_prefix_len(group_prefix_len_arg), group_key_parts(group_key_parts_arg), have_min(have_min_arg), have_max(have_max_arg), seen_first_key(FALSE), @@ -10286,7 +10288,6 @@ QUICK_GROUP_MIN_MAX_SELECT(TABLE *table, JOIN *join_arg, bool have_min_arg, max_functions_it(NULL) { head= table; - file= head->file; index= use_index; record= head->record[0]; tmp_record= head->record[1]; diff --git a/sql/opt_range.h b/sql/opt_range.h index e7d8297faf8..edae1e4114a 100644 --- a/sql/opt_range.h +++ b/sql/opt_range.h @@ -500,6 +500,7 @@ public: class QUICK_INDEX_MERGE_SELECT : public QUICK_SELECT_I { + Unique *unique; public: QUICK_INDEX_MERGE_SELECT(THD *thd, TABLE *table); ~QUICK_INDEX_MERGE_SELECT(); @@ -684,7 +685,7 @@ private: class QUICK_GROUP_MIN_MAX_SELECT : public QUICK_SELECT_I { private: - handler *file; /* The handler used to get data. */ + handler * const file; /* The handler used to get data. */ JOIN *join; /* Descriptor of the current query */ KEY *index_info; /* The index chosen for data access */ uchar *record; /* Buffer where the next record is returned. */ diff --git a/sql/sql_class.h b/sql/sql_class.h index 19a433746e4..4c1d4a98db0 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -2935,6 +2935,9 @@ public: void reset(); bool walk(tree_walk_action action, void *walk_action_arg); + uint get_size() const { return size; } + ulonglong get_max_in_memory_size() const { return max_in_memory_size; } + friend int unique_write_to_file(uchar* key, element_count count, Unique *unique); friend int unique_write_to_ptrs(uchar* key, element_count count, Unique *unique); }; From a515a9ed230a2eecd99b35241c6c4001ed5fd8df Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Thu, 24 Jun 2010 21:13:08 +0400 Subject: [PATCH 224/461] Accidentally pushed test changes (#54459) removed. --- mysql-test/t/select.test | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 37f3675780b..db08aad0df0 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -4087,9 +4087,5 @@ EXPLAIN SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci; SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci; DROP TABLE t1; -create table t1(a enum('a'))engine=myisam charset=latin1; -insert into t1 values (''),(''),(''),(NULL); -select a, substr(a, 0, 0) from t1 order by substr(a, 0, 0); -select a, a collate latin1_german2_ci from t1 order by a collate latin1_german2_ci; --echo End of 5.1 tests From 4ee9e66d87cc9ee265b502f803c6884fa3f45940 Mon Sep 17 00:00:00 2001 From: Hakan Kuecuekyilmaz Date: Thu, 24 Jun 2010 22:40:30 +0200 Subject: [PATCH 225/461] Make MariaDB compile with VS 2010 Most of the changes are backports from MySQL 5.5. Please note that the 64-bit build fails with VS 2010 and the 32-bit build has problems running mysql-test-run.pl. * Added files for compiling with VS 2010 and added them to Makefile.am. * ifdef'ed ETIMEDOUT, because it is defined by VS 2010 now * Removed not needed /MAP's from cmake files --- CMakeLists.txt | 3 +-- include/my_pthread.h | 4 +++- sql/CMakeLists.txt | 1 - win/Makefile.am | 3 ++- win/build-vs10.bat | 18 ++++++++++++++++++ win/build-vs10_x64.bat | 18 ++++++++++++++++++ win/configure-mariadb.sh | 8 +++----- 7 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 win/build-vs10.bat create mode 100644 win/build-vs10_x64.bat diff --git a/CMakeLists.txt b/CMakeLists.txt index db7415ed0e5..e998fe1825b 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,8 +116,7 @@ IF(MSVC) STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT}) - # generate map files, set stack size (see bug#20815) - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS") + # set stack size (see bug#20815) SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576") # remove support for Exception handling diff --git a/include/my_pthread.h b/include/my_pthread.h index 9b01146cdde..ee5a77f0216 100644 --- a/include/my_pthread.h +++ b/include/my_pthread.h @@ -128,7 +128,9 @@ struct tm *gmtime_r(const time_t *timep,struct tm *tmp); void pthread_exit(void *a); /* was #define pthread_exit(A) ExitThread(A)*/ -#define ETIMEDOUT 145 /* Win32 doesn't have this */ +#ifndef ETIMEDOUT +#define ETIMEDOUT 145 +#endif #define getpid() GetCurrentThreadId() #define HAVE_LOCALTIME_R 1 #define _REENTRANT 1 diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 246b7033740..b7da65a9dda 100755 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -18,7 +18,6 @@ SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR /Zi") SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR /Zi") -SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /MAP /MAPINFO:EXPORTS") INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/extra/yassl/include diff --git a/win/Makefile.am b/win/Makefile.am index fceebb07a59..18bfe8ddf81 100644 --- a/win/Makefile.am +++ b/win/Makefile.am @@ -17,7 +17,8 @@ EXTRA_DIST = build-vs71.bat build-vs8.bat build-vs8_x64.bat build-vs9.bat \ build-vs9_x64.bat configure.js README mysql_manifest.cmake \ create_manifest.js create_def_file.js build-nmake.bat \ - build-nmake-x64.bat configure-mariadb.sh make_mariadb_win_dist + build-nmake-x64.bat configure-mariadb.sh make_mariadb_win_dist \ + build-vs10.bat build-vs10_x64.bat # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/win/build-vs10.bat b/win/build-vs10.bat new file mode 100644 index 00000000000..b67ac7e9753 --- /dev/null +++ b/win/build-vs10.bat @@ -0,0 +1,18 @@ +@echo off + +REM Copyright (C) 2010 Monty Program AB +REM +REM This program is free software; you can redistribute it and/or modify +REM it under the terms of the GNU General Public License as published by +REM the Free Software Foundation; version 2 of the License. +REM +REM This program is distributed in the hope that it will be useful, +REM but WITHOUT ANY WARRANTY; without even the implied warranty of +REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +REM GNU General Public License for more details. +REM +REM You should have received a copy of the GNU General Public License +REM along with this program; if not, write to the Free Software +REM Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +cmake -G "Visual Studio 10" + diff --git a/win/build-vs10_x64.bat b/win/build-vs10_x64.bat new file mode 100644 index 00000000000..f84e826ac65 --- /dev/null +++ b/win/build-vs10_x64.bat @@ -0,0 +1,18 @@ +@echo off + +REM Copyright (C) 2010 Monty Program AB +REM +REM This program is free software; you can redistribute it and/or modify +REM it under the terms of the GNU General Public License as published by +REM the Free Software Foundation; version 2 of the License. +REM +REM This program is distributed in the hope that it will be useful, +REM but WITHOUT ANY WARRANTY; without even the implied warranty of +REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +REM GNU General Public License for more details. +REM +REM You should have received a copy of the GNU General Public License +REM along with this program; if not, write to the Free Software +REM Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +cmake -G "Visual Studio 10 Win64" + diff --git a/win/configure-mariadb.sh b/win/configure-mariadb.sh index 294b1530788..b6063a20dc4 100644 --- a/win/configure-mariadb.sh +++ b/win/configure-mariadb.sh @@ -15,9 +15,7 @@ cscript win/configure.js \ WITH_FEDERATED_STORAGE_ENGINE \ WITH_MERGE_STORAGE_ENGINE \ WITH_PARTITION_STORAGE_ENGINE \ - WITH_MARIA_STORAGE_ENGINE \ - WITH_PBXT_STORAGE_ENGINE \ - WITH_XTRADB_STORAGE_ENGINE \ + WITH_MARIA_STORAGE_ENGINE \ + WITH_PBXT_STORAGE_ENGINE \ + WITH_XTRADB_STORAGE_ENGINE \ WITH_EMBEDDED_SERVER - - From 2a86768e9e1ca85ec4380e29df72fbdcea34a85d Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Fri, 25 Jun 2010 12:01:47 +0400 Subject: [PATCH 226/461] Bug#54422 query with = 'variables' During creation of the table list of processed tables hidden I_S table 'VARIABLES' is erroneously added into the table list. it leads to ER_UNKNOWN_TABLE error in TABLE_LIST::add_table_to_list() function. The fix is to skip addition of hidden I_S tables into the table list. mysql-test/r/information_schema.result: test case mysql-test/t/information_schema.test: test case sql/sql_show.cc: The fix is to skip addition of hidden I_S tables into the table list. --- mysql-test/r/information_schema.result | 10 ++++++++++ mysql-test/t/information_schema.test | 9 +++++++++ sql/sql_show.cc | 4 +++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 4ed7e4e700b..b7b65598c6d 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -1747,4 +1747,14 @@ COUNT(*) DROP USER nonpriv; DROP TABLE db1.t1; DROP DATABASE db1; + +Bug#54422 query with = 'variables' + +CREATE TABLE variables(f1 INT); +SELECT COLUMN_DEFAULT, TABLE_NAME +FROM INFORMATION_SCHEMA.COLUMNS +WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'variables'; +COLUMN_DEFAULT TABLE_NAME +NULL variables +DROP TABLE variables; End of 5.1 tests. diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index f3ce3d87252..fa4b880aead 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -1445,6 +1445,15 @@ DROP USER nonpriv; DROP TABLE db1.t1; DROP DATABASE db1; +--echo +--echo Bug#54422 query with = 'variables' +--echo + +CREATE TABLE variables(f1 INT); +SELECT COLUMN_DEFAULT, TABLE_NAME +FROM INFORMATION_SCHEMA.COLUMNS +WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'variables'; +DROP TABLE variables; --echo End of 5.1 tests. diff --git a/sql/sql_show.cc b/sql/sql_show.cc index f634c149fd9..33abf356718 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2921,7 +2921,9 @@ make_table_name_list(THD *thd, List *table_names, LEX *lex, { if (with_i_schema) { - if (find_schema_table(thd, lookup_field_vals->table_value.str)) + ST_SCHEMA_TABLE *schema_table= + find_schema_table(thd, lookup_field_vals->table_value.str); + if (schema_table && !schema_table->hidden) { if (table_names->push_back(&lookup_field_vals->table_value)) return 1; From 7299858763289eab8c9fbe8048f86abebdf4d50d Mon Sep 17 00:00:00 2001 From: Sunny Bains Date: Fri, 25 Jun 2010 18:18:41 +1000 Subject: [PATCH 227/461] Fix bug#54583. This change reverses rsvn:1350 by getting rid of a bogus assertion and clarifies the invariant in dict_table_get_on_id(). In Mar 2007 Marko observed a crash during recovery, the crash resulted from an UNDO operation on a system table. His solution was to acquire an X lock on the data dictionary, this in hindsight was an overkill. It is unclear what caused the crash, current hypothesis is that it was a memory corruption. The X lock results in performance issues by when undoing changes due to rollback during normal operation on regular tables. Why the change is safe: ====================== The InnoDB code has changed since the original X lock change was made. In the new code we always lock the data dictionary in X mode during startup when UNDOing operations on the system tables (this is a given). This ensures that the crash Marko observed cannot happen as long as all transactions that update the system tables follow the standard rules by setting the appropriate DICT_OP flag when writing the log records when they make the changes. If transactions violate the above mentioned rule then during recovery (at startup) the rollback code (see trx0roll.c) will not acquire the X lock and we will see the crash again. This will however be a different bug. --- storage/innobase/dict/dict0dict.c | 10 ++++------ storage/innobase/include/sync0sync.h | 2 +- storage/innobase/row/row0undo.c | 4 ++-- storage/innodb_plugin/dict/dict0dict.c | 10 ++++------ storage/innodb_plugin/include/sync0sync.h | 2 +- storage/innodb_plugin/row/row0undo.c | 4 ++-- 6 files changed, 14 insertions(+), 18 deletions(-) diff --git a/storage/innobase/dict/dict0dict.c b/storage/innobase/dict/dict0dict.c index d3b277d2d7a..d2b59469cdc 100644 --- a/storage/innobase/dict/dict0dict.c +++ b/storage/innobase/dict/dict0dict.c @@ -618,13 +618,11 @@ dict_table_get_on_id( if (ut_dulint_cmp(table_id, DICT_FIELDS_ID) <= 0 || trx->dict_operation_lock_mode == RW_X_LATCH) { - /* It is a system table which will always exist in the table - cache: we avoid acquiring the dictionary mutex, because - if we are doing a rollback to handle an error in TABLE - CREATE, for example, we already have the mutex! */ - ut_ad(mutex_own(&(dict_sys->mutex)) - || trx->dict_operation_lock_mode == RW_X_LATCH); + /* Note: An X latch implies that the transaction + already owns the dictionary mutex. */ + + ut_ad(mutex_own(&dict_sys->mutex)); return(dict_table_get_on_id_low(table_id)); } diff --git a/storage/innobase/include/sync0sync.h b/storage/innobase/include/sync0sync.h index 6a61330f97e..9430d4cb723 100644 --- a/storage/innobase/include/sync0sync.h +++ b/storage/innobase/include/sync0sync.h @@ -401,7 +401,7 @@ or row lock! */ locked; see e.g. ibuf_bitmap_get_map_page(). */ #define SYNC_DICT_OPERATION 1001 /* table create, drop, etc. reserve - this in X-mode, implicit or backround + this in X-mode; implicit or backround operations purge, rollback, foreign key checks reserve this in S-mode */ #define SYNC_DICT 1000 diff --git a/storage/innobase/row/row0undo.c b/storage/innobase/row/row0undo.c index f03f84ed1b0..7f31fd0060c 100644 --- a/storage/innobase/row/row0undo.c +++ b/storage/innobase/row/row0undo.c @@ -272,7 +272,7 @@ row_undo( if (locked_data_dict) { - row_mysql_lock_data_dictionary(trx); + row_mysql_freeze_data_dictionary(trx); } if (node->state == UNDO_NODE_INSERT) { @@ -287,7 +287,7 @@ row_undo( if (locked_data_dict) { - row_mysql_unlock_data_dictionary(trx); + row_mysql_unfreeze_data_dictionary(trx); } /* Do some cleanup */ diff --git a/storage/innodb_plugin/dict/dict0dict.c b/storage/innodb_plugin/dict/dict0dict.c index 8be5b7acac5..fe4e058e122 100644 --- a/storage/innodb_plugin/dict/dict0dict.c +++ b/storage/innodb_plugin/dict/dict0dict.c @@ -570,13 +570,11 @@ dict_table_get_on_id( if (ut_dulint_cmp(table_id, DICT_FIELDS_ID) <= 0 || trx->dict_operation_lock_mode == RW_X_LATCH) { - /* It is a system table which will always exist in the table - cache: we avoid acquiring the dictionary mutex, because - if we are doing a rollback to handle an error in TABLE - CREATE, for example, we already have the mutex! */ - ut_ad(mutex_own(&(dict_sys->mutex)) - || trx->dict_operation_lock_mode == RW_X_LATCH); + /* Note: An X latch implies that the transaction + already owns the dictionary mutex. */ + + ut_ad(mutex_own(&dict_sys->mutex)); return(dict_table_get_on_id_low(table_id)); } diff --git a/storage/innodb_plugin/include/sync0sync.h b/storage/innodb_plugin/include/sync0sync.h index d470b823fc3..71c9920a10b 100644 --- a/storage/innodb_plugin/include/sync0sync.h +++ b/storage/innodb_plugin/include/sync0sync.h @@ -438,7 +438,7 @@ or row lock! */ #define SYNC_FILE_FORMAT_TAG 1200 /* Used to serialize access to the file format tag */ #define SYNC_DICT_OPERATION 1001 /* table create, drop, etc. reserve - this in X-mode, implicit or backround + this in X-mode; implicit or backround operations purge, rollback, foreign key checks reserve this in S-mode */ #define SYNC_DICT 1000 diff --git a/storage/innodb_plugin/row/row0undo.c b/storage/innodb_plugin/row/row0undo.c index 3d739c9689a..9ef842b5114 100644 --- a/storage/innodb_plugin/row/row0undo.c +++ b/storage/innodb_plugin/row/row0undo.c @@ -297,7 +297,7 @@ row_undo( if (locked_data_dict) { - row_mysql_lock_data_dictionary(trx); + row_mysql_freeze_data_dictionary(trx); } if (node->state == UNDO_NODE_INSERT) { @@ -312,7 +312,7 @@ row_undo( if (locked_data_dict) { - row_mysql_unlock_data_dictionary(trx); + row_mysql_unfreeze_data_dictionary(trx); } /* Do some cleanup */ From 0eb26fdfa83d2ddd5f3dc3f8cf6e372a55b4c270 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 2 Jul 2010 15:30:47 -0300 Subject: [PATCH 228/461] Bug#53445: Build with -Wall and fix warnings that it generates Apart strict-aliasing warnings, fix the remaining warnings generated by GCC 4.4.4 -Wall and -Wextra flags. One major source of warnings was the in-house function my_bcmp which (unconventionally) took pointers to unsigned characters as the byte sequences to be compared. Since my_bcmp and bcmp are deprecated functions whose only difference with memcmp is the return value, every use of the function is replaced with memcmp as the special return value wasn't actually being used by any caller. There were also various other warnings, mostly due to type mismatches, missing return values, missing prototypes, dead code (unreachable) and ignored return values. BUILD/SETUP.sh: Remove flags that are implied by -Wall and -Wextra. Do not warn about unused parameters in C++. BUILD/check-cpu: Print only the compiler version instead of verbose banner. Although the option is gcc specific, the check was only being used for GCC specific checks anyway. client/mysql.cc: bcmp is no longer defined. client/mysqltest.cc: Pass a string to function expecting a format string. Replace use of bcmp with memcmp. cmd-line-utils/readline/Makefile.am: Always define _GNU_SOURCE when compiling GNU readline. Required to make certain prototypes visible. cmd-line-utils/readline/input.c: Condition for the code to be meaningful. configure.in: Remove check for bcmp. extra/comp_err.c: Use appropriate type. extra/replace.c: Replace use of bcmp with memcmp. extra/yassl/src/crypto_wrapper.cpp: Do not ignore the return value of fgets. Retrieve the file position if fgets succeed -- if it fails, the function will bail out and return a error. extra/yassl/taocrypt/include/blowfish.hpp: Use a single array instead of accessing positions of the sbox_ through a subscript to pbox_. extra/yassl/taocrypt/include/runtime.hpp: One definition of such functions is enough. extra/yassl/taocrypt/src/aes.cpp: Avoid potentially ambiguous conditions. extra/yassl/taocrypt/src/algebra.cpp: Rename arguments to avoid shadowing related warnings. extra/yassl/taocrypt/src/blowfish.cpp: Avoid potentially ambiguous conditions. extra/yassl/taocrypt/src/integer.cpp: Do not define type within a anonymous union. Use a variable to return a value instead of leaving the result in a register -- compiler does not know the logic inside the asm. extra/yassl/taocrypt/src/misc.cpp: Define handler for pure virtual functions. Remove unused code. extra/yassl/taocrypt/src/twofish.cpp: Avoid potentially ambiguous conditions. extra/yassl/testsuite/test.hpp: Function must have C language linkage. include/m_string.h: Remove check which relied on bcmp being defined -- they weren't being used as bcmp is only visible when _BSD_SOURCE is defined. include/my_bitmap.h: Remove bogus helpers which were used only in a few files and were causing warnings about dead code. include/my_global.h: Due to G++ bug, always silence false-positive uninitialized variables warnings when compiling C++ code with G++. Remove bogus helper. libmysql/Makefile.shared: Remove built-in implementation of bcmp. mysql-test/lib/My/SafeProcess/safe_process.cc: Cast pid to largest possible type for a process identifier. mysys/mf_loadpath.c: Leave space of the ending nul. mysys/mf_pack.c: Replace bcmp with memcmp. mysys/my_bitmap.c: Dead code removal. mysys/my_gethwaddr.c: Remove unused variable. mysys/my_getopt.c: Silence bogus uninitialized variable warning. Do not cast away the constant qualifier. mysys/safemalloc.c: Cast to expected type. mysys/thr_lock.c: Silence bogus uninitialized variable warning. sql/field.cc: Replace bogus helper with a more appropriate logic which is used throughout the code. sql/item.cc: Remove bogus logical condition which always evaluates to TRUE. sql/item_create.cc: Simplify code to avoid signedness related warnings. sql/log_event.cc: Replace use of bcmp with memcmp. No need to use helpers for simple bit operations. sql/log_event_old.cc: Replace bmove_align with memcpy. sql/mysqld.cc: Move use declaration of variable to the ifdef block where it is used. Remove now-unnecessary casts and arguments. sql/set_var.cc: Replace bogus helpers with simple and classic bit operations. sql/slave.cc: Cast to expected type and silence bogus warning. sql/sql_class.h: Don't use enum values as bit flags, the supposed type safety is bogus as the combined bit flags are not a value in the enumeration. sql/udf_example.c: Only declare variable when necessary. sql/unireg.h: Replace use of bmove_align with memcpy. storage/innobase/os/os0file.c: Silence bogus warning. storage/myisam/mi_open.c: Remove bogus cast, DBUG_DUMP expects a pointer to unsigned char. storage/myisam/mi_page.c: Remove bogus cast, DBUG_DUMP expects a pointer to unsigned char. strings/bcmp.c: Remove built-in bcmp. strings/ctype-ucs2.c: Silence bogus warning. tests/mysql_client_test.c: Use a appropriate type as expected by simple_command(). --- BUILD/SETUP.sh | 13 ++-- BUILD/check-cpu | 23 ++++--- client/mysql.cc | 1 - client/mysqltest.cc | 21 +++--- cmd-line-utils/readline/Makefile.am | 2 +- cmd-line-utils/readline/input.c | 2 + configure.in | 2 +- extra/comp_err.c | 6 +- extra/replace.c | 12 ++-- extra/yassl/src/crypto_wrapper.cpp | 5 +- extra/yassl/taocrypt/include/blowfish.hpp | 6 +- extra/yassl/taocrypt/include/runtime.hpp | 16 +---- extra/yassl/taocrypt/src/aes.cpp | 3 +- extra/yassl/taocrypt/src/algebra.cpp | 6 +- extra/yassl/taocrypt/src/blowfish.cpp | 3 +- extra/yassl/taocrypt/src/integer.cpp | 32 +++++---- extra/yassl/taocrypt/src/misc.cpp | 23 ++++--- extra/yassl/taocrypt/src/twofish.cpp | 3 +- extra/yassl/testsuite/test.hpp | 5 ++ include/m_string.h | 21 ------ include/my_bitmap.h | 16 ----- include/my_global.h | 21 ++++-- libmysql/Makefile.shared | 2 +- libmysql/libmysql.c | 1 - mysql-test/lib/My/SafeProcess/safe_process.cc | 2 +- mysys/mf_loadpath.c | 2 +- mysys/mf_pack.c | 12 ++-- mysys/my_bitmap.c | 6 +- mysys/my_gethwaddr.c | 2 +- mysys/my_getopt.c | 14 ++-- mysys/my_handler.c | 1 - mysys/safemalloc.c | 2 +- mysys/thr_lock.c | 3 +- regex/regcomp.c | 1 - sql/field.cc | 8 ++- sql/item.cc | 3 +- sql/item_create.cc | 26 +++----- sql/log.cc | 2 +- sql/log_event.cc | 21 +++--- sql/log_event_old.cc | 6 +- sql/mysqld.cc | 31 +++++---- sql/rpl_rli.cc | 3 +- sql/set_var.cc | 35 +++++----- sql/set_var.h | 2 +- sql/slave.cc | 6 +- sql/sql_base.cc | 6 +- sql/sql_class.h | 15 +++-- sql/sql_repl.cc | 3 +- sql/udf_example.c | 2 + sql/unireg.h | 4 +- storage/heap/hp_hash.c | 4 +- storage/heap/hp_test2.c | 4 +- storage/innobase/os/os0file.c | 3 + storage/myisam/mi_open.c | 2 +- storage/myisam/mi_page.c | 2 +- storage/myisam/mi_search.c | 6 +- storage/myisam/mi_test2.c | 22 +++---- storage/myisam/mi_unique.c | 2 +- storage/myisammrg/ha_myisammrg.cc | 7 +- strings/CMakeLists.txt | 2 +- strings/Makefile.am | 8 +-- strings/bcmp.c | 66 ------------------- strings/ctype-ucs2.c | 6 +- strings/make-ccc | 2 +- strings/str_test.c | 10 +-- strings/xml.c | 8 +-- tests/mysql_client_test.c | 2 +- 67 files changed, 257 insertions(+), 362 deletions(-) delete mode 100644 strings/bcmp.c diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh index 626f932e045..08ae4de2e23 100755 --- a/BUILD/SETUP.sh +++ b/BUILD/SETUP.sh @@ -90,22 +90,19 @@ SSL_LIBRARY=--with-ssl if [ "x$warning_mode" != "xpedantic" ]; then # Both C and C++ warnings - warnings="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W" - warnings="$warnings -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare" - warnings="$warnings -Wwrite-strings -Wunused-function -Wunused-label -Wunused-value -Wunused-variable" + warnings="-Wall -Wextra -Wunused -Wwrite-strings" # For more warnings, uncomment the following line -# warnings="$global_warnings -Wshadow" +# warnings="$warnings -Wshadow" # C warnings - c_warnings="$warnings -Wunused-parameter" + c_warnings="$warnings" # C++ warnings - cxx_warnings="$warnings" + cxx_warnings="$warnings -Wno-unused-parameter" # cxx_warnings="$cxx_warnings -Woverloaded-virtual -Wsign-promo" - cxx_warnings="$cxx_warnings -Wreorder" cxx_warnings="$cxx_warnings -Wctor-dtor-privacy -Wnon-virtual-dtor" # Added unless --with-debug=full - debug_extra_cflags="-O0 -g3 -gdwarf-2" #1 -Wuninitialized" + debug_extra_cflags="-O0 -g3 -gdwarf-2" else warnings="-W -Wall -ansi -pedantic -Wno-long-long -Wno-unused -D_POSIX_SOURCE" c_warnings="$warnings" diff --git a/BUILD/check-cpu b/BUILD/check-cpu index c0e87a675cb..390ba545405 100755 --- a/BUILD/check-cpu +++ b/BUILD/check-cpu @@ -181,14 +181,17 @@ check_cpu () { cc=$CC fi - cc_ver=`$cc --version | sed 1q` - cc_verno=`echo $cc_ver | sed -e 's/^.*(GCC)//g; s/[^0-9. ]//g; s/^ *//g; s/ .*//g'` - set -- `echo $cc_verno | tr '.' ' '` - cc_major=$1 - cc_minor=$2 - cc_patch=$3 - cc_comp=`expr $cc_major '*' 100 '+' $cc_minor` - + # check if compiler is gcc and dump its version + cc_verno=`$cc -dumpversion 2>/dev/null` + if test "x$?" = "x0" ; then + set -- `echo $cc_verno | tr '.' ' '` + cc_ver="GCC" + cc_major=$1 + cc_minor=$2 + cc_patch=$3 + cc_comp=`expr $cc_major '*' 100 '+' $cc_minor` + fi + case "$cc_ver--$cc_verno" in *GCC*) # different gcc backends (and versions) have different CPU flags @@ -229,7 +232,7 @@ check_cpu () { fi while [ "$cpu_arg" ] ; do printf "testing $cpu_arg ... " >&2 - + # compile check eval "$cc -c $check_cpu_cflags __test.c" 2>/dev/null if test "x$?" = "x0" ; then @@ -243,5 +246,5 @@ check_cpu () { done rm __test.* } - + check_cpu diff --git a/client/mysql.cc b/client/mysql.cc index 14a6ceed51d..edcc72b60bf 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -93,7 +93,6 @@ extern "C" { #endif #endif -#undef bcmp // Fix problem with new readline #if defined(__WIN__) #include #elif !defined(__NETWARE__) diff --git a/client/mysqltest.cc b/client/mysqltest.cc index 359de9880e7..6a8d119a7c4 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -5780,7 +5780,7 @@ int read_command(struct st_command** command_ptr) (struct st_command*) my_malloc(sizeof(*command), MYF(MY_WME|MY_ZEROFILL))) || insert_dynamic(&q_lines, (uchar*) &command)) - die(NullS); + die("Out of memory"); command->type= Q_UNKNOWN; read_command_buf[0]= 0; @@ -6260,7 +6260,7 @@ void init_win_path_patterns() } if (insert_dynamic(&patterns, (uchar*) &p)) - die(NullS); + die("Out of memory"); DBUG_PRINT("info", ("p: %s", p)); while (*p) @@ -9331,8 +9331,7 @@ REPLACE *init_replace(char * *from, char * *to,uint count, for (i=1 ; i <= found_sets ; i++) { pos=from[found_set[i-1].table_offset]; - rep_str[i].found= !bcmp((const uchar*) pos, - (const uchar*) "\\^", 3) ? 2 : 1; + rep_str[i].found= !memcmp(pos, "\\^", 3) ? 2 : 1; rep_str[i].replace_string=to_array[found_set[i-1].table_offset]; rep_str[i].to_offset=found_set[i-1].found_offset-start_at_word(pos); rep_str[i].from_offset=found_set[i-1].found_offset-replace_len(pos)+ @@ -9460,8 +9459,8 @@ void copy_bits(REP_SET *to,REP_SET *from) int cmp_bits(REP_SET *set1,REP_SET *set2) { - return bcmp((uchar*) set1->bits,(uchar*) set2->bits, - sizeof(uint) * set1->size_of_bits); + return memcmp(set1->bits, set2->bits, + sizeof(uint) * set1->size_of_bits); } @@ -9530,17 +9529,15 @@ int find_found(FOUND_SET *found_set,uint table_offset, int found_offset) uint start_at_word(char * pos) { - return (((!bcmp((const uchar*) pos, (const uchar*) "\\b",2) && pos[2]) || - !bcmp((const uchar*) pos, (const uchar*) "\\^", 2)) ? 1 : 0); + return (((!memcmp(pos, "\\b",2) && pos[2]) || + !memcmp(pos, "\\^", 2)) ? 1 : 0); } uint end_of_word(char * pos) { char * end=strend(pos); - return ((end > pos+2 && !bcmp((const uchar*) end-2, - (const uchar*) "\\b", 2)) || - (end >= pos+2 && !bcmp((const uchar*) end-2, - (const uchar*) "\\$",2))) ? 1 : 0; + return ((end > pos+2 && !memcmp(end-2, "\\b", 2)) || + (end >= pos+2 && !memcmp(end-2, "\\$",2))) ? 1 : 0; } /**************************************************************************** diff --git a/cmd-line-utils/readline/Makefile.am b/cmd-line-utils/readline/Makefile.am index e5f5717858d..e1e9645e238 100644 --- a/cmd-line-utils/readline/Makefile.am +++ b/cmd-line-utils/readline/Makefile.am @@ -31,7 +31,7 @@ noinst_HEADERS = readline.h chardefs.h keymaps.h \ EXTRA_DIST= emacs_keymap.c vi_keymap.c -DEFS = -DMYSQL_CLIENT_NO_THREADS -DHAVE_CONFIG_H -DNO_KILL_INTR +DEFS = -DMYSQL_CLIENT_NO_THREADS -DHAVE_CONFIG_H -DNO_KILL_INTR -D_GNU_SOURCE=1 # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/cmd-line-utils/readline/input.c b/cmd-line-utils/readline/input.c index 84c0422059a..af81d9cd3b0 100644 --- a/cmd-line-utils/readline/input.c +++ b/cmd-line-utils/readline/input.c @@ -318,7 +318,9 @@ _rl_input_available () return (_kbhit ()); #endif +#if !defined (HAVE_SELECT) return 0; +#endif } int diff --git a/configure.in b/configure.in index 74e575fad8c..539d597fd07 100644 --- a/configure.in +++ b/configure.in @@ -2102,7 +2102,7 @@ MYSQL_TYPE_QSORT AC_FUNC_UTIME_NULL AC_FUNC_VPRINTF -AC_CHECK_FUNCS(alarm bcmp bfill bmove bsearch bzero \ +AC_CHECK_FUNCS(alarm bfill bmove bsearch bzero \ chsize cuserid fchmod fcntl \ fconvert fdatasync fesetround finite fpresetsticky fpsetmask fsync ftruncate \ getcwd gethostbyaddr_r gethostbyname_r getpass getpassphrase getpwnam \ diff --git a/extra/comp_err.c b/extra/comp_err.c index bd03f20a755..c02c7ca3d2a 100644 --- a/extra/comp_err.c +++ b/extra/comp_err.c @@ -639,9 +639,9 @@ static struct message *find_message(struct errors *err, const char *lang, static ha_checksum checksum_format_specifier(const char* msg) { ha_checksum chksum= 0; - const char* p= msg; - const char* start= 0; - int num_format_specifiers= 0; + const uchar* p= (const uchar*) msg; + const uchar* start= NULL; + uint32 num_format_specifiers= 0; while (*p) { diff --git a/extra/replace.c b/extra/replace.c index 9b7695eddcb..fd2d860c212 100644 --- a/extra/replace.c +++ b/extra/replace.c @@ -648,7 +648,7 @@ static REPLACE *init_replace(char * *from, char * *to,uint count, for (i=1 ; i <= found_sets ; i++) { pos=from[found_set[i-1].table_offset]; - rep_str[i].found= (my_bool) (!bcmp(pos,"\\^",3) ? 2 : 1); + rep_str[i].found= (my_bool) (!memcmp(pos,"\\^",3) ? 2 : 1); rep_str[i].replace_string=to_array[found_set[i-1].table_offset]; rep_str[i].to_offset=found_set[i-1].found_offset-start_at_word(pos); rep_str[i].from_offset=found_set[i-1].found_offset-replace_len(pos)+ @@ -776,8 +776,8 @@ static void copy_bits(REP_SET *to,REP_SET *from) static int cmp_bits(REP_SET *set1,REP_SET *set2) { - return bcmp((uchar*) set1->bits,(uchar*) set2->bits, - sizeof(uint) * set1->size_of_bits); + return memcmp(set1->bits, set2->bits, + sizeof(uint) * set1->size_of_bits); } @@ -849,14 +849,14 @@ static short find_found(FOUND_SET *found_set,uint table_offset, static uint start_at_word(char * pos) { - return (((!bcmp(pos,"\\b",2) && pos[2]) || !bcmp(pos,"\\^",2)) ? 1 : 0); + return (((!memcmp(pos,"\\b",2) && pos[2]) || !memcmp(pos,"\\^",2)) ? 1 : 0); } static uint end_of_word(char * pos) { char * end=strend(pos); - return ((end > pos+2 && !bcmp(end-2,"\\b",2)) || - (end >= pos+2 && !bcmp(end-2,"\\$",2))) ? + return ((end > pos+2 && !memcmp(end-2,"\\b",2)) || + (end >= pos+2 && !memcmp(end-2,"\\$",2))) ? 1 : 0; } diff --git a/extra/yassl/src/crypto_wrapper.cpp b/extra/yassl/src/crypto_wrapper.cpp index 28d7f1b5693..b968ec1e6c3 100644 --- a/extra/yassl/src/crypto_wrapper.cpp +++ b/extra/yassl/src/crypto_wrapper.cpp @@ -953,8 +953,9 @@ x509* PemToDer(FILE* file, CertType type, EncryptedInfo* info) info->set = true; } } - fgets(line,sizeof(line), file); // get blank line - begin = ftell(file); + // get blank line + if (fgets(line, sizeof(line), file)) + begin = ftell(file); } } diff --git a/extra/yassl/taocrypt/include/blowfish.hpp b/extra/yassl/taocrypt/include/blowfish.hpp index 90d2c014b4c..94bbab7aea8 100644 --- a/extra/yassl/taocrypt/include/blowfish.hpp +++ b/extra/yassl/taocrypt/include/blowfish.hpp @@ -51,7 +51,7 @@ public: enum { BLOCK_SIZE = BLOWFISH_BLOCK_SIZE, ROUNDS = 16 }; Blowfish(CipherDir DIR, Mode MODE) - : Mode_BASE(BLOCK_SIZE, DIR, MODE) {} + : Mode_BASE(BLOCK_SIZE, DIR, MODE), sbox_(pbox_ + ROUNDS + 2) {} #ifdef DO_BLOWFISH_ASM void Process(byte*, const byte*, word32); @@ -62,8 +62,8 @@ private: static const word32 p_init_[ROUNDS + 2]; static const word32 s_init_[4 * 256]; - word32 pbox_[ROUNDS + 2]; - word32 sbox_[4 * 256]; + word32 pbox_[ROUNDS + 2 + 4 * 256]; + word32* sbox_; void crypt_block(const word32 in[2], word32 out[2]) const; void AsmProcess(const byte* in, byte* out) const; diff --git a/extra/yassl/taocrypt/include/runtime.hpp b/extra/yassl/taocrypt/include/runtime.hpp index 99bbe3ac8a3..9d12b253dd6 100644 --- a/extra/yassl/taocrypt/include/runtime.hpp +++ b/extra/yassl/taocrypt/include/runtime.hpp @@ -35,10 +35,7 @@ // Handler for pure virtual functions namespace __Crun { - static void pure_error(void) - { - assert("Pure virtual method called." == "Aborted"); - } + void pure_error(void); } // namespace __Crun #endif // __sun @@ -54,16 +51,7 @@ extern "C" { #else #include "kernelc.hpp" #endif - -/* Disallow inline __cxa_pure_virtual() */ -static int __cxa_pure_virtual() __attribute__((noinline, used)); -static int __cxa_pure_virtual() -{ - // oops, pure virtual called! - assert("Pure virtual method called." == "Aborted"); - return 0; -} - + int __cxa_pure_virtual () __attribute__ ((weak)); } // extern "C" #endif // __GNUC__ > 2 diff --git a/extra/yassl/taocrypt/src/aes.cpp b/extra/yassl/taocrypt/src/aes.cpp index b2b42d3dcf0..63eff1d91fc 100644 --- a/extra/yassl/taocrypt/src/aes.cpp +++ b/extra/yassl/taocrypt/src/aes.cpp @@ -51,7 +51,7 @@ void AES::Process(byte* out, const byte* in, word32 sz) out += BLOCK_SIZE; in += BLOCK_SIZE; } - else if (mode_ == CBC) + else if (mode_ == CBC) { if (dir_ == ENCRYPTION) while (blocks--) { r_[0] ^= *(word32*)in; @@ -78,6 +78,7 @@ void AES::Process(byte* out, const byte* in, word32 sz) out += BLOCK_SIZE; in += BLOCK_SIZE; } + } } #endif // DO_AES_ASM diff --git a/extra/yassl/taocrypt/src/algebra.cpp b/extra/yassl/taocrypt/src/algebra.cpp index c221ce3d6cb..47a660d5c96 100644 --- a/extra/yassl/taocrypt/src/algebra.cpp +++ b/extra/yassl/taocrypt/src/algebra.cpp @@ -186,10 +186,10 @@ Integer AbstractGroup::CascadeScalarMultiply(const Element &x, struct WindowSlider { - WindowSlider(const Integer &exp, bool fastNegate, + WindowSlider(const Integer &expIn, bool fastNegateIn, unsigned int windowSizeIn=0) - : exp(exp), windowModulus(Integer::One()), windowSize(windowSizeIn), - windowBegin(0), fastNegate(fastNegate), firstTime(true), + : exp(expIn), windowModulus(Integer::One()), windowSize(windowSizeIn), + windowBegin(0), fastNegate(fastNegateIn), firstTime(true), finished(false) { if (windowSize == 0) diff --git a/extra/yassl/taocrypt/src/blowfish.cpp b/extra/yassl/taocrypt/src/blowfish.cpp index 66ff4d829d7..2097b045278 100644 --- a/extra/yassl/taocrypt/src/blowfish.cpp +++ b/extra/yassl/taocrypt/src/blowfish.cpp @@ -53,7 +53,7 @@ void Blowfish::Process(byte* out, const byte* in, word32 sz) out += BLOCK_SIZE; in += BLOCK_SIZE; } - else if (mode_ == CBC) + else if (mode_ == CBC) { if (dir_ == ENCRYPTION) while (blocks--) { r_[0] ^= *(word32*)in; @@ -78,6 +78,7 @@ void Blowfish::Process(byte* out, const byte* in, word32 sz) out += BLOCK_SIZE; in += BLOCK_SIZE; } + } } #endif // DO_BLOWFISH_ASM diff --git a/extra/yassl/taocrypt/src/integer.cpp b/extra/yassl/taocrypt/src/integer.cpp index 85733b88aa9..b054e98bef4 100644 --- a/extra/yassl/taocrypt/src/integer.cpp +++ b/extra/yassl/taocrypt/src/integer.cpp @@ -283,21 +283,23 @@ DWord() {} word GetHighHalfAsBorrow() const {return 0-halfs_.high;} private: + struct dword_struct + { + #ifdef LITTLE_ENDIAN_ORDER + word low; + word high; + #else + word high; + word low; + #endif + }; + union { #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE dword whole_; #endif - struct - { - #ifdef LITTLE_ENDIAN_ORDER - word low; - word high; - #else - word high; - word low; - #endif - } halfs_; + struct dword_struct halfs_; }; }; @@ -1214,20 +1216,24 @@ public: #define AS1(x) #x ";" #define AS2(x, y) #x ", " #y ";" #define AddPrologue \ + word res; \ __asm__ __volatile__ \ ( \ "push %%ebx;" /* save this manually, in case of -fPIC */ \ - "mov %2, %%ebx;" \ + "mov %3, %%ebx;" \ ".intel_syntax noprefix;" \ "push ebp;" #define AddEpilogue \ "pop ebp;" \ ".att_syntax prefix;" \ "pop %%ebx;" \ - : \ + "mov %%eax, %0;" \ + : "=g" (res) \ : "c" (C), "d" (A), "m" (B), "S" (N) \ : "%edi", "memory", "cc" \ - ); + ); \ + return res; + #define MulPrologue \ __asm__ __volatile__ \ ( \ diff --git a/extra/yassl/taocrypt/src/misc.cpp b/extra/yassl/taocrypt/src/misc.cpp index 402645c93fd..11dd4dc6d66 100644 --- a/extra/yassl/taocrypt/src/misc.cpp +++ b/extra/yassl/taocrypt/src/misc.cpp @@ -84,12 +84,23 @@ namespace STL = STL_NAMESPACE; } -#if defined(__ICC) || defined(__INTEL_COMPILER) +#ifdef __sun + +// Handler for pure virtual functions +namespace __Crun { + void pure_error() { + assert(!"Aborted: pure virtual method called."); + } +} + +#endif + +#if defined(__ICC) || defined(__INTEL_COMPILER) || (__GNUC__ > 2) extern "C" { int __cxa_pure_virtual() { - assert("Pure virtual method called." == "Aborted"); + assert(!"Aborted: pure virtual method called."); return 0; } @@ -166,14 +177,6 @@ word Crop(word value, unsigned int size) #ifdef TAOCRYPT_X86ASM_AVAILABLE -#ifndef _MSC_VER - static jmp_buf s_env; - static void SigIllHandler(int) - { - longjmp(s_env, 1); - } -#endif - bool HaveCpuId() { diff --git a/extra/yassl/taocrypt/src/twofish.cpp b/extra/yassl/taocrypt/src/twofish.cpp index 84dd35f9191..71601c08162 100644 --- a/extra/yassl/taocrypt/src/twofish.cpp +++ b/extra/yassl/taocrypt/src/twofish.cpp @@ -54,7 +54,7 @@ void Twofish::Process(byte* out, const byte* in, word32 sz) out += BLOCK_SIZE; in += BLOCK_SIZE; } - else if (mode_ == CBC) + else if (mode_ == CBC) { if (dir_ == ENCRYPTION) while (blocks--) { r_[0] ^= *(word32*)in; @@ -82,6 +82,7 @@ void Twofish::Process(byte* out, const byte* in, word32 sz) out += BLOCK_SIZE; in += BLOCK_SIZE; } + } } #endif // DO_TWOFISH_ASM diff --git a/extra/yassl/testsuite/test.hpp b/extra/yassl/testsuite/test.hpp index c921f8f9c69..970ba5bf367 100644 --- a/extra/yassl/testsuite/test.hpp +++ b/extra/yassl/testsuite/test.hpp @@ -160,6 +160,11 @@ inline void err_sys(const char* msg) } +extern "C" { + static int PasswordCallBack(char*, int, int, void*); +} + + static int PasswordCallBack(char* passwd, int sz, int rw, void* userdata) { strncpy(passwd, "12345678", sz); diff --git a/include/m_string.h b/include/m_string.h index b2a1d9ff2f4..d027047f501 100644 --- a/include/m_string.h +++ b/include/m_string.h @@ -33,10 +33,6 @@ /* need by my_vsnprintf */ #include -#ifdef _AIX -#undef HAVE_BCMP -#endif - /* This is needed for the definitions of bzero... on solaris */ #if defined(HAVE_STRINGS_H) #include @@ -60,14 +56,6 @@ /* Unixware 7 */ #if !defined(HAVE_BFILL) # define bfill(A,B,C) memset((A),(C),(B)) -# define bmove_align(A,B,C) memcpy((A),(B),(C)) -#endif - -#if !defined(HAVE_BCMP) -# define bcopy(s, d, n) memcpy((d), (s), (n)) -# define bcmp(A,B,C) memcmp((A),(B),(C)) -# define bzero(A,B) memset((A),0,(B)) -# define bmove_align(A,B,C) memcpy((A),(B),(C)) #endif #if defined(__cplusplus) @@ -120,15 +108,6 @@ extern void bfill(uchar *dst,size_t len,pchar fill); extern void bzero(uchar * dst,size_t len); #endif -#if !defined(bcmp) && !defined(HAVE_BCMP) -extern size_t bcmp(const uchar *s1,const uchar *s2,size_t len); -#endif -#ifdef HAVE_purify -extern size_t my_bcmp(const uchar *s1,const uchar *s2,size_t len); -#undef bcmp -#define bcmp(A,B,C) my_bcmp((A),(B),(C)) -#endif /* HAVE_purify */ - #ifndef bmove512 extern void bmove512(uchar *dst,const uchar *src,size_t len); #endif diff --git a/include/my_bitmap.h b/include/my_bitmap.h index 78642df3362..ab69b2d671d 100644 --- a/include/my_bitmap.h +++ b/include/my_bitmap.h @@ -159,22 +159,6 @@ static inline my_bool bitmap_cmp(const MY_BITMAP *map1, const MY_BITMAP *map2) #define bitmap_set_all(MAP) \ (memset((MAP)->bitmap, 0xFF, 4*no_words_in_map((MAP)))) -/** - check, set and clear a bit of interest of an integer. - - If the bit is out of range @retval -1. Otherwise - bit_is_set @return 0 or 1 reflecting the bit is set or not; - bit_do_set @return 1 (bit is set 1) - bit_do_clear @return 0 (bit is cleared to 0) -*/ - -#define bit_is_set(I,B) (sizeof(I) * CHAR_BIT > (B) ? \ - (((I) & (ULL(1) << (B))) == 0 ? 0 : 1) : -1) -#define bit_do_set(I,B) (sizeof(I) * CHAR_BIT > (B) ? \ - ((I) |= (ULL(1) << (B)), 1) : -1) -#define bit_do_clear(I,B) (sizeof(I) * CHAR_BIT > (B) ? \ - ((I) &= ~(ULL(1) << (B)), 0) : -1) - #ifdef __cplusplus } #endif diff --git a/include/my_global.h b/include/my_global.h index e13c7c37b62..572df6a584d 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -556,22 +556,30 @@ int __void__; #endif #endif /* DONT_DEFINE_VOID */ -#if defined(_lint) || defined(FORCE_INIT_OF_VARS) -#define LINT_INIT(var) var=0 /* No uninitialize-warning */ +/* + Deprecated workaround for false-positive uninitialized variables + warnings. Those should be silenced using tool-specific heuristics. + + Enabled by default for g++ due to the bug referenced below. +*/ +#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || \ + (defined(__GNUC__) && defined(__cplusplus)) +#define LINT_INIT(var) var= 0 #else #define LINT_INIT(var) #endif -/* +/* Suppress uninitialized variable warning without generating code. The _cplusplus is a temporary workaround for C++ code pending a fix - for a g++ bug (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34772). + for a g++ bug (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34772). */ -#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || defined(__cplusplus) || \ - !defined(__GNUC__) +#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || \ + defined(__cplusplus) || !defined(__GNUC__) #define UNINIT_VAR(x) x= 0 #else +/* GCC specific self-initialization which inhibits the warning. */ #define UNINIT_VAR(x) x= x #endif @@ -595,7 +603,6 @@ typedef unsigned short ushort; #define set_if_bigger(a,b) do { if ((a) < (b)) (a)=(b); } while(0) #define set_if_smaller(a,b) do { if ((a) > (b)) (a)=(b); } while(0) #define test_all_bits(a,b) (((a) & (b)) == (b)) -#define set_bits(type, bit_count) (sizeof(type)*8 <= (bit_count) ? ~(type) 0 : ((((type) 1) << (bit_count)) - (type) 1)) #define array_elements(A) ((uint) (sizeof(A)/sizeof(A[0]))) /* Define some general constants */ diff --git a/libmysql/Makefile.shared b/libmysql/Makefile.shared index 3e93b7daf84..39c1975888a 100644 --- a/libmysql/Makefile.shared +++ b/libmysql/Makefile.shared @@ -38,7 +38,7 @@ mystringsobjects = strmov.lo strxmov.lo strxnmov.lo strnmov.lo \ strmake.lo strend.lo strtod.lo \ strnlen.lo strfill.lo is_prefix.lo \ int2str.lo str2int.lo strinstr.lo strcont.lo \ - strcend.lo bcmp.lo ctype-latin1.lo \ + strcend.lo ctype-latin1.lo \ bchange.lo bmove.lo bmove_upp.lo longlong2str.lo \ strtoull.lo strtoll.lo llstr.lo my_vsnprintf.lo \ ctype.lo ctype-simple.lo ctype-bin.lo ctype-mb.lo \ diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 21cbfaf6dbb..e0cc119bd16 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -4425,7 +4425,6 @@ static my_bool setup_one_fetch_function(MYSQL_BIND *param, MYSQL_FIELD *field) field->max_length= 10; /* 2003-11-11 */ param->skip_result= skip_result_with_length; break; - break; case MYSQL_TYPE_DATETIME: case MYSQL_TYPE_TIMESTAMP: param->skip_result= skip_result_with_length; diff --git a/mysql-test/lib/My/SafeProcess/safe_process.cc b/mysql-test/lib/My/SafeProcess/safe_process.cc index 50c433b9b39..1c778362975 100644 --- a/mysql-test/lib/My/SafeProcess/safe_process.cc +++ b/mysql-test/lib/My/SafeProcess/safe_process.cc @@ -159,7 +159,7 @@ int main(int argc, char* const argv[] ) signal(SIGCHLD, handle_signal); signal(SIGABRT, handle_abort); - sprintf(safe_process_name, "safe_process[%d]", own_pid); + sprintf(safe_process_name, "safe_process[%ld]", (long) own_pid); message("Started"); diff --git a/mysys/mf_loadpath.c b/mysys/mf_loadpath.c index 1df613a1733..b329d103d94 100644 --- a/mysys/mf_loadpath.c +++ b/mysys/mf_loadpath.c @@ -42,7 +42,7 @@ char * my_load_path(char * to, const char *path, if (is_cur) is_cur=2; /* Remove current dir */ if (! my_getwd(buff,(uint) (FN_REFLEN-strlen(path)+is_cur),MYF(0))) - VOID(strncat(buff, path+is_cur, FN_REFLEN)); + VOID(strncat(buff, path+is_cur, FN_REFLEN-1)); else VOID(strnmov(buff, path, FN_REFLEN)); /* Return org file name */ } diff --git a/mysys/mf_pack.c b/mysys/mf_pack.c index 4f7cd90e8aa..86fd61537e7 100644 --- a/mysys/mf_pack.c +++ b/mysys/mf_pack.c @@ -52,7 +52,7 @@ void pack_dirname(char * to, const char *from) buff_length= strlen(buff); d_length= (size_t) (start-to); if ((start == to || - (buff_length == d_length && !bcmp(buff,start,d_length))) && + (buff_length == d_length && !memcmp(buff,start,d_length))) && *start != FN_LIBCHAR && *start) { /* Put current dir before */ bchange((uchar*) to, d_length, (uchar*) buff, buff_length, strlen(to)+1); @@ -70,7 +70,7 @@ void pack_dirname(char * to, const char *from) } if (length > 1 && length < d_length) { /* test if /xx/yy -> ~/yy */ - if (bcmp(to,home_dir,length) == 0 && to[length] == FN_LIBCHAR) + if (memcmp(to,home_dir,length) == 0 && to[length] == FN_LIBCHAR) { to[0]=FN_HOMELIB; /* Filename begins with ~ */ (void) strmov_overlapp(to+1,to+length); @@ -80,7 +80,7 @@ void pack_dirname(char * to, const char *from) { /* Test if cwd is ~/... */ if (length > 1 && length < buff_length) { - if (bcmp(buff,home_dir,length) == 0 && buff[length] == FN_LIBCHAR) + if (memcmp(buff,home_dir,length) == 0 && buff[length] == FN_LIBCHAR) { buff[0]=FN_HOMELIB; (void) strmov_overlapp(buff+1,buff+length); @@ -166,7 +166,7 @@ size_t cleanup_dirname(register char *to, const char *from) *pos = FN_LIBCHAR; if (*pos == FN_LIBCHAR) { - if ((size_t) (pos-start) > length && bcmp(pos-length,parent,length) == 0) + if ((size_t) (pos-start) > length && memcmp(pos-length,parent,length) == 0) { /* If .../../; skip prev */ pos-=length; if (pos != start) @@ -197,7 +197,7 @@ size_t cleanup_dirname(register char *to, const char *from) end_parentdir=pos; while (pos >= start && *pos != FN_LIBCHAR) /* remove prev dir */ pos--; - if (pos[1] == FN_HOMELIB || bcmp(pos,parent,length) == 0) + if (pos[1] == FN_HOMELIB || memcmp(pos,parent,length) == 0) { /* Don't remove ~user/ */ pos=strmov(end_parentdir+1,parent); *pos=FN_LIBCHAR; @@ -206,7 +206,7 @@ size_t cleanup_dirname(register char *to, const char *from) } } else if ((size_t) (pos-start) == length-1 && - !bcmp(start,parent+1,length-1)) + !memcmp(start,parent+1,length-1)) start=pos; /* Starts with "../" */ else if (pos-start > 0 && pos[-1] == FN_LIBCHAR) { diff --git a/mysys/my_bitmap.c b/mysys/my_bitmap.c index e127b2584ae..b7258080337 100644 --- a/mysys/my_bitmap.c +++ b/mysys/my_bitmap.c @@ -508,10 +508,8 @@ uint bitmap_get_first_set(const MY_BITMAP *map) if (*byte_ptr & (1 << k)) return (i*32) + (j*8) + k; } - DBUG_ASSERT(0); } } - DBUG_ASSERT(0); } } return MY_BIT_NONE; @@ -534,7 +532,7 @@ uint bitmap_get_first(const MY_BITMAP *map) { byte_ptr= (uchar*)data_ptr; for (j=0; ; j++, byte_ptr++) - { + { if (*byte_ptr != 0xFF) { for (k=0; ; k++) @@ -542,10 +540,8 @@ uint bitmap_get_first(const MY_BITMAP *map) if (!(*byte_ptr & (1 << k))) return (i*32) + (j*8) + k; } - DBUG_ASSERT(0); } } - DBUG_ASSERT(0); } } return MY_BIT_NONE; diff --git a/mysys/my_gethwaddr.c b/mysys/my_gethwaddr.c index c7f138c7337..00e0e90f1e4 100644 --- a/mysys/my_gethwaddr.c +++ b/mysys/my_gethwaddr.c @@ -47,7 +47,7 @@ my_bool my_gethwaddr(uchar *to) uchar *buf, *next, *end, *addr; struct if_msghdr *ifm; struct sockaddr_dl *sdl; - int i, res=1, mib[6]={CTL_NET, AF_ROUTE, 0, AF_LINK, NET_RT_IFLIST, 0}; + int res=1, mib[6]={CTL_NET, AF_ROUTE, 0, AF_LINK, NET_RT_IFLIST, 0}; if (sysctl(mib, 6, NULL, &len, NULL, 0) == -1) goto err; diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c index 26b1cc75af0..b0e7175d0b9 100644 --- a/mysys/my_getopt.c +++ b/mysys/my_getopt.c @@ -30,7 +30,7 @@ my_error_reporter my_getopt_error_reporter= &default_reporter; static int findopt(char *optpat, uint length, const struct my_option **opt_res, - char **ffname); + const char **ffname); my_bool getopt_compare_strings(const char *s, const char *t, uint length); @@ -115,8 +115,8 @@ int handle_options(int *argc, char ***argv, uint opt_found, argvpos= 0, length; my_bool end_of_options= 0, must_be_var, set_maximum_value, option_is_loose; - char **pos, **pos_end, *optend, *UNINIT_VAR(prev_found), - *opt_str, key_name[FN_REFLEN]; + char **pos, **pos_end, *optend, *opt_str, key_name[FN_REFLEN]; + const char *UNINIT_VAR(prev_found); const struct my_option *optp; void *value; int error, i; @@ -225,7 +225,6 @@ int handle_options(int *argc, char ***argv, Find first the right option. Return error in case of an ambiguous, or unknown option */ - LINT_INIT(prev_found); optp= longopts; if (!(opt_found= findopt(opt_str, length, &optp, &prev_found))) { @@ -709,10 +708,10 @@ static int setval(const struct my_option *opts, void *value, char *argument, static int findopt(char *optpat, uint length, const struct my_option **opt_res, - char **ffname) + const char **ffname) { uint count; - struct my_option *opt= (struct my_option *) *opt_res; + const struct my_option *opt= *opt_res; for (count= 0; opt->name; opt++) { @@ -723,8 +722,9 @@ static int findopt(char *optpat, uint length, return 1; if (!count) { + /* We only need to know one prev */ count= 1; - *ffname= (char *) opt->name; /* We only need to know one prev */ + *ffname= opt->name; } else if (strcmp(*ffname, opt->name)) { diff --git a/mysys/my_handler.c b/mysys/my_handler.c index 3bc27b622cb..7aa8177040d 100644 --- a/mysys/my_handler.c +++ b/mysys/my_handler.c @@ -269,7 +269,6 @@ int ha_key_cmp(register HA_KEYSEG *keyseg, register uchar *a, return ((keyseg->flag & HA_REVERSE_SORT) ? -flag : flag); a+=a_length; b+=b_length; - break; } break; case HA_KEYTYPE_INT8: diff --git a/mysys/safemalloc.c b/mysys/safemalloc.c index 2c72026ab5a..76faa33e804 100644 --- a/mysys/safemalloc.c +++ b/mysys/safemalloc.c @@ -163,7 +163,7 @@ void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags) my_message(EE_OUTOFMEMORY, buff, MYF(ME_BELL+ME_WAITTANG+ME_NOREFRESH)); } DBUG_PRINT("error",("Out of memory, in use: %ld at line %d, '%s'", - sf_malloc_max_memory,lineno, filename)); + (ulong) sf_malloc_max_memory, lineno, filename)); DBUG_EXECUTE_IF("simulate_out_of_memory", DBUG_SET("-d,simulate_out_of_memory");); if (MyFlags & MY_FAE) diff --git a/mysys/thr_lock.c b/mysys/thr_lock.c index 0e0e93cf220..b925c5588be 100644 --- a/mysys/thr_lock.c +++ b/mysys/thr_lock.c @@ -125,8 +125,7 @@ static int check_lock(struct st_lock_list *list, const char* lock_type, { THR_LOCK_DATA *data,**prev; uint count=0; - THR_LOCK_OWNER *first_owner; - LINT_INIT(first_owner); + THR_LOCK_OWNER *UNINIT_VAR(first_owner); prev= &list->data; if (list->data) diff --git a/regex/regcomp.c b/regex/regcomp.c index b203d4941e1..8280fbfd6c8 100644 --- a/regex/regcomp.c +++ b/regex/regcomp.c @@ -690,7 +690,6 @@ register cset *cs; case '-': SETERROR(REG_ERANGE); return; /* NOTE RETURN */ - break; default: c = '\0'; break; diff --git a/sql/field.cc b/sql/field.cc index 7360a013ffb..2229bc19b3c 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -8691,7 +8691,13 @@ int Field_set::store(longlong nr, bool unsigned_val) { ASSERT_COLUMN_MARKED_FOR_WRITE; int error= 0; - ulonglong max_nr= set_bits(ulonglong, typelib->count); + ulonglong max_nr; + + if (sizeof(ulonglong)*8 <= typelib->count) + max_nr= ULONGLONG_MAX; + else + max_nr= (ULL(1) << typelib->count) - 1; + if ((ulonglong) nr > max_nr) { nr&= max_nr; diff --git a/sql/item.cc b/sql/item.cc index 5f0ca4374df..db2c4c0974b 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -4130,8 +4130,7 @@ Item_field::fix_outer_field(THD *thd, Field **from_field, Item **reference) context->first_name_resolution_table, context->last_name_resolution_table, reference, REPORT_ALL_ERRORS, - !any_privileges && - TRUE, TRUE); + !any_privileges, TRUE); } return -1; } diff --git a/sql/item_create.cc b/sql/item_create.cc index fd8f13d6dc5..5726e987ef6 100644 --- a/sql/item_create.cc +++ b/sql/item_create.cc @@ -5051,8 +5051,6 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type, CHARSET_INFO *cs) { Item *UNINIT_VAR(res); - ulong len; - uint dec; switch (cast_type) { case ITEM_CAST_BINARY: @@ -5075,11 +5073,10 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type, break; case ITEM_CAST_DECIMAL: { - if (c_len == NULL) - { - len= 0; - } - else + ulong len= 0; + uint dec= 0; + + if (c_len) { ulong decoded_size; errno= 0; @@ -5093,11 +5090,7 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type, len= decoded_size; } - if (c_dec == NULL) - { - dec= 0; - } - else + if (c_dec) { ulong decoded_size; errno= 0; @@ -5133,12 +5126,9 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type, } case ITEM_CAST_CHAR: { + int len= -1; CHARSET_INFO *real_cs= (cs ? cs : thd->variables.collation_connection); - if (c_len == NULL) - { - len= LL(-1); - } - else + if (c_len) { ulong decoded_size; errno= 0; @@ -5148,7 +5138,7 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type, my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), "cast as char", MAX_FIELD_BLOBLENGTH); return NULL; } - len= decoded_size; + len= (int) decoded_size; } res= new (thd->mem_root) Item_char_typecast(a, len, real_cs); break; diff --git a/sql/log.cc b/sql/log.cc index b3554d2a068..d8d5f6fa418 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1862,7 +1862,7 @@ static int find_uniq_filename(char *name) file_info= dir_info->dir_entry; for (i=dir_info->number_off_files ; i-- ; file_info++) { - if (bcmp((uchar*) file_info->name, (uchar*) start, length) == 0 && + if (memcmp(file_info->name, start, length) == 0 && test_if_number(file_info->name+length, &number,0)) { set_if_bigger(max_found,(ulong) number); diff --git a/sql/log_event.cc b/sql/log_event.cc index 5ff4b50c6df..d53f13e0b6b 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -2905,7 +2905,7 @@ void Query_log_event::print_query_header(IO_CACHE* file, if (likely(charset_inited) && (unlikely(!print_event_info->charset_inited || - bcmp((uchar*) print_event_info->charset, (uchar*) charset, 6)))) + memcmp(print_event_info->charset, charset, 6)))) { CHARSET_INFO *cs_info= get_charset(uint2korr(charset), MYF(MY_WME)); if (cs_info) @@ -2928,8 +2928,8 @@ void Query_log_event::print_query_header(IO_CACHE* file, } if (time_zone_len) { - if (bcmp((uchar*) print_event_info->time_zone_str, - (uchar*) time_zone_str, time_zone_len+1)) + if (memcmp(print_event_info->time_zone_str, + time_zone_str, time_zone_len+1)) { my_b_printf(file,"SET @@session.time_zone='%s'%s\n", time_zone_str, print_event_info->delimiter); @@ -7503,8 +7503,7 @@ int Rows_log_event::do_apply_event(Relay_log_info const *rli) { int actual_error= convert_handler_error(error, thd, table); bool idempotent_error= (idempotent_error_code(error) && - ((bit_is_set(slave_exec_mode, - SLAVE_EXEC_MODE_IDEMPOTENT)) == 1)); + (slave_exec_mode & SLAVE_EXEC_MODE_IDEMPOTENT)); bool ignored_error= (idempotent_error == 0 ? ignored_error_code(actual_error) : 0); @@ -8332,7 +8331,7 @@ Write_rows_log_event::do_before_row_operations(const Slave_reporting_capability todo: to introduce a property for the event (handler?) which forces applying the event in the replace (idempotent) fashion. */ - if (bit_is_set(slave_exec_mode, SLAVE_EXEC_MODE_IDEMPOTENT) == 1 || + if ((slave_exec_mode & SLAVE_EXEC_MODE_IDEMPOTENT) || m_table->s->db_type()->db_type == DB_TYPE_NDBCLUSTER) { /* @@ -8411,7 +8410,7 @@ Write_rows_log_event::do_after_row_operations(const Slave_reporting_capability * int local_error= 0; m_table->next_number_field=0; m_table->auto_increment_field_not_null= FALSE; - if (bit_is_set(slave_exec_mode, SLAVE_EXEC_MODE_IDEMPOTENT) == 1 || + if ((slave_exec_mode & SLAVE_EXEC_MODE_IDEMPOTENT) || m_table->s->db_type()->db_type == DB_TYPE_NDBCLUSTER) { m_table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY); @@ -8514,7 +8513,7 @@ Rows_log_event::write_row(const Relay_log_info *const rli, TABLE *table= m_table; // pointer to event's table int error; - int keynum; + int UNINIT_VAR(keynum); auto_afree_ptr key(NULL); /* fill table->record[0] with default values */ @@ -8712,10 +8711,8 @@ int Write_rows_log_event::do_exec_row(const Relay_log_info *const rli) { DBUG_ASSERT(m_table != NULL); - int error= - write_row(rli, /* if 1 then overwrite */ - bit_is_set(slave_exec_mode, SLAVE_EXEC_MODE_IDEMPOTENT) == 1); - + int error= write_row(rli, (slave_exec_mode & SLAVE_EXEC_MODE_IDEMPOTENT)); + if (error && !thd->is_error()) { DBUG_ASSERT(0); diff --git a/sql/log_event_old.cc b/sql/log_event_old.cc index 202b81989a8..e901f44286c 100644 --- a/sql/log_event_old.cc +++ b/sql/log_event_old.cc @@ -441,7 +441,7 @@ copy_extra_record_fields(TABLE *table, DBUG_ASSERT(master_reclength <= table->s->reclength); if (master_reclength < table->s->reclength) - bmove_align(table->record[0] + master_reclength, + memcpy(table->record[0] + master_reclength, table->record[1] + master_reclength, table->s->reclength - master_reclength); @@ -720,7 +720,7 @@ static int find_and_fetch_row(TABLE *table, uchar *key) rnd_pos() returns the record in table->record[0], so we have to move it to table->record[1]. */ - bmove_align(table->record[1], table->record[0], table->s->reclength); + memcpy(table->record[1], table->record[0], table->s->reclength); DBUG_RETURN(error); } @@ -1213,7 +1213,7 @@ int Update_rows_log_event_old::do_exec_row(TABLE *table) overwriting the default values that where put there by the unpack_row() function. */ - bmove_align(table->record[0], m_after_image, table->s->reclength); + memcpy(table->record[0], m_after_image, table->s->reclength); copy_extra_record_fields(table, m_master_reclength, m_width); /* diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 5514c356bd1..99f16b36dfa 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -559,7 +559,7 @@ ulong query_buff_size, slow_launch_time, slave_open_temp_tables; ulong open_files_limit, max_binlog_size, max_relay_log_size; ulong slave_net_timeout, slave_trans_retries; ulong slave_exec_mode_options; -const char *slave_exec_mode_str= "STRICT"; +static const char *slave_exec_mode_str= "STRICT"; ulong thread_cache_size=0, thread_pool_size= 0; ulong binlog_cache_size=0; ulonglong max_binlog_cache_size=0; @@ -2464,7 +2464,6 @@ extern "C" sig_handler handle_segfault(int sig) { time_t curr_time; struct tm tm; - THD *thd=current_thd; /* Strictly speaking, one needs a mutex here @@ -2523,13 +2522,15 @@ the thread stack. Please read http://dev.mysql.com/doc/mysql/en/linux.html\n\n", #endif /* HAVE_LINUXTHREADS */ #ifdef HAVE_STACKTRACE + THD *thd=current_thd; + if (!(test_flags & TEST_NO_STACKTRACE)) { - fprintf(stderr,"thd: 0x%lx\n",(long) thd); - fprintf(stderr,"\ -Attempting backtrace. You can use the following information to find out\n\ -where mysqld died. If you see no messages after this, something went\n\ -terribly wrong...\n"); + fprintf(stderr, "thd: 0x%lx\n",(long) thd); + fprintf(stderr, "Attempting backtrace. You can use the following " + "information to find out\nwhere mysqld died. If " + "you see no messages after this, something went\n" + "terribly wrong...\n"); my_print_stacktrace(thd ? (uchar*) thd->thread_stack : NULL, my_thread_stack_size); } @@ -7879,10 +7880,11 @@ static int mysql_init_variables(void) /* Things with default values that are not zero */ delay_key_write_options= (uint) DELAY_KEY_WRITE_ON; - slave_exec_mode_options= 0; - slave_exec_mode_options= (uint) - find_bit_type_or_exit(slave_exec_mode_str, &slave_exec_mode_typelib, NULL, - &error); + slave_exec_mode_options= find_bit_type_or_exit(slave_exec_mode_str, + &slave_exec_mode_typelib, + NULL, &error); + /* Default mode string must not yield a error. */ + DBUG_ASSERT(!error); if (error) return 1; opt_specialflag= SPECIAL_ENGLISH; @@ -8118,8 +8120,9 @@ mysqld_get_one_option(int optid, init_slave_skip_errors(argument); break; case OPT_SLAVE_EXEC_MODE: - slave_exec_mode_options= (uint) - find_bit_type_or_exit(argument, &slave_exec_mode_typelib, "", &error); + slave_exec_mode_options= find_bit_type_or_exit(argument, + &slave_exec_mode_typelib, + "", &error); if (error) return 1; break; @@ -8773,7 +8776,7 @@ static int get_options(int *argc,char **argv) /* Set global MyISAM variables from delay_key_write_options */ fix_delay_key_write((THD*) 0, OPT_GLOBAL); /* Set global slave_exec_mode from its option */ - fix_slave_exec_mode(OPT_GLOBAL); + fix_slave_exec_mode(); #ifndef EMBEDDED_LIBRARY if (mysqld_chroot) diff --git a/sql/rpl_rli.cc b/sql/rpl_rli.cc index 316e26f7e40..99a42bbe818 100644 --- a/sql/rpl_rli.cc +++ b/sql/rpl_rli.cc @@ -1120,8 +1120,7 @@ bool Relay_log_info::cached_charset_compare(char *charset) const { DBUG_ENTER("Relay_log_info::cached_charset_compare"); - if (bcmp((uchar*) cached_charset, (uchar*) charset, - sizeof(cached_charset))) + if (memcmp(cached_charset, charset, sizeof(cached_charset))) { memcpy(const_cast(cached_charset), charset, sizeof(cached_charset)); DBUG_RETURN(1); diff --git a/sql/set_var.cc b/sql/set_var.cc index 241126e1e6f..c5517da92f8 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -92,14 +92,13 @@ TYPELIB delay_key_write_typelib= delay_key_write_type_names, NULL }; -const char *slave_exec_mode_names[]= -{ "STRICT", "IDEMPOTENT", NullS }; -static const unsigned int slave_exec_mode_names_len[]= -{ sizeof("STRICT") - 1, sizeof("IDEMPOTENT") - 1, 0 }; +static const char *slave_exec_mode_names[]= { "STRICT", "IDEMPOTENT", NullS }; +static unsigned int slave_exec_mode_names_len[]= { sizeof("STRICT") - 1, + sizeof("IDEMPOTENT") - 1, 0 }; TYPELIB slave_exec_mode_typelib= { array_elements(slave_exec_mode_names)-1, "", - slave_exec_mode_names, (unsigned int *) slave_exec_mode_names_len + slave_exec_mode_names, slave_exec_mode_names_len }; static int sys_check_ftb_syntax(THD *thd, set_var *var); @@ -1215,16 +1214,14 @@ uchar *sys_var_set::value_ptr(THD *thd, enum_var_type type, void sys_var_set_slave_mode::set_default(THD *thd, enum_var_type type) { - slave_exec_mode_options= 0; - bit_do_set(slave_exec_mode_options, SLAVE_EXEC_MODE_STRICT); + slave_exec_mode_options= SLAVE_EXEC_MODE_STRICT; } bool sys_var_set_slave_mode::check(THD *thd, set_var *var) { bool rc= sys_var_set::check(thd, var); - if (!rc && - bit_is_set(var->save_result.ulong_value, SLAVE_EXEC_MODE_STRICT) == 1 && - bit_is_set(var->save_result.ulong_value, SLAVE_EXEC_MODE_IDEMPOTENT) == 1) + if (!rc && (var->save_result.ulong_value & SLAVE_EXEC_MODE_STRICT) && + (var->save_result.ulong_value & SLAVE_EXEC_MODE_IDEMPOTENT)) { rc= true; my_error(ER_SLAVE_AMBIGOUS_EXEC_MODE, MYF(0), ""); @@ -1241,20 +1238,18 @@ bool sys_var_set_slave_mode::update(THD *thd, set_var *var) return rc; } -void fix_slave_exec_mode(enum_var_type type) +void fix_slave_exec_mode(void) { DBUG_ENTER("fix_slave_exec_mode"); - compile_time_assert(sizeof(slave_exec_mode_options) * CHAR_BIT - > SLAVE_EXEC_MODE_LAST_BIT - 1); - if (bit_is_set(slave_exec_mode_options, SLAVE_EXEC_MODE_STRICT) == 1 && - bit_is_set(slave_exec_mode_options, SLAVE_EXEC_MODE_IDEMPOTENT) == 1) + + if ((slave_exec_mode_options & SLAVE_EXEC_MODE_STRICT) && + (slave_exec_mode_options & SLAVE_EXEC_MODE_IDEMPOTENT)) { - sql_print_error("Ambiguous slave modes combination." - " STRICT will be used"); - bit_do_clear(slave_exec_mode_options, SLAVE_EXEC_MODE_IDEMPOTENT); + sql_print_error("Ambiguous slave modes combination. STRICT will be used"); + slave_exec_mode_options&= ~SLAVE_EXEC_MODE_IDEMPOTENT; } - if (bit_is_set(slave_exec_mode_options, SLAVE_EXEC_MODE_IDEMPOTENT) == 0) - bit_do_set(slave_exec_mode_options, SLAVE_EXEC_MODE_STRICT); + if (!(slave_exec_mode_options & SLAVE_EXEC_MODE_IDEMPOTENT)) + slave_exec_mode_options|= SLAVE_EXEC_MODE_STRICT; DBUG_VOID_RETURN; } diff --git a/sql/set_var.h b/sql/set_var.h index bc94c6b85c4..68cd94a5670 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -1446,7 +1446,7 @@ sys_var *find_sys_var(THD *thd, const char *str, uint length=0); int sql_set_variables(THD *thd, List *var_list); bool not_all_support_one_shot(List *var_list); void fix_delay_key_write(THD *thd, enum_var_type type); -void fix_slave_exec_mode(enum_var_type type); +void fix_slave_exec_mode(void); ulong fix_sql_mode(ulong sql_mode); extern sys_var_const_str sys_charset_system; extern sys_var_str sys_init_connect; diff --git a/sql/slave.cc b/sql/slave.cc index af53bc65c0e..795bc481071 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -2113,7 +2113,7 @@ int apply_event_and_update_pos(Log_event* ev, THD* thd, Relay_log_info* rli) DBUG_PRINT("info", ("thd->options: %s%s; rli->last_event_start_time: %lu", FLAGSTR(thd->options, OPTION_NOT_AUTOCOMMIT), FLAGSTR(thd->options, OPTION_BEGIN), - rli->last_event_start_time)); + (ulong) rli->last_event_start_time)); /* Execute the event to change the database and update the binary @@ -2885,8 +2885,8 @@ pthread_handler_t handle_slave_sql(void *arg) char llbuff[22],llbuff1[22]; char saved_log_name[FN_REFLEN]; char saved_master_log_name[FN_REFLEN]; - my_off_t saved_log_pos; - my_off_t saved_master_log_pos; + my_off_t UNINIT_VAR(saved_log_pos); + my_off_t UNINIT_VAR(saved_master_log_pos); my_off_t saved_skip= 0; Relay_log_info* rli = &((Master_info*)arg)->rli; diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 3a51b5c5610..d2392bdd9b1 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -8403,15 +8403,15 @@ my_bool mysql_rm_tmp_tables(void) (file->name[1] == '.' && !file->name[2]))) continue; - if (!bcmp((uchar*) file->name, (uchar*) tmp_file_prefix, - tmp_file_prefix_length)) + if (!memcmp(file->name, tmp_file_prefix, + tmp_file_prefix_length)) { char *ext= fn_ext(file->name); uint ext_len= strlen(ext); uint filePath_len= my_snprintf(filePath, sizeof(filePath), "%s%c%s", tmpdir, FN_LIBCHAR, file->name); - if (!bcmp((uchar*) reg_ext, (uchar*) ext, ext_len)) + if (!memcmp(reg_ext, ext, ext_len)) { handler *handler_file= 0; /* We should cut file extention before deleting of table */ diff --git a/sql/sql_class.h b/sql/sql_class.h index 4c1d4a98db0..023367cb747 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -83,9 +83,10 @@ enum enum_ha_read_modes { RFIRST, RNEXT, RPREV, RLAST, RKEY, RNEXT_SAME }; enum enum_duplicates { DUP_ERROR, DUP_REPLACE, DUP_UPDATE }; enum enum_delay_key_write { DELAY_KEY_WRITE_NONE, DELAY_KEY_WRITE_ON, DELAY_KEY_WRITE_ALL }; -enum enum_slave_exec_mode { SLAVE_EXEC_MODE_STRICT, - SLAVE_EXEC_MODE_IDEMPOTENT, - SLAVE_EXEC_MODE_LAST_BIT}; + +#define SLAVE_EXEC_MODE_STRICT (1U << 0) +#define SLAVE_EXEC_MODE_IDEMPOTENT (1U << 1) + enum enum_mark_columns { MARK_COLUMNS_NONE, MARK_COLUMNS_READ, MARK_COLUMNS_WRITE}; @@ -2418,7 +2419,7 @@ class select_result :public Sql_alloc { protected: THD *thd; SELECT_LEX_UNIT *unit; - uint nest_level; + int nest_level; public: select_result(); virtual ~select_result() {}; @@ -2559,7 +2560,7 @@ public: Creates a select_export to represent INTO OUTFILE with a defined level of subquery nesting. */ - select_export(sql_exchange *ex, uint nest_level_arg) :select_to_file(ex) + select_export(sql_exchange *ex, int nest_level_arg) :select_to_file(ex) { nest_level= nest_level_arg; } @@ -2576,7 +2577,7 @@ public: Creates a select_export to represent INTO DUMPFILE with a defined level of subquery nesting. */ - select_dump(sql_exchange *ex, uint nest_level_arg) : + select_dump(sql_exchange *ex, int nest_level_arg) : select_to_file(ex) { nest_level= nest_level_arg; @@ -3046,7 +3047,7 @@ public: Creates a select_dumpvar to represent INTO with a defined level of subquery nesting. */ - select_dumpvar(uint nest_level_arg) + select_dumpvar(int nest_level_arg) { var_list.empty(); row_count= 0; diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 75a738a0073..f6045e4704e 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -218,8 +218,7 @@ bool log_in_use(const char* log_name) if ((linfo = tmp->current_linfo)) { pthread_mutex_lock(&linfo->lock); - result = !bcmp((uchar*) log_name, (uchar*) linfo->log_file_name, - log_name_len); + result = !memcmp(log_name, linfo->log_file_name, log_name_len); pthread_mutex_unlock(&linfo->lock); if (result) break; diff --git a/sql/udf_example.c b/sql/udf_example.c index 82af58ec502..637293209e0 100644 --- a/sql/udf_example.c +++ b/sql/udf_example.c @@ -141,7 +141,9 @@ typedef long long longlong; #ifdef HAVE_DLOPEN +#if !defined(HAVE_GETHOSTBYADDR_R) || !defined(HAVE_SOLARIS_STYLE_GETHOST) static pthread_mutex_t LOCK_hostname; +#endif /* These must be right or mysqld will not find the symbol! */ diff --git a/sql/unireg.h b/sql/unireg.h index 3ff7f058e3c..4f6b647964d 100644 --- a/sql/unireg.h +++ b/sql/unireg.h @@ -129,8 +129,8 @@ #define SPECIAL_LOG_QUERIES_NOT_USING_INDEXES 4096 /* Obsolete */ /* Extern defines */ -#define store_record(A,B) bmove_align((A)->B,(A)->record[0],(size_t) (A)->s->reclength) -#define restore_record(A,B) bmove_align((A)->record[0],(A)->B,(size_t) (A)->s->reclength) +#define store_record(A,B) memcpy((A)->B,(A)->record[0],(size_t) (A)->s->reclength) +#define restore_record(A,B) memcpy((A)->record[0],(A)->B,(size_t) (A)->s->reclength) #define cmp_record(A,B) memcmp((A)->record[0],(A)->B,(size_t) (A)->s->reclength) #define empty_record(A) { \ restore_record((A),s->default_values); \ diff --git a/storage/heap/hp_hash.c b/storage/heap/hp_hash.c index aaaa0fe833f..f56df42aab3 100644 --- a/storage/heap/hp_hash.c +++ b/storage/heap/hp_hash.c @@ -577,7 +577,7 @@ int hp_rec_key_cmp(HP_KEYDEF *keydef, const uchar *rec1, const uchar *rec2, } else { - if (bcmp(rec1+seg->start,rec2+seg->start,seg->length)) + if (memcmp(rec1+seg->start,rec2+seg->start,seg->length)) return 1; } } @@ -660,7 +660,7 @@ int hp_key_cmp(HP_KEYDEF *keydef, const uchar *rec, const uchar *key) } else { - if (bcmp(rec+seg->start,key,seg->length)) + if (memcmp(rec+seg->start,key,seg->length)) return 1; } } diff --git a/storage/heap/hp_test2.c b/storage/heap/hp_test2.c index 5c548b6be74..bf06cf03035 100644 --- a/storage/heap/hp_test2.c +++ b/storage/heap/hp_test2.c @@ -406,7 +406,7 @@ int main(int argc, char *argv[]) bmove(record2,record,reclength); if (heap_rsame(file,record,-1) || heap_rsame(file,record2,2)) goto err; - if (bcmp(record2,record,reclength)) + if (memcmp(record2,record,reclength)) { puts("heap_rsame didn't find right record"); goto end; @@ -415,7 +415,7 @@ int main(int argc, char *argv[]) puts("- Test of read through position"); if (heap_rrnd(file,record,position)) goto err; - if (bcmp(record3,record,reclength)) + if (memcmp(record3,record,reclength)) { puts("heap_frnd didn't find right record"); goto end; diff --git a/storage/innobase/os/os0file.c b/storage/innobase/os/os0file.c index 7373a97cfb0..3396d1adf2f 100644 --- a/storage/innobase/os/os0file.c +++ b/storage/innobase/os/os0file.c @@ -3974,6 +3974,9 @@ os_aio_simulated_handle( ulint n; ulint i; + /* Fix compiler warning */ + *consecutive_ios = NULL; + segment = os_aio_get_array_and_local_segment(&array, global_segment); restart: diff --git a/storage/myisam/mi_open.c b/storage/myisam/mi_open.c index f2f390862bd..8ecb07d75e8 100644 --- a/storage/myisam/mi_open.c +++ b/storage/myisam/mi_open.c @@ -139,7 +139,7 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags) (uchar*) myisam_file_magic, 4)) { DBUG_PRINT("error",("Wrong header in %s",name_buff)); - DBUG_DUMP("error_dump",(char*) share->state.header.file_version, + DBUG_DUMP("error_dump", share->state.header.file_version, head_length); my_errno=HA_ERR_NOT_A_TABLE; goto err; diff --git a/storage/myisam/mi_page.c b/storage/myisam/mi_page.c index 76fac8688a7..90e31e72532 100644 --- a/storage/myisam/mi_page.c +++ b/storage/myisam/mi_page.c @@ -49,7 +49,7 @@ uchar *_mi_fetch_keypage(register MI_INFO *info, MI_KEYDEF *keyinfo, { DBUG_PRINT("error",("page %lu had wrong page length: %u", (ulong) page, page_size)); - DBUG_DUMP("page", (char*) tmp, keyinfo->block_length); + DBUG_DUMP("page", tmp, keyinfo->block_length); info->last_keypage = HA_OFFSET_ERROR; mi_print_error(info->s, HA_ERR_CRASHED); my_errno = HA_ERR_CRASHED; diff --git a/storage/myisam/mi_search.c b/storage/myisam/mi_search.c index 95f817e47aa..9c842fba544 100644 --- a/storage/myisam/mi_search.c +++ b/storage/myisam/mi_search.c @@ -819,7 +819,7 @@ uint _mi_get_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag, DBUG_PRINT("error", ("Found too long null packed key: %u of %u at 0x%lx", length, keyseg->length, (long) *page_pos)); - DBUG_DUMP("key",(char*) *page_pos,16); + DBUG_DUMP("key", *page_pos, 16); mi_print_error(keyinfo->share, HA_ERR_CRASHED); my_errno=HA_ERR_CRASHED; return 0; @@ -876,7 +876,7 @@ uint _mi_get_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag, { DBUG_PRINT("error",("Found too long packed key: %u of %u at 0x%lx", length, keyseg->length, (long) *page_pos)); - DBUG_DUMP("key",(char*) *page_pos,16); + DBUG_DUMP("key", *page_pos, 16); mi_print_error(keyinfo->share, HA_ERR_CRASHED); my_errno=HA_ERR_CRASHED; return 0; /* Error */ @@ -948,7 +948,7 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag, DBUG_PRINT("error", ("Found too long binary packed key: %u of %u at 0x%lx", length, keyinfo->maxlength, (long) *page_pos)); - DBUG_DUMP("key",(char*) *page_pos,16); + DBUG_DUMP("key", *page_pos, 16); mi_print_error(keyinfo->share, HA_ERR_CRASHED); my_errno=HA_ERR_CRASHED; DBUG_RETURN(0); /* Wrong key */ diff --git a/storage/myisam/mi_test2.c b/storage/myisam/mi_test2.c index 23c58638166..d7c168d01b0 100644 --- a/storage/myisam/mi_test2.c +++ b/storage/myisam/mi_test2.c @@ -415,7 +415,7 @@ int main(int argc, char *argv[]) } ant=0; while (mi_rprev(file,read_record3,0) == 0 && - bcmp(read_record3+start,key,length) == 0) ant++; + memcmp(read_record3+start,key,length) == 0) ant++; if (ant != dupp_keys) { printf("prev: Found: %d records of %d\n",ant,dupp_keys); @@ -453,7 +453,7 @@ int main(int argc, char *argv[]) goto end; } if (mi_rlast(file,read_record2,0) || - bcmp(read_record2,read_record3,reclength)) + memcmp(read_record2,read_record3,reclength)) { printf("Can't find last record\n"); DBUG_DUMP("record2",(uchar*) read_record2,reclength); @@ -468,7 +468,7 @@ int main(int argc, char *argv[]) printf("prev: I found: %d records of %d\n",ant,write_count); goto end; } - if (bcmp(read_record,read_record3,reclength)) + if (memcmp(read_record,read_record3,reclength)) { printf("Can't find first record\n"); goto end; @@ -483,7 +483,7 @@ int main(int argc, char *argv[]) mi_rprev(file,read_record3,0) == 0 || mi_rnext(file,read_record3,0)) goto err; - if (bcmp(read_record,read_record3,reclength) != 0) + if (memcmp(read_record,read_record3,reclength) != 0) printf("Can't find first record\n"); if (!silent) @@ -495,7 +495,7 @@ int main(int argc, char *argv[]) mi_rnext(file,read_record3,0) == 0 || mi_rprev(file,read_record3,0)) goto err; - if (bcmp(read_record2,read_record3,reclength)) + if (memcmp(read_record2,read_record3,reclength)) printf("Can't find last record\n"); #ifdef NOT_ANYMORE if (!silent) @@ -509,7 +509,7 @@ int main(int argc, char *argv[]) bzero((char*) file->lastkey,file->s->base.max_key_length*2); if (mi_rkey(file,read_record,0,key2,(uint) i,HA_READ_PREFIX)) goto err; - if (bcmp(read_record+start,key,(uint) i)) + if (memcmp(read_record+start,key,(uint) i)) { puts("Didn't find right record"); goto end; @@ -528,7 +528,7 @@ int main(int argc, char *argv[]) opt_delete++; ant=1; while (mi_rnext(file,read_record3,0) == 0 && - bcmp(read_record3+start,key,length) == 0) ant++; + memcmp(read_record3+start,key,length) == 0) ant++; if (ant != dupp_keys-1) { printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-1); @@ -546,7 +546,7 @@ int main(int argc, char *argv[]) opt_delete++; ant=1; while (mi_rprev(file,read_record3,0) == 0 && - bcmp(read_record3+start,key,length) == 0) ant++; + memcmp(read_record3+start,key,length) == 0) ant++; if (ant != dupp_keys-2) { printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-2); @@ -566,7 +566,7 @@ int main(int argc, char *argv[]) if (mi_rnext(file,read_record,0)) goto err; /* Skall finnas poster */ while (mi_rnext(file,read_record3,0) == 0 && - bcmp(read_record3+start,key,length) == 0) ant++; + memcmp(read_record3+start,key,length) == 0) ant++; if (ant != dupp_keys-3) { printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-3); @@ -581,7 +581,7 @@ int main(int argc, char *argv[]) opt_delete++; ant=0; while (mi_rprev(file,read_record3,0) == 0 && - bcmp(read_record3+start,key,length) == 0) ant++; + memcmp(read_record3+start,key,length) == 0) ant++; if (ant != dupp_keys-4) { printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-4); @@ -604,7 +604,7 @@ int main(int argc, char *argv[]) for (i=min(2,keys) ; i-- > 0 ;) { if (mi_rsame(file,read_record2,(int) i)) goto err; - if (bcmp(read_record,read_record2,reclength) != 0) + if (memcmp(read_record,read_record2,reclength) != 0) { printf("is_rsame didn't find same record\n"); goto end; diff --git a/storage/myisam/mi_unique.c b/storage/myisam/mi_unique.c index 02fcd9289dd..fdba84a2e67 100644 --- a/storage/myisam/mi_unique.c +++ b/storage/myisam/mi_unique.c @@ -56,7 +56,7 @@ my_bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, uchar *record, if (_mi_search_next(info,info->s->keyinfo+def->key, info->lastkey, MI_UNIQUE_HASH_LENGTH, SEARCH_BIGGER, info->s->state.key_root[def->key]) || - bcmp((char*) info->lastkey, (char*) key_buff, MI_UNIQUE_HASH_LENGTH)) + memcmp(info->lastkey, key_buff, MI_UNIQUE_HASH_LENGTH)) { info->page_changed=1; /* Can't optimize read next */ info->lastpos=lastpos; diff --git a/storage/myisammrg/ha_myisammrg.cc b/storage/myisammrg/ha_myisammrg.cc index 7886cc2a5a2..8e18924c5b8 100644 --- a/storage/myisammrg/ha_myisammrg.cc +++ b/storage/myisammrg/ha_myisammrg.cc @@ -293,8 +293,9 @@ static int myisammrg_parent_open_callback(void *callback_param, } } - DBUG_PRINT("myrg", ("open: '%.*s'.'%.*s'", child_l->db_length, child_l->db, - child_l->table_name_length, child_l->table_name)); + DBUG_PRINT("myrg", ("open: '%.*s'.'%.*s'", (int) child_l->db_length, + child_l->db, (int) child_l->table_name_length, + child_l->table_name)); /* Convert to lowercase if required. */ if (lower_case_table_names && child_l->table_name_length) @@ -341,7 +342,7 @@ static MI_INFO *myisammrg_attach_children_callback(void *callback_param) TABLE *parent; TABLE *child; TABLE_LIST *child_l; - MI_INFO *myisam; + MI_INFO *UNINIT_VAR(myisam); DBUG_ENTER("myisammrg_attach_children_callback"); my_errno= 0; diff --git a/strings/CMakeLists.txt b/strings/CMakeLists.txt index 3d9de566670..67e8ad22783 100755 --- a/strings/CMakeLists.txt +++ b/strings/CMakeLists.txt @@ -18,7 +18,7 @@ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -DSAFEMALLOC -DSAFE_MUT INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) -SET(STRINGS_SOURCES bchange.c bcmp.c bfill.c bmove512.c bmove_upp.c ctype-big5.c ctype-bin.c ctype-cp932.c +SET(STRINGS_SOURCES bchange.c bfill.c bmove512.c bmove_upp.c ctype-big5.c ctype-bin.c ctype-cp932.c ctype-czech.c ctype-euc_kr.c ctype-eucjpms.c ctype-extra.c ctype-gb2312.c ctype-gbk.c ctype-latin1.c ctype-mb.c ctype-simple.c ctype-sjis.c ctype-tis620.c ctype-uca.c ctype-ucs2.c ctype-ujis.c ctype-utf8.c ctype-win1250ch.c ctype.c decimal.c int2str.c diff --git a/strings/Makefile.am b/strings/Makefile.am index db9016b7148..1303af91820 100644 --- a/strings/Makefile.am +++ b/strings/Makefile.am @@ -21,19 +21,19 @@ pkglib_LIBRARIES = libmystrings.a # Exact one of ASSEMBLER_X if ASSEMBLER_x86 ASRCS = strings-x86.s longlong2str-x86.s my_strtoll10-x86.s -CSRCS = bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-cp932.c ctype-czech.c ctype-eucjpms.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c decimal.c ctype-extra.c str_alloc.c longlong2str_asm.c my_strchr.c strmov.c +CSRCS = bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-cp932.c ctype-czech.c ctype-eucjpms.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c decimal.c ctype-extra.c str_alloc.c longlong2str_asm.c my_strchr.c strmov.c else if ASSEMBLER_sparc32 # These file MUST all be on the same line!! Otherwise automake # generats a very broken makefile ASRCS = bmove_upp-sparc.s strappend-sparc.s strend-sparc.s strinstr-sparc.s strmake-sparc.s strmov-sparc.s strnmov-sparc.s strstr-sparc.s -CSRCS = strcont.c strfill.c strcend.c is_prefix.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c strxmov.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-cp932.c ctype-czech.c ctype-eucjpms.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c decimal.c ctype-extra.c my_strtoll10.c str_alloc.c my_strchr.c strmov.c +CSRCS = strcont.c strfill.c strcend.c is_prefix.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c strxmov.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-cp932.c ctype-czech.c ctype-eucjpms.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c decimal.c ctype-extra.c my_strtoll10.c str_alloc.c my_strchr.c strmov.c else #no assembler ASRCS = # These file MUST all be on the same line!! Otherwise automake # generats a very broken makefile -CSRCS = strxmov.c bmove_upp.c strappend.c strcont.c strend.c strfill.c strcend.c is_prefix.c strstr.c strinstr.c strmake.c strnmov.c strmov.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c bcmp.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-cp932.c ctype-czech.c ctype-eucjpms.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c decimal.c ctype-extra.c my_strtoll10.c str_alloc.c my_strchr.c +CSRCS = strxmov.c bmove_upp.c strappend.c strcont.c strend.c strfill.c strcend.c is_prefix.c strstr.c strinstr.c strmake.c strnmov.c strmov.c longlong2str.c bfill.c bmove.c bmove512.c bchange.c strxnmov.c int2str.c str2int.c r_strinstr.c strtod.c strtol.c strtoul.c strtoll.c strtoull.c llstr.c strnlen.c ctype.c ctype-simple.c ctype-mb.c ctype-big5.c ctype-cp932.c ctype-czech.c ctype-eucjpms.c ctype-euc_kr.c ctype-gb2312.c ctype-gbk.c ctype-sjis.c ctype-tis620.c ctype-ujis.c ctype-utf8.c ctype-ucs2.c ctype-uca.c ctype-win1250ch.c ctype-bin.c ctype-latin1.c my_vsnprintf.c xml.c decimal.c ctype-extra.c my_strtoll10.c str_alloc.c my_strchr.c endif endif @@ -57,7 +57,7 @@ EXTRA_DIST = ctype-big5.c ctype-cp932.c ctype-czech.c ctype-eucjpms.c ctype-euc CHARSET_INFO.txt libmystrings_a_LIBADD= -conf_to_src_SOURCES = conf_to_src.c xml.c ctype.c bcmp.c +conf_to_src_SOURCES = conf_to_src.c xml.c ctype.c conf_to_src_LDADD= #force static linking of conf_to_src - essential when linking against #custom installation of libc diff --git a/strings/bcmp.c b/strings/bcmp.c deleted file mode 100644 index 1b6ed22fc22..00000000000 --- a/strings/bcmp.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Copyright (C) 2000 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -/* - bcmp(s1, s2, len) returns 0 if the "len" bytes starting at "s1" are - identical to the "len" bytes starting at "s2", non-zero if they are - different. - Now only used with purify because purify gives wrong warnings when - comparing a shorter string with bcmp. -*/ - -#include -#include "m_string.h" - -#ifdef HAVE_purify -#undef bcmp -#undef HAVE_BCMP -#endif - -#if !defined(bcmp) && !defined(HAVE_BCMP) - -#if defined(MC68000) && defined(DS90) - -int bcmp(s1,s2, len) -const char *s1; -const char *s2; -uint len; /* 0 <= len <= 65535 */ -{ - asm(" movl 12(a7),d0 "); - asm(" subqw #1,d0 "); - asm(" blt .L5 "); - asm(" movl 4(a7),a1 "); - asm(" movl 8(a7),a0 "); - asm(".L4: cmpmb (a0)+,(a1)+ "); - asm(" dbne d0,.L4 "); - asm(".L5: addqw #1,d0 "); -} - -#else - -#ifndef HAVE_purify -size_t bcmp(register const uchar *s1,register const uchar *s2, - register size_t len) -#else -size_t my_bcmp(register const uchar *s1,register const uchar *s2, - register size_t len) -#endif -{ - while (len-- != 0 && *s1++ == *s2++) ; - return len+1; -} - -#endif -#endif /* BSD_FUNCS */ diff --git a/strings/ctype-ucs2.c b/strings/ctype-ucs2.c index cead55f8a0a..865a19b0828 100644 --- a/strings/ctype-ucs2.c +++ b/strings/ctype-ucs2.c @@ -203,7 +203,7 @@ static int my_strnncoll_ucs2(CHARSET_INFO *cs, my_bool t_is_prefix) { int s_res,t_res; - my_wc_t UNINIT_VAR(s_wc),t_wc; + my_wc_t UNINIT_VAR(s_wc), UNINIT_VAR(t_wc); const uchar *se=s+slen; const uchar *te=t+tlen; MY_UNICASE_INFO **uni_plane= cs->caseinfo; @@ -317,7 +317,7 @@ static int my_strncasecmp_ucs2(CHARSET_INFO *cs, const char *s, const char *t, size_t len) { int s_res,t_res; - my_wc_t UNINIT_VAR(s_wc),t_wc; + my_wc_t UNINIT_VAR(s_wc), UNINIT_VAR(t_wc); const char *se=s+len; const char *te=t+len; MY_UNICASE_INFO **uni_plane= cs->caseinfo; @@ -1384,7 +1384,7 @@ int my_strnncoll_ucs2_bin(CHARSET_INFO *cs, my_bool t_is_prefix) { int s_res,t_res; - my_wc_t UNINIT_VAR(s_wc),t_wc; + my_wc_t UNINIT_VAR(s_wc), UNINIT_VAR(t_wc); const uchar *se=s+slen; const uchar *te=t+tlen; diff --git a/strings/make-ccc b/strings/make-ccc index 78d5ad1ce42..93be2bbf862 100755 --- a/strings/make-ccc +++ b/strings/make-ccc @@ -1,3 +1,3 @@ -ccc -DHAVE_CONFIG_H -I. -I. -I.. -I./../include -I../include -O -DDBUG_OFF -fast -O3 -fomit-frame-pointer -c atof.c bchange.c bcmp.c bfill.c bmove.c bmove512.c bmove_upp.c ct_init.c ctype-latin1.c int2str.c is_prefix.c llstr.c longlong2str.c r_strinstr.c str2int.c strappend.c strcend.c strcont.c strend.c strfill.c strinstr.c strmake.c strmov.c strnmov.c strstr.c strtol.c strtoll.c strtoul.c strtoull.c strxmov.c strxnmov.c +ccc -DHAVE_CONFIG_H -I. -I. -I.. -I./../include -I../include -O -DDBUG_OFF -fast -O3 -fomit-frame-pointer -c atof.c bchange.c bfill.c bmove.c bmove512.c bmove_upp.c ct_init.c ctype-latin1.c int2str.c is_prefix.c llstr.c longlong2str.c r_strinstr.c str2int.c strappend.c strcend.c strcont.c strend.c strfill.c strinstr.c strmake.c strmov.c strnmov.c strstr.c strtol.c strtoll.c strtoul.c strtoull.c strxmov.c strxnmov.c rm libmystrings.a ar -cr libmystrings.a atof.o diff --git a/strings/str_test.c b/strings/str_test.c index 3ddfca39419..a476809e22d 100644 --- a/strings/str_test.c +++ b/strings/str_test.c @@ -50,10 +50,10 @@ int main(void) errors=tests=0; init_strings(); - test_arg("bcmp(from,to,5)",(long) my_test(bcmp(from,to,5)),1L); - test_arg("bcmp(from,from,5)",(long) bcmp(from,from,5),0L); + test_arg("memcmp(from,to,5)",(long) my_test(memcmp(from,to,5)),1L); + test_arg("memcmp(from,from,5)",(long) memcmp(from,from,5),0L); - test_arg("bcmp(from,to,0)",(long) bcmp(from,to,0),0L); + test_arg("memcmp(from,to,0)",(long) memcmp(from,to,0),0L); test_arg("strend(from)",(long) strend(from),(long) from+F_LEN); test_arg("strchr(v1,'M')",(long) strchr(v1,'M'),(long) v1); test_arg("strchr(v1,'y')",(long) strchr(v1,'y'),(long) v1+4); @@ -93,7 +93,7 @@ int main(void) test_strarg("bmove_upp(to+6,from+6,3)",(bmove_upp(to+6,from+6,3),0L),INT_MAX32, 3,T_CHAR,3,F_CHAR,0,0); test_strarg("bmove_upp(to,from,0)",(bmove_upp(to,from,0),0L),INT_MAX32,0,0); - test_strarg("bmove_align(to,from,8)",(bmove_align(to,from,8),0L),INT_MAX32, + test_strarg("memcpy(to,from,8)",(memcpy(to,from,8),0L),INT_MAX32, 8,F_CHAR,0,0); test_strarg("strappend(to,3,' ')",(strappend(to,3,' '),0L),INT_MAX32, 3,T_CHAR,1,0,T_LEN-4,T_CHAR,1,0,0,0); @@ -233,7 +233,7 @@ int compare_buff(const char *message, char * b1, char * b2, int length, { int i,error=0; - if (bcmp(b1,b2,length)) + if (memcmp(b1,b2,length)) { errors++; printf("func: '%s' Buffers differ\nIs: ",message); diff --git a/strings/xml.c b/strings/xml.c index 1b697ec6b26..f3cfaad54fa 100644 --- a/strings/xml.c +++ b/strings/xml.c @@ -123,16 +123,16 @@ static int my_xml_scan(MY_XML_PARSER *p,MY_XML_ATTR *a) a->beg=p->cur; a->end=p->cur; - if ((p->end - p->cur > 3) && !bcmp(p->cur,"", 3); p->cur++) + for (; (p->cur < p->end) && memcmp(p->cur, "-->", 3); p->cur++) {} - if (!bcmp(p->cur, "-->", 3)) + if (!memcmp(p->cur, "-->", 3)) p->cur+=3; a->end=p->cur; lex=MY_XML_COMMENT; } - else if (!bcmp(p->cur, "cur, "cur+= 9; for (; p->cur < p->end - 2 ; p->cur++) diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 97d146ff9ef..c492db723b0 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -18096,7 +18096,7 @@ static void test_bug53371() static void test_bug53907() { int rc; - char buf[] = "\x4test\x14../client_test_db/t1"; + uchar buf[] = "\x4test\x14../client_test_db/t1"; myheader("test_bug53907"); From 0300935ff3f6b422cff4c383d74ce0124dfd7f1f Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 2 Jul 2010 18:42:32 -0300 Subject: [PATCH 229/461] Bug#53445: Build with -Wall and fix warnings that it generates If bzero is not available, resort to memset. Also, remove dead bzero.c --- include/m_string.h | 8 ++--- strings/bzero.c | 82 ---------------------------------------------- 2 files changed, 4 insertions(+), 86 deletions(-) delete mode 100644 strings/bzero.c diff --git a/include/m_string.h b/include/m_string.h index d027047f501..3e5cd063b7b 100644 --- a/include/m_string.h +++ b/include/m_string.h @@ -58,6 +58,10 @@ # define bfill(A,B,C) memset((A),(C),(B)) #endif +#if !defined(bzero) && !defined(HAVE_BZERO) +# define bzero(A,B) memset((A),0,(B)) +#endif + #if defined(__cplusplus) extern "C" { #endif @@ -104,10 +108,6 @@ extern const double log_10[309]; extern void bfill(uchar *dst,size_t len,pchar fill); #endif -#if !defined(bzero) && !defined(HAVE_BZERO) -extern void bzero(uchar * dst,size_t len); -#endif - #ifndef bmove512 extern void bmove512(uchar *dst,const uchar *src,size_t len); #endif diff --git a/strings/bzero.c b/strings/bzero.c deleted file mode 100644 index b720de65eed..00000000000 --- a/strings/bzero.c +++ /dev/null @@ -1,82 +0,0 @@ -/* Copyright (C) 2000 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -/* File : bzero.c - Author : Richard A. O'Keefe. - Michael Widenius; ifdef MC68000 - Updated: 23 April 1984 - Defines: bzero() - - bzero(dst, len) moves "len" 0 bytes to "dst". - Thus to clear a disc buffer to 0s do bzero(buffer, BUFSIZ). - - Note: the "b" routines are there to exploit certain VAX order codes, - The asm code is presented for your interest and amusement. -*/ - -#ifndef BSD_FUNCS -#include "strings.h" - -#ifdef bzero -#undef bzero /* remove macro */ -#endif - -#if VaxAsm - -static void _bzero64 _A((char *dst,int len)); - -void bzero(dst, len) -char *dst; -uint len; -{ - while ((int) len >= 64*K) - { - _bzero64(dst, 64*K-1); - dst += 64*K-1; - len -= 64*K-1; - } - _bzero64(dst, len); -} - -_bzero64(dst, len) -char *dst; -int len; -{ - asm("movc5 $0,*4(ap),$0,8(ap),*4(ap)"); -} - -#else - -#if defined(MC68000) && defined(DS90) - -void bzero(dst, len) -char *dst; -uint len; -{ - bfill(dst,len,0); /* This is very optimized ! */ -} /* bzero */ - -#else - -void bzero(dst, len) -register char *dst; -register uint len; -{ - while (len-- != 0) *dst++ = 0; -} /* bzero */ - -#endif -#endif -#endif /* BSD_FUNCS */ From 85d281737f0feccbd43d7f025658d260d340dd84 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Sat, 3 Jul 2010 10:20:05 -0300 Subject: [PATCH 230/461] Fix somewhat bogus GCC warning. Although needless as the base class is mostly empty, initialize the base class explicitly in the copy constructor. --- sql/sql_list.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/sql_list.h b/sql/sql_list.h index 3e0ba2b2ede..c61846c22cd 100644 --- a/sql/sql_list.h +++ b/sql/sql_list.h @@ -74,7 +74,7 @@ public: SQL_I_List() { empty(); } - SQL_I_List(const SQL_I_List &tmp) + SQL_I_List(const SQL_I_List &tmp) : Sql_alloc() { elements= tmp.elements; first= tmp.first; From 1a17d7e8079b4cbda51c311eceaea38b407556f3 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 4 Jul 2010 12:02:49 +0800 Subject: [PATCH 231/461] The following statements support the CURRENT_USER() where a user is needed. DROP USER RENAME USER CURRENT_USER() ... GRANT ... TO CURRENT_USER() REVOKE ... FROM CURRENT_USER() ALTER DEFINER = CURRENT_USER() EVENTbut, When these statements are binlogged, CURRENT_USER() just is binlogged as 'CURRENT_USER()', it is not expanded to the real user name. When slave executes the log event, 'CURRENT_USER()' is expand to the user of slave SQL thread, but SQL thread's user name always NULL. This breaks the replication. After this patch, session's user will be written into query log events if these statements call CURREN_USER() or 'ALTER EVENT' does not assign a definer. mysql-test/include/diff_tables.inc: Expend its abilities. Now it can diff not only in sessions of 'master' and 'slave', but other sessions as well. sql/log_event.cc: session's user will be written into Query_log_event, if is_current_user_used() is TRUE. On slave SQL thread, Only thd->invoker is written into Query_log_event, if it exists. sql/sql_acl.cc: On slave SQL thread, grantor should copy from thd->invoker, if it exists sql/sql_class.h: On slave SQL thread, thd->invoker is used to store the applying event's invoker. --- mysql-test/include/diff_tables.inc | 18 +- mysql-test/include/rpl_diff_tables.inc | 35 +++ .../suite/rpl/r/rpl_current_user.result | 205 +++++++++++++++ .../suite/rpl/r/rpl_innodb_mixed_dml.result | 2 +- mysql-test/suite/rpl/t/rpl_current_user.cnf | 9 + mysql-test/suite/rpl/t/rpl_current_user.test | 238 ++++++++++++++++++ sql/log_event.cc | 65 ++++- sql/log_event.h | 7 +- sql/sql_acl.cc | 23 +- sql/sql_class.cc | 20 ++ sql/sql_class.h | 31 +++ sql/sql_parse.cc | 2 +- 12 files changed, 634 insertions(+), 21 deletions(-) create mode 100644 mysql-test/include/rpl_diff_tables.inc create mode 100644 mysql-test/suite/rpl/r/rpl_current_user.result create mode 100644 mysql-test/suite/rpl/t/rpl_current_user.cnf create mode 100644 mysql-test/suite/rpl/t/rpl_current_user.test diff --git a/mysql-test/include/diff_tables.inc b/mysql-test/include/diff_tables.inc index d15dd56b35d..e11e69b3023 100644 --- a/mysql-test/include/diff_tables.inc +++ b/mysql-test/include/diff_tables.inc @@ -64,17 +64,13 @@ let $_diff_table=$diff_table_2; let $_diff_i=2; while ($_diff_i) { - # Parse out any leading "master:" or "slave:" from the table - # specification and connect the appropriate server. - let $_diff_conn_master=`SELECT SUBSTR('$_diff_table', 1, 7) = 'master:'`; - if ($_diff_conn_master) { - let $_diff_table=`SELECT SUBSTR('$_diff_table', 8)`; - connection master; - } - let $_diff_conn_slave=`SELECT SUBSTR('$_diff_table', 1, 6) = 'slave:'`; - if ($_diff_conn_slave) { - let $_diff_table=`SELECT SUBSTR('$_diff_table', 7)`; - connection slave; + # Parse out any leading "master:" or "slave:" from the table specification +# and connect the appropriate server. + let $_pos= `SELECT LOCATE(':', '$_diff_table')`; + let $_diff_conn=`SELECT SUBSTR('$_diff_table', 1, $_pos-1)`; + if (`SELECT "XX$_diff_conn" <> "XX"`) { + let $_diff_table=`SELECT SUBSTR('$_diff_table', $_pos+1)`; + connection $_diff_conn; } # Sanity-check the input. diff --git a/mysql-test/include/rpl_diff_tables.inc b/mysql-test/include/rpl_diff_tables.inc new file mode 100644 index 00000000000..c3a45578a79 --- /dev/null +++ b/mysql-test/include/rpl_diff_tables.inc @@ -0,0 +1,35 @@ +# ############################################################################# +# Check whether the given table is consistent between different master and +# slaves +# +# Usage: +# --let $diff_table= test.t1 +# --let $diff_server_list= master, slave, slave2 +# --source include/rpl_diff_tables.inc +# ############################################################################# + +if (`SELECT "XX$diff_table" = "XX"`) +{ + --die diff_table is null. +} + +--let $_servers= master, slave +if (`SELECT "XX$diff_server_list" <> "XX"`) +{ + --let $_servers= $diff_server_list +} + +--let $_master= `SELECT SUBSTRING_INDEX('$_servers', ',', 1)` +--let $_servers= `SELECT LTRIM(SUBSTRING('$_servers', LENGTH('$_master') + 2))` +connection $_master; +while (`SELECT "XX$_servers" <> "XX"`) +{ + --let $_slave= `SELECT SUBSTRING_INDEX('$_servers', ',', 1)` + --let $_servers= `SELECT LTRIM(SUBSTRING('$_servers', LENGTH('$_slave') + 2))` + + --sync_slave_with_master $_slave + --let $diff_table_1= $_master:$diff_table + --let $diff_table_2= $_slave:$diff_table + --source include/diff_tables.inc + connection $_slave; +} diff --git a/mysql-test/suite/rpl/r/rpl_current_user.result b/mysql-test/suite/rpl/r/rpl_current_user.result new file mode 100644 index 00000000000..85490c2571c --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_current_user.result @@ -0,0 +1,205 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; + +# On slave2 +# Connect slave2 to slave +CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=SLAVE_MYPORT;, +MASTER_LOG_FILE='slave-bin.000001', MASTER_USER='root'; +START SLAVE; + +# [On master] +DROP VIEW IF EXISTS v_user; +DROP VIEW IF EXISTS v_tables_priv; +DROP VIEW IF EXISTS v_procs_priv; +DROP PROCEDURE IF EXISTS p1; +DROP PROCEDURE IF EXISTS my_grant; +DROP PROCEDURE IF EXISTS my_revoke; +DROP FUNCTION IF EXISTS my_user; +DROP EVENT IF EXISTS e1; +CREATE TABLE t1(c1 char(100)); +CREATE VIEW test.v_user AS SELECT * FROM mysql.user WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_tables_priv AS SELECT * FROM mysql.tables_priv WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_procs_priv AS SELECT * FROM mysql.procs_priv WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_event AS SELECT definer FROM mysql.event WHERE name = 'e1'; +CREATE PROCEDURE p1() SELECT 1; +# bug48321_1-01234 has the max length(16) of user. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1-01234'@'localhost' WITH GRANT OPTION; + +# Make sure the max lengths of user and host +# the user name is too lengh +GRANT CREATE USER ON *.* TO '01234567890123456'@'fakehost'; +ERROR HY000: String '01234567890123456' is too long for user name (should be no longer than 16) +# the host name is too lengh +GRANT CREATE USER ON *.* TO 'fakename'@'0123456789012345678901234567890123456789012345678901234567890'; +ERROR HY000: String '0123456789012345678901234567890123456789012345678901234567890' is too long for host name (should be no longer than 60) + +# User 'bug48321_1-01234' connects to master by conn1 +# [On conn1] +# Verify 'REVOKE ALL' statement +REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER(); +Comparing tables master:test.v_user and slave:test.v_user +Comparing tables master:test.v_user and slave2:test.v_user + +# Verify 'GRANT ... ON TABLE ...' statement +GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); +Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv +Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv + +# Verify 'GRANT ... ON PROCEDURE...' statement +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER(); +Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv +Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv + +# Verify 'GRANT ... ON *.* ...' statement +GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() WITH GRANT OPTION; +Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv +Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv + +# Verify 'REVOKE ... ON TABLE ...' statement +REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); +Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv +Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv + +# Verify 'REVOKE ... ON PROCEDURE...' statement +REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER(); +Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv +Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv + +# Verify 'REVOKE ... ON *.* ...' statement +REVOKE ALL PRIVILEGES ON *.* FROM CURRENT_USER(); +Comparing tables master:test.v_user and slave:test.v_user +Comparing tables master:test.v_user and slave2:test.v_user + +# Verify 'GRANT ...' statement in the procedure +CREATE PROCEDURE my_grant() +GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); +call my_grant; +Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv +Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv + +# Verify 'REVOKE ... ON TABLE ...' statement in the procedure +CREATE PROCEDURE my_revoke() +REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); +call my_revoke; +Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv +Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv + +# Verify 'RENAME USER ...' statement +RENAME USER CURRENT_USER TO 'bug48321_2'@'localhost'; +Comparing tables master:test.v_user and slave:test.v_user +Comparing tables master:test.v_user and slave2:test.v_user + +# Verify 'DROP USER ...' statement +GRANT CREATE USER ON *.* TO 'bug48321_2'@'localhost'; +DROP USER CURRENT_USER(); +Comparing tables master:test.v_user and slave:test.v_user +Comparing tables master:test.v_user and slave2:test.v_user + +# Verify 'ALTER EVENT...' statement +CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT * FROM t1; +# Explicitly assign CURRENT_USER() to definer +ALTER DEFINER=CURRENT_USER() EVENT e1 ENABLE; +Comparing tables master:test.v_event and slave:test.v_event +Comparing tables master:test.v_event and slave2:test.v_event + +# Session user will be set as definer, if the statement does not assign +# a definer +ALTER EVENT e1 ENABLE; +Comparing tables master:test.v_event and slave:test.v_event +Comparing tables master:test.v_event and slave2:test.v_event + +# Verify that this patch does not affect the calling of CURRENT_USER() +# in the other statements +# [On master] +INSERT INTO t1 VALUES(CURRENT_USER()), ('1234'); +Warnings: +Note 1592 Statement may not be safe to log in statement format. +SELECT * FROM t1; +c1 +root@localhost +1234 +# [On slave] +SELECT * FROM t1; +c1 +@ +1234 +# [On slave2] +SELECT * FROM t1; +c1 +@ +1234 +# [On master] +UPDATE t1 SET c1=CURRENT_USER() WHERE c1='1234'; +Warnings: +Note 1592 Statement may not be safe to log in statement format. +SELECT * FROM t1; +c1 +root@localhost +root@localhost +# [On slave] +SELECT * FROM t1; +c1 +@ +@ +# [On slave2] +SELECT * FROM t1; +c1 +@ +@ +# [On master] +DELETE FROM t1 WHERE c1=CURRENT_USER(); +Warnings: +Note 1592 Statement may not be safe to log in statement format. +SELECT * FROM t1; +c1 +# [On slave] +SELECT * FROM t1; +c1 +# [On slave2] +SELECT * FROM t1; +c1 +# [On master] +CREATE TABLE t2(c1 char(100)); +CREATE FUNCTION my_user() RETURNS VARCHAR(64) +SQL SECURITY INVOKER +BEGIN +INSERT INTO t2 VALUES(CURRENT_USER()); +RETURN CURRENT_USER(); +END | +INSERT INTO t1 VALUES(my_user()); +Warnings: +Note 1592 Statement may not be safe to log in statement format. +Note 1592 Statement may not be safe to log in statement format. +SELECT * FROM t1; +c1 +root@localhost +SELECT * FROM t2; +c1 +root@localhost +# [On slave] +SELECT * FROM t1; +c1 +@ +SELECT * FROM t2; +c1 +@ +# [On slave2] +SELECT * FROM t1; +c1 +@ +SELECT * FROM t2; +c1 +@ + +# END +DROP TABLE t1, t2; +DROP VIEW v_user, v_tables_priv, v_procs_priv, v_event; +DROP PROCEDURE p1; +DROP PROCEDURE my_grant; +DROP PROCEDURE my_revoke; +DROP FUNCTION my_user; +DROP EVENT e1; diff --git a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result index 26f2545dd72..35f4cd3ecbb 100644 --- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result +++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result @@ -750,7 +750,7 @@ test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 lat USE test_rpl; SHOW EVENTS; Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation -test_rpl e2 @ SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci ==========MASTER========== SELECT COUNT(*) FROM t1; COUNT(*) diff --git a/mysql-test/suite/rpl/t/rpl_current_user.cnf b/mysql-test/suite/rpl/t/rpl_current_user.cnf new file mode 100644 index 00000000000..999ee727a88 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_current_user.cnf @@ -0,0 +1,9 @@ +!include ../my.cnf + +[mysqld.3] +server-id=3 +log-bin=slave-bin + +[ENV] +SLAVE_MYPORT1= @mysqld.3.port +SLAVE_MYSOCK1= @mysqld.3.socket diff --git a/mysql-test/suite/rpl/t/rpl_current_user.test b/mysql-test/suite/rpl/t/rpl_current_user.test new file mode 100644 index 00000000000..72581ed7049 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_current_user.test @@ -0,0 +1,238 @@ +############################################################################## +# BUG#48321 CURRENT_USER() incorrectly replicated for DROP/RENAME USER, +# REVOKE, GRANT, ALTER EVENT +# +# Calling CURRENT_USER() results into inconsistency between slave and master, +# as the slave SQL thread has different user with common users. +# +# After the patch for bug#48321, session's user will be written into query log +# event if CURRENT_USER() is called in 'DROP/RENAME USER', 'REVOKE', 'GRANT', +# 'ALTER EVENT'. +# +############################################################################## +source include/master-slave.inc; +source include/have_binlog_format_statement.inc; + +--echo +--echo # On slave2 +connect (slave2,127.0.0.1,root,,test,$SLAVE_MYPORT1,); +connection slave2; + +--echo # Connect slave2 to slave +--replace_result $SLAVE_MYPORT SLAVE_MYPORT; +eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$SLAVE_MYPORT, + MASTER_LOG_FILE='slave-bin.000001', MASTER_USER='root'; +START SLAVE; +source include/wait_for_slave_to_start.inc; + +--echo +--echo # [On master] +connection master; +--disable_warnings +DROP VIEW IF EXISTS v_user; +DROP VIEW IF EXISTS v_tables_priv; +DROP VIEW IF EXISTS v_procs_priv; +DROP PROCEDURE IF EXISTS p1; +DROP PROCEDURE IF EXISTS my_grant; +DROP PROCEDURE IF EXISTS my_revoke; +DROP FUNCTION IF EXISTS my_user; +DROP EVENT IF EXISTS e1; +--enable_warnings +CREATE TABLE t1(c1 char(100)); +CREATE VIEW test.v_user AS SELECT * FROM mysql.user WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_tables_priv AS SELECT * FROM mysql.tables_priv WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_procs_priv AS SELECT * FROM mysql.procs_priv WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_event AS SELECT definer FROM mysql.event WHERE name = 'e1'; +CREATE PROCEDURE p1() SELECT 1; +--echo # bug48321_1-01234 has the max length(16) of user. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1-01234'@'localhost' WITH GRANT OPTION; + +--echo +--echo # Make sure the max lengths of user and host +--echo # the user name is too lengh +--error 1470 +GRANT CREATE USER ON *.* TO '01234567890123456'@'fakehost'; +--echo # the host name is too lengh +--error 1470 +GRANT CREATE USER ON *.* TO 'fakename'@'0123456789012345678901234567890123456789012345678901234567890'; + +--echo +--echo # User 'bug48321_1-01234' connects to master by conn1 +connect (conn1, 127.0.0.1, 'bug48321_1-01234'@'localhost',,); +connection conn1; +--echo # [On conn1] +--echo # Verify 'REVOKE ALL' statement +REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER(); +let $diff_table= test.v_user; +let $diff_server_list= master, slave, slave2; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'GRANT ... ON TABLE ...' statement +connection conn1; +GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); +let $diff_table= test.v_tables_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'GRANT ... ON PROCEDURE...' statement +connection conn1; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER(); +let $diff_table= test.v_procs_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'GRANT ... ON *.* ...' statement +connection conn1; +GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() WITH GRANT OPTION; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'REVOKE ... ON TABLE ...' statement +connection conn1; +REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); +let $diff_table= test.v_tables_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'REVOKE ... ON PROCEDURE...' statement +connection conn1; +REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER(); +let $diff_table= test.v_procs_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'REVOKE ... ON *.* ...' statement +connection conn1; +REVOKE ALL PRIVILEGES ON *.* FROM CURRENT_USER(); +let $diff_table= test.v_user; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'GRANT ...' statement in the procedure +connection conn1; +CREATE PROCEDURE my_grant() + GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); +call my_grant; +let $diff_table= test.v_tables_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'REVOKE ... ON TABLE ...' statement in the procedure +connection conn1; +CREATE PROCEDURE my_revoke() + REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); +call my_revoke; +let $diff_table= test.v_tables_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'RENAME USER ...' statement +connection conn1; +RENAME USER CURRENT_USER TO 'bug48321_2'@'localhost'; +let $diff_table= test.v_user; +source include/rpl_diff_tables.inc; + +disconnect conn1; + +--echo +--echo # Verify 'DROP USER ...' statement +connection master; +GRANT CREATE USER ON *.* TO 'bug48321_2'@'localhost'; +connect (conn1, 127.0.0.1, 'bug48321_2'@'localhost',,); +connection conn1; +DROP USER CURRENT_USER(); +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'ALTER EVENT...' statement +connection master; +CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT * FROM t1; + +--echo # Explicitly assign CURRENT_USER() to definer +ALTER DEFINER=CURRENT_USER() EVENT e1 ENABLE; +let $diff_table= test.v_event; +source include/rpl_diff_tables.inc; + +connection master; +--echo +--echo # Session user will be set as definer, if the statement does not assign +--echo # a definer +ALTER EVENT e1 ENABLE; +sync_slave_with_master; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify that this patch does not affect the calling of CURRENT_USER() +--echo # in the other statements +connection master; +--echo # [On master] +INSERT INTO t1 VALUES(CURRENT_USER()), ('1234'); +SELECT * FROM t1; +sync_slave_with_master; +--echo # [On slave] +SELECT * FROM t1; +--echo # [On slave2] +sync_slave_with_master slave2; +SELECT * FROM t1; + +connection master; +--echo # [On master] +UPDATE t1 SET c1=CURRENT_USER() WHERE c1='1234'; +SELECT * FROM t1; +sync_slave_with_master; +--echo # [On slave] +SELECT * FROM t1; +sync_slave_with_master slave2; +--echo # [On slave2] +SELECT * FROM t1; + +connection master; +--echo # [On master] +DELETE FROM t1 WHERE c1=CURRENT_USER(); +SELECT * FROM t1; +sync_slave_with_master; +--echo # [On slave] +SELECT * FROM t1; +sync_slave_with_master slave2; +--echo # [On slave2] +SELECT * FROM t1; + +connection master; +--echo # [On master] +CREATE TABLE t2(c1 char(100)); + +DELIMITER |; +CREATE FUNCTION my_user() RETURNS VARCHAR(64) + SQL SECURITY INVOKER +BEGIN + INSERT INTO t2 VALUES(CURRENT_USER()); + RETURN CURRENT_USER(); +END | +DELIMITER ;| + +INSERT INTO t1 VALUES(my_user()); +SELECT * FROM t1; +SELECT * FROM t2; +sync_slave_with_master; +--echo # [On slave] +SELECT * FROM t1; +SELECT * FROM t2; +sync_slave_with_master slave2; +--echo # [On slave2] +SELECT * FROM t1; +SELECT * FROM t2; + +--echo +--echo # END +connection master; +DROP TABLE t1, t2; +DROP VIEW v_user, v_tables_priv, v_procs_priv, v_event; +DROP PROCEDURE p1; +DROP PROCEDURE my_grant; +DROP PROCEDURE my_revoke; +DROP FUNCTION my_user; +DROP EVENT e1; +sync_slave_with_master; +sync_slave_with_master slave2; +source include/master-slave-end.inc; diff --git a/sql/log_event.cc b/sql/log_event.cc index d53f13e0b6b..0e4d4bd512b 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -2307,6 +2307,53 @@ bool Query_log_event::write(IO_CACHE* file) start+= 4; } + if (thd && thd->is_current_user_used()) + { + LEX_STRING user; + LEX_STRING host; + memset(&user, 0, sizeof(user)); + memset(&host, 0, sizeof(host)); + + if (thd->slave_thread && thd->has_invoker()) + { + /* user will be null, if master is older than this patch */ + user= thd->get_invoker_user(); + host= thd->get_invoker_host(); + } + else if (thd->security_ctx->priv_user) + { + Security_context *ctx= thd->security_ctx; + + user.length= strlen(ctx->priv_user); + user.str= ctx->priv_user; + if (ctx->priv_host[0] != '\0') + { + host.str= ctx->priv_host; + host.length= strlen(ctx->priv_host); + } + } + + if (user.length > 0) + { + *start++= Q_INVOKER; + + /* + Store user length and user. The max length of use is 16, so 1 byte is + enough to store the user's length. + */ + *start++= (uchar)user.length; + memcpy(start, user.str, user.length); + start+= user.length; + + /* + Store host length and host. The max length of host is 60, so 1 byte is + enough to store the host's length. + */ + *start++= (uchar)host.length; + memcpy(start, host.str, host.length); + start+= host.length; + } + } /* NOTE: When adding new status vars, please don't forget to update the MAX_SIZE_LOG_EVENT_STATUS in log_event.h and update the function @@ -2575,6 +2622,8 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, bool catalog_nz= 1; DBUG_ENTER("Query_log_event::Query_log_event(char*,...)"); + memset(&user, 0, sizeof(user)); + memset(&host, 0, sizeof(host)); common_header_len= description_event->common_header_len; post_header_len= description_event->post_header_len[event_type-1]; DBUG_PRINT("info",("event_len: %u common_header_len: %d post_header_len: %d", @@ -2729,6 +2778,20 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, data_written= master_data_written= uint4korr(pos); pos+= 4; break; + case Q_INVOKER: + { + CHECK_SPACE(pos, end, 1); + user.length= *pos++; + CHECK_SPACE(pos, end, user.length); + user.str= my_strndup((const char *)pos, user.length, MYF(0)); + pos+= user.length; + + CHECK_SPACE(pos, end, 1); + host.length= *pos++; + CHECK_SPACE(pos, end, host.length); + host.str= my_strndup((const char *)pos, host.length, MYF(0)); + pos+= host.length; + } default: /* That's why you must write status vars in growing order of code */ DBUG_PRINT("info",("Query_log_event has unknown status vars (first has\ @@ -3178,7 +3241,7 @@ int Query_log_event::do_apply_event(Relay_log_info const *rli, thd->variables.collation_database= thd->db_charset; thd->table_map_for_update= (table_map)table_map_for_update; - + thd->set_invoker(&user, &host); /* Execute the query (note that we bypass dispatch_command()) */ const char* found_semicolon= NULL; mysql_parse(thd, thd->query(), thd->query_length(), &found_semicolon); diff --git a/sql/log_event.h b/sql/log_event.h index e3ca4ca3321..816a241e55d 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -264,7 +264,8 @@ struct sql_ex_info 1 + 2 /* type, lc_time_names_number */ + \ 1 + 2 /* type, charset_database_number */ + \ 1 + 8 /* type, table_map_for_update */ + \ - 1 + 4 /* type, master_data_written */) + 1 + 4 /* type, master_data_written */ + \ + 1 + 16 + 1 + 60/* type, user_len, user, host_len, host */) #define MAX_LOG_EVENT_HEADER ( /* in order of Query_log_event::write */ \ LOG_EVENT_HEADER_LEN + /* write_header */ \ QUERY_HEADER_LEN + /* write_data */ \ @@ -333,6 +334,8 @@ struct sql_ex_info #define Q_MASTER_DATA_WRITTEN_CODE 10 +#define Q_INVOKER 11 + /* Intvar event post-header */ /* Intvar event data */ @@ -1546,6 +1549,8 @@ protected: */ class Query_log_event: public Log_event { + LEX_STRING user; + LEX_STRING host; protected: Log_event::Byte* data_buf; public: diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index dd256c70ecb..9640b8db1b2 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -194,6 +194,7 @@ static bool compare_hostname(const acl_host_and_ip *host,const char *hostname, const char *ip); static my_bool acl_load(THD *thd, TABLE_LIST *tables); static my_bool grant_load(THD *thd, TABLE_LIST *tables); +static inline void get_grantor(THD *thd, char* grantor); /* Convert scrambled password to binary form, according to scramble type, @@ -2704,6 +2705,20 @@ end: DBUG_RETURN(result); } +static inline void get_grantor(THD *thd, char *grantor) +{ + const char *user= thd->security_ctx->user; + const char *host= thd->security_ctx->host_or_ip; + +#if defined(HAVE_REPLICATION) + if (thd->slave_thread && thd->has_invoker()) + { + user= thd->get_invoker_user().str; + host= thd->get_invoker_host().str; + } +#endif + strxmov(grantor, user, "@", host, NullS); +} static int replace_table_table(THD *thd, GRANT_TABLE *grant_table, TABLE *table, const LEX_USER &combo, @@ -2718,9 +2733,7 @@ static int replace_table_table(THD *thd, GRANT_TABLE *grant_table, uchar user_key[MAX_KEY_LENGTH]; DBUG_ENTER("replace_table_table"); - strxmov(grantor, thd->security_ctx->user, "@", - thd->security_ctx->host_or_ip, NullS); - + get_grantor(thd, grantor); /* The following should always succeed as new users are created before this function is called! @@ -2850,9 +2863,7 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name, DBUG_RETURN(-1); } - strxmov(grantor, thd->security_ctx->user, "@", - thd->security_ctx->host_or_ip, NullS); - + get_grantor(thd, grantor); /* New users are created before this function is called. diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 93aa6a8268c..2ce03708a9a 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -736,6 +736,9 @@ THD::THD() thr_lock_owner_init(&main_lock_id, &lock_info); m_internal_handler= NULL; + current_user_used= FALSE; + memset(&invoker_user, 0, sizeof(invoker_user)); + memset(&invoker_host, 0, sizeof(invoker_host)); } @@ -1236,6 +1239,7 @@ void THD::cleanup_after_query() where= THD::DEFAULT_WHERE; /* reset table map for multi-table update */ table_map_for_update= 0; + clean_current_user_used(); } @@ -3267,6 +3271,22 @@ void THD::set_query(char *query_arg, uint32 query_length_arg) pthread_mutex_unlock(&LOCK_thd_data); } +void THD::get_definer(LEX_USER *definer) +{ + set_current_user_used(); +#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) + if (slave_thread && has_invoker()) + { + definer->user = invoker_user; + definer->host= invoker_host; + definer->password.str= NULL; + definer->password.length= 0; + } + else +#endif + get_default_definer(this, definer); +} + /** Mark transaction to rollback and mark error as fatal to a sub-statement. diff --git a/sql/sql_class.h b/sql/sql_class.h index 023367cb747..5155ffe0603 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -2341,6 +2341,18 @@ public: Protected with LOCK_thd_data mutex. */ void set_query(char *query_arg, uint32 query_length_arg); + void set_current_user_used() { current_user_used= TRUE; } + bool is_current_user_used() { return current_user_used; } + void clean_current_user_used() { current_user_used= FALSE; } + void get_definer(LEX_USER *definer); + void set_invoker(const LEX_STRING *user, const LEX_STRING *host) + { + invoker_user= *user; + invoker_host= *host; + } + LEX_STRING get_invoker_user() { return invoker_user; } + LEX_STRING get_invoker_host() { return invoker_host; } + bool has_invoker() { return invoker_user.length > 0; } private: /** The current internal error handler for this thread, or NULL. */ Internal_error_handler *m_internal_handler; @@ -2360,6 +2372,25 @@ private: tree itself is reused between executions and thus is stored elsewhere. */ MEM_ROOT main_mem_root; + + /** + It will be set TURE if CURRENT_USER() is called in account management + statements or default definer is set in CREATE/ALTER SP, SF, Event, + TRIGGER or VIEW statements. + + Current user will be binlogged into Query_log_event if current_user_used + is TRUE; It will be stored into invoker_host and invoker_user by SQL thread. + */ + bool current_user_used; + + /** + It points to the invoker in the Query_log_event. + SQL thread use it as the default definer in CREATE/ALTER SP, SF, Event, + TRIGGER or VIEW statements or current user in account management + statements if it is not NULL. + */ + LEX_STRING invoker_user; + LEX_STRING invoker_host; }; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index ed2c76fdcb8..1f3d29ffec0 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -7654,7 +7654,7 @@ LEX_USER *create_default_definer(THD *thd) if (! (definer= (LEX_USER*) thd->alloc(sizeof(LEX_USER)))) return 0; - get_default_definer(thd, definer); + thd->get_definer(definer); return definer; } From fd0eb0c1b02879b527471f4304f4a443fdd96fa9 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 4 Jul 2010 16:17:53 +0800 Subject: [PATCH 232/461] Postfix for bug#48321 Some test cases set ANSI_QUOTES in sql_mode. So we have to use single quotes to quote literal strings. --- mysql-test/include/diff_tables.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/include/diff_tables.inc b/mysql-test/include/diff_tables.inc index e11e69b3023..81362e8643b 100644 --- a/mysql-test/include/diff_tables.inc +++ b/mysql-test/include/diff_tables.inc @@ -68,7 +68,7 @@ while ($_diff_i) { # and connect the appropriate server. let $_pos= `SELECT LOCATE(':', '$_diff_table')`; let $_diff_conn=`SELECT SUBSTR('$_diff_table', 1, $_pos-1)`; - if (`SELECT "XX$_diff_conn" <> "XX"`) { + if (`SELECT 'XX$_diff_conn' <> 'XX'`) { let $_diff_table=`SELECT SUBSTR('$_diff_table', $_pos+1)`; connection $_diff_conn; } From 3e1a47070518a1995cc48e28c36b7c817d5f6008 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 25 Jun 2010 15:59:44 +0300 Subject: [PATCH 233/461] Bug #53095: SELECT column_name FROM INFORMATION_SCHEMA.STATISTICS returns nothing When looking for table or database names inside INFORMATION_SCHEMA we must convert the table and database names to lowercase (just as it's done in the rest of the server) when lowercase_table_names is non-zero. This will allow us to find the same tables that we would find if there is no condition. Fixed by converting to lower case when extracting the database and table name conditions. Test case added. --- mysql-test/r/lowercase_view.result | 17 ++++++++++++++ mysql-test/t/lowercase_view.test | 22 ++++++++++++++++++ sql/sql_show.cc | 37 ++++++++++++++++++++++-------- 3 files changed, 67 insertions(+), 9 deletions(-) diff --git a/mysql-test/r/lowercase_view.result b/mysql-test/r/lowercase_view.result index c37dc41c495..33c87ec101c 100644 --- a/mysql-test/r/lowercase_view.result +++ b/mysql-test/r/lowercase_view.result @@ -148,3 +148,20 @@ a DROP VIEW v1; DROP TABLE t1; End of 5.0 tests. +# +# Bug #53095: SELECT column_name FROM INFORMATION_SCHEMA.STATISTICS +# returns nothing +# +CREATE TABLE `ttt` ( +`f1` char(3) NOT NULL, +PRIMARY KEY (`f1`) +) ENGINE=myisam DEFAULT CHARSET=latin1; +SELECT count(COLUMN_NAME) FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = +'TTT'; +count(COLUMN_NAME) +1 +SELECT count(*) FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 'TTT'; +count(*) +1 +DROP TABLE `ttt`; +End of 5.0 tests. diff --git a/mysql-test/t/lowercase_view.test b/mysql-test/t/lowercase_view.test index d6612b3e6b9..52be911cde0 100644 --- a/mysql-test/t/lowercase_view.test +++ b/mysql-test/t/lowercase_view.test @@ -160,4 +160,26 @@ SELECT * FROM v1; DROP VIEW v1; DROP TABLE t1; + --echo End of 5.0 tests. + + +--echo # +--echo # Bug #53095: SELECT column_name FROM INFORMATION_SCHEMA.STATISTICS +--echo # returns nothing +--echo # + +CREATE TABLE `ttt` ( + `f1` char(3) NOT NULL, + PRIMARY KEY (`f1`) +) ENGINE=myisam DEFAULT CHARSET=latin1; + +SELECT count(COLUMN_NAME) FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = +'TTT'; +SELECT count(*) FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 'TTT'; + +DROP TABLE `ttt`; + + +--echo End of 5.0 tests. + diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 33abf356718..0eeb333f278 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2690,36 +2690,54 @@ bool get_lookup_field_values(THD *thd, COND *cond, TABLE_LIST *tables, { LEX *lex= thd->lex; const char *wild= lex->wild ? lex->wild->ptr() : NullS; + bool rc= 0; + bzero((char*) lookup_field_values, sizeof(LOOKUP_FIELD_VALUES)); switch (lex->sql_command) { case SQLCOM_SHOW_DATABASES: if (wild) { - lookup_field_values->db_value.str= (char*) wild; - lookup_field_values->db_value.length= strlen(wild); + thd->make_lex_string(&lookup_field_values->db_value, + wild, strlen(wild), 0); lookup_field_values->wild_db_value= 1; } - return 0; + break; case SQLCOM_SHOW_TABLES: case SQLCOM_SHOW_TABLE_STATUS: case SQLCOM_SHOW_TRIGGERS: case SQLCOM_SHOW_EVENTS: - lookup_field_values->db_value.str= lex->select_lex.db; - lookup_field_values->db_value.length=strlen(lex->select_lex.db); + thd->make_lex_string(&lookup_field_values->db_value, + lex->select_lex.db, strlen(lex->select_lex.db), 0); if (wild) { - lookup_field_values->table_value.str= (char*)wild; - lookup_field_values->table_value.length= strlen(wild); + thd->make_lex_string(&lookup_field_values->table_value, + wild, strlen(wild), 0); lookup_field_values->wild_table_value= 1; } - return 0; + break; default: /* The "default" is for queries over I_S. All previous cases handle SHOW commands. */ - return calc_lookup_values_from_cond(thd, cond, tables, lookup_field_values); + rc= calc_lookup_values_from_cond(thd, cond, tables, lookup_field_values); + break; } + + if (lower_case_table_names && !rc) + { + /* + We can safely do in-place upgrades here since all of the above cases + are allocating a new memory buffer for these strings. + */ + if (lookup_field_values->db_value.str && lookup_field_values->db_value.str[0]) + my_casedn_str(system_charset_info, lookup_field_values->db_value.str); + if (lookup_field_values->table_value.str && + lookup_field_values->table_value.str[0]) + my_casedn_str(system_charset_info, lookup_field_values->table_value.str); + } + + return rc; } @@ -3324,6 +3342,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) error= 0; goto err; } + DBUG_PRINT("INDEX VALUES",("db_name='%s', table_name='%s'", STR_OR_NIL(lookup_field_vals.db_value.str), STR_OR_NIL(lookup_field_vals.table_value.str))); From 5c4e95f83b16caa75e2e93d1b2c9f39a214684d6 Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Fri, 25 Jun 2010 15:09:45 +0200 Subject: [PATCH 234/461] Implement an NSIS based installer --- CMakeLists.txt | 75 ++++++++++++++++++++ client/CMakeLists.txt | 2 + extra/CMakeLists.txt | 2 + libmysql/CMakeLists.txt | 8 +++ mysys/CMakeLists.txt | 2 + regex/CMakeLists.txt | 2 + scripts/CMakeLists.txt | 5 ++ server-tools/instance-manager/CMakeLists.txt | 2 + sql/CMakeLists.txt | 5 ++ storage/maria/CMakeLists.txt | 3 + storage/myisam/CMakeLists.txt | 2 + strings/CMakeLists.txt | 2 + tests/CMakeLists.txt | 2 + zlib/CMakeLists.txt | 2 + 14 files changed, 114 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a79051eb706..c8245b886db 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -333,3 +333,78 @@ IF(WITH_EMBEDDED_SERVER) ADD_SUBDIRECTORY(libmysqld/examples) ENDIF(WITH_EMBEDDED_SERVER) ADD_SUBDIRECTORY(mysql-test/lib/My/SafeProcess) + +# Set up the installer +SET(CPACK_PACKAGE_NAME "MariaDB") +STRING(REPLACE "-MariaDB" "" CPACK_PACKAGE_VERSION ${VERSION}) +SET(CPACK_PACKAGE_VENDOR "Monty Program AB http://www.montyprogram.com") +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MariaDB") +SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING) +SET(CPACK_GENERATOR NSIS) + +# Installer components and grouping +SET(CPACK_COMPONENT_GROUP_SERVER_DESCRIPTION "The files necessary for running the MariaDB server.") +SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION "Files used in development on the MariaDB server.") +SET(CPACK_ALL_INSTALL_TYPES Normal Development) +SET(CPACK_COMPONENT_RUNTIME_DISPLAY_NAME "MariaDB server") +SET(CPACK_COMPONENT_RUNTIME_DESCRIPTION "The server itself. You want to install this one.") +SET(CPACK_COMPONENT_RUNTIME_GROUP "Server") +SET(CPACK_COMPONENT_RUNTIME_INSTALL_TYPES Normal Development) +SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "Development headers") +SET(CPACK_COMPONENT_HEADERS_DESCRIPTION "Header files for development on MariaDB.") +SET(CPACK_COMPONENT_HEADERS_DEPENDS runtime) +SET(CPACK_COMPONENT_HEADERS_GROUP "Development") +SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Development) +SET(CPACK_COMPONENT_PERLSCRIPTS_DISPLAY_NAME "Server perl scripts") +SET(CPACK_COMPONENT_PERLSCRIPTS_DESCRIPTION "Scripts to controll and modify the server. You need a perl installation for these to work.") +SET(CPACK_COMPONENT_PERLSCRIPTS_DEPENDS runtime) +SET(CPACK_COMPONENT_PERLSCRIPTS_GROUP "Server") +SET(CPACK_COMPONENT_PERLSCRIPTS_INSTALL_TYPES Normal Development) +# TODO: Add debug files +# TODO: Add embedded server files +# TODO: Add test files +# TODO: Add sql-bench + +# Add files to the installer +INSTALL(FILES COPYING EXCEPTIONS-CLIENT DESTINATION .) +INSTALL(FILES support-files/my-huge.ini support-files/my-innodb-heavy-4G.ini DESTINATION .) +INSTALL(FILES support-files/my-large.ini support-files/my-medium.ini DESTINATION .) +INSTALL(FILES support-files/my-small.ini DESTINATION .) +INSTALL(FILES Docs/INSTALL-BINARY DESTINATION Docs) +INSTALL(FILES COPYING DESTINATION Docs) +FILE(GLOB headerfiles "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h") +INSTALL(FILES ${headerfiles} DESTINATION include COMPONENT headers) +INSTALL(FILES include/mysql/plugin.h DESTINATION include/mysql COMPONENT headers) +INSTALL(FILES libmysql/libmysql.def DESTINATION include COMPONENT headers) + +# Handle the database files +FILE(GLOB datafiles "${CMAKE_CURRENT_SOURCE_DIR}/win/data/mysql/*") +INSTALL(FILES ${datafiles} DESTINATION data/clean/mysql) +INSTALL(FILES win/data/maria_log.00000001 win/data/maria_log_control DESTINATION data/clean) +INSTALL(DIRECTORY win/data/test DESTINATION data/clean) +SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS} + IfFileExists '$INSTDIR\\\\data\\\\mysql\\\\db.frm' 0 CopyDatabaseFiles + MessageBox MB_OK 'There are already database files present in the data directory. Clean database files are not written to the directory' + GoTo EndCopyDatabaseFiles + CopyDatabaseFiles: + CopyFiles '$INSTDIR\\\\data\\\\clean\\\\*' '$INSTDIR\\\\data' + EndCopyDatabaseFiles:") +SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS} + MessageBox MB_OK 'This will not delete the database files in $INSTDIR\\\\data'") + +# Files in the share dir +INSTALL(FILES sql/share/errmsg.txt DESTINATION share COMPONENT runtime) +FILE(GLOB charsets sql/share/charsets/*) +INSTALL(FILES ${charsets} DESTINATION share/charsets COMPONENT runtime) +FILE(GLOB share_dirs sql/share/*) +FOREACH(SUBDIR ${share_dirs}) + FILE(RELATIVE_PATH DIRNAME ${PROJECT_SOURCE_DIR}/sql/share ${SUBDIR}) + IF (EXISTS ${SUBDIR}/errmsg.sys) + INSTALL(FILES ${SUBDIR}/errmsg.sys DESTINATION share/${DIRNAME} COMPONENT runtime) + ENDIF(EXISTS ${SUBDIR}/errmsg.sys) +ENDFOREACH(SUBDIR ${share_dirs}) + +INCLUDE(InstallRequiredSystemLibraries) + +# This must always be the last line +INCLUDE(CPack) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index e96437d40d0..abd9923d49d 100755 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -83,3 +83,5 @@ IF(EMBED_MANIFESTS) MYSQL_EMBED_MANIFEST("echo" "asInvoker") ENDIF(EMBED_MANIFESTS) +INSTALL(TARGETS mysql mysqltest mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow + mysqlbinlog mysqladmin mysqlslap echo DESTINATION bin COMPONENT runtime) diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt index cec0db6a4ae..ba90492577d 100755 --- a/extra/CMakeLists.txt +++ b/extra/CMakeLists.txt @@ -53,3 +53,5 @@ TARGET_LINK_LIBRARIES(replace strings mysys debug dbug wsock32) IF(EMBED_MANIFESTS) MYSQL_EMBED_MANIFEST("myTest" "asInvoker") ENDIF(EMBED_MANIFESTS) + +INSTALL(TARGETS comp_err my_print_defaults perror resolveip replace DESTINATION bin COMPONENT runtime) diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt index b033aeb4665..5a0c0bf9e22 100755 --- a/libmysql/CMakeLists.txt +++ b/libmysql/CMakeLists.txt @@ -129,3 +129,11 @@ TARGET_LINK_LIBRARIES(libmysql wsock32) IF(EMBED_MANIFESTS) MYSQL_EMBED_MANIFEST("myTest" "asInvoker") ENDIF(EMBED_MANIFESTS) + +# TODO: Install mysqlclient_notls? +# TODO: Which component should these be part of, development? +INSTALL(TARGETS mysqlclient DESTINATION lib/opt COMPONENT runtime) +INSTALL(TARGETS libmysql DESTINATION lib/opt COMPONENT runtime) + +# Also install libmysql.dll to the bin dir +INSTALL(TARGETS libmysql DESTINATION bin COMPONENT runtime) diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt index e9873fb0525..bf0c6551a11 100644 --- a/mysys/CMakeLists.txt +++ b/mysys/CMakeLists.txt @@ -49,4 +49,6 @@ SET(MYSYS_SOURCES array.c charset-def.c charset.c checksum.c default.c default_ IF(NOT SOURCE_SUBLIBS) ADD_LIBRARY(mysys ${MYSYS_SOURCES}) + + INSTALL(TARGETS mysys DESTINATION lib/opt COMPONENT runtime) # TODO: Component? ENDIF(NOT SOURCE_SUBLIBS) diff --git a/regex/CMakeLists.txt b/regex/CMakeLists.txt index 2e3b18c7bb0..b8a0a953af6 100755 --- a/regex/CMakeLists.txt +++ b/regex/CMakeLists.txt @@ -22,4 +22,6 @@ SET(REGEX_SOURCES regcomp.c regerror.c regexec.c regfree.c reginit.c) IF(NOT SOURCE_SUBLIBS) ADD_LIBRARY(regex ${REGEX_SOURCES}) + + INSTALL(TARGETS regex DESTINATION lib/opt COMPONENT runtime) # TODO: Component ENDIF(NOT SOURCE_SUBLIBS) diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index 2563c49280e..aa7fa03cf03 100755 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -75,3 +75,8 @@ CONFIGURE_FILE(mysqldumpslow.sh CONFIGURE_FILE(mysqlhotcopy.sh ${CMAKE_BINARY_DIR}/scripts/mysqlhotcopy.pl ESCAPE_QUOTES @ONLY) + +INSTALL(FILES mysqldumpslow.pl mysqlhotcopy.pl mysql_config.pl + mysql_convert_table_format.pl mysql_install_db.pl + mysql_secure_installation.pl mysqld_multi.pl + DESTINATION scripts COMPONENT perlscripts) diff --git a/server-tools/instance-manager/CMakeLists.txt b/server-tools/instance-manager/CMakeLists.txt index 4b9c386afe1..5e61c384254 100755 --- a/server-tools/instance-manager/CMakeLists.txt +++ b/server-tools/instance-manager/CMakeLists.txt @@ -36,3 +36,5 @@ TARGET_LINK_LIBRARIES(mysqlmanager debug dbug mysys strings taocrypt vio yassl z IF(EMBED_MANIFESTS) MYSQL_EMBED_MANIFEST("mysqlmanager" "asInvoker") ENDIF(EMBED_MANIFESTS) + +INSTALL(TARGETS mysqlmanager DESTINATION bin COMPONENT runtime) diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index fab538dbee4..af9ed5ed8e3 100755 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -154,3 +154,8 @@ SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ADD_LIBRARY(udf_example MODULE udf_example.c udf_example.def) ADD_DEPENDENCIES(udf_example strings GenError) TARGET_LINK_LIBRARIES(udf_example strings wsock32) + +INSTALL(TARGETS mysqld + RUNTIME DESTINATION bin COMPONENT runtime + LIBRARY DESTINATION lib COMPONENT runtime + ARCHIVE DESTINATION lib COMPONENT runtime) diff --git a/storage/maria/CMakeLists.txt b/storage/maria/CMakeLists.txt index c0c3a44c7cf..22e0211f052 100644 --- a/storage/maria/CMakeLists.txt +++ b/storage/maria/CMakeLists.txt @@ -91,4 +91,7 @@ IF(EMBED_MANIFESTS) MYSQL_EMBED_MANIFEST("maria_pack" "asInvoker") ENDIF(EMBED_MANIFESTS) +INSTALL(TARGETS maria_ftdump maria_chk maria_read_log maria_pack maria_dump_log + DESTINATION bin COMPONENT runtime) + ENDIF(NOT SOURCE_SUBLIBS) diff --git a/storage/myisam/CMakeLists.txt b/storage/myisam/CMakeLists.txt index 1a667e271af..7744f4337ef 100644 --- a/storage/myisam/CMakeLists.txt +++ b/storage/myisam/CMakeLists.txt @@ -70,4 +70,6 @@ IF(NOT SOURCE_SUBLIBS) MYSQL_EMBED_MANIFEST("myisampack" "asInvoker") ENDIF(EMBED_MANIFESTS) + INSTALL(TARGETS myisam_ftdump myisamchk myisamlog myisampack DESTINATION bin COMPONENT runtime) + ENDIF(NOT SOURCE_SUBLIBS) diff --git a/strings/CMakeLists.txt b/strings/CMakeLists.txt index 5ba1c0e5747..339fe7854c7 100755 --- a/strings/CMakeLists.txt +++ b/strings/CMakeLists.txt @@ -30,4 +30,6 @@ SET(STRINGS_SOURCES bchange.c bcmp.c bfill.c bmove512.c bmove_upp.c ctype-big5.c IF(NOT SOURCE_SUBLIBS) ADD_LIBRARY(strings ${STRINGS_SOURCES}) + + INSTALL(TARGETS strings DESTINATION lib/opt COMPONENT runtime) # TODO: Component ENDIF(NOT SOURCE_SUBLIBS) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2093fc0da36..245c9ce8666 100755 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -25,3 +25,5 @@ TARGET_LINK_LIBRARIES(mysql_client_test mysqlclient_notls wsock32) ADD_EXECUTABLE(bug25714 bug25714.c) TARGET_LINK_LIBRARIES(bug25714 mysqlclient_notls wsock32) + +INSTALL(TARGETS mysql_client_test bug25714 DESTINATION bin COMPONENT runtime) diff --git a/zlib/CMakeLists.txt b/zlib/CMakeLists.txt index 43235b631f6..a4b75bd5744 100755 --- a/zlib/CMakeLists.txt +++ b/zlib/CMakeLists.txt @@ -27,4 +27,6 @@ SET(ZLIB_SOURCES adler32.c compress.c crc32.c crc32.h deflate.c deflate.h gzio. zutil.c zutil.h) IF(NOT SOURCE_SUBLIBS) ADD_LIBRARY(zlib ${ZLIB_SOURCES}) + + INSTALL(TARGETS zlib DESTINATION lib/opt COMPONENT runtime) # TODO: Component ENDIF(NOT SOURCE_SUBLIBS) From b4593605e0604f22bec09981709a202c809516fc Mon Sep 17 00:00:00 2001 From: Jon Olav Hauglid Date: Sat, 26 Jun 2010 19:36:00 +0200 Subject: [PATCH 235/461] Bug #54360 Deadlock DROP/ALTER/CREATE DATABASE with open HANDLER This deadlock happened if DROP DATABASE was blocked due to an open HANDLER table from a different connection. While DROP DATABASE is blocked, it holds the LOCK_mysql_create_db mutex. This results in a deadlock if the connection with the open HANDLER table tries to execute a CREATE/ALTER/DROP DATABASE statement as they all try to acquire LOCK_mysql_create_db. This patch makes this deadlock scenario very unlikely by closing and marking for re-open all HANDLER tables for which there are pending conflicing locks, before LOCK_mysql_create_db is acquired. However, there is still a very slight possibility that a connection could access one of these HANDLER tables between closing/marking for re-open and the acquisition of LOCK_mysql_create_db. This patch is for 5.1 only, a separate and complete fix will be made for 5.5+. Test case added to schema.test. --- mysql-test/r/schema.result | 19 +++++++++++++++ mysql-test/t/schema.test | 47 ++++++++++++++++++++++++++++++++++++++ sql/sql_db.cc | 36 +++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+) diff --git a/mysql-test/r/schema.result b/mysql-test/r/schema.result index 564fb3626df..e6af4e312a3 100644 --- a/mysql-test/r/schema.result +++ b/mysql-test/r/schema.result @@ -11,3 +11,22 @@ mtr mysql test drop schema foo; +# +# Bug#54360 Deadlock DROP/ALTER/CREATE DATABASE with open HANDLER +# +CREATE DATABASE db1; +CREATE TABLE db1.t1 (a INT); +INSERT INTO db1.t1 VALUES (1), (2); +# Connection con1 +HANDLER db1.t1 OPEN; +# Connection default +# Sending: +DROP DATABASE db1; +# Connection con2 +# Waiting for 'DROP DATABASE db1' to sync in. +# Connection con1 +CREATE DATABASE db2; +ALTER DATABASE db2 DEFAULT CHARACTER SET utf8; +DROP DATABASE db2; +# Connection default +# Reaping: DROP DATABASE db1 diff --git a/mysql-test/t/schema.test b/mysql-test/t/schema.test index a08d9b38935..a63402bbb83 100644 --- a/mysql-test/t/schema.test +++ b/mysql-test/t/schema.test @@ -4,6 +4,9 @@ # Drop mysqltest1 database, as it can left from the previous tests. # +# Save the initial number of concurrent sessions. +--source include/count_sessions.inc + --disable_warnings drop database if exists mysqltest1; --enable_warnings @@ -12,3 +15,47 @@ create schema foo; show create schema foo; show schemas; drop schema foo; + + +--echo # +--echo # Bug#54360 Deadlock DROP/ALTER/CREATE DATABASE with open HANDLER +--echo # + +CREATE DATABASE db1; +CREATE TABLE db1.t1 (a INT); +INSERT INTO db1.t1 VALUES (1), (2); + +--echo # Connection con1 +connect (con1, localhost, root); +HANDLER db1.t1 OPEN; + +--echo # Connection default +connection default; +--echo # Sending: +--send DROP DATABASE db1 + +--echo # Connection con2 +connect (con2, localhost, root); +--echo # Waiting for 'DROP DATABASE db1' to sync in. +let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist + WHERE state='Waiting for table' AND info='DROP DATABASE db1'; +--source include/wait_condition.inc + +--echo # Connection con1 +connection con1; +# All these statements before resulted in deadlock. +CREATE DATABASE db2; +ALTER DATABASE db2 DEFAULT CHARACTER SET utf8; +DROP DATABASE db2; + +--echo # Connection default +connection default; +--echo # Reaping: DROP DATABASE db1 +--reap +disconnect con1; +disconnect con2; + + +# Check that all connections opened by test cases in this file are really +# gone so execution of other tests won't be affected by their presence. +--source include/wait_until_count_sessions.inc diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 0e65f97e10b..d3435b891b1 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -642,6 +642,18 @@ int mysql_create_db(THD *thd, char *db, HA_CREATE_INFO *create_info, goto exit2; } + /* + Close and mark for re-open all HANDLER tables which are marked for flush + or which there are pending conflicing locks against. This is needed to + prevent deadlocks. + */ + if (thd->handler_tables_hash.records) + { + pthread_mutex_lock(&LOCK_open); + mysql_ha_flush(thd); + pthread_mutex_unlock(&LOCK_open); + } + VOID(pthread_mutex_lock(&LOCK_mysql_create_db)); /* Check directory */ @@ -788,6 +800,18 @@ bool mysql_alter_db(THD *thd, const char *db, HA_CREATE_INFO *create_info) if ((error=wait_if_global_read_lock(thd,0,1))) goto exit2; + /* + Close and mark for re-open all HANDLER tables which are marked for flush + or which there are pending conflicing locks against. This is needed to + prevent deadlocks. + */ + if (thd->handler_tables_hash.records) + { + pthread_mutex_lock(&LOCK_open); + mysql_ha_flush(thd); + pthread_mutex_unlock(&LOCK_open); + } + VOID(pthread_mutex_lock(&LOCK_mysql_create_db)); /* @@ -886,6 +910,18 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent) goto exit2; } + /* + Close and mark for re-open all HANDLER tables which are marked for flush + or which there are pending conflicing locks against. This is needed to + prevent deadlocks. + */ + if (thd->handler_tables_hash.records) + { + pthread_mutex_lock(&LOCK_open); + mysql_ha_flush(thd); + pthread_mutex_unlock(&LOCK_open); + } + VOID(pthread_mutex_lock(&LOCK_mysql_create_db)); length= build_table_filename(path, sizeof(path) - 1, db, "", "", 0); From 451cea3f62a1b53c441995c8e1f052875c4fb3bd Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 27 Jun 2010 12:42:06 +0800 Subject: [PATCH 236/461] The following statements support the CURRENT_USER() where a user is needed. DROP USER RENAME USER CURRENT_USER() ... GRANT ... TO CURRENT_USER() REVOKE ... FROM CURRENT_USER() ALTER DEFINER = CURRENT_USER() EVENTbut, When these statements are binlogged, CURRENT_USER() just is binlogged as 'CURRENT_USER()', it is not expanded to the real user name. When slave executes the log event, 'CURRENT_USER()' is expand to the user of slave SQL thread, but SQL thread's user name always NULL. This breaks the replication. After this patch, session's user will be written into query log events if these statements call CURREN_USER() or 'ALTER EVENT' does not assign a definer. mysql-test/include/diff_tables.inc: Expend its abilities. Now it can diff not only in sessions of 'master' and 'slave', but other sessions as well. mysql-test/include/rpl_diff_tables.inc: Diff the same table between master and slaves. sql/log_event.cc: session's user will be written into Query_log_event, if is_current_user_used() is TRUE. On slave SQL thread, Only thd->variables.current_user is written into Query_log_event, if it exists. sql/sql_acl.cc: On slave SQL thread, grantor should copy from thd->variables.current_user, if it exists sql/sql_class.h: On slave SQL thread, thd->variables.current_user is used to store the applying event's invoker. --- mysql-test/include/diff_tables.inc | 18 +- mysql-test/include/rpl_diff_tables.inc | 35 +++ .../suite/rpl/r/rpl_current_user.result | 205 +++++++++++++++ .../suite/rpl/r/rpl_innodb_mixed_dml.result | 2 +- mysql-test/suite/rpl/t/rpl_current_user.cnf | 9 + mysql-test/suite/rpl/t/rpl_current_user.test | 238 ++++++++++++++++++ sql/log_event.cc | 67 ++++- sql/log_event.h | 7 +- sql/sql_acl.cc | 23 +- sql/sql_class.cc | 1 + sql/sql_class.h | 16 ++ sql/sql_parse.cc | 2 +- 12 files changed, 602 insertions(+), 21 deletions(-) create mode 100644 mysql-test/include/rpl_diff_tables.inc create mode 100644 mysql-test/suite/rpl/r/rpl_current_user.result create mode 100644 mysql-test/suite/rpl/t/rpl_current_user.cnf create mode 100644 mysql-test/suite/rpl/t/rpl_current_user.test diff --git a/mysql-test/include/diff_tables.inc b/mysql-test/include/diff_tables.inc index d15dd56b35d..e11e69b3023 100644 --- a/mysql-test/include/diff_tables.inc +++ b/mysql-test/include/diff_tables.inc @@ -64,17 +64,13 @@ let $_diff_table=$diff_table_2; let $_diff_i=2; while ($_diff_i) { - # Parse out any leading "master:" or "slave:" from the table - # specification and connect the appropriate server. - let $_diff_conn_master=`SELECT SUBSTR('$_diff_table', 1, 7) = 'master:'`; - if ($_diff_conn_master) { - let $_diff_table=`SELECT SUBSTR('$_diff_table', 8)`; - connection master; - } - let $_diff_conn_slave=`SELECT SUBSTR('$_diff_table', 1, 6) = 'slave:'`; - if ($_diff_conn_slave) { - let $_diff_table=`SELECT SUBSTR('$_diff_table', 7)`; - connection slave; + # Parse out any leading "master:" or "slave:" from the table specification +# and connect the appropriate server. + let $_pos= `SELECT LOCATE(':', '$_diff_table')`; + let $_diff_conn=`SELECT SUBSTR('$_diff_table', 1, $_pos-1)`; + if (`SELECT "XX$_diff_conn" <> "XX"`) { + let $_diff_table=`SELECT SUBSTR('$_diff_table', $_pos+1)`; + connection $_diff_conn; } # Sanity-check the input. diff --git a/mysql-test/include/rpl_diff_tables.inc b/mysql-test/include/rpl_diff_tables.inc new file mode 100644 index 00000000000..c3a45578a79 --- /dev/null +++ b/mysql-test/include/rpl_diff_tables.inc @@ -0,0 +1,35 @@ +# ############################################################################# +# Check whether the given table is consistent between different master and +# slaves +# +# Usage: +# --let $diff_table= test.t1 +# --let $diff_server_list= master, slave, slave2 +# --source include/rpl_diff_tables.inc +# ############################################################################# + +if (`SELECT "XX$diff_table" = "XX"`) +{ + --die diff_table is null. +} + +--let $_servers= master, slave +if (`SELECT "XX$diff_server_list" <> "XX"`) +{ + --let $_servers= $diff_server_list +} + +--let $_master= `SELECT SUBSTRING_INDEX('$_servers', ',', 1)` +--let $_servers= `SELECT LTRIM(SUBSTRING('$_servers', LENGTH('$_master') + 2))` +connection $_master; +while (`SELECT "XX$_servers" <> "XX"`) +{ + --let $_slave= `SELECT SUBSTRING_INDEX('$_servers', ',', 1)` + --let $_servers= `SELECT LTRIM(SUBSTRING('$_servers', LENGTH('$_slave') + 2))` + + --sync_slave_with_master $_slave + --let $diff_table_1= $_master:$diff_table + --let $diff_table_2= $_slave:$diff_table + --source include/diff_tables.inc + connection $_slave; +} diff --git a/mysql-test/suite/rpl/r/rpl_current_user.result b/mysql-test/suite/rpl/r/rpl_current_user.result new file mode 100644 index 00000000000..85490c2571c --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_current_user.result @@ -0,0 +1,205 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; + +# On slave2 +# Connect slave2 to slave +CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=SLAVE_MYPORT;, +MASTER_LOG_FILE='slave-bin.000001', MASTER_USER='root'; +START SLAVE; + +# [On master] +DROP VIEW IF EXISTS v_user; +DROP VIEW IF EXISTS v_tables_priv; +DROP VIEW IF EXISTS v_procs_priv; +DROP PROCEDURE IF EXISTS p1; +DROP PROCEDURE IF EXISTS my_grant; +DROP PROCEDURE IF EXISTS my_revoke; +DROP FUNCTION IF EXISTS my_user; +DROP EVENT IF EXISTS e1; +CREATE TABLE t1(c1 char(100)); +CREATE VIEW test.v_user AS SELECT * FROM mysql.user WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_tables_priv AS SELECT * FROM mysql.tables_priv WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_procs_priv AS SELECT * FROM mysql.procs_priv WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_event AS SELECT definer FROM mysql.event WHERE name = 'e1'; +CREATE PROCEDURE p1() SELECT 1; +# bug48321_1-01234 has the max length(16) of user. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1-01234'@'localhost' WITH GRANT OPTION; + +# Make sure the max lengths of user and host +# the user name is too lengh +GRANT CREATE USER ON *.* TO '01234567890123456'@'fakehost'; +ERROR HY000: String '01234567890123456' is too long for user name (should be no longer than 16) +# the host name is too lengh +GRANT CREATE USER ON *.* TO 'fakename'@'0123456789012345678901234567890123456789012345678901234567890'; +ERROR HY000: String '0123456789012345678901234567890123456789012345678901234567890' is too long for host name (should be no longer than 60) + +# User 'bug48321_1-01234' connects to master by conn1 +# [On conn1] +# Verify 'REVOKE ALL' statement +REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER(); +Comparing tables master:test.v_user and slave:test.v_user +Comparing tables master:test.v_user and slave2:test.v_user + +# Verify 'GRANT ... ON TABLE ...' statement +GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); +Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv +Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv + +# Verify 'GRANT ... ON PROCEDURE...' statement +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER(); +Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv +Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv + +# Verify 'GRANT ... ON *.* ...' statement +GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() WITH GRANT OPTION; +Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv +Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv + +# Verify 'REVOKE ... ON TABLE ...' statement +REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); +Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv +Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv + +# Verify 'REVOKE ... ON PROCEDURE...' statement +REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER(); +Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv +Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv + +# Verify 'REVOKE ... ON *.* ...' statement +REVOKE ALL PRIVILEGES ON *.* FROM CURRENT_USER(); +Comparing tables master:test.v_user and slave:test.v_user +Comparing tables master:test.v_user and slave2:test.v_user + +# Verify 'GRANT ...' statement in the procedure +CREATE PROCEDURE my_grant() +GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); +call my_grant; +Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv +Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv + +# Verify 'REVOKE ... ON TABLE ...' statement in the procedure +CREATE PROCEDURE my_revoke() +REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); +call my_revoke; +Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv +Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv + +# Verify 'RENAME USER ...' statement +RENAME USER CURRENT_USER TO 'bug48321_2'@'localhost'; +Comparing tables master:test.v_user and slave:test.v_user +Comparing tables master:test.v_user and slave2:test.v_user + +# Verify 'DROP USER ...' statement +GRANT CREATE USER ON *.* TO 'bug48321_2'@'localhost'; +DROP USER CURRENT_USER(); +Comparing tables master:test.v_user and slave:test.v_user +Comparing tables master:test.v_user and slave2:test.v_user + +# Verify 'ALTER EVENT...' statement +CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT * FROM t1; +# Explicitly assign CURRENT_USER() to definer +ALTER DEFINER=CURRENT_USER() EVENT e1 ENABLE; +Comparing tables master:test.v_event and slave:test.v_event +Comparing tables master:test.v_event and slave2:test.v_event + +# Session user will be set as definer, if the statement does not assign +# a definer +ALTER EVENT e1 ENABLE; +Comparing tables master:test.v_event and slave:test.v_event +Comparing tables master:test.v_event and slave2:test.v_event + +# Verify that this patch does not affect the calling of CURRENT_USER() +# in the other statements +# [On master] +INSERT INTO t1 VALUES(CURRENT_USER()), ('1234'); +Warnings: +Note 1592 Statement may not be safe to log in statement format. +SELECT * FROM t1; +c1 +root@localhost +1234 +# [On slave] +SELECT * FROM t1; +c1 +@ +1234 +# [On slave2] +SELECT * FROM t1; +c1 +@ +1234 +# [On master] +UPDATE t1 SET c1=CURRENT_USER() WHERE c1='1234'; +Warnings: +Note 1592 Statement may not be safe to log in statement format. +SELECT * FROM t1; +c1 +root@localhost +root@localhost +# [On slave] +SELECT * FROM t1; +c1 +@ +@ +# [On slave2] +SELECT * FROM t1; +c1 +@ +@ +# [On master] +DELETE FROM t1 WHERE c1=CURRENT_USER(); +Warnings: +Note 1592 Statement may not be safe to log in statement format. +SELECT * FROM t1; +c1 +# [On slave] +SELECT * FROM t1; +c1 +# [On slave2] +SELECT * FROM t1; +c1 +# [On master] +CREATE TABLE t2(c1 char(100)); +CREATE FUNCTION my_user() RETURNS VARCHAR(64) +SQL SECURITY INVOKER +BEGIN +INSERT INTO t2 VALUES(CURRENT_USER()); +RETURN CURRENT_USER(); +END | +INSERT INTO t1 VALUES(my_user()); +Warnings: +Note 1592 Statement may not be safe to log in statement format. +Note 1592 Statement may not be safe to log in statement format. +SELECT * FROM t1; +c1 +root@localhost +SELECT * FROM t2; +c1 +root@localhost +# [On slave] +SELECT * FROM t1; +c1 +@ +SELECT * FROM t2; +c1 +@ +# [On slave2] +SELECT * FROM t1; +c1 +@ +SELECT * FROM t2; +c1 +@ + +# END +DROP TABLE t1, t2; +DROP VIEW v_user, v_tables_priv, v_procs_priv, v_event; +DROP PROCEDURE p1; +DROP PROCEDURE my_grant; +DROP PROCEDURE my_revoke; +DROP FUNCTION my_user; +DROP EVENT e1; diff --git a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result index 26f2545dd72..35f4cd3ecbb 100644 --- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result +++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result @@ -750,7 +750,7 @@ test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 lat USE test_rpl; SHOW EVENTS; Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation -test_rpl e2 @ SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci ==========MASTER========== SELECT COUNT(*) FROM t1; COUNT(*) diff --git a/mysql-test/suite/rpl/t/rpl_current_user.cnf b/mysql-test/suite/rpl/t/rpl_current_user.cnf new file mode 100644 index 00000000000..999ee727a88 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_current_user.cnf @@ -0,0 +1,9 @@ +!include ../my.cnf + +[mysqld.3] +server-id=3 +log-bin=slave-bin + +[ENV] +SLAVE_MYPORT1= @mysqld.3.port +SLAVE_MYSOCK1= @mysqld.3.socket diff --git a/mysql-test/suite/rpl/t/rpl_current_user.test b/mysql-test/suite/rpl/t/rpl_current_user.test new file mode 100644 index 00000000000..72581ed7049 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_current_user.test @@ -0,0 +1,238 @@ +############################################################################## +# BUG#48321 CURRENT_USER() incorrectly replicated for DROP/RENAME USER, +# REVOKE, GRANT, ALTER EVENT +# +# Calling CURRENT_USER() results into inconsistency between slave and master, +# as the slave SQL thread has different user with common users. +# +# After the patch for bug#48321, session's user will be written into query log +# event if CURRENT_USER() is called in 'DROP/RENAME USER', 'REVOKE', 'GRANT', +# 'ALTER EVENT'. +# +############################################################################## +source include/master-slave.inc; +source include/have_binlog_format_statement.inc; + +--echo +--echo # On slave2 +connect (slave2,127.0.0.1,root,,test,$SLAVE_MYPORT1,); +connection slave2; + +--echo # Connect slave2 to slave +--replace_result $SLAVE_MYPORT SLAVE_MYPORT; +eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$SLAVE_MYPORT, + MASTER_LOG_FILE='slave-bin.000001', MASTER_USER='root'; +START SLAVE; +source include/wait_for_slave_to_start.inc; + +--echo +--echo # [On master] +connection master; +--disable_warnings +DROP VIEW IF EXISTS v_user; +DROP VIEW IF EXISTS v_tables_priv; +DROP VIEW IF EXISTS v_procs_priv; +DROP PROCEDURE IF EXISTS p1; +DROP PROCEDURE IF EXISTS my_grant; +DROP PROCEDURE IF EXISTS my_revoke; +DROP FUNCTION IF EXISTS my_user; +DROP EVENT IF EXISTS e1; +--enable_warnings +CREATE TABLE t1(c1 char(100)); +CREATE VIEW test.v_user AS SELECT * FROM mysql.user WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_tables_priv AS SELECT * FROM mysql.tables_priv WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_procs_priv AS SELECT * FROM mysql.procs_priv WHERE User LIKE 'bug48321%'; +CREATE VIEW test.v_event AS SELECT definer FROM mysql.event WHERE name = 'e1'; +CREATE PROCEDURE p1() SELECT 1; +--echo # bug48321_1-01234 has the max length(16) of user. +GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1-01234'@'localhost' WITH GRANT OPTION; + +--echo +--echo # Make sure the max lengths of user and host +--echo # the user name is too lengh +--error 1470 +GRANT CREATE USER ON *.* TO '01234567890123456'@'fakehost'; +--echo # the host name is too lengh +--error 1470 +GRANT CREATE USER ON *.* TO 'fakename'@'0123456789012345678901234567890123456789012345678901234567890'; + +--echo +--echo # User 'bug48321_1-01234' connects to master by conn1 +connect (conn1, 127.0.0.1, 'bug48321_1-01234'@'localhost',,); +connection conn1; +--echo # [On conn1] +--echo # Verify 'REVOKE ALL' statement +REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER(); +let $diff_table= test.v_user; +let $diff_server_list= master, slave, slave2; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'GRANT ... ON TABLE ...' statement +connection conn1; +GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); +let $diff_table= test.v_tables_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'GRANT ... ON PROCEDURE...' statement +connection conn1; +GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER(); +let $diff_table= test.v_procs_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'GRANT ... ON *.* ...' statement +connection conn1; +GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() WITH GRANT OPTION; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'REVOKE ... ON TABLE ...' statement +connection conn1; +REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); +let $diff_table= test.v_tables_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'REVOKE ... ON PROCEDURE...' statement +connection conn1; +REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER(); +let $diff_table= test.v_procs_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'REVOKE ... ON *.* ...' statement +connection conn1; +REVOKE ALL PRIVILEGES ON *.* FROM CURRENT_USER(); +let $diff_table= test.v_user; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'GRANT ...' statement in the procedure +connection conn1; +CREATE PROCEDURE my_grant() + GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); +call my_grant; +let $diff_table= test.v_tables_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'REVOKE ... ON TABLE ...' statement in the procedure +connection conn1; +CREATE PROCEDURE my_revoke() + REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); +call my_revoke; +let $diff_table= test.v_tables_priv; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'RENAME USER ...' statement +connection conn1; +RENAME USER CURRENT_USER TO 'bug48321_2'@'localhost'; +let $diff_table= test.v_user; +source include/rpl_diff_tables.inc; + +disconnect conn1; + +--echo +--echo # Verify 'DROP USER ...' statement +connection master; +GRANT CREATE USER ON *.* TO 'bug48321_2'@'localhost'; +connect (conn1, 127.0.0.1, 'bug48321_2'@'localhost',,); +connection conn1; +DROP USER CURRENT_USER(); +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify 'ALTER EVENT...' statement +connection master; +CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT * FROM t1; + +--echo # Explicitly assign CURRENT_USER() to definer +ALTER DEFINER=CURRENT_USER() EVENT e1 ENABLE; +let $diff_table= test.v_event; +source include/rpl_diff_tables.inc; + +connection master; +--echo +--echo # Session user will be set as definer, if the statement does not assign +--echo # a definer +ALTER EVENT e1 ENABLE; +sync_slave_with_master; +source include/rpl_diff_tables.inc; + +--echo +--echo # Verify that this patch does not affect the calling of CURRENT_USER() +--echo # in the other statements +connection master; +--echo # [On master] +INSERT INTO t1 VALUES(CURRENT_USER()), ('1234'); +SELECT * FROM t1; +sync_slave_with_master; +--echo # [On slave] +SELECT * FROM t1; +--echo # [On slave2] +sync_slave_with_master slave2; +SELECT * FROM t1; + +connection master; +--echo # [On master] +UPDATE t1 SET c1=CURRENT_USER() WHERE c1='1234'; +SELECT * FROM t1; +sync_slave_with_master; +--echo # [On slave] +SELECT * FROM t1; +sync_slave_with_master slave2; +--echo # [On slave2] +SELECT * FROM t1; + +connection master; +--echo # [On master] +DELETE FROM t1 WHERE c1=CURRENT_USER(); +SELECT * FROM t1; +sync_slave_with_master; +--echo # [On slave] +SELECT * FROM t1; +sync_slave_with_master slave2; +--echo # [On slave2] +SELECT * FROM t1; + +connection master; +--echo # [On master] +CREATE TABLE t2(c1 char(100)); + +DELIMITER |; +CREATE FUNCTION my_user() RETURNS VARCHAR(64) + SQL SECURITY INVOKER +BEGIN + INSERT INTO t2 VALUES(CURRENT_USER()); + RETURN CURRENT_USER(); +END | +DELIMITER ;| + +INSERT INTO t1 VALUES(my_user()); +SELECT * FROM t1; +SELECT * FROM t2; +sync_slave_with_master; +--echo # [On slave] +SELECT * FROM t1; +SELECT * FROM t2; +sync_slave_with_master slave2; +--echo # [On slave2] +SELECT * FROM t1; +SELECT * FROM t2; + +--echo +--echo # END +connection master; +DROP TABLE t1, t2; +DROP VIEW v_user, v_tables_priv, v_procs_priv, v_event; +DROP PROCEDURE p1; +DROP PROCEDURE my_grant; +DROP PROCEDURE my_revoke; +DROP FUNCTION my_user; +DROP EVENT e1; +sync_slave_with_master; +sync_slave_with_master slave2; +source include/master-slave-end.inc; diff --git a/sql/log_event.cc b/sql/log_event.cc index 9c6de5bb42e..cdf059b5e1f 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -2307,6 +2307,53 @@ bool Query_log_event::write(IO_CACHE* file) start+= 4; } + if (thd && thd->is_current_user_used()) + { + LEX_STRING user; + LEX_STRING host; + bzero(&user, sizeof(user)); + bzero(&host, sizeof(host)); + + if (thd->slave_thread) + { + /* user will be null, if master is older than this patch */ + user= thd->variables.current_user.user; + host= thd->variables.current_user.host; + } + else if (thd->security_ctx->priv_user) + { + Security_context *ctx= thd->security_ctx; + + user.length= strlen(ctx->priv_user); + user.str= ctx->priv_user; + if (ctx->priv_host[0] != '\0') + { + host.str= ctx->priv_host; + host.length= strlen(ctx->priv_host); + } + } + + if (user.length > 0) + { + *start++= Q_INVOKER; + + /* + Store user length and user. The max length of use is 16, so 1 byte is + enough to store the user's length. + */ + *start++= (uchar)user.length; + memcpy(start, user.str, user.length); + start+= user.length; + + /* + Store host length and host. The max length of host is 60, so 1 byte is + enough to store the host's length. + */ + *start++= (uchar)host.length; + memcpy(start, host.str, host.length); + start+= host.length; + } + } /* NOTE: When adding new status vars, please don't forget to update the MAX_SIZE_LOG_EVENT_STATUS in log_event.h and update the function @@ -2575,6 +2622,8 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, bool catalog_nz= 1; DBUG_ENTER("Query_log_event::Query_log_event(char*,...)"); + bzero(&user, sizeof(user)); + bzero(&host, sizeof(host)); common_header_len= description_event->common_header_len; post_header_len= description_event->post_header_len[event_type-1]; DBUG_PRINT("info",("event_len: %u common_header_len: %d post_header_len: %d", @@ -2729,6 +2778,20 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, data_written= master_data_written= uint4korr(pos); pos+= 4; break; + case Q_INVOKER: + { + CHECK_SPACE(pos, end, 1); + user.length= *pos++; + CHECK_SPACE(pos, end, user.length); + user.str= my_strndup((const char *)pos, user.length, MYF(0)); + pos+= user.length; + + CHECK_SPACE(pos, end, 1); + host.length= *pos++; + CHECK_SPACE(pos, end, host.length); + host.str= my_strndup((const char *)pos, host.length, MYF(0)); + pos+= host.length; + } default: /* That's why you must write status vars in growing order of code */ DBUG_PRINT("info",("Query_log_event has unknown status vars (first has\ @@ -3178,7 +3241,9 @@ int Query_log_event::do_apply_event(Relay_log_info const *rli, thd->variables.collation_database= thd->db_charset; thd->table_map_for_update= (table_map)table_map_for_update; - + thd->variables.current_user.user= user; + thd->variables.current_user.host= host; + thd->variables.current_user.password= {0, 0}; /* Execute the query (note that we bypass dispatch_command()) */ const char* found_semicolon= NULL; mysql_parse(thd, thd->query(), thd->query_length(), &found_semicolon); diff --git a/sql/log_event.h b/sql/log_event.h index e3ca4ca3321..816a241e55d 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -264,7 +264,8 @@ struct sql_ex_info 1 + 2 /* type, lc_time_names_number */ + \ 1 + 2 /* type, charset_database_number */ + \ 1 + 8 /* type, table_map_for_update */ + \ - 1 + 4 /* type, master_data_written */) + 1 + 4 /* type, master_data_written */ + \ + 1 + 16 + 1 + 60/* type, user_len, user, host_len, host */) #define MAX_LOG_EVENT_HEADER ( /* in order of Query_log_event::write */ \ LOG_EVENT_HEADER_LEN + /* write_header */ \ QUERY_HEADER_LEN + /* write_data */ \ @@ -333,6 +334,8 @@ struct sql_ex_info #define Q_MASTER_DATA_WRITTEN_CODE 10 +#define Q_INVOKER 11 + /* Intvar event post-header */ /* Intvar event data */ @@ -1546,6 +1549,8 @@ protected: */ class Query_log_event: public Log_event { + LEX_STRING user; + LEX_STRING host; protected: Log_event::Byte* data_buf; public: diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index dd256c70ecb..acf14fc91c4 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -194,6 +194,7 @@ static bool compare_hostname(const acl_host_and_ip *host,const char *hostname, const char *ip); static my_bool acl_load(THD *thd, TABLE_LIST *tables); static my_bool grant_load(THD *thd, TABLE_LIST *tables); +static inline void get_grantor(THD *thd, char* grantor); /* Convert scrambled password to binary form, according to scramble type, @@ -2704,6 +2705,20 @@ end: DBUG_RETURN(result); } +static inline void get_grantor(THD *thd, char *grantor) +{ + const char *user= thd->security_ctx->user; + const char *host= thd->security_ctx->host_or_ip; + +#if defined(HAVE_REPLICATION) + if (thd->slave_thread && thd->variables.current_user.user.length > 0) + { + user= thd->variables.current_user.user.str; + host= thd->variables.current_user.host.str; + } +#endif + strxmov(grantor, user, "@", host, NullS); +} static int replace_table_table(THD *thd, GRANT_TABLE *grant_table, TABLE *table, const LEX_USER &combo, @@ -2718,9 +2733,7 @@ static int replace_table_table(THD *thd, GRANT_TABLE *grant_table, uchar user_key[MAX_KEY_LENGTH]; DBUG_ENTER("replace_table_table"); - strxmov(grantor, thd->security_ctx->user, "@", - thd->security_ctx->host_or_ip, NullS); - + get_grantor(thd, grantor); /* The following should always succeed as new users are created before this function is called! @@ -2850,9 +2863,7 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name, DBUG_RETURN(-1); } - strxmov(grantor, thd->security_ctx->user, "@", - thd->security_ctx->host_or_ip, NullS); - + get_grantor(thd, grantor); /* New users are created before this function is called. diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 93aa6a8268c..cd2bb2a51df 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1236,6 +1236,7 @@ void THD::cleanup_after_query() where= THD::DEFAULT_WHERE; /* reset table map for multi-table update */ table_map_for_update= 0; + clean_current_user_used(); } diff --git a/sql/sql_class.h b/sql/sql_class.h index 4c1d4a98db0..72ffa2e6ba4 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -401,6 +401,7 @@ struct system_variables DATE_TIME_FORMAT *datetime_format; DATE_TIME_FORMAT *time_format; my_bool sysdate_is_now; + LEX_USER current_user; }; @@ -2340,6 +2341,19 @@ public: Protected with LOCK_thd_data mutex. */ void set_query(char *query_arg, uint32 query_length_arg); + void set_current_user_used() { current_user_used= TRUE; } + bool is_current_user_used() { return current_user_used; } + void clean_current_user_used() { current_user_used= FALSE; } + void get_definer(LEX_USER *definer) + { + set_current_user_used(); +#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) + if (slave_thread && variables.current_user.user.length) + *definer= variables.current_user; + else +#endif + get_default_definer(this, definer); + } private: /** The current internal error handler for this thread, or NULL. */ Internal_error_handler *m_internal_handler; @@ -2359,6 +2373,8 @@ private: tree itself is reused between executions and thus is stored elsewhere. */ MEM_ROOT main_mem_root; + + bool current_user_used; }; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index c4d4f2c9d9d..ec9199b33a5 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -7650,7 +7650,7 @@ LEX_USER *create_default_definer(THD *thd) if (! (definer= (LEX_USER*) thd->alloc(sizeof(LEX_USER)))) return 0; - get_default_definer(thd, definer); + thd->get_definer(definer); return definer; } From c77f7c3010be4384d2ba8682cb30b5c818d103ac Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Mon, 28 Jun 2010 15:16:19 +0200 Subject: [PATCH 237/461] Fix installing the localized error messages with cpack --- CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c8245b886db..c1c3fe2722f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -396,12 +396,12 @@ SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS} INSTALL(FILES sql/share/errmsg.txt DESTINATION share COMPONENT runtime) FILE(GLOB charsets sql/share/charsets/*) INSTALL(FILES ${charsets} DESTINATION share/charsets COMPONENT runtime) -FILE(GLOB share_dirs sql/share/*) -FOREACH(SUBDIR ${share_dirs}) - FILE(RELATIVE_PATH DIRNAME ${PROJECT_SOURCE_DIR}/sql/share ${SUBDIR}) - IF (EXISTS ${SUBDIR}/errmsg.sys) - INSTALL(FILES ${SUBDIR}/errmsg.sys DESTINATION share/${DIRNAME} COMPONENT runtime) - ENDIF(EXISTS ${SUBDIR}/errmsg.sys) +FILE(GLOB share_dirs sql/share/*/errmsg.sys) +FOREACH(ERRMSGFILE ${share_dirs}) + STRING(REPLACE "//" "/" ERRMSGFILE ${ERRMSGFILE}) # Work around a cmake bug + FILE(RELATIVE_PATH DIRNAME ${PROJECT_SOURCE_DIR}/sql/share ${ERRMSGFILE}) + STRING(REPLACE "/errmsg.sys" "" DIRNAME ${DIRNAME}) + INSTALL(FILES ${ERRMSGFILE} DESTINATION share/${DIRNAME} COMPONENT runtime) ENDFOREACH(SUBDIR ${share_dirs}) INCLUDE(InstallRequiredSystemLibraries) From 1c0f9f9d7eb2c9985fb3948ee87982673a8c8a80 Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Mon, 28 Jun 2010 15:31:47 +0200 Subject: [PATCH 238/461] Fix a loop and install more script files. Renames the perlscripts component to scripts, since it now also has sql scripts. --- CMakeLists.txt | 12 ++++++------ scripts/CMakeLists.txt | 6 +++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c1c3fe2722f..425039ea062 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -355,11 +355,11 @@ SET(CPACK_COMPONENT_HEADERS_DESCRIPTION "Header files for development on MariaDB SET(CPACK_COMPONENT_HEADERS_DEPENDS runtime) SET(CPACK_COMPONENT_HEADERS_GROUP "Development") SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Development) -SET(CPACK_COMPONENT_PERLSCRIPTS_DISPLAY_NAME "Server perl scripts") -SET(CPACK_COMPONENT_PERLSCRIPTS_DESCRIPTION "Scripts to controll and modify the server. You need a perl installation for these to work.") -SET(CPACK_COMPONENT_PERLSCRIPTS_DEPENDS runtime) -SET(CPACK_COMPONENT_PERLSCRIPTS_GROUP "Server") -SET(CPACK_COMPONENT_PERLSCRIPTS_INSTALL_TYPES Normal Development) +SET(CPACK_COMPONENT_SCRIPTS_DISPLAY_NAME "Server scripts") +SET(CPACK_COMPONENT_SCRIPTS_DESCRIPTION "SQL and Perl scripts to control and modify the server. You need a perl installation for some of these to work.") +SET(CPACK_COMPONENT_SCRIPTS_DEPENDS runtime) +SET(CPACK_COMPONENT_SCRIPTS_GROUP "Server") +SET(CPACK_COMPONENT_SCRIPTS_INSTALL_TYPES Normal Development) # TODO: Add debug files # TODO: Add embedded server files # TODO: Add test files @@ -402,7 +402,7 @@ FOREACH(ERRMSGFILE ${share_dirs}) FILE(RELATIVE_PATH DIRNAME ${PROJECT_SOURCE_DIR}/sql/share ${ERRMSGFILE}) STRING(REPLACE "/errmsg.sys" "" DIRNAME ${DIRNAME}) INSTALL(FILES ${ERRMSGFILE} DESTINATION share/${DIRNAME} COMPONENT runtime) -ENDFOREACH(SUBDIR ${share_dirs}) +ENDFOREACH(ERRMSGFILE ${share_dirs}) INCLUDE(InstallRequiredSystemLibraries) diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index aa7fa03cf03..eee70fdf776 100755 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -79,4 +79,8 @@ CONFIGURE_FILE(mysqlhotcopy.sh INSTALL(FILES mysqldumpslow.pl mysqlhotcopy.pl mysql_config.pl mysql_convert_table_format.pl mysql_install_db.pl mysql_secure_installation.pl mysqld_multi.pl - DESTINATION scripts COMPONENT perlscripts) + DESTINATION scripts COMPONENT scripts) + +INSTALL(FILES fill_help_tables.sql mysql_fix_privilege_tables.sql mysql_system_tables.sql + mysql_system_tables_data.sql mysql_system_tables_fix.sql mysql_test_data_timezone.sql + DESTINATION share COMPONENT scripts) From 6a6d87186a5bf74bc4efd3a5bdb2592107164cd7 Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Mon, 28 Jun 2010 16:05:34 +0200 Subject: [PATCH 239/461] Install the storage engine plugins --- storage/mysql_storage_engine.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/storage/mysql_storage_engine.cmake b/storage/mysql_storage_engine.cmake index af8c3a85cd1..3aba9773202 100644 --- a/storage/mysql_storage_engine.cmake +++ b/storage/mysql_storage_engine.cmake @@ -38,6 +38,8 @@ IF(NOT SOURCE_SUBLIBS) IF(${engine}_LIBS) TARGET_LINK_LIBRARIES(${dyn_libname} ${${engine}_LIBS}) ENDIF(${engine}_LIBS) + # Install the plugin + INSTALL(TARGETS ${dyn_libname} DESTINATION lib/plugin COMPONENT runtime) MESSAGE("build ${engine} as DLL") ENDIF(${ENGINE_BUILD_TYPE} STREQUAL "STATIC") ENDIF(NOT SOURCE_SUBLIBS) From 3a2e38aa2829eee3b4b66bd51e43c4be1c11b36b Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Mon, 28 Jun 2010 16:41:43 +0200 Subject: [PATCH 240/461] Install the files for the embedded server --- CMakeLists.txt | 7 +++++-- libmysqld/CMakeLists.txt | 5 +++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 425039ea062..7a938e73c09 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -355,13 +355,16 @@ SET(CPACK_COMPONENT_HEADERS_DESCRIPTION "Header files for development on MariaDB SET(CPACK_COMPONENT_HEADERS_DEPENDS runtime) SET(CPACK_COMPONENT_HEADERS_GROUP "Development") SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Development) +SET(CPACK_COMPONENT_EMBEDDED_DISPLAY_NAME "Embedded") +SET(CPACK_COMPONENT_EMBEDDED_DESCRIPTION "Files for embedding MariaDB in other projects.") +SET(CPACK_COMPONENT_EMBEDDED_DEPENDS headers) +SET(CPACK_COMPONENT_EMBEDDED_GROUP "Development") +SET(CPACK_COMPONENT_EMBEDDED_INSTALL_TYPES Development) SET(CPACK_COMPONENT_SCRIPTS_DISPLAY_NAME "Server scripts") SET(CPACK_COMPONENT_SCRIPTS_DESCRIPTION "SQL and Perl scripts to control and modify the server. You need a perl installation for some of these to work.") SET(CPACK_COMPONENT_SCRIPTS_DEPENDS runtime) SET(CPACK_COMPONENT_SCRIPTS_GROUP "Server") SET(CPACK_COMPONENT_SCRIPTS_INSTALL_TYPES Normal Development) -# TODO: Add debug files -# TODO: Add embedded server files # TODO: Add test files # TODO: Add sql-bench diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index 9adf91c997b..495a8375af8 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -166,3 +166,8 @@ ENDFOREACH(ENGINE_LIB) ADD_LIBRARY(libmysqld SHARED cmake_dummy.c libmysqld.def) ADD_DEPENDENCIES(libmysqld mysqlserver) TARGET_LINK_LIBRARIES(libmysqld mysqlserver wsock32) + +INSTALL(TARGETS mysqlserver DESTINATION Embedded/static COMPONENT embedded) + +INSTALL(TARGETS libmysqld DESTINATION Embedded/DLL COMPONENT embedded) +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/Release/libmysqld.exp DESTINATION Embedded/DLL COMPONENT embedded) From e42d90850c6599a1ec5800cc251a345cc34b92b0 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Mon, 28 Jun 2010 12:21:28 -0300 Subject: [PATCH 241/461] Bug#54041: MySQL 5.0.92 fails when tests from Connector/C suite run The problem was that a user could supply supply data in chunks via the COM_STMT_SEND_LONG_DATA command to prepared statement parameter other than of type TEXT or BLOB. This posed a problem since other parameter types aren't setup to handle long data, which would lead to a crash when attempting to use the supplied data. Given that long data can be supplied at any stage of a prepared statement, coupled with the fact that the type of a parameter marker might change between consecutive executions, the solution is to validate at execution time each parameter marker for which a data stream was provided. If the parameter type is not TEXT or BLOB (that is, if the type is not able to handle a data stream), a error is returned. sql/sql_prepare.cc: Before converting the parameter data stream, check the type compatibility. tests/mysql_client_test.c: Add test case. --- sql/sql_prepare.cc | 28 +++++++++++++++++++ tests/mysql_client_test.c | 58 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 06f77f9689c..c2fecd63777 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -674,6 +674,18 @@ static void setup_one_conversion_function(THD *thd, Item_param *param, } #ifndef EMBEDDED_LIBRARY + +/** + Check whether this parameter data type is compatible with long data. + Used to detect whether a long data stream has been supplied to a + incompatible data type. +*/ +inline bool is_param_long_data_type(Item_param *param) +{ + return ((param->param_type >= MYSQL_TYPE_TINY_BLOB) && + (param->param_type <= MYSQL_TYPE_STRING)); +} + /* Routines to assign parameters from data supplied by the client. @@ -737,6 +749,14 @@ static bool insert_params_withlog(Prepared_statement *stmt, uchar *null_array, DBUG_RETURN(1); } } + /* + A long data stream was supplied for this parameter marker. + This was done after prepare, prior to providing a placeholder + type (the types are supplied at execute). Check that the + supplied type of placeholder can accept a data stream. + */ + else if (!is_param_long_data_type(param)) + DBUG_RETURN(1); res= param->query_val_str(&str); if (param->convert_str_value(thd)) DBUG_RETURN(1); /* out of memory */ @@ -775,6 +795,14 @@ static bool insert_params(Prepared_statement *stmt, uchar *null_array, DBUG_RETURN(1); } } + /* + A long data stream was supplied for this parameter marker. + This was done after prepare, prior to providing a placeholder + type (the types are supplied at execute). Check that the + supplied type of placeholder can accept a data stream. + */ + else if (is_param_long_data_type(param)) + DBUG_RETURN(1); if (param->convert_str_value(stmt->thd)) DBUG_RETURN(1); /* out of memory */ } diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index b50c1efe92b..43a418c8300 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -16757,6 +16757,63 @@ static void test_bug53907() } +/** + Bug#54041: MySQL 5.0.92 fails when tests from Connector/C suite run +*/ + +static void test_bug54041() +{ + int rc; + MYSQL_STMT *stmt; + MYSQL_BIND bind; + + DBUG_ENTER("test_bug54041"); + myheader("test_bug54041"); + + rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1"); + myquery(rc); + + rc= mysql_query(mysql, "CREATE TABLE t1 (a INT)"); + myquery(rc); + + stmt= mysql_simple_prepare(mysql, "INSERT INTO t1 (a) VALUES (?)"); + check_stmt(stmt); + verify_param_count(stmt, 1); + + memset(&bind, 0, sizeof(bind)); + + /* Any type that does not support long data handling. */ + bind.buffer_type= MYSQL_TYPE_LONG; + + rc= mysql_stmt_bind_param(stmt, &bind); + check_execute(stmt, rc); + + /* + Trick the client API into sending a long data packet for + the parameter. Long data is only supported for string and + binary types. + */ + stmt->params[0].buffer_type= MYSQL_TYPE_STRING; + + rc= mysql_stmt_send_long_data(stmt, 0, "data", 5); + check_execute(stmt, rc); + + /* Undo API violation. */ + stmt->params[0].buffer_type= MYSQL_TYPE_LONG; + + rc= mysql_stmt_execute(stmt); + /* Incorrect arguments. */ + check_execute_r(stmt, rc); + + mysql_stmt_close(stmt); + + rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1"); + myquery(rc); + + DBUG_VOID_RETURN; +} + + /* Read and parse arguments and MySQL options from my.cnf */ @@ -17062,6 +17119,7 @@ static struct my_tests_st my_tests[]= { { "test_bug45010", test_bug45010 }, { "test_bug53371", test_bug53371 }, { "test_bug53907", test_bug53907 }, + { "test_bug54041", test_bug54041 }, { 0, 0 } }; From 715bac92ba447df802d2f144c168cbeb6f2950be Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Mon, 28 Jun 2010 16:20:28 -0300 Subject: [PATCH 242/461] Bug#54457: Test suite broken for 32-bit build The default value of the myisam_max_extra_sort_file_size could be higher than the maximum accepted value, leading to warnings upon the server start. The solution is to simply set the value to the maximum value in a 32-bit built (2147483647, one less than the current). This should be harmless as the option is currently unused in 5.1. include/myisam.h: Remove now-unused macro. sql/mysqld.cc: Set max value to INT_MAX32. --- include/myisam.h | 2 -- sql/mysqld.cc | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/include/myisam.h b/include/myisam.h index 5334fd6afc4..e502daa2f17 100644 --- a/include/myisam.h +++ b/include/myisam.h @@ -55,8 +55,6 @@ extern "C" { #define MI_MAX_MSG_BUF 1024 /* used in CHECK TABLE, REPAIR TABLE */ #define MI_NAME_IEXT ".MYI" #define MI_NAME_DEXT ".MYD" -/* Max extra space to use when sorting keys */ -#define MI_MAX_TEMP_LENGTH 2*1024L*1024L*1024L /* Possible values for myisam_block_size (must be power of 2) */ #define MI_KEY_BLOCK_LENGTH 1024 /* default key block length */ diff --git a/sql/mysqld.cc b/sql/mysqld.cc index daa1bbe8ccc..adf9ff19326 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -6928,7 +6928,7 @@ thread is in the relay logs.", "It will be removed in MySQL " VER_CELOSIA, &global_system_variables.myisam_max_extra_sort_file_size, &max_system_variables.myisam_max_extra_sort_file_size, - 0, GET_ULL, REQUIRED_ARG, (ulonglong) MI_MAX_TEMP_LENGTH, + 0, GET_ULL, REQUIRED_ARG, (ulonglong) INT_MAX32, 0, (ulonglong) MAX_FILE_SIZE, 0, 1, 0}, {"myisam_max_sort_file_size", OPT_MYISAM_MAX_SORT_FILE_SIZE, "Don't use the fast sort index method to created index if the temporary " From bfd3b7a109f567ebbbe0f17a6a804c3d42285a89 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Mon, 28 Jun 2010 17:59:41 -0300 Subject: [PATCH 243/461] Revert Bug#48321 due to build breakage and failing tests. --- mysql-test/include/diff_tables.inc | 18 +- mysql-test/include/rpl_diff_tables.inc | 35 --- .../suite/rpl/r/rpl_current_user.result | 205 --------------- .../suite/rpl/r/rpl_innodb_mixed_dml.result | 2 +- mysql-test/suite/rpl/t/rpl_current_user.cnf | 9 - mysql-test/suite/rpl/t/rpl_current_user.test | 238 ------------------ sql/log_event.cc | 67 +---- sql/log_event.h | 7 +- sql/sql_acl.cc | 23 +- sql/sql_class.cc | 1 - sql/sql_class.h | 16 -- sql/sql_parse.cc | 2 +- 12 files changed, 21 insertions(+), 602 deletions(-) delete mode 100644 mysql-test/include/rpl_diff_tables.inc delete mode 100644 mysql-test/suite/rpl/r/rpl_current_user.result delete mode 100644 mysql-test/suite/rpl/t/rpl_current_user.cnf delete mode 100644 mysql-test/suite/rpl/t/rpl_current_user.test diff --git a/mysql-test/include/diff_tables.inc b/mysql-test/include/diff_tables.inc index e11e69b3023..d15dd56b35d 100644 --- a/mysql-test/include/diff_tables.inc +++ b/mysql-test/include/diff_tables.inc @@ -64,13 +64,17 @@ let $_diff_table=$diff_table_2; let $_diff_i=2; while ($_diff_i) { - # Parse out any leading "master:" or "slave:" from the table specification -# and connect the appropriate server. - let $_pos= `SELECT LOCATE(':', '$_diff_table')`; - let $_diff_conn=`SELECT SUBSTR('$_diff_table', 1, $_pos-1)`; - if (`SELECT "XX$_diff_conn" <> "XX"`) { - let $_diff_table=`SELECT SUBSTR('$_diff_table', $_pos+1)`; - connection $_diff_conn; + # Parse out any leading "master:" or "slave:" from the table + # specification and connect the appropriate server. + let $_diff_conn_master=`SELECT SUBSTR('$_diff_table', 1, 7) = 'master:'`; + if ($_diff_conn_master) { + let $_diff_table=`SELECT SUBSTR('$_diff_table', 8)`; + connection master; + } + let $_diff_conn_slave=`SELECT SUBSTR('$_diff_table', 1, 6) = 'slave:'`; + if ($_diff_conn_slave) { + let $_diff_table=`SELECT SUBSTR('$_diff_table', 7)`; + connection slave; } # Sanity-check the input. diff --git a/mysql-test/include/rpl_diff_tables.inc b/mysql-test/include/rpl_diff_tables.inc deleted file mode 100644 index c3a45578a79..00000000000 --- a/mysql-test/include/rpl_diff_tables.inc +++ /dev/null @@ -1,35 +0,0 @@ -# ############################################################################# -# Check whether the given table is consistent between different master and -# slaves -# -# Usage: -# --let $diff_table= test.t1 -# --let $diff_server_list= master, slave, slave2 -# --source include/rpl_diff_tables.inc -# ############################################################################# - -if (`SELECT "XX$diff_table" = "XX"`) -{ - --die diff_table is null. -} - ---let $_servers= master, slave -if (`SELECT "XX$diff_server_list" <> "XX"`) -{ - --let $_servers= $diff_server_list -} - ---let $_master= `SELECT SUBSTRING_INDEX('$_servers', ',', 1)` ---let $_servers= `SELECT LTRIM(SUBSTRING('$_servers', LENGTH('$_master') + 2))` -connection $_master; -while (`SELECT "XX$_servers" <> "XX"`) -{ - --let $_slave= `SELECT SUBSTRING_INDEX('$_servers', ',', 1)` - --let $_servers= `SELECT LTRIM(SUBSTRING('$_servers', LENGTH('$_slave') + 2))` - - --sync_slave_with_master $_slave - --let $diff_table_1= $_master:$diff_table - --let $diff_table_2= $_slave:$diff_table - --source include/diff_tables.inc - connection $_slave; -} diff --git a/mysql-test/suite/rpl/r/rpl_current_user.result b/mysql-test/suite/rpl/r/rpl_current_user.result deleted file mode 100644 index 85490c2571c..00000000000 --- a/mysql-test/suite/rpl/r/rpl_current_user.result +++ /dev/null @@ -1,205 +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; - -# On slave2 -# Connect slave2 to slave -CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=SLAVE_MYPORT;, -MASTER_LOG_FILE='slave-bin.000001', MASTER_USER='root'; -START SLAVE; - -# [On master] -DROP VIEW IF EXISTS v_user; -DROP VIEW IF EXISTS v_tables_priv; -DROP VIEW IF EXISTS v_procs_priv; -DROP PROCEDURE IF EXISTS p1; -DROP PROCEDURE IF EXISTS my_grant; -DROP PROCEDURE IF EXISTS my_revoke; -DROP FUNCTION IF EXISTS my_user; -DROP EVENT IF EXISTS e1; -CREATE TABLE t1(c1 char(100)); -CREATE VIEW test.v_user AS SELECT * FROM mysql.user WHERE User LIKE 'bug48321%'; -CREATE VIEW test.v_tables_priv AS SELECT * FROM mysql.tables_priv WHERE User LIKE 'bug48321%'; -CREATE VIEW test.v_procs_priv AS SELECT * FROM mysql.procs_priv WHERE User LIKE 'bug48321%'; -CREATE VIEW test.v_event AS SELECT definer FROM mysql.event WHERE name = 'e1'; -CREATE PROCEDURE p1() SELECT 1; -# bug48321_1-01234 has the max length(16) of user. -GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1-01234'@'localhost' WITH GRANT OPTION; - -# Make sure the max lengths of user and host -# the user name is too lengh -GRANT CREATE USER ON *.* TO '01234567890123456'@'fakehost'; -ERROR HY000: String '01234567890123456' is too long for user name (should be no longer than 16) -# the host name is too lengh -GRANT CREATE USER ON *.* TO 'fakename'@'0123456789012345678901234567890123456789012345678901234567890'; -ERROR HY000: String '0123456789012345678901234567890123456789012345678901234567890' is too long for host name (should be no longer than 60) - -# User 'bug48321_1-01234' connects to master by conn1 -# [On conn1] -# Verify 'REVOKE ALL' statement -REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER(); -Comparing tables master:test.v_user and slave:test.v_user -Comparing tables master:test.v_user and slave2:test.v_user - -# Verify 'GRANT ... ON TABLE ...' statement -GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); -Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv -Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv - -# Verify 'GRANT ... ON PROCEDURE...' statement -GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER(); -Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv -Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv - -# Verify 'GRANT ... ON *.* ...' statement -GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() WITH GRANT OPTION; -Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv -Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv - -# Verify 'REVOKE ... ON TABLE ...' statement -REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); -Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv -Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv - -# Verify 'REVOKE ... ON PROCEDURE...' statement -REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER(); -Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv -Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv - -# Verify 'REVOKE ... ON *.* ...' statement -REVOKE ALL PRIVILEGES ON *.* FROM CURRENT_USER(); -Comparing tables master:test.v_user and slave:test.v_user -Comparing tables master:test.v_user and slave2:test.v_user - -# Verify 'GRANT ...' statement in the procedure -CREATE PROCEDURE my_grant() -GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); -call my_grant; -Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv -Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv - -# Verify 'REVOKE ... ON TABLE ...' statement in the procedure -CREATE PROCEDURE my_revoke() -REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); -call my_revoke; -Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv -Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv - -# Verify 'RENAME USER ...' statement -RENAME USER CURRENT_USER TO 'bug48321_2'@'localhost'; -Comparing tables master:test.v_user and slave:test.v_user -Comparing tables master:test.v_user and slave2:test.v_user - -# Verify 'DROP USER ...' statement -GRANT CREATE USER ON *.* TO 'bug48321_2'@'localhost'; -DROP USER CURRENT_USER(); -Comparing tables master:test.v_user and slave:test.v_user -Comparing tables master:test.v_user and slave2:test.v_user - -# Verify 'ALTER EVENT...' statement -CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT * FROM t1; -# Explicitly assign CURRENT_USER() to definer -ALTER DEFINER=CURRENT_USER() EVENT e1 ENABLE; -Comparing tables master:test.v_event and slave:test.v_event -Comparing tables master:test.v_event and slave2:test.v_event - -# Session user will be set as definer, if the statement does not assign -# a definer -ALTER EVENT e1 ENABLE; -Comparing tables master:test.v_event and slave:test.v_event -Comparing tables master:test.v_event and slave2:test.v_event - -# Verify that this patch does not affect the calling of CURRENT_USER() -# in the other statements -# [On master] -INSERT INTO t1 VALUES(CURRENT_USER()), ('1234'); -Warnings: -Note 1592 Statement may not be safe to log in statement format. -SELECT * FROM t1; -c1 -root@localhost -1234 -# [On slave] -SELECT * FROM t1; -c1 -@ -1234 -# [On slave2] -SELECT * FROM t1; -c1 -@ -1234 -# [On master] -UPDATE t1 SET c1=CURRENT_USER() WHERE c1='1234'; -Warnings: -Note 1592 Statement may not be safe to log in statement format. -SELECT * FROM t1; -c1 -root@localhost -root@localhost -# [On slave] -SELECT * FROM t1; -c1 -@ -@ -# [On slave2] -SELECT * FROM t1; -c1 -@ -@ -# [On master] -DELETE FROM t1 WHERE c1=CURRENT_USER(); -Warnings: -Note 1592 Statement may not be safe to log in statement format. -SELECT * FROM t1; -c1 -# [On slave] -SELECT * FROM t1; -c1 -# [On slave2] -SELECT * FROM t1; -c1 -# [On master] -CREATE TABLE t2(c1 char(100)); -CREATE FUNCTION my_user() RETURNS VARCHAR(64) -SQL SECURITY INVOKER -BEGIN -INSERT INTO t2 VALUES(CURRENT_USER()); -RETURN CURRENT_USER(); -END | -INSERT INTO t1 VALUES(my_user()); -Warnings: -Note 1592 Statement may not be safe to log in statement format. -Note 1592 Statement may not be safe to log in statement format. -SELECT * FROM t1; -c1 -root@localhost -SELECT * FROM t2; -c1 -root@localhost -# [On slave] -SELECT * FROM t1; -c1 -@ -SELECT * FROM t2; -c1 -@ -# [On slave2] -SELECT * FROM t1; -c1 -@ -SELECT * FROM t2; -c1 -@ - -# END -DROP TABLE t1, t2; -DROP VIEW v_user, v_tables_priv, v_procs_priv, v_event; -DROP PROCEDURE p1; -DROP PROCEDURE my_grant; -DROP PROCEDURE my_revoke; -DROP FUNCTION my_user; -DROP EVENT e1; diff --git a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result index 35f4cd3ecbb..26f2545dd72 100644 --- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result +++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result @@ -750,7 +750,7 @@ test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 lat USE test_rpl; SHOW EVENTS; Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation -test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +test_rpl e2 @ SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci ==========MASTER========== SELECT COUNT(*) FROM t1; COUNT(*) diff --git a/mysql-test/suite/rpl/t/rpl_current_user.cnf b/mysql-test/suite/rpl/t/rpl_current_user.cnf deleted file mode 100644 index 999ee727a88..00000000000 --- a/mysql-test/suite/rpl/t/rpl_current_user.cnf +++ /dev/null @@ -1,9 +0,0 @@ -!include ../my.cnf - -[mysqld.3] -server-id=3 -log-bin=slave-bin - -[ENV] -SLAVE_MYPORT1= @mysqld.3.port -SLAVE_MYSOCK1= @mysqld.3.socket diff --git a/mysql-test/suite/rpl/t/rpl_current_user.test b/mysql-test/suite/rpl/t/rpl_current_user.test deleted file mode 100644 index 72581ed7049..00000000000 --- a/mysql-test/suite/rpl/t/rpl_current_user.test +++ /dev/null @@ -1,238 +0,0 @@ -############################################################################## -# BUG#48321 CURRENT_USER() incorrectly replicated for DROP/RENAME USER, -# REVOKE, GRANT, ALTER EVENT -# -# Calling CURRENT_USER() results into inconsistency between slave and master, -# as the slave SQL thread has different user with common users. -# -# After the patch for bug#48321, session's user will be written into query log -# event if CURRENT_USER() is called in 'DROP/RENAME USER', 'REVOKE', 'GRANT', -# 'ALTER EVENT'. -# -############################################################################## -source include/master-slave.inc; -source include/have_binlog_format_statement.inc; - ---echo ---echo # On slave2 -connect (slave2,127.0.0.1,root,,test,$SLAVE_MYPORT1,); -connection slave2; - ---echo # Connect slave2 to slave ---replace_result $SLAVE_MYPORT SLAVE_MYPORT; -eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$SLAVE_MYPORT, - MASTER_LOG_FILE='slave-bin.000001', MASTER_USER='root'; -START SLAVE; -source include/wait_for_slave_to_start.inc; - ---echo ---echo # [On master] -connection master; ---disable_warnings -DROP VIEW IF EXISTS v_user; -DROP VIEW IF EXISTS v_tables_priv; -DROP VIEW IF EXISTS v_procs_priv; -DROP PROCEDURE IF EXISTS p1; -DROP PROCEDURE IF EXISTS my_grant; -DROP PROCEDURE IF EXISTS my_revoke; -DROP FUNCTION IF EXISTS my_user; -DROP EVENT IF EXISTS e1; ---enable_warnings -CREATE TABLE t1(c1 char(100)); -CREATE VIEW test.v_user AS SELECT * FROM mysql.user WHERE User LIKE 'bug48321%'; -CREATE VIEW test.v_tables_priv AS SELECT * FROM mysql.tables_priv WHERE User LIKE 'bug48321%'; -CREATE VIEW test.v_procs_priv AS SELECT * FROM mysql.procs_priv WHERE User LIKE 'bug48321%'; -CREATE VIEW test.v_event AS SELECT definer FROM mysql.event WHERE name = 'e1'; -CREATE PROCEDURE p1() SELECT 1; ---echo # bug48321_1-01234 has the max length(16) of user. -GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1-01234'@'localhost' WITH GRANT OPTION; - ---echo ---echo # Make sure the max lengths of user and host ---echo # the user name is too lengh ---error 1470 -GRANT CREATE USER ON *.* TO '01234567890123456'@'fakehost'; ---echo # the host name is too lengh ---error 1470 -GRANT CREATE USER ON *.* TO 'fakename'@'0123456789012345678901234567890123456789012345678901234567890'; - ---echo ---echo # User 'bug48321_1-01234' connects to master by conn1 -connect (conn1, 127.0.0.1, 'bug48321_1-01234'@'localhost',,); -connection conn1; ---echo # [On conn1] ---echo # Verify 'REVOKE ALL' statement -REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER(); -let $diff_table= test.v_user; -let $diff_server_list= master, slave, slave2; -source include/rpl_diff_tables.inc; - ---echo ---echo # Verify 'GRANT ... ON TABLE ...' statement -connection conn1; -GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); -let $diff_table= test.v_tables_priv; -source include/rpl_diff_tables.inc; - ---echo ---echo # Verify 'GRANT ... ON PROCEDURE...' statement -connection conn1; -GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER(); -let $diff_table= test.v_procs_priv; -source include/rpl_diff_tables.inc; - ---echo ---echo # Verify 'GRANT ... ON *.* ...' statement -connection conn1; -GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() WITH GRANT OPTION; -source include/rpl_diff_tables.inc; - ---echo ---echo # Verify 'REVOKE ... ON TABLE ...' statement -connection conn1; -REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); -let $diff_table= test.v_tables_priv; -source include/rpl_diff_tables.inc; - ---echo ---echo # Verify 'REVOKE ... ON PROCEDURE...' statement -connection conn1; -REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER(); -let $diff_table= test.v_procs_priv; -source include/rpl_diff_tables.inc; - ---echo ---echo # Verify 'REVOKE ... ON *.* ...' statement -connection conn1; -REVOKE ALL PRIVILEGES ON *.* FROM CURRENT_USER(); -let $diff_table= test.v_user; -source include/rpl_diff_tables.inc; - ---echo ---echo # Verify 'GRANT ...' statement in the procedure -connection conn1; -CREATE PROCEDURE my_grant() - GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER(); -call my_grant; -let $diff_table= test.v_tables_priv; -source include/rpl_diff_tables.inc; - ---echo ---echo # Verify 'REVOKE ... ON TABLE ...' statement in the procedure -connection conn1; -CREATE PROCEDURE my_revoke() - REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER(); -call my_revoke; -let $diff_table= test.v_tables_priv; -source include/rpl_diff_tables.inc; - ---echo ---echo # Verify 'RENAME USER ...' statement -connection conn1; -RENAME USER CURRENT_USER TO 'bug48321_2'@'localhost'; -let $diff_table= test.v_user; -source include/rpl_diff_tables.inc; - -disconnect conn1; - ---echo ---echo # Verify 'DROP USER ...' statement -connection master; -GRANT CREATE USER ON *.* TO 'bug48321_2'@'localhost'; -connect (conn1, 127.0.0.1, 'bug48321_2'@'localhost',,); -connection conn1; -DROP USER CURRENT_USER(); -source include/rpl_diff_tables.inc; - ---echo ---echo # Verify 'ALTER EVENT...' statement -connection master; -CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT * FROM t1; - ---echo # Explicitly assign CURRENT_USER() to definer -ALTER DEFINER=CURRENT_USER() EVENT e1 ENABLE; -let $diff_table= test.v_event; -source include/rpl_diff_tables.inc; - -connection master; ---echo ---echo # Session user will be set as definer, if the statement does not assign ---echo # a definer -ALTER EVENT e1 ENABLE; -sync_slave_with_master; -source include/rpl_diff_tables.inc; - ---echo ---echo # Verify that this patch does not affect the calling of CURRENT_USER() ---echo # in the other statements -connection master; ---echo # [On master] -INSERT INTO t1 VALUES(CURRENT_USER()), ('1234'); -SELECT * FROM t1; -sync_slave_with_master; ---echo # [On slave] -SELECT * FROM t1; ---echo # [On slave2] -sync_slave_with_master slave2; -SELECT * FROM t1; - -connection master; ---echo # [On master] -UPDATE t1 SET c1=CURRENT_USER() WHERE c1='1234'; -SELECT * FROM t1; -sync_slave_with_master; ---echo # [On slave] -SELECT * FROM t1; -sync_slave_with_master slave2; ---echo # [On slave2] -SELECT * FROM t1; - -connection master; ---echo # [On master] -DELETE FROM t1 WHERE c1=CURRENT_USER(); -SELECT * FROM t1; -sync_slave_with_master; ---echo # [On slave] -SELECT * FROM t1; -sync_slave_with_master slave2; ---echo # [On slave2] -SELECT * FROM t1; - -connection master; ---echo # [On master] -CREATE TABLE t2(c1 char(100)); - -DELIMITER |; -CREATE FUNCTION my_user() RETURNS VARCHAR(64) - SQL SECURITY INVOKER -BEGIN - INSERT INTO t2 VALUES(CURRENT_USER()); - RETURN CURRENT_USER(); -END | -DELIMITER ;| - -INSERT INTO t1 VALUES(my_user()); -SELECT * FROM t1; -SELECT * FROM t2; -sync_slave_with_master; ---echo # [On slave] -SELECT * FROM t1; -SELECT * FROM t2; -sync_slave_with_master slave2; ---echo # [On slave2] -SELECT * FROM t1; -SELECT * FROM t2; - ---echo ---echo # END -connection master; -DROP TABLE t1, t2; -DROP VIEW v_user, v_tables_priv, v_procs_priv, v_event; -DROP PROCEDURE p1; -DROP PROCEDURE my_grant; -DROP PROCEDURE my_revoke; -DROP FUNCTION my_user; -DROP EVENT e1; -sync_slave_with_master; -sync_slave_with_master slave2; -source include/master-slave-end.inc; diff --git a/sql/log_event.cc b/sql/log_event.cc index c5bbe324ae8..5ff4b50c6df 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -2307,53 +2307,6 @@ bool Query_log_event::write(IO_CACHE* file) start+= 4; } - if (thd && thd->is_current_user_used()) - { - LEX_STRING user; - LEX_STRING host; - bzero(&user, sizeof(user)); - bzero(&host, sizeof(host)); - - if (thd->slave_thread) - { - /* user will be null, if master is older than this patch */ - user= thd->variables.current_user.user; - host= thd->variables.current_user.host; - } - else if (thd->security_ctx->priv_user) - { - Security_context *ctx= thd->security_ctx; - - user.length= strlen(ctx->priv_user); - user.str= ctx->priv_user; - if (ctx->priv_host[0] != '\0') - { - host.str= ctx->priv_host; - host.length= strlen(ctx->priv_host); - } - } - - if (user.length > 0) - { - *start++= Q_INVOKER; - - /* - Store user length and user. The max length of use is 16, so 1 byte is - enough to store the user's length. - */ - *start++= (uchar)user.length; - memcpy(start, user.str, user.length); - start+= user.length; - - /* - Store host length and host. The max length of host is 60, so 1 byte is - enough to store the host's length. - */ - *start++= (uchar)host.length; - memcpy(start, host.str, host.length); - start+= host.length; - } - } /* NOTE: When adding new status vars, please don't forget to update the MAX_SIZE_LOG_EVENT_STATUS in log_event.h and update the function @@ -2622,8 +2575,6 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, bool catalog_nz= 1; DBUG_ENTER("Query_log_event::Query_log_event(char*,...)"); - bzero(&user, sizeof(user)); - bzero(&host, sizeof(host)); common_header_len= description_event->common_header_len; post_header_len= description_event->post_header_len[event_type-1]; DBUG_PRINT("info",("event_len: %u common_header_len: %d post_header_len: %d", @@ -2778,20 +2729,6 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, data_written= master_data_written= uint4korr(pos); pos+= 4; break; - case Q_INVOKER: - { - CHECK_SPACE(pos, end, 1); - user.length= *pos++; - CHECK_SPACE(pos, end, user.length); - user.str= my_strndup((const char *)pos, user.length, MYF(0)); - pos+= user.length; - - CHECK_SPACE(pos, end, 1); - host.length= *pos++; - CHECK_SPACE(pos, end, host.length); - host.str= my_strndup((const char *)pos, host.length, MYF(0)); - pos+= host.length; - } default: /* That's why you must write status vars in growing order of code */ DBUG_PRINT("info",("Query_log_event has unknown status vars (first has\ @@ -3241,9 +3178,7 @@ int Query_log_event::do_apply_event(Relay_log_info const *rli, thd->variables.collation_database= thd->db_charset; thd->table_map_for_update= (table_map)table_map_for_update; - thd->variables.current_user.user= user; - thd->variables.current_user.host= host; - thd->variables.current_user.password= {0, 0}; + /* Execute the query (note that we bypass dispatch_command()) */ const char* found_semicolon= NULL; mysql_parse(thd, thd->query(), thd->query_length(), &found_semicolon); diff --git a/sql/log_event.h b/sql/log_event.h index 816a241e55d..e3ca4ca3321 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -264,8 +264,7 @@ struct sql_ex_info 1 + 2 /* type, lc_time_names_number */ + \ 1 + 2 /* type, charset_database_number */ + \ 1 + 8 /* type, table_map_for_update */ + \ - 1 + 4 /* type, master_data_written */ + \ - 1 + 16 + 1 + 60/* type, user_len, user, host_len, host */) + 1 + 4 /* type, master_data_written */) #define MAX_LOG_EVENT_HEADER ( /* in order of Query_log_event::write */ \ LOG_EVENT_HEADER_LEN + /* write_header */ \ QUERY_HEADER_LEN + /* write_data */ \ @@ -334,8 +333,6 @@ struct sql_ex_info #define Q_MASTER_DATA_WRITTEN_CODE 10 -#define Q_INVOKER 11 - /* Intvar event post-header */ /* Intvar event data */ @@ -1549,8 +1546,6 @@ protected: */ class Query_log_event: public Log_event { - LEX_STRING user; - LEX_STRING host; protected: Log_event::Byte* data_buf; public: diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index acf14fc91c4..dd256c70ecb 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -194,7 +194,6 @@ static bool compare_hostname(const acl_host_and_ip *host,const char *hostname, const char *ip); static my_bool acl_load(THD *thd, TABLE_LIST *tables); static my_bool grant_load(THD *thd, TABLE_LIST *tables); -static inline void get_grantor(THD *thd, char* grantor); /* Convert scrambled password to binary form, according to scramble type, @@ -2705,20 +2704,6 @@ end: DBUG_RETURN(result); } -static inline void get_grantor(THD *thd, char *grantor) -{ - const char *user= thd->security_ctx->user; - const char *host= thd->security_ctx->host_or_ip; - -#if defined(HAVE_REPLICATION) - if (thd->slave_thread && thd->variables.current_user.user.length > 0) - { - user= thd->variables.current_user.user.str; - host= thd->variables.current_user.host.str; - } -#endif - strxmov(grantor, user, "@", host, NullS); -} static int replace_table_table(THD *thd, GRANT_TABLE *grant_table, TABLE *table, const LEX_USER &combo, @@ -2733,7 +2718,9 @@ static int replace_table_table(THD *thd, GRANT_TABLE *grant_table, uchar user_key[MAX_KEY_LENGTH]; DBUG_ENTER("replace_table_table"); - get_grantor(thd, grantor); + strxmov(grantor, thd->security_ctx->user, "@", + thd->security_ctx->host_or_ip, NullS); + /* The following should always succeed as new users are created before this function is called! @@ -2863,7 +2850,9 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name, DBUG_RETURN(-1); } - get_grantor(thd, grantor); + strxmov(grantor, thd->security_ctx->user, "@", + thd->security_ctx->host_or_ip, NullS); + /* New users are created before this function is called. diff --git a/sql/sql_class.cc b/sql/sql_class.cc index cd2bb2a51df..93aa6a8268c 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1236,7 +1236,6 @@ void THD::cleanup_after_query() where= THD::DEFAULT_WHERE; /* reset table map for multi-table update */ table_map_for_update= 0; - clean_current_user_used(); } diff --git a/sql/sql_class.h b/sql/sql_class.h index 72ffa2e6ba4..4c1d4a98db0 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -401,7 +401,6 @@ struct system_variables DATE_TIME_FORMAT *datetime_format; DATE_TIME_FORMAT *time_format; my_bool sysdate_is_now; - LEX_USER current_user; }; @@ -2341,19 +2340,6 @@ public: Protected with LOCK_thd_data mutex. */ void set_query(char *query_arg, uint32 query_length_arg); - void set_current_user_used() { current_user_used= TRUE; } - bool is_current_user_used() { return current_user_used; } - void clean_current_user_used() { current_user_used= FALSE; } - void get_definer(LEX_USER *definer) - { - set_current_user_used(); -#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) - if (slave_thread && variables.current_user.user.length) - *definer= variables.current_user; - else -#endif - get_default_definer(this, definer); - } private: /** The current internal error handler for this thread, or NULL. */ Internal_error_handler *m_internal_handler; @@ -2373,8 +2359,6 @@ private: tree itself is reused between executions and thus is stored elsewhere. */ MEM_ROOT main_mem_root; - - bool current_user_used; }; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 1f3d29ffec0..ed2c76fdcb8 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -7654,7 +7654,7 @@ LEX_USER *create_default_definer(THD *thd) if (! (definer= (LEX_USER*) thd->alloc(sizeof(LEX_USER)))) return 0; - thd->get_definer(definer); + get_default_definer(thd, definer); return definer; } From 1b31b3a38aabefc942ac55d2d6932b2c810d744d Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Mon, 28 Jun 2010 19:41:37 -0700 Subject: [PATCH 244/461] Check in fix for bug #53756: "ALTER TABLE ADD PRIMARY KEY affects crash recovery" rb://369 approved by Marko --- .../suite/innodb/r/innodb_bug53756.result | 118 +++++++++++ .../suite/innodb/t/innodb_bug53756.test | 184 ++++++++++++++++++ storage/innobase/dict/dict0load.c | 27 ++- 3 files changed, 315 insertions(+), 14 deletions(-) create mode 100644 mysql-test/suite/innodb/r/innodb_bug53756.result create mode 100644 mysql-test/suite/innodb/t/innodb_bug53756.test diff --git a/mysql-test/suite/innodb/r/innodb_bug53756.result b/mysql-test/suite/innodb/r/innodb_bug53756.result new file mode 100644 index 00000000000..67797f9c90f --- /dev/null +++ b/mysql-test/suite/innodb/r/innodb_bug53756.result @@ -0,0 +1,118 @@ +DROP TABLE IF EXISTS bug_53756 ; +CREATE TABLE bug_53756 (pk INT, c1 INT) ENGINE=InnoDB; +ALTER TABLE bug_53756 ADD PRIMARY KEY (pk); +INSERT INTO bug_53756 VALUES(1, 11), (2, 22), (3, 33), (4, 44); + +# Select a less restrictive isolation level. +SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED; +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +COMMIT; + +# Start a transaction in the default connection for isolation. +START TRANSACTION; +SELECT @@tx_isolation; +@@tx_isolation +READ-COMMITTED +SELECT * FROM bug_53756; +pk c1 +1 11 +2 22 +3 33 +4 44 + +# connection con1 deletes row 1 +START TRANSACTION; +SELECT @@tx_isolation; +@@tx_isolation +READ-COMMITTED +DELETE FROM bug_53756 WHERE pk=1; + +# connection con2 deletes row 2 +START TRANSACTION; +SELECT @@tx_isolation; +@@tx_isolation +READ-COMMITTED +DELETE FROM bug_53756 WHERE pk=2; + +# connection con3 updates row 3 +START TRANSACTION; +SELECT @@tx_isolation; +@@tx_isolation +READ-COMMITTED +UPDATE bug_53756 SET c1=77 WHERE pk=3; + +# connection con4 updates row 4 +START TRANSACTION; +SELECT @@tx_isolation; +@@tx_isolation +READ-COMMITTED +UPDATE bug_53756 SET c1=88 WHERE pk=4; + +# connection con5 inserts row 5 +START TRANSACTION; +SELECT @@tx_isolation; +@@tx_isolation +READ-COMMITTED +INSERT INTO bug_53756 VALUES(5, 55); + +# connection con6 inserts row 6 +START TRANSACTION; +SELECT @@tx_isolation; +@@tx_isolation +READ-COMMITTED +INSERT INTO bug_53756 VALUES(6, 66); + +# connection con1 commits. +COMMIT; + +# connection con3 commits. +COMMIT; + +# connection con4 rolls back. +ROLLBACK; + +# connection con6 rolls back. +ROLLBACK; + +# The connections 2 and 5 stay open. + +# connection default selects resulting data. +# Delete of row 1 was committed. +# Dpdate of row 3 was committed. +# Due to isolation level read committed, these should be included. +# All other changes should not be included. +SELECT * FROM bug_53756; +pk c1 +2 22 +3 77 +4 44 + +# connection default +# +# Crash server. +START TRANSACTION; +INSERT INTO bug_53756 VALUES (666,666); +SET SESSION debug="+d,crash_commit_before"; +COMMIT; +ERROR HY000: Lost connection to MySQL server during query + +# +# disconnect con1, con2, con3, con4, con5, con6. +# +# Restart server. + +# +# Select recovered data. +# Delete of row 1 was committed. +# Update of row 3 was committed. +# These should be included. +# All other changes should not be included. +# Delete of row 2 and insert of row 5 should be rolled back +SELECT * FROM bug_53756; +pk c1 +2 22 +3 77 +4 44 + +# Clean up. +DROP TABLE bug_53756; diff --git a/mysql-test/suite/innodb/t/innodb_bug53756.test b/mysql-test/suite/innodb/t/innodb_bug53756.test new file mode 100644 index 00000000000..85a09478486 --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_bug53756.test @@ -0,0 +1,184 @@ +# This is the test case for bug #53756. Alter table operation could +# leave a deleted record for the temp table (later renamed to the altered +# table) in the SYS_TABLES secondary index, we should ignore this row and +# find the first non-deleted row for the specified table_id when load table +# metadata in the function dict_load_table_on_id() during crash recovery. + +# +# innobackup needs to connect to the server. Not supported in embedded. +--source include/not_embedded.inc +# +# This test case needs to crash the server. Needs a debug server. +--source include/have_debug.inc +# +# Don't test this under valgrind, memory leaks will occur. +--source include/not_valgrind.inc +# +# This test case needs InnoDB. +--source include/have_innodb.inc + +# +# Precautionary clean up. +# +--disable_warnings +DROP TABLE IF EXISTS bug_53756 ; +--enable_warnings + +# +# Create test data. +# +CREATE TABLE bug_53756 (pk INT, c1 INT) ENGINE=InnoDB; +ALTER TABLE bug_53756 ADD PRIMARY KEY (pk); +INSERT INTO bug_53756 VALUES(1, 11), (2, 22), (3, 33), (4, 44); + +--echo +--echo # Select a less restrictive isolation level. +# Don't use user variables. They won't survive server crash. +--let $global_isolation= `SELECT @@global.tx_isolation`; +--let $session_isolation= `SELECT @@session.tx_isolation`; +SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED; +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +COMMIT; + +--echo +--echo # Start a transaction in the default connection for isolation. +START TRANSACTION; +SELECT @@tx_isolation; +SELECT * FROM bug_53756; + +--echo +--echo # connection con1 deletes row 1 +--connect (con1,localhost,root,,) +START TRANSACTION; +SELECT @@tx_isolation; +DELETE FROM bug_53756 WHERE pk=1; + +--echo +--echo # connection con2 deletes row 2 +--connect (con2,localhost,root,,) +START TRANSACTION; +SELECT @@tx_isolation; +DELETE FROM bug_53756 WHERE pk=2; + +--echo +--echo # connection con3 updates row 3 +--connect (con3,localhost,root,,) +START TRANSACTION; +SELECT @@tx_isolation; +UPDATE bug_53756 SET c1=77 WHERE pk=3; + +--echo +--echo # connection con4 updates row 4 +--connect (con4,localhost,root,,) +START TRANSACTION; +SELECT @@tx_isolation; +UPDATE bug_53756 SET c1=88 WHERE pk=4; + +--echo +--echo # connection con5 inserts row 5 +--connect (con5,localhost,root,,) +START TRANSACTION; +SELECT @@tx_isolation; +INSERT INTO bug_53756 VALUES(5, 55); + +--echo +--echo # connection con6 inserts row 6 +--connect (con6,localhost,root,,) +START TRANSACTION; +SELECT @@tx_isolation; +INSERT INTO bug_53756 VALUES(6, 66); + +--echo +--echo # connection con1 commits. +--connection con1 +COMMIT; + +--echo +--echo # connection con3 commits. +--connection con3 +COMMIT; + +--echo +--echo # connection con4 rolls back. +--connection con4 +ROLLBACK; + +--echo +--echo # connection con6 rolls back. +--connection con6 +ROLLBACK; + +--echo +--echo # The connections 2 and 5 stay open. + +--echo +--echo # connection default selects resulting data. +--echo # Delete of row 1 was committed. +--echo # Dpdate of row 3 was committed. +--echo # Due to isolation level read committed, these should be included. +--echo # All other changes should not be included. +--connection default +SELECT * FROM bug_53756; + +--echo +--echo # connection default +--connection default +--echo # +--echo # Crash server. +# +# Write file to make mysql-test-run.pl expect the "crash", but don't start +# it until it's told to +--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +# +START TRANSACTION; +INSERT INTO bug_53756 VALUES (666,666); +# +# Request a crash on next execution of commit. +SET SESSION debug="+d,crash_commit_before"; +# +# Execute the statement that causes the crash. +--error 2013 +COMMIT; +--echo +--echo # +--echo # disconnect con1, con2, con3, con4, con5, con6. +--disconnect con1 +--disconnect con2 +--disconnect con3 +--disconnect con4 +--disconnect con5 +--disconnect con6 +--echo # +--echo # Restart server. +# +# Write file to make mysql-test-run.pl start up the server again +--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +# +# Turn on reconnect +--enable_reconnect +# +# Call script that will poll the server waiting for it to be back online again +--source include/wait_until_connected_again.inc +# +# Turn off reconnect again +--disable_reconnect +--echo + +--echo # +--echo # Select recovered data. +--echo # Delete of row 1 was committed. +--echo # Update of row 3 was committed. +--echo # These should be included. +--echo # All other changes should not be included. +--echo # Delete of row 2 and insert of row 5 should be rolled back +SELECT * FROM bug_53756; + +--echo +--echo # Clean up. +DROP TABLE bug_53756; + +--disable_query_log +eval SET GLOBAL tx_isolation= '$global_isolation'; +eval SET SESSION tx_isolation= '$session_isolation'; +--enable_query_log + diff --git a/storage/innobase/dict/dict0load.c b/storage/innobase/dict/dict0load.c index 65f1c9536bd..d5e7600f4d0 100644 --- a/storage/innobase/dict/dict0load.c +++ b/storage/innobase/dict/dict0load.c @@ -927,6 +927,8 @@ dict_load_table_on_id( ut_ad(mutex_own(&(dict_sys->mutex))); + table = NULL; + /* NOTE that the operation of this function is protected by the dictionary mutex, and therefore no deadlocks can occur with other dictionary operations. */ @@ -953,15 +955,17 @@ dict_load_table_on_id( BTR_SEARCH_LEAF, &pcur, &mtr); rec = btr_pcur_get_rec(&pcur); - if (!btr_pcur_is_on_user_rec(&pcur, &mtr) - || rec_get_deleted_flag(rec, 0)) { + if (!btr_pcur_is_on_user_rec(&pcur, &mtr)) { /* Not found */ + goto func_exit; + } - btr_pcur_close(&pcur); - mtr_commit(&mtr); - mem_heap_free(heap); - - return(NULL); + /* Find the first record that is not delete marked */ + while (rec_get_deleted_flag(rec, 0)) { + if (!btr_pcur_move_to_next_user_rec(&pcur, &mtr)) { + goto func_exit; + } + rec = btr_pcur_get_rec(&pcur); } /*---------------------------------------------------*/ @@ -974,19 +978,14 @@ dict_load_table_on_id( /* Check if the table id in record is the one searched for */ if (ut_dulint_cmp(table_id, mach_read_from_8(field)) != 0) { - - btr_pcur_close(&pcur); - mtr_commit(&mtr); - mem_heap_free(heap); - - return(NULL); + goto func_exit; } /* Now we get the table name from the record */ field = rec_get_nth_field_old(rec, 1, &len); /* Load the table definition to memory */ table = dict_load_table(mem_heap_strdupl(heap, (char*) field, len)); - +func_exit: btr_pcur_close(&pcur); mtr_commit(&mtr); mem_heap_free(heap); From 5bbdeada810ae838981c7bbecfeddda64076d7e4 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Tue, 29 Jun 2010 00:13:18 -0700 Subject: [PATCH 245/461] Change the table name in innodb_bug54044 to lower case to avoid platform dependent diffs. --- mysql-test/suite/innodb/r/innodb_bug54044.result | 4 ++-- mysql-test/suite/innodb/t/innodb_bug54044.test | 2 +- mysql-test/suite/innodb_plugin/r/innodb_bug54044.result | 4 ++-- mysql-test/suite/innodb_plugin/t/innodb_bug54044.test | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mysql-test/suite/innodb/r/innodb_bug54044.result b/mysql-test/suite/innodb/r/innodb_bug54044.result index 9574381d8e1..90ab812f2ae 100644 --- a/mysql-test/suite/innodb/r/innodb_bug54044.result +++ b/mysql-test/suite/innodb/r/innodb_bug54044.result @@ -1,3 +1,3 @@ -CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB +CREATE TEMPORARY TABLE table_54044 ENGINE = INNODB AS SELECT IF(NULL IS NOT NULL, NULL, NULL); -ERROR HY000: Can't create table 'test.TABLE_54044' (errno: -1) +ERROR HY000: Can't create table 'test.table_54044' (errno: -1) diff --git a/mysql-test/suite/innodb/t/innodb_bug54044.test b/mysql-test/suite/innodb/t/innodb_bug54044.test index 824450ae1a6..a6722ed6399 100644 --- a/mysql-test/suite/innodb/t/innodb_bug54044.test +++ b/mysql-test/suite/innodb/t/innodb_bug54044.test @@ -6,6 +6,6 @@ # This 'create table' operation should fail because of # using NULL datatype --error ER_CANT_CREATE_TABLE -CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB +CREATE TEMPORARY TABLE table_54044 ENGINE = INNODB AS SELECT IF(NULL IS NOT NULL, NULL, NULL); diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result b/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result index 9574381d8e1..90ab812f2ae 100644 --- a/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result @@ -1,3 +1,3 @@ -CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB +CREATE TEMPORARY TABLE table_54044 ENGINE = INNODB AS SELECT IF(NULL IS NOT NULL, NULL, NULL); -ERROR HY000: Can't create table 'test.TABLE_54044' (errno: -1) +ERROR HY000: Can't create table 'test.table_54044' (errno: -1) diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test b/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test index 8958dba1c9b..58f60a54130 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test @@ -6,6 +6,6 @@ # This 'create table' operation should fail because of # using NULL datatype --error ER_CANT_CREATE_TABLE -CREATE TEMPORARY TABLE TABLE_54044 ENGINE = INNODB +CREATE TEMPORARY TABLE table_54044 ENGINE = INNODB AS SELECT IF(NULL IS NOT NULL, NULL, NULL); From 836f7fcfc6ad843b11b551a8b9715422d38f2356 Mon Sep 17 00:00:00 2001 From: Martin Hansson Date: Tue, 29 Jun 2010 10:28:17 +0200 Subject: [PATCH 246/461] Fix of bad merge of test case for Bug#41660 (test case moved). --- mysql-test/t/error_simulation.test | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/mysql-test/t/error_simulation.test b/mysql-test/t/error_simulation.test index 8e65c338f36..f6edacfaa29 100644 --- a/mysql-test/t/error_simulation.test +++ b/mysql-test/t/error_simulation.test @@ -45,6 +45,20 @@ SHOW CREATE TABLE t1; SELECT * FROM t1; DROP TABLE t1; +--echo # +--echo # Bug#42064: low memory crash when importing hex strings, in Item_hex_string::Item_hex_string +--echo # + +CREATE TABLE t1(a BLOB); + +SET SESSION debug="+d,bug42064_simulate_oom"; +# May fail with either ER_OUT_OF_RESOURCES or EE_OUTOFMEMORY +--error ER_OUT_OF_RESOURCES, 5 +INSERT INTO t1 VALUES(""); +SET SESSION debug=DEFAULT; + +DROP TABLE t1; + -- echo # -- echo # Bug#41660: Sort-index_merge for non-first join table may require -- echo # O(#scans) memory @@ -75,20 +89,6 @@ SET SESSION debug = DEFAULT; DROP TABLE t1, t2; ---echo # ---echo # Bug#42064: low memory crash when importing hex strings, in Item_hex_string::Item_hex_string ---echo # - -CREATE TABLE t1(a BLOB); - -SET SESSION debug="+d,bug42064_simulate_oom"; -# May fail with either ER_OUT_OF_RESOURCES or EE_OUTOFMEMORY ---error ER_OUT_OF_RESOURCES, 5 -INSERT INTO t1 VALUES(""); -SET SESSION debug=DEFAULT; - -DROP TABLE t1; - --echo # --echo # End of 5.1 tests --echo # From e4379c5131233862f085ed49bea812e2f7cfd1a4 Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Tue, 29 Jun 2010 11:26:10 +0200 Subject: [PATCH 247/461] Install MTR and SQL-bench with CPack and NSIS --- CMakeLists.txt | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a938e73c09..cc13e198294 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -365,8 +365,16 @@ SET(CPACK_COMPONENT_SCRIPTS_DESCRIPTION "SQL and Perl scripts to control and mod SET(CPACK_COMPONENT_SCRIPTS_DEPENDS runtime) SET(CPACK_COMPONENT_SCRIPTS_GROUP "Server") SET(CPACK_COMPONENT_SCRIPTS_INSTALL_TYPES Normal Development) -# TODO: Add test files -# TODO: Add sql-bench +SET(CPACK_COMPONENT_MYSQLTEST_DISPLAY_NAME "MariaDB test suite") +SET(CPACK_COMPONENT_MYSQLTEST_DESCRIPTION "The MariaDB regression test suite.") +SET(CPACK_COMPONENT_MYSQLTEST_DEPENDS runtime) +SET(CPACK_COMPONENT_MYSQLTEST_GROUP "Testing") +SET(CPACK_COMPONENT_MYSQLTEST_INSTALL_TYPES Normal Development) +SET(CPACK_COMPONENT_SQLBENCH_DISPLAY_NAME "SQL Bench") +SET(CPACK_COMPONENT_SQLBENCH_DESCRIPTION "The MariaDB benchmark suite.") +SET(CPACK_COMPONENT_SQLBENCH_DEPENDS runtime) +SET(CPACK_COMPONENT_SQLBENCH_GROUP "Testing") +SET(CPACK_COMPONENT_SQLBENCH_INSTALL_TYPES Normal Development) # Add files to the installer INSTALL(FILES COPYING EXCEPTIONS-CLIENT DESTINATION .) @@ -407,6 +415,40 @@ FOREACH(ERRMSGFILE ${share_dirs}) INSTALL(FILES ${ERRMSGFILE} DESTINATION share/${DIRNAME} COMPONENT runtime) ENDFOREACH(ERRMSGFILE ${share_dirs}) +# MTR files +FILE(GLOB_RECURSE testfiles mysql-test/*) +FOREACH(testfile ${testfiles}) + FILE(RELATIVE_PATH dirname ${PROJECT_SOURCE_DIR} ${testfile}) + GET_FILENAME_COMPONENT(dirname ${dirname} PATH) + GET_FILENAME_COMPONENT(filename ${testfile} NAME) + GET_FILENAME_COMPONENT(ext ${testfile} EXT) + SET(ok "yes") + IF (NOT "x_${ext}" STREQUAL "x_") + # Test if this is one of the extensions we don't want to install + STRING(TOLOWER ${ext} ext) + IF(${ext} STREQUAL ".dir" OR ${ext} STREQUAL ".vcproj" OR ${ext} STREQUAL ".user" OR ${ext} STREQUAL ".ilk" + OR ${ext} STREQUAL ".idb" OR ${ext} STREQUAL ".map" OR ${ext} STREQUAL ".gcov" + OR ${ext} STREQUAL ".supp" OR ${ext} STREQUAL ".am" OR ${ext} STREQUAL ".stress") + SET(ok "no") + ENDIF() + ENDIF(NOT "x_${ext}" STREQUAL "x_") + IF (${ok} STREQUAL "yes") + # Message("Dir: ${dirname}. File: ${filename}. Ext: ${ext}") + INSTALL(FILES ${testfile} DESTINATION ${dirname} COMPONENT mysqltest) + ENDIF(${ok} STREQUAL "yes") +ENDFOREACH(testfile ${testfiles}) + +# SQL Bench +FILE(GLOB_RECURSE benchfiles sql-bench/*) +FOREACH(testfile ${testfiles}) + FILE(RELATIVE_PATH dirname ${PROJECT_SOURCE_DIR} ${testfile}) + GET_FILENAME_COMPONENT(dirname ${dirname} PATH) + GET_FILENAME_COMPONENT(filename ${testfile} NAME) + IF(NOT ${dirname} STREQUAL "sql-bench" OR ${filename} STREQUAL "README") + INSTALL(FILES ${testfile} DESTINATION ${dirname} COMPONENT sqlbench) + ENDIF() +ENDFOREACH(testfile ${testfiles}) + INCLUDE(InstallRequiredSystemLibraries) # This must always be the last line From 7ccbf9b817b47d0393fe66bda6f6013ec24486ba Mon Sep 17 00:00:00 2001 From: Dmitry Shulga Date: Tue, 29 Jun 2010 16:32:03 +0700 Subject: [PATCH 248/461] Fixed bug #51855. Race condition in XA START. If several threads concurrently execute the statement XA START 'x', then mysqld server could crash. sql/sql_class.cc: xid_cache_insert: added checking for element in cache before insert it, return TRUE if such element already exists. sql/sql_parse.cc: mysql_execute_command modified: * sequence of calls to xid_cache_search(..)/xid_cache_insert(...) replaced by call to xid_cache_insert(...) in alternative 'case SQLCOM_XA_START:' * added comment to alternative 'case SQLCOM_XA_COMMIT:'. --- sql/sql_class.cc | 10 +++++++--- sql/sql_parse.cc | 26 ++++++++++++++++++-------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 93aa6a8268c..99792f2b262 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -3365,9 +3365,13 @@ bool xid_cache_insert(XID *xid, enum xa_states xa_state) bool xid_cache_insert(XID_STATE *xid_state) { pthread_mutex_lock(&LOCK_xid_cache); - DBUG_ASSERT(hash_search(&xid_cache, xid_state->xid.key(), - xid_state->xid.key_length())==0); - my_bool res=my_hash_insert(&xid_cache, (uchar*)xid_state); + if (hash_search(&xid_cache, xid_state->xid.key(), xid_state->xid.key_length())) + { + pthread_mutex_unlock(&LOCK_xid_cache); + my_error(ER_XAER_DUPID, MYF(0)); + return TRUE; + } + my_bool res= my_hash_insert(&xid_cache, (uchar*)xid_state); pthread_mutex_unlock(&LOCK_xid_cache); return res; } diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index ed2c76fdcb8..a8dede3e7f5 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -4730,7 +4730,7 @@ create_sp_error: my_error(ER_XAER_NOTA, MYF(0)); break; } - thd->transaction.xid_state.xa_state=XA_ACTIVE; + thd->transaction.xid_state.xa_state= XA_ACTIVE; my_ok(thd); break; } @@ -4750,16 +4750,16 @@ create_sp_error: my_error(ER_XAER_OUTSIDE, MYF(0)); break; } - if (xid_cache_search(thd->lex->xid)) - { - my_error(ER_XAER_DUPID, MYF(0)); - break; - } DBUG_ASSERT(thd->transaction.xid_state.xid.is_null()); - thd->transaction.xid_state.xa_state=XA_ACTIVE; + thd->transaction.xid_state.xa_state= XA_ACTIVE; thd->transaction.xid_state.rm_error= 0; thd->transaction.xid_state.xid.set(thd->lex->xid); - xid_cache_insert(&thd->transaction.xid_state); + if (xid_cache_insert(&thd->transaction.xid_state)) + { + thd->transaction.xid_state.xa_state= XA_NOTR; + thd->transaction.xid_state.xid.null(); + break; + } thd->transaction.all.modified_non_trans_table= FALSE; thd->options= ((thd->options & ~(OPTION_KEEP_LOG)) | OPTION_BEGIN); thd->server_status|= SERVER_STATUS_IN_TRANS; @@ -4813,6 +4813,16 @@ create_sp_error: case SQLCOM_XA_COMMIT: if (!thd->transaction.xid_state.xid.eq(thd->lex->xid)) { + /* + xid_state.in_thd is always true beside of xa recovery + procedure. Note, that there is no race condition here + between xid_cache_search and xid_cache_delete, since we're always + deleting our own XID (thd->lex->xid == thd->transaction.xid_state.xid). + The only case when thd->lex->xid != thd->transaction.xid_state.xid + and xid_state->in_thd == 0 is in ha_recover() functionality, + which is called before starting client connections, and thus is + always single-threaded. + */ XID_STATE *xs=xid_cache_search(thd->lex->xid); if (!xs || xs->in_thd) my_error(ER_XAER_NOTA, MYF(0)); From 62084feb5578164832ed487286798d5f7fc7a5ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 29 Jun 2010 15:55:18 +0300 Subject: [PATCH 249/461] Bug#54358: READ UNCOMMITTED access failure of off-page DYNAMIC or COMPRESSED columns When the server crashes after a record stub has been inserted and before all its off-page columns have been written, the record will contain incomplete off-page columns after crash recovery. Such records may only be accessed at the READ UNCOMMITTED isolation level or when rolling back a recovered transaction in recv_recovery_rollback_active(). Skip these records at the READ UNCOMMITTED isolation level. TODO: Add assertions for checking the above assumptions hold when an incomplete BLOB is encountered. btr_rec_copy_externally_stored_field(): Return NULL if the field is incomplete. row_prebuilt_t::templ_contains_blob: Clarify what "BLOB" means in this context. Hint: MySQL BLOBs are not the same as InnoDB BLOBs. row_sel_store_mysql_rec(): Return FALSE if not all columns could be retrieved. Previously this function always returned TRUE. Assert that the record is not delete-marked. row_sel_push_cache_row_for_mysql(): Return FALSE if not all columns could be retrieved. row_search_for_mysql(): Skip records containing incomplete off-page columns. Assert that the transaction isolation level is READ UNCOMMITTED. rb://380 approved by Jimmy Yang --- storage/innodb_plugin/btr/btr0cur.c | 24 ++++- storage/innodb_plugin/include/btr0cur.h | 2 +- storage/innodb_plugin/include/row0mysql.h | 6 +- storage/innodb_plugin/row/row0merge.c | 5 + storage/innodb_plugin/row/row0sel.c | 113 +++++++++++++++++++--- 5 files changed, 133 insertions(+), 17 deletions(-) diff --git a/storage/innodb_plugin/btr/btr0cur.c b/storage/innodb_plugin/btr/btr0cur.c index 50531ad3bd7..9b28f26f054 100644 --- a/storage/innodb_plugin/btr/btr0cur.c +++ b/storage/innodb_plugin/btr/btr0cur.c @@ -4814,7 +4814,7 @@ btr_copy_externally_stored_field( /*******************************************************************//** Copies an externally stored field of a record to mem heap. -@return the field copied to heap */ +@return the field copied to heap, or NULL if the field is incomplete */ UNIV_INTERN byte* btr_rec_copy_externally_stored_field( @@ -4844,6 +4844,28 @@ btr_rec_copy_externally_stored_field( data = rec_get_nth_field(rec, offsets, no, &local_len); + ut_a(local_len >= BTR_EXTERN_FIELD_REF_SIZE); + + if (UNIV_UNLIKELY + (!memcmp(data + local_len - BTR_EXTERN_FIELD_REF_SIZE, + field_ref_zero, BTR_EXTERN_FIELD_REF_SIZE))) { + /* The externally stored field was not written + yet. This is only a valid condition when the server + crashed after the time a record stub was freshly + inserted but before all its columns were written. This + record should only be seen by + recv_recovery_rollback_active() or any + TRX_ISO_READ_UNCOMMITTED transactions. */ + + /* TODO: assert that there is an owner_trx with + owner_trx->id == DB_TRX_ID and owner_trx->is_recovered */ + + /* TODO: assert that for the current transaction trx, + either (trx == owner_trx && trx_is_recv(trx)) or + trx->isolation_level == TRX_ISO_READ_UNCOMMITTED. */ + return(NULL); + } + return(btr_copy_externally_stored_field(len, data, zip_size, local_len, heap)); } diff --git a/storage/innodb_plugin/include/btr0cur.h b/storage/innodb_plugin/include/btr0cur.h index 716f15c4267..7dc2eb63cf5 100644 --- a/storage/innodb_plugin/include/btr0cur.h +++ b/storage/innodb_plugin/include/btr0cur.h @@ -570,7 +570,7 @@ btr_copy_externally_stored_field_prefix( ulint local_len);/*!< in: length of data, in bytes */ /*******************************************************************//** Copies an externally stored field of a record to mem heap. -@return the field copied to heap */ +@return the field copied to heap, or NULL if the field is incomplete */ UNIV_INTERN byte* btr_rec_copy_externally_stored_field( diff --git a/storage/innodb_plugin/include/row0mysql.h b/storage/innodb_plugin/include/row0mysql.h index 39ea240772c..b69e657361b 100644 --- a/storage/innodb_plugin/include/row0mysql.h +++ b/storage/innodb_plugin/include/row0mysql.h @@ -622,7 +622,11 @@ struct row_prebuilt_struct { the secondary index, then this is set to TRUE */ unsigned templ_contains_blob:1;/*!< TRUE if the template contains - BLOB column(s) */ + a column with DATA_BLOB == + get_innobase_type_from_mysql_type(); + not to be confused with InnoDB + externally stored columns + (VARCHAR can be off-page too) */ mysql_row_templ_t* mysql_template;/*!< template used to transform rows fast between MySQL and Innobase formats; memory for this template diff --git a/storage/innodb_plugin/row/row0merge.c b/storage/innodb_plugin/row/row0merge.c index 70cc7912fad..56a68b58225 100644 --- a/storage/innodb_plugin/row/row0merge.c +++ b/storage/innodb_plugin/row/row0merge.c @@ -1780,6 +1780,11 @@ row_merge_copy_blobs( (below). */ data = btr_rec_copy_externally_stored_field( mrec, offsets, zip_size, i, &len, heap); + /* Because we have locked the table, any records + written by incomplete transactions must have been + rolled back already. There must not be any incomplete + BLOB columns. */ + ut_a(data); dfield_set_data(field, data, len); } diff --git a/storage/innodb_plugin/row/row0sel.c b/storage/innodb_plugin/row/row0sel.c index 2861235a995..ab8c78e4f4a 100644 --- a/storage/innodb_plugin/row/row0sel.c +++ b/storage/innodb_plugin/row/row0sel.c @@ -416,7 +416,7 @@ row_sel_fetch_columns( field_no))) { /* Copy an externally stored field to the - temporary heap */ + temporary heap, if possible. */ heap = mem_heap_create(1); @@ -425,6 +425,21 @@ row_sel_fetch_columns( dict_table_zip_size(index->table), field_no, &len, heap); + /* data == NULL means that the + externally stored field was not + written yet. This is only a valid + condition when the server crashed + after the time a record stub was + freshly inserted but before all its + columns were written. This record + should only be seen by + recv_recovery_rollback_active() or any + TRX_ISO_READ_UNCOMMITTED + transactions. The InnoDB SQL parser + (the sole caller of this function) + does not implement READ UNCOMMITTED, + and it is not involved during rollback. */ + ut_a(data); ut_a(len != UNIV_SQL_NULL); needs_copy = TRUE; @@ -926,6 +941,7 @@ row_sel_get_clust_rec( when plan->clust_pcur was positioned. The latch will not be released until mtr_commit(mtr). */ + ut_ad(!rec_get_deleted_flag(clust_rec, rec_offs_comp(offsets))); row_sel_fetch_columns(index, clust_rec, offsets, UT_LIST_GET_FIRST(plan->columns)); *out_rec = clust_rec; @@ -1628,6 +1644,13 @@ skip_lock: } if (old_vers == NULL) { + /* The record does not exist + in our read view. Skip it, but + first attempt to determine + whether the index segment we + are searching through has been + exhausted. */ + offsets = rec_get_offsets( rec, index, offsets, ULINT_UNDEFINED, &heap); @@ -2647,9 +2670,8 @@ Convert a row in the Innobase format to a row in the MySQL format. Note that the template in prebuilt may advise us to copy only a few columns to mysql_rec, other columns are left blank. All columns may not be needed in the query. -@return TRUE if success, FALSE if could not allocate memory for a BLOB -(though we may also assert in that case) */ -static +@return TRUE on success, FALSE if not all columns could be retrieved */ +static __attribute__((warn_unused_result)) ibool row_sel_store_mysql_rec( /*====================*/ @@ -2672,6 +2694,7 @@ row_sel_store_mysql_rec( ut_ad(prebuilt->mysql_template); ut_ad(prebuilt->default_rec); ut_ad(rec_offs_validate(rec, NULL, offsets)); + ut_ad(!rec_get_deleted_flag(rec, rec_offs_comp(offsets))); if (UNIV_LIKELY_NULL(prebuilt->blob_heap)) { mem_heap_free(prebuilt->blob_heap); @@ -2719,6 +2742,26 @@ row_sel_store_mysql_rec( dict_table_zip_size(prebuilt->table), templ->rec_field_no, &len, heap); + if (UNIV_UNLIKELY(!data)) { + /* The externally stored field + was not written yet. This is + only a valid condition when + the server crashed after the + time a record stub was freshly + inserted but before all its + columns were written. This + record should only be seen by + recv_recovery_rollback_active() + or any TRX_ISO_READ_UNCOMMITTED + transactions. */ + + if (extern_field_heap) { + mem_heap_free(extern_field_heap); + } + + return(FALSE); + } + ut_a(len != UNIV_SQL_NULL); } else { /* Field is stored in the row. */ @@ -3136,9 +3179,10 @@ row_sel_pop_cached_row_for_mysql( } /********************************************************************//** -Pushes a row for MySQL to the fetch cache. */ -UNIV_INLINE -void +Pushes a row for MySQL to the fetch cache. +@return TRUE on success, FALSE if the record contains incomplete BLOBs */ +UNIV_INLINE __attribute__((warn_unused_result)) +ibool row_sel_push_cache_row_for_mysql( /*=============================*/ row_prebuilt_t* prebuilt, /*!< in: prebuilt struct */ @@ -3180,10 +3224,11 @@ row_sel_push_cache_row_for_mysql( prebuilt->fetch_cache[ prebuilt->n_fetch_cached], prebuilt, rec, offsets))) { - ut_error; + return(FALSE); } prebuilt->n_fetch_cached++; + return(TRUE); } /*********************************************************************//** @@ -3578,6 +3623,24 @@ row_search_for_mysql( if (!row_sel_store_mysql_rec(buf, prebuilt, rec, offsets)) { + /* Only fresh inserts at + server crash time may contain + incomplete externally stored + columns. Pretend that such + records do not exist. Such + records may only be accessed + at the READ UNCOMMITTED + isolation level or when + rolling back a recovered + transaction. Rollback happens + at a lower level, not here. */ + ut_a(trx->isolation_level + == TRX_ISO_READ_UNCOMMITTED); + /* TODO: assert that there is + an owner_trx with + owner_trx->id == DB_TRX_ID and + owner_trx->is_recovered */ + err = DB_TOO_BIG_RECORD; /* We let the main loop to do the @@ -4357,9 +4420,20 @@ requires_clust_rec: not cache rows because there the cursor is a scrollable cursor. */ - row_sel_push_cache_row_for_mysql(prebuilt, result_rec, - offsets); - if (prebuilt->n_fetch_cached == MYSQL_FETCH_CACHE_SIZE) { + if (!row_sel_push_cache_row_for_mysql(prebuilt, result_rec, + offsets)) { + /* Only fresh inserts at server crash time may contain + incomplete externally stored columns. Pretend that + such records do not exist. Such records may only be + accessed at the READ UNCOMMITTED isolation level or + when rolling back a recovered transaction. Rollback + happens at a lower level, not here. */ + ut_a(trx->isolation_level == TRX_ISO_READ_UNCOMMITTED); + /* TODO: assert that there is an owner_trx + with owner_trx->id == DB_TRX_ID and + owner_trx->is_recovered */ + } else if (prebuilt->n_fetch_cached + == MYSQL_FETCH_CACHE_SIZE) { goto got_row; } @@ -4375,9 +4449,20 @@ requires_clust_rec: } else { if (!row_sel_store_mysql_rec(buf, prebuilt, result_rec, offsets)) { - err = DB_TOO_BIG_RECORD; - - goto lock_wait_or_error; + /* Only fresh inserts at server crash + time may contain incomplete externally + stored columns. Pretend that such + records do not exist. Such records may + only be accessed at the READ UNCOMMITTED + isolation level or when rolling back a + recovered transaction. Rollback happens + at a lower level, not here. */ + ut_a(trx->isolation_level + == TRX_ISO_READ_UNCOMMITTED); + /* TODO: assert that there is an owner_trx + with owner_trx->id == DB_TRX_ID and + owner_trx->is_recovered */ + goto next_rec; } } From 4ee0dc7cca6f0f5a0acabed38715203d6bc951ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 29 Jun 2010 15:56:53 +0300 Subject: [PATCH 250/461] ChangeLog entry for Bug #54358 --- storage/innodb_plugin/ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 328fcf8e0bb..5e41c5f180a 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,10 @@ +2010-06-29 The InnoDB Team + + * btr/btr0cur.c, include/btr0cur.h, + include/row0mysql.h, row/row0merge.c, row/row0sel.c: + Fix Bug#54358 READ UNCOMMITTED access failure of off-page DYNAMIC + or COMPRESSED columns + 2010-06-24 The InnoDB Team * handler/ha_innodb.cc: From 63c44558dc02e7c03b224afb09ee4d882619ccf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 29 Jun 2010 16:00:58 +0300 Subject: [PATCH 251/461] Bug#54408: txn rollback after recovery: row0umod.c:673 dict_table_get_format(index->table) The REDUNDANT and COMPACT formats store a local 768-byte prefix of each externally stored column. No row_ext cache is needed, but we initialized one nevertheless. When the BLOB pointer was zero, we would ignore the locally stored prefix as well. This triggered an assertion failure in row_undo_mod_upd_exist_sec(). row_build(): Allow ext==NULL when a REDUNDANT or COMPACT table contains externally stored columns. row_undo_search_clust_to_pcur(), row_upd_store_row(): Invoke row_build() with ext==NULL on REDUNDANT and COMPACT tables. rb://382 approved by Jimmy Yang --- storage/innodb_plugin/row/row0row.c | 8 +++++++- storage/innodb_plugin/row/row0undo.c | 18 +++++++++++++++++- storage/innodb_plugin/row/row0upd.c | 17 ++++++++++++++++- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/storage/innodb_plugin/row/row0row.c b/storage/innodb_plugin/row/row0row.c index cb7dfa2b7c9..8e806a14a98 100644 --- a/storage/innodb_plugin/row/row0row.c +++ b/storage/innodb_plugin/row/row0row.c @@ -294,7 +294,13 @@ row_build( ut_ad(dtuple_check_typed(row)); - if (j) { + if (!ext) { + /* REDUNDANT and COMPACT formats store a local + 768-byte prefix of each externally stored + column. No cache is needed. */ + ut_ad(dict_table_get_format(index->table) + < DICT_TF_FORMAT_ZIP); + } else if (j) { *ext = row_ext_create(j, ext_cols, row, dict_table_zip_size(index->table), heap); diff --git a/storage/innodb_plugin/row/row0undo.c b/storage/innodb_plugin/row/row0undo.c index 9ef842b5114..fd28a4f6520 100644 --- a/storage/innodb_plugin/row/row0undo.c +++ b/storage/innodb_plugin/row/row0undo.c @@ -199,8 +199,24 @@ row_undo_search_clust_to_pcur( ret = FALSE; } else { + row_ext_t** ext; + + if (dict_table_get_format(node->table) >= DICT_TF_FORMAT_ZIP) { + /* In DYNAMIC or COMPRESSED format, there is + no prefix of externally stored columns in the + clustered index record. Build a cache of + column prefixes. */ + ext = &node->ext; + } else { + /* REDUNDANT and COMPACT formats store a local + 768-byte prefix of each externally stored + column. No cache is needed. */ + ext = NULL; + node->ext = NULL; + } + node->row = row_build(ROW_COPY_DATA, clust_index, rec, - offsets, NULL, &node->ext, node->heap); + offsets, NULL, ext, node->heap); if (node->update) { node->undo_row = dtuple_copy(node->row, node->heap); row_upd_replace(node->undo_row, &node->undo_ext, diff --git a/storage/innodb_plugin/row/row0upd.c b/storage/innodb_plugin/row/row0upd.c index d0aaecd3dae..397b117c067 100644 --- a/storage/innodb_plugin/row/row0upd.c +++ b/storage/innodb_plugin/row/row0upd.c @@ -1398,6 +1398,7 @@ row_upd_store_row( dict_index_t* clust_index; rec_t* rec; mem_heap_t* heap = NULL; + row_ext_t** ext; ulint offsets_[REC_OFFS_NORMAL_SIZE]; const ulint* offsets; rec_offs_init(offsets_); @@ -1414,8 +1415,22 @@ row_upd_store_row( offsets = rec_get_offsets(rec, clust_index, offsets_, ULINT_UNDEFINED, &heap); + + if (dict_table_get_format(node->table) >= DICT_TF_FORMAT_ZIP) { + /* In DYNAMIC or COMPRESSED format, there is no prefix + of externally stored columns in the clustered index + record. Build a cache of column prefixes. */ + ext = &node->ext; + } else { + /* REDUNDANT and COMPACT formats store a local + 768-byte prefix of each externally stored column. + No cache is needed. */ + ext = NULL; + node->ext = NULL; + } + node->row = row_build(ROW_COPY_DATA, clust_index, rec, offsets, - NULL, &node->ext, node->heap); + NULL, ext, node->heap); if (node->is_delete) { node->upd_row = NULL; node->upd_ext = NULL; From d8421300944dd04597c65f7dfd081e44f41664cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 29 Jun 2010 16:12:19 +0300 Subject: [PATCH 252/461] ChangeLog entry for Bug #54408 --- storage/innodb_plugin/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 5e41c5f180a..f7e9a3df943 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,8 @@ +2010-06-29 The InnoDB Team + * row/row0row.c, row/row0undo.c, row/row0upd.c: + Fix Bug#54408 txn rollback after recovery: row0umod.c:673 + dict_table_get_format(index->table) + 2010-06-29 The InnoDB Team * btr/btr0cur.c, include/btr0cur.h, From 18388d2105efe47f59e7a201154907ec9d7508df Mon Sep 17 00:00:00 2001 From: Staale Smedseng Date: Wed, 30 Jun 2010 11:16:06 +0200 Subject: [PATCH 253/461] Bug #53899 Wrong mysql_stmt_errno() after connection loss with automatic reconnect A client with automatic reconnect enabled will see the error message "Lost connection to MySQL server during query" if the connection is lost between mysql_stmt_prepare() and mysql_stmt_execute(). The mysql_stmt_errno() number, however, is 0 -- not the corresponding value 2013. This patch checks for the case where the prepared statement has been pruned due to a connection loss (i.e., stmt->mysql has been set to NULL) during a call to cli_advanced_command(), and avoids changing the last_errno to the result of the last reconnect attempt. --- libmysql/libmysql.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 6ea777a0702..0ba85c1ac07 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -2495,7 +2495,12 @@ static my_bool execute(MYSQL_STMT *stmt, char *packet, ulong length) stmt->insert_id= mysql->insert_id; if (res) { - set_stmt_errmsg(stmt, net); + /* + Don't set stmt error if stmt->mysql is NULL, as the error in this case + has already been set by mysql_prune_stmt_list(). + */ + if (stmt->mysql) + set_stmt_errmsg(stmt, net); DBUG_RETURN(1); } DBUG_RETURN(0); @@ -2706,7 +2711,12 @@ stmt_read_row_from_cursor(MYSQL_STMT *stmt, unsigned char **row) buff, sizeof(buff), (uchar*) 0, 0, 1, stmt)) { - set_stmt_errmsg(stmt, net); + /* + Don't set stmt error if stmt->mysql is NULL, as the error in this case + has already been set by mysql_prune_stmt_list(). + */ + if (stmt->mysql) + set_stmt_errmsg(stmt, net); return 1; } if ((*mysql->methods->read_rows_from_cursor)(stmt)) @@ -3387,7 +3397,12 @@ mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number, buff, sizeof(buff), (uchar*) data, length, 1, stmt)) { - set_stmt_errmsg(stmt, &mysql->net); + /* + Don't set stmt error if stmt->mysql is NULL, as the error in this case + has already been set by mysql_prune_stmt_list(). + */ + if (stmt->mysql) + set_stmt_errmsg(stmt, &mysql->net); DBUG_RETURN(1); } } @@ -4823,7 +4838,12 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt) if (cli_advanced_command(mysql, COM_STMT_FETCH, buff, sizeof(buff), (uchar*) 0, 0, 1, stmt)) { - set_stmt_errmsg(stmt, net); + /* + Don't set stmt error if stmt->mysql is NULL, as the error in this case + has already been set by mysql_prune_stmt_list(). + */ + if (stmt->mysql) + set_stmt_errmsg(stmt, net); DBUG_RETURN(1); } } From 707a3bef6e95b1125c91d3a5ecc821bba20caa26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 30 Jun 2010 12:31:49 +0300 Subject: [PATCH 254/461] Correct some comments that were added in the fix of Bug #54358 (READ UNCOMMITTED access failure of off-page DYNAMIC or COMPRESSED columns). Records that lack incompletely written externally stored columns may be accessed by READ UNCOMMITTED transaction even without involving a crash during an INSERT or UPDATE operation. I verified this as follows. (1) added a delay after the mini-transaction for writing the clustered index 'stub' record was committed (patch attached) (2) started mysqld in gdb, setting breakpoints to the where the assertions about READ UNCOMMITTED were added in the bug fix (3) invoked ibtest3 --create-options=key_block_size=2 to create BLOBs in a COMPRESSED table (4) invoked the following: yes 'set transaction isolation level read uncommitted; checksum table blobt3;select sleep(1);'|mysql -uroot test (5) noted that one of the breakpoints was triggered (return(NULL) in btr_rec_copy_externally_stored_field()) === modified file 'storage/innodb_plugin/row/row0ins.c' --- storage/innodb_plugin/row/row0ins.c 2010-06-30 08:17:25 +0000 +++ storage/innodb_plugin/row/row0ins.c 2010-06-30 08:17:25 +0000 @@ -2120,6 +2120,7 @@ function_exit: rec_t* rec; ulint* offsets; mtr_start(&mtr); + os_thread_sleep(5000000); btr_cur_search_to_nth_level(index, 0, entry, PAGE_CUR_LE, BTR_MODIFY_TREE, &cursor, 0, === modified file 'storage/innodb_plugin/row/row0upd.c' --- storage/innodb_plugin/row/row0upd.c 2010-06-30 08:11:55 +0000 +++ storage/innodb_plugin/row/row0upd.c 2010-06-30 08:11:55 +0000 @@ -1763,6 +1763,7 @@ row_upd_clust_rec( rec_offs_init(offsets_); mtr_start(mtr); + os_thread_sleep(5000000); ut_a(btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, mtr)); rec = btr_cur_get_rec(btr_cur); --- storage/innodb_plugin/btr/btr0cur.c | 14 ++------ storage/innodb_plugin/row/row0sel.c | 53 +++++++++-------------------- 2 files changed, 19 insertions(+), 48 deletions(-) diff --git a/storage/innodb_plugin/btr/btr0cur.c b/storage/innodb_plugin/btr/btr0cur.c index 9b28f26f054..7fa7d42320a 100644 --- a/storage/innodb_plugin/btr/btr0cur.c +++ b/storage/innodb_plugin/btr/btr0cur.c @@ -4849,20 +4849,10 @@ btr_rec_copy_externally_stored_field( if (UNIV_UNLIKELY (!memcmp(data + local_len - BTR_EXTERN_FIELD_REF_SIZE, field_ref_zero, BTR_EXTERN_FIELD_REF_SIZE))) { - /* The externally stored field was not written - yet. This is only a valid condition when the server - crashed after the time a record stub was freshly - inserted but before all its columns were written. This - record should only be seen by + /* The externally stored field was not written yet. + This record should only be seen by recv_recovery_rollback_active() or any TRX_ISO_READ_UNCOMMITTED transactions. */ - - /* TODO: assert that there is an owner_trx with - owner_trx->id == DB_TRX_ID and owner_trx->is_recovered */ - - /* TODO: assert that for the current transaction trx, - either (trx == owner_trx && trx_is_recv(trx)) or - trx->isolation_level == TRX_ISO_READ_UNCOMMITTED. */ return(NULL); } diff --git a/storage/innodb_plugin/row/row0sel.c b/storage/innodb_plugin/row/row0sel.c index ab8c78e4f4a..d0c59862fce 100644 --- a/storage/innodb_plugin/row/row0sel.c +++ b/storage/innodb_plugin/row/row0sel.c @@ -427,11 +427,7 @@ row_sel_fetch_columns( /* data == NULL means that the externally stored field was not - written yet. This is only a valid - condition when the server crashed - after the time a record stub was - freshly inserted but before all its - columns were written. This record + written yet. This record should only be seen by recv_recovery_rollback_active() or any TRX_ISO_READ_UNCOMMITTED @@ -2744,12 +2740,7 @@ row_sel_store_mysql_rec( if (UNIV_UNLIKELY(!data)) { /* The externally stored field - was not written yet. This is - only a valid condition when - the server crashed after the - time a record stub was freshly - inserted but before all its - columns were written. This + was not written yet. This record should only be seen by recv_recovery_rollback_active() or any TRX_ISO_READ_UNCOMMITTED @@ -3623,8 +3614,7 @@ row_search_for_mysql( if (!row_sel_store_mysql_rec(buf, prebuilt, rec, offsets)) { - /* Only fresh inserts at - server crash time may contain + /* Only fresh inserts may contain incomplete externally stored columns. Pretend that such records do not exist. Such @@ -3636,10 +3626,6 @@ row_search_for_mysql( at a lower level, not here. */ ut_a(trx->isolation_level == TRX_ISO_READ_UNCOMMITTED); - /* TODO: assert that there is - an owner_trx with - owner_trx->id == DB_TRX_ID and - owner_trx->is_recovered */ err = DB_TOO_BIG_RECORD; @@ -4422,16 +4408,14 @@ requires_clust_rec: if (!row_sel_push_cache_row_for_mysql(prebuilt, result_rec, offsets)) { - /* Only fresh inserts at server crash time may contain - incomplete externally stored columns. Pretend that - such records do not exist. Such records may only be - accessed at the READ UNCOMMITTED isolation level or - when rolling back a recovered transaction. Rollback - happens at a lower level, not here. */ + /* Only fresh inserts may contain incomplete + externally stored columns. Pretend that such + records do not exist. Such records may only be + accessed at the READ UNCOMMITTED isolation + level or when rolling back a recovered + transaction. Rollback happens at a lower + level, not here. */ ut_a(trx->isolation_level == TRX_ISO_READ_UNCOMMITTED); - /* TODO: assert that there is an owner_trx - with owner_trx->id == DB_TRX_ID and - owner_trx->is_recovered */ } else if (prebuilt->n_fetch_cached == MYSQL_FETCH_CACHE_SIZE) { @@ -4449,19 +4433,16 @@ requires_clust_rec: } else { if (!row_sel_store_mysql_rec(buf, prebuilt, result_rec, offsets)) { - /* Only fresh inserts at server crash - time may contain incomplete externally - stored columns. Pretend that such - records do not exist. Such records may - only be accessed at the READ UNCOMMITTED + /* Only fresh inserts may contain + incomplete externally stored + columns. Pretend that such records do + not exist. Such records may only be + accessed at the READ UNCOMMITTED isolation level or when rolling back a - recovered transaction. Rollback happens - at a lower level, not here. */ + recovered transaction. Rollback + happens at a lower level, not here. */ ut_a(trx->isolation_level == TRX_ISO_READ_UNCOMMITTED); - /* TODO: assert that there is an owner_trx - with owner_trx->id == DB_TRX_ID and - owner_trx->is_recovered */ goto next_rec; } } From 38d8ca8cec7c8e38c41bd8f17b1caa8f5142827c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 30 Jun 2010 12:38:47 +0300 Subject: [PATCH 255/461] Bug#54358 follow-up: Correct some error handling. --- storage/innodb_plugin/row/row0sel.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/storage/innodb_plugin/row/row0sel.c b/storage/innodb_plugin/row/row0sel.c index d0c59862fce..76c144e5a8c 100644 --- a/storage/innodb_plugin/row/row0sel.c +++ b/storage/innodb_plugin/row/row0sel.c @@ -3627,11 +3627,8 @@ row_search_for_mysql( ut_a(trx->isolation_level == TRX_ISO_READ_UNCOMMITTED); - err = DB_TOO_BIG_RECORD; - - /* We let the main loop to do the - error handling */ - goto shortcut_fails_too_big_rec; + /* Proceed as in case SEL_RETRY. */ + break; } mtr_commit(&mtr); @@ -3671,7 +3668,7 @@ release_search_latch_if_needed: default: ut_ad(0); } -shortcut_fails_too_big_rec: + mtr_commit(&mtr); mtr_start(&mtr); } From ccdbcaeb57d203cc7b16965f0216e3e96a850e56 Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Wed, 30 Jun 2010 14:10:40 +0200 Subject: [PATCH 256/461] Install MariaDB as a service with the installer --- CMakeLists.txt | 3 + win/cmake/NSIS.template.in | 995 +++++++++++++++++++++++++++++++++++++ 2 files changed, 998 insertions(+) create mode 100644 win/cmake/NSIS.template.in diff --git a/CMakeLists.txt b/CMakeLists.txt index cc13e198294..5cfe5dc8319 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -342,6 +342,9 @@ SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MariaDB") SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING) SET(CPACK_GENERATOR NSIS) +# Use our own NSIS template +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/win/cmake" ${CMAKE_MODULE_PATH}) + # Installer components and grouping SET(CPACK_COMPONENT_GROUP_SERVER_DESCRIPTION "The files necessary for running the MariaDB server.") SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION "Files used in development on the MariaDB server.") diff --git a/win/cmake/NSIS.template.in b/win/cmake/NSIS.template.in new file mode 100644 index 00000000000..0c39ba630dc --- /dev/null +++ b/win/cmake/NSIS.template.in @@ -0,0 +1,995 @@ +; CPack install script designed for a nmake build + +;-------------------------------- +; You must define these values + + !define VERSION "@CPACK_PACKAGE_VERSION@" + !define PATCH "@CPACK_PACKAGE_VERSION_PATCH@" + !define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@" + +;-------------------------------- +;Variables + + Var MUI_TEMP + Var STARTMENU_FOLDER + Var SV_ALLUSERS + Var START_MENU + Var DO_NOT_ADD_TO_PATH + Var ADD_TO_PATH_ALL_USERS + Var ADD_TO_PATH_CURRENT_USER + Var INSTALL_DESKTOP + Var IS_DEFAULT_INSTALLDIR + + Var INSTALL_AS_SERVICE + Var INSTALL_AS_SERVICE_CHECKBOX + +;-------------------------------- +;Include Modern UI + + !include "MUI.nsh" + + ;Default installation folder + InstallDir "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@" + +;Include the nsDialogs package + !include nsDialogs.nsh + !include LogicLib.nsh + +;-------------------------------- +;General + + ;Name and file + Name "@CPACK_NSIS_PACKAGE_NAME@" + OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@" + + ;Set compression + SetCompressor @CPACK_NSIS_COMPRESSOR@ + +@CPACK_NSIS_DEFINES@ + + !include Sections.nsh + +;--- Component support macros: --- +; The code for the add/remove functionality is from: +; http://nsis.sourceforge.net/Add/Remove_Functionality +; It has been modified slightly and extended to provide +; inter-component dependencies. +Var AR_SecFlags +Var AR_RegFlags +@CPACK_NSIS_SECTION_SELECTED_VARS@ + +; Loads the "selected" flag for the section named SecName into the +; variable VarName. +!macro LoadSectionSelectedIntoVar SecName VarName + SectionGetFlags ${${SecName}} $${VarName} + IntOp $${VarName} $${VarName} & ${SF_SELECTED} ;Turn off all other bits +!macroend + +; Loads the value of a variable... can we get around this? +!macro LoadVar VarName + IntOp $R0 0 + $${VarName} +!macroend + +; Sets the value of a variable +!macro StoreVar VarName IntValue + IntOp $${VarName} 0 + ${IntValue} +!macroend + +!macro InitSection SecName + ; This macro reads component installed flag from the registry and + ;changes checked state of the section on the components page. + ;Input: section index constant name specified in Section command. + + ClearErrors + ;Reading component status from registry + ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" "Installed" + IfErrors "default_${SecName}" + ;Status will stay default if registry value not found + ;(component was never installed) + IntOp $AR_RegFlags $AR_RegFlags & ${SF_SELECTED} ;Turn off all other bits + SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading default section flags + IntOp $AR_SecFlags $AR_SecFlags & 0xFFFE ;Turn lowest (enabled) bit off + IntOp $AR_SecFlags $AR_RegFlags | $AR_SecFlags ;Change lowest bit + + ; Note whether this component was installed before + !insertmacro StoreVar ${SecName}_was_installed $AR_RegFlags + IntOp $R0 $AR_RegFlags & $AR_RegFlags + + ;Writing modified flags + SectionSetFlags ${${SecName}} $AR_SecFlags + + "default_${SecName}:" + !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected +!macroend + +!macro FinishSection SecName + ; This macro reads section flag set by user and removes the section + ;if it is not selected. + ;Then it writes component installed flag to registry + ;Input: section index constant name specified in Section command. + + SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading section flags + ;Checking lowest bit: + IntOp $AR_SecFlags $AR_SecFlags & ${SF_SELECTED} + IntCmp $AR_SecFlags 1 "leave_${SecName}" + ;Section is not selected: + ;Calling Section uninstall macro and writing zero installed flag + !insertmacro "Remove_${${SecName}}" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \ + "Installed" 0 + Goto "exit_${SecName}" + + "leave_${SecName}:" + ;Section is selected: + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \ + "Installed" 1 + + "exit_${SecName}:" +!macroend + +!macro RemoveSection SecName + ; This macro is used to call section's Remove_... macro + ;from the uninstaller. + ;Input: section index constant name specified in Section command. + + !insertmacro "Remove_${${SecName}}" +!macroend + +; Determine whether the selection of SecName changed +!macro MaybeSelectionChanged SecName + !insertmacro LoadVar ${SecName}_selected + SectionGetFlags ${${SecName}} $R1 + IntOp $R1 $R1 & ${SF_SELECTED} ;Turn off all other bits + + ; See if the status has changed: + IntCmp $R0 $R1 "${SecName}_unchanged" + !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected + + IntCmp $R1 ${SF_SELECTED} "${SecName}_was_selected" + !insertmacro "Deselect_required_by_${SecName}" + goto "${SecName}_unchanged" + + "${SecName}_was_selected:" + !insertmacro "Select_${SecName}_depends" + + "${SecName}_unchanged:" +!macroend +;--- End of Add/Remove macros --- + +;-------------------------------- +;Interface Settings + + !define MUI_HEADERIMAGE + !define MUI_ABORTWARNING + +;-------------------------------- +; path functions + +!verbose 3 +!include "WinMessages.NSH" +!verbose 4 + +;---------------------------------------- +; based upon a script of "Written by KiCHiK 2003-01-18 05:57:02" +;---------------------------------------- +!verbose 3 +!include "WinMessages.NSH" +!verbose 4 +;==================================================== +; get_NT_environment +; Returns: the selected environment +; Output : head of the stack +;==================================================== +!macro select_NT_profile UN +Function ${UN}select_NT_profile + StrCmp $ADD_TO_PATH_ALL_USERS "1" 0 environment_single + DetailPrint "Selected environment for all users" + Push "all" + Return + environment_single: + DetailPrint "Selected environment for current user only." + Push "current" + Return +FunctionEnd +!macroend +!insertmacro select_NT_profile "" +!insertmacro select_NT_profile "un." +;---------------------------------------------------- +!define NT_current_env 'HKCU "Environment"' +!define NT_all_env 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' + +!ifndef WriteEnvStr_RegKey + !ifdef ALL_USERS + !define WriteEnvStr_RegKey \ + 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' + !else + !define WriteEnvStr_RegKey 'HKCU "Environment"' + !endif +!endif + +; AddToPath - Adds the given dir to the search path. +; Input - head of the stack +; Note - Win9x systems requires reboot + +Function AddToPath + Exch $0 + Push $1 + Push $2 + Push $3 + + # don't add if the path doesn't exist + IfFileExists "$0\*.*" "" AddToPath_done + + ReadEnvStr $1 PATH + ; if the path is too long for a NSIS variable NSIS will return a 0 + ; length string. If we find that, then warn and skip any path + ; modification as it will trash the existing path. + StrLen $2 $1 + IntCmp $2 0 CheckPathLength_ShowPathWarning CheckPathLength_Done CheckPathLength_Done + CheckPathLength_ShowPathWarning: + Messagebox MB_OK|MB_ICONEXCLAMATION "Warning! PATH too long installer unable to modify PATH!" + Goto AddToPath_done + CheckPathLength_Done: + Push "$1;" + Push "$0;" + Call StrStr + Pop $2 + StrCmp $2 "" "" AddToPath_done + Push "$1;" + Push "$0\;" + Call StrStr + Pop $2 + StrCmp $2 "" "" AddToPath_done + GetFullPathName /SHORT $3 $0 + Push "$1;" + Push "$3;" + Call StrStr + Pop $2 + StrCmp $2 "" "" AddToPath_done + Push "$1;" + Push "$3\;" + Call StrStr + Pop $2 + StrCmp $2 "" "" AddToPath_done + + Call IsNT + Pop $1 + StrCmp $1 1 AddToPath_NT + ; Not on NT + StrCpy $1 $WINDIR 2 + FileOpen $1 "$1\autoexec.bat" a + FileSeek $1 -1 END + FileReadByte $1 $2 + IntCmp $2 26 0 +2 +2 # DOS EOF + FileSeek $1 -1 END # write over EOF + FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n" + FileClose $1 + SetRebootFlag true + Goto AddToPath_done + + AddToPath_NT: + StrCmp $ADD_TO_PATH_ALL_USERS "1" ReadAllKey + ReadRegStr $1 ${NT_current_env} "PATH" + Goto DoTrim + ReadAllKey: + ReadRegStr $1 ${NT_all_env} "PATH" + DoTrim: + StrCmp $1 "" AddToPath_NTdoIt + Push $1 + Call Trim + Pop $1 + StrCpy $0 "$1;$0" + AddToPath_NTdoIt: + StrCmp $ADD_TO_PATH_ALL_USERS "1" WriteAllKey + WriteRegExpandStr ${NT_current_env} "PATH" $0 + Goto DoSend + WriteAllKey: + WriteRegExpandStr ${NT_all_env} "PATH" $0 + DoSend: + SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 + + AddToPath_done: + Pop $3 + Pop $2 + Pop $1 + Pop $0 +FunctionEnd + + +; RemoveFromPath - Remove a given dir from the path +; Input: head of the stack + +Function un.RemoveFromPath + Exch $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + + IntFmt $6 "%c" 26 # DOS EOF + + Call un.IsNT + Pop $1 + StrCmp $1 1 unRemoveFromPath_NT + ; Not on NT + StrCpy $1 $WINDIR 2 + FileOpen $1 "$1\autoexec.bat" r + GetTempFileName $4 + FileOpen $2 $4 w + GetFullPathName /SHORT $0 $0 + StrCpy $0 "SET PATH=%PATH%;$0" + Goto unRemoveFromPath_dosLoop + + unRemoveFromPath_dosLoop: + FileRead $1 $3 + StrCpy $5 $3 1 -1 # read last char + StrCmp $5 $6 0 +2 # if DOS EOF + StrCpy $3 $3 -1 # remove DOS EOF so we can compare + StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine + StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine + StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine + StrCmp $3 "" unRemoveFromPath_dosLoopEnd + FileWrite $2 $3 + Goto unRemoveFromPath_dosLoop + unRemoveFromPath_dosLoopRemoveLine: + SetRebootFlag true + Goto unRemoveFromPath_dosLoop + + unRemoveFromPath_dosLoopEnd: + FileClose $2 + FileClose $1 + StrCpy $1 $WINDIR 2 + Delete "$1\autoexec.bat" + CopyFiles /SILENT $4 "$1\autoexec.bat" + Delete $4 + Goto unRemoveFromPath_done + + unRemoveFromPath_NT: + StrCmp $ADD_TO_PATH_ALL_USERS "1" unReadAllKey + ReadRegStr $1 ${NT_current_env} "PATH" + Goto unDoTrim + unReadAllKey: + ReadRegStr $1 ${NT_all_env} "PATH" + unDoTrim: + StrCpy $5 $1 1 -1 # copy last char + StrCmp $5 ";" +2 # if last char != ; + StrCpy $1 "$1;" # append ; + Push $1 + Push "$0;" + Call un.StrStr ; Find `$0;` in $1 + Pop $2 ; pos of our dir + StrCmp $2 "" unRemoveFromPath_done + ; else, it is in path + # $0 - path to add + # $1 - path var + StrLen $3 "$0;" + StrLen $4 $2 + StrCpy $5 $1 -$4 # $5 is now the part before the path to remove + StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove + StrCpy $3 $5$6 + + StrCpy $5 $3 1 -1 # copy last char + StrCmp $5 ";" 0 +2 # if last char == ; + StrCpy $3 $3 -1 # remove last char + + StrCmp $ADD_TO_PATH_ALL_USERS "1" unWriteAllKey + WriteRegExpandStr ${NT_current_env} "PATH" $3 + Goto unDoSend + unWriteAllKey: + WriteRegExpandStr ${NT_all_env} "PATH" $3 + unDoSend: + SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 + + unRemoveFromPath_done: + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 +FunctionEnd + +Function InstallServicePage + !insertmacro MUI_HEADER_TEXT "Service Setup" "Run MariaDB automatically." + + nsDialogs::Create /NOUNLOAD 1018 + Pop $0 + + ${If} $0 == error + Abort + ${EndIf} + + ${NSD_CreateLabel} 0u 0u 100% 9u "Should MariaDB be installed as a service?" + Pop $0 + + ${NSD_CreateCheckBox} 0u 14u 100% 16u "&Yes, please install the service." + Pop $INSTALL_AS_SERVICE_CHECKBOX + GetFunctionAddress $0 ServiceCheckBoxClicked + nsDialogs::OnClick /NOUNLOAD $INSTALL_AS_SERVICE_CHECKBOX $0 + + ${NSD_CreateLabel} 0u 30u 100% 35u "If this option is checked, this installer will add MariaDB to the list of services and start it." + Pop $0 + + nsDialogs::Show +FunctionEnd + +Function ServiceCheckBoxClicked + ${NSD_GetState} $INSTALL_AS_SERVICE_CHECKBOX $INSTALL_AS_SERVICE +FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Uninstall sutff +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +########################################### +# Utility Functions # +########################################### + +;==================================================== +; IsNT - Returns 1 if the current system is NT, 0 +; otherwise. +; Output: head of the stack +;==================================================== +; IsNT +; no input +; output, top of the stack = 1 if NT or 0 if not +; +; Usage: +; Call IsNT +; Pop $R0 +; ($R0 at this point is 1 or 0) + +!macro IsNT un +Function ${un}IsNT + Push $0 + ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion + StrCmp $0 "" 0 IsNT_yes + ; we are not NT. + Pop $0 + Push 0 + Return + + IsNT_yes: + ; NT!!! + Pop $0 + Push 1 +FunctionEnd +!macroend +!insertmacro IsNT "" +!insertmacro IsNT "un." + +; StrStr +; input, top of stack = string to search for +; top of stack-1 = string to search in +; output, top of stack (replaces with the portion of the string remaining) +; modifies no other variables. +; +; Usage: +; Push "this is a long ass string" +; Push "ass" +; Call StrStr +; Pop $R0 +; ($R0 at this point is "ass string") + +!macro StrStr un +Function ${un}StrStr +Exch $R1 ; st=haystack,old$R1, $R1=needle + Exch ; st=old$R1,haystack + Exch $R2 ; st=old$R1,old$R2, $R2=haystack + Push $R3 + Push $R4 + Push $R5 + StrLen $R3 $R1 + StrCpy $R4 0 + ; $R1=needle + ; $R2=haystack + ; $R3=len(needle) + ; $R4=cnt + ; $R5=tmp + loop: + StrCpy $R5 $R2 $R3 $R4 + StrCmp $R5 $R1 done + StrCmp $R5 "" done + IntOp $R4 $R4 + 1 + Goto loop +done: + StrCpy $R1 $R2 "" $R4 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Exch $R1 +FunctionEnd +!macroend +!insertmacro StrStr "" +!insertmacro StrStr "un." + +Function Trim ; Added by Pelaca + Exch $R1 + Push $R2 +Loop: + StrCpy $R2 "$R1" 1 -1 + StrCmp "$R2" " " RTrim + StrCmp "$R2" "$\n" RTrim + StrCmp "$R2" "$\r" RTrim + StrCmp "$R2" ";" RTrim + GoTo Done +RTrim: + StrCpy $R1 "$R1" -1 + Goto Loop +Done: + Pop $R2 + Exch $R1 +FunctionEnd + +Function ConditionalAddToRegisty + Pop $0 + Pop $1 + StrCmp "$0" "" ConditionalAddToRegisty_EmptyString + WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" \ + "$1" "$0" + ;MessageBox MB_OK "Set Registry: '$1' to '$0'" + DetailPrint "Set install registry entry: '$1' to '$0'" + ConditionalAddToRegisty_EmptyString: +FunctionEnd + +;-------------------------------- + +!ifdef CPACK_USES_DOWNLOAD +Function DownloadFile + IfFileExists $INSTDIR\* +2 + CreateDirectory $INSTDIR + Pop $0 + + ; Skip if already downloaded + IfFileExists $INSTDIR\$0 0 +2 + Return + + StrCpy $1 "@CPACK_DOWNLOAD_SITE@" + + try_again: + NSISdl::download "$1/$0" "$INSTDIR\$0" + + Pop $1 + StrCmp $1 "success" success + StrCmp $1 "Cancelled" cancel + MessageBox MB_OK "Download failed: $1" + cancel: + Return + success: +FunctionEnd +!endif + +;-------------------------------- +; Installation types +@CPACK_NSIS_INSTALLATION_TYPES@ + +;-------------------------------- +; Component sections +@CPACK_NSIS_COMPONENT_SECTIONS@ + +;-------------------------------- +; Define some macro setting for the gui +@CPACK_NSIS_INSTALLER_MUI_ICON_CODE@ +@CPACK_NSIS_INSTALLER_ICON_CODE@ +@CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC@ + +;-------------------------------- +;Pages + !insertmacro MUI_PAGE_WELCOME + + !insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@" + Page custom InstallOptionsPage + !insertmacro MUI_PAGE_DIRECTORY + + ;Start Menu Folder Page Configuration + !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" + !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" + !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER + + @CPACK_NSIS_PAGE_COMPONENTS@ + + Page custom InstallServicePage + + !insertmacro MUI_PAGE_INSTFILES + !insertmacro MUI_PAGE_FINISH + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" ;first language is the default language + !insertmacro MUI_LANGUAGE "Albanian" + !insertmacro MUI_LANGUAGE "Arabic" + !insertmacro MUI_LANGUAGE "Basque" + !insertmacro MUI_LANGUAGE "Belarusian" + !insertmacro MUI_LANGUAGE "Bosnian" + !insertmacro MUI_LANGUAGE "Breton" + !insertmacro MUI_LANGUAGE "Bulgarian" + !insertmacro MUI_LANGUAGE "Croatian" + !insertmacro MUI_LANGUAGE "Czech" + !insertmacro MUI_LANGUAGE "Danish" + !insertmacro MUI_LANGUAGE "Dutch" + !insertmacro MUI_LANGUAGE "Estonian" + !insertmacro MUI_LANGUAGE "Farsi" + !insertmacro MUI_LANGUAGE "Finnish" + !insertmacro MUI_LANGUAGE "French" + !insertmacro MUI_LANGUAGE "German" + !insertmacro MUI_LANGUAGE "Greek" + !insertmacro MUI_LANGUAGE "Hebrew" + !insertmacro MUI_LANGUAGE "Hungarian" + !insertmacro MUI_LANGUAGE "Icelandic" + !insertmacro MUI_LANGUAGE "Indonesian" + !insertmacro MUI_LANGUAGE "Irish" + !insertmacro MUI_LANGUAGE "Italian" + !insertmacro MUI_LANGUAGE "Japanese" + !insertmacro MUI_LANGUAGE "Korean" + !insertmacro MUI_LANGUAGE "Kurdish" + !insertmacro MUI_LANGUAGE "Latvian" + !insertmacro MUI_LANGUAGE "Lithuanian" + !insertmacro MUI_LANGUAGE "Luxembourgish" + !insertmacro MUI_LANGUAGE "Macedonian" + !insertmacro MUI_LANGUAGE "Malay" + !insertmacro MUI_LANGUAGE "Mongolian" + !insertmacro MUI_LANGUAGE "Norwegian" + !insertmacro MUI_LANGUAGE "Polish" + !insertmacro MUI_LANGUAGE "Portuguese" + !insertmacro MUI_LANGUAGE "PortugueseBR" + !insertmacro MUI_LANGUAGE "Romanian" + !insertmacro MUI_LANGUAGE "Russian" + !insertmacro MUI_LANGUAGE "Serbian" + !insertmacro MUI_LANGUAGE "SerbianLatin" + !insertmacro MUI_LANGUAGE "SimpChinese" + !insertmacro MUI_LANGUAGE "Slovak" + !insertmacro MUI_LANGUAGE "Slovenian" + !insertmacro MUI_LANGUAGE "Spanish" + !insertmacro MUI_LANGUAGE "Swedish" + !insertmacro MUI_LANGUAGE "Thai" + !insertmacro MUI_LANGUAGE "TradChinese" + !insertmacro MUI_LANGUAGE "Turkish" + !insertmacro MUI_LANGUAGE "Ukrainian" + !insertmacro MUI_LANGUAGE "Welsh" + + +;-------------------------------- +;Reserve Files + + ;These files should be inserted before other files in the data block + ;Keep these lines before any File command + ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA) + + ReserveFile "NSIS.InstallOptions.ini" + !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS + +;-------------------------------- +;Installer Sections + +Section "-Core installation" + ;Use the entire tree produced by the INSTALL target. Keep the + ;list of directories here in sync with the RMDir commands below. + SetOutPath "$INSTDIR" + @CPACK_NSIS_FULL_INSTALL@ + + ;Store installation folder + WriteRegStr SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "" $INSTDIR + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + Push "DisplayName" + Push "@CPACK_NSIS_DISPLAY_NAME@" + Call ConditionalAddToRegisty + Push "DisplayVersion" + Push "@CPACK_PACKAGE_VERSION@" + Call ConditionalAddToRegisty + Push "Publisher" + Push "@CPACK_PACKAGE_VENDOR@" + Call ConditionalAddToRegisty + Push "UninstallString" + Push "$INSTDIR\Uninstall.exe" + Call ConditionalAddToRegisty + Push "NoRepair" + Push "1" + Call ConditionalAddToRegisty + + !ifdef CPACK_NSIS_ADD_REMOVE + ;Create add/remove functionality + Push "ModifyPath" + Push "$INSTDIR\AddRemove.exe" + Call ConditionalAddToRegisty + !else + Push "NoModify" + Push "1" + Call ConditionalAddToRegisty + !endif + + ; Optional registration + Push "DisplayIcon" + Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@" + Call ConditionalAddToRegisty + Push "HelpLink" + Push "@CPACK_NSIS_HELP_LINK@" + Call ConditionalAddToRegisty + Push "URLInfoAbout" + Push "@CPACK_NSIS_URL_INFO_ABOUT@" + Call ConditionalAddToRegisty + Push "Contact" + Push "@CPACK_NSIS_CONTACT@" + Call ConditionalAddToRegisty + !insertmacro MUI_INSTALLOPTIONS_READ $INSTALL_DESKTOP "NSIS.InstallOptions.ini" "Field 5" "State" + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + + ;Create shortcuts + CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER" +@CPACK_NSIS_CREATE_ICONS@ +@CPACK_NSIS_CREATE_ICONS_EXTRA@ + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + + ;Read a value from an InstallOptions INI file + !insertmacro MUI_INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State" + !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State" + !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State" + + ; Write special uninstall registry entries + Push "StartMenu" + Push "$STARTMENU_FOLDER" + Call ConditionalAddToRegisty + Push "DoNotAddToPath" + Push "$DO_NOT_ADD_TO_PATH" + Call ConditionalAddToRegisty + Push "AddToPathAllUsers" + Push "$ADD_TO_PATH_ALL_USERS" + Call ConditionalAddToRegisty + Push "AddToPathCurrentUser" + Push "$ADD_TO_PATH_CURRENT_USER" + Call ConditionalAddToRegisty + Push "InstallToDesktop" + Push "$INSTALL_DESKTOP" + Call ConditionalAddToRegisty + + !insertmacro MUI_STARTMENU_WRITE_END + +@CPACK_NSIS_EXTRA_INSTALL_COMMANDS@ + + ${If} $INSTALL_AS_SERVICE == ${BST_CHECKED} + ;MessageBox MB_OK "Install the service" + nsExec::Exec '"$INSTDIR\bin\mysqld.exe" --install "@CPACK_PACKAGE_NAME@-@CPACK_PACKAGE_VERSION@"' + nsExec::Exec 'net start "@CPACK_PACKAGE_NAME@-@CPACK_PACKAGE_VERSION@"' + ${EndIf} + +SectionEnd + +Section "-Add to path" + Push $INSTDIR\bin + StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 doNotAddToPath + StrCmp $DO_NOT_ADD_TO_PATH "1" doNotAddToPath 0 + Call AddToPath + doNotAddToPath: +SectionEnd + +;-------------------------------- +; Create custom pages +Function InstallOptionsPage + !insertmacro MUI_HEADER_TEXT "Install Options" "Choose options for installing @CPACK_NSIS_PACKAGE_NAME@" + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini" + +FunctionEnd + +;-------------------------------- +; determine admin versus local install +Function un.onInit + + ClearErrors + UserInfo::GetName + IfErrors noLM + Pop $0 + UserInfo::GetAccountType + Pop $1 + StrCmp $1 "Admin" 0 +3 + SetShellVarContext all + ;MessageBox MB_OK 'User "$0" is in the Admin group' + Goto done + StrCmp $1 "Power" 0 +3 + SetShellVarContext all + ;MessageBox MB_OK 'User "$0" is in the Power Users group' + Goto done + + noLM: + ;Get installation folder from registry if available + + done: + +FunctionEnd + +;--- Add/Remove callback functions: --- +!macro SectionList MacroName + ;This macro used to perform operation on multiple sections. + ;List all of your components in following manner here. +@CPACK_NSIS_COMPONENT_SECTION_LIST@ +!macroend + +Section -FinishComponents + ;Removes unselected components and writes component status to registry + !insertmacro SectionList "FinishSection" + +!ifdef CPACK_NSIS_ADD_REMOVE + ; Get the name of the installer executable + System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1' + StrCpy $R3 $R0 + + ; Strip off the last 13 characters, to see if we have AddRemove.exe + StrLen $R1 $R0 + IntOp $R1 $R0 - 13 + StrCpy $R2 $R0 13 $R1 + StrCmp $R2 "AddRemove.exe" addremove_installed + + ; We're not running AddRemove.exe, so install it + CopyFiles $R3 $INSTDIR\AddRemove.exe + + addremove_installed: +!endif +SectionEnd +;--- End of Add/Remove callback functions --- + +;-------------------------------- +; Component dependencies +Function .onSelChange + !insertmacro SectionList MaybeSelectionChanged +FunctionEnd + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + ReadRegStr $START_MENU SHCTX \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "StartMenu" + ;MessageBox MB_OK "Start menu is in: $START_MENU" + ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "DoNotAddToPath" + ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathAllUsers" + ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathCurrentUser" + ;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS" + ReadRegStr $INSTALL_DESKTOP SHCTX \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "InstallToDesktop" + ;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP " + +@CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@ + + nsExec::Exec 'net stop "@CPACK_PACKAGE_NAME@-@CPACK_PACKAGE_VERSION@"' + nsExec::Exec '"$INSTDIR\bin\mysqld.exe" --remove "@CPACK_PACKAGE_NAME@-@CPACK_PACKAGE_VERSION@"' + + ;Remove files we installed. + ;Keep the list of directories here in sync with the File commands above. +@CPACK_NSIS_DELETE_FILES@ +@CPACK_NSIS_DELETE_DIRECTORIES@ + +!ifdef CPACK_NSIS_ADD_REMOVE + ;Remove the add/remove program + Delete "$INSTDIR\AddRemove.exe" +!endif + + ;Remove the uninstaller itself. + Delete "$INSTDIR\Uninstall.exe" + DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" + + ;Remove the installation directory if it is empty. + RMDir "$INSTDIR" + + ; Remove the registry entries. + DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" + + ; Removes all optional components + !insertmacro SectionList "RemoveSection" + + !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP + + Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" +@CPACK_NSIS_DELETE_ICONS@ +@CPACK_NSIS_DELETE_ICONS_EXTRA@ + + ;Delete empty start menu parent diretories + StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP" + + startMenuDeleteLoop: + ClearErrors + RMDir $MUI_TEMP + GetFullPathName $MUI_TEMP "$MUI_TEMP\.." + + IfErrors startMenuDeleteLoopDone + + StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop + startMenuDeleteLoopDone: + + ; If the user changed the shortcut, then untinstall may not work. This should + ; try to fix it. + StrCpy $MUI_TEMP "$START_MENU" + Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" +@CPACK_NSIS_DELETE_ICONS_EXTRA@ + + ;Delete empty start menu parent diretories + StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP" + + secondStartMenuDeleteLoop: + ClearErrors + RMDir $MUI_TEMP + GetFullPathName $MUI_TEMP "$MUI_TEMP\.." + + IfErrors secondStartMenuDeleteLoopDone + + StrCmp "$MUI_TEMP" "$SMPROGRAMS" secondStartMenuDeleteLoopDone secondStartMenuDeleteLoop + secondStartMenuDeleteLoopDone: + + DeleteRegKey /ifempty SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" + + Push $INSTDIR\bin + StrCmp $DO_NOT_ADD_TO_PATH_ "1" doNotRemoveFromPath 0 + Call un.RemoveFromPath + doNotRemoveFromPath: +SectionEnd + +;-------------------------------- +; determine admin versus local install +; Is install for "AllUsers" or "JustMe"? +; Default to "JustMe" - set to "AllUsers" if admin or on Win9x +; This function is used for the very first "custom page" of the installer. +; This custom page does not show up visibly, but it executes prior to the +; first visible page and sets up $INSTDIR properly... +; Choose different default installation folder based on SV_ALLUSERS... +; "Program Files" for AllUsers, "My Documents" for JustMe... + +Function .onInit + ; Reads components status for registry + !insertmacro SectionList "InitSection" + + ; check to see if /D has been used to change + ; the install directory by comparing it to the + ; install directory that is expected to be the + ; default + StrCpy $IS_DEFAULT_INSTALLDIR 0 + StrCmp "$INSTDIR" "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@" 0 +2 + StrCpy $IS_DEFAULT_INSTALLDIR 1 + + StrCpy $SV_ALLUSERS "JustMe" + ; if default install dir then change the default + ; if it is installed for JustMe + StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2 + StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_INSTALL_DIRECTORY@" + + ClearErrors + UserInfo::GetName + IfErrors noLM + Pop $0 + UserInfo::GetAccountType + Pop $1 + StrCmp $1 "Admin" 0 +3 + SetShellVarContext all + ;MessageBox MB_OK 'User "$0" is in the Admin group' + StrCpy $SV_ALLUSERS "AllUsers" + Goto done + StrCmp $1 "Power" 0 +3 + SetShellVarContext all + ;MessageBox MB_OK 'User "$0" is in the Power Users group' + StrCpy $SV_ALLUSERS "AllUsers" + Goto done + + noLM: + StrCpy $SV_ALLUSERS "AllUsers" + ;Get installation folder from registry if available + + done: + StrCmp $SV_ALLUSERS "AllUsers" 0 +3 + StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2 + StrCpy $INSTDIR "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@" + + StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 noOptionsPage + !insertmacro MUI_INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini" + + noOptionsPage: +FunctionEnd From 1c5388765fc121ca8e5458df80c955bc209841db Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Wed, 30 Jun 2010 17:06:25 +0400 Subject: [PATCH 257/461] Bug#51431 Wrong sort order after import of dump file The problem is that QUICK_SELECT_DESC behaviour depends on used_key_parts value which can be bigger than selected best_key_parts value if an engine supports clustered key. But used_key_parts is overwritten with best_key_parts value that prevents from correct selection of index access method. The fix is to preserve used_key_parts value for further use in QUICK_SELECT_DESC. mysql-test/r/innodb_mysql.result: test case mysql-test/t/innodb_mysql.test: test case sql/sql_select.cc: preserve used_key_parts value for further use in QUICK_SELECT_DESC --- mysql-test/r/innodb_mysql.result | 32 ++++++++++++++++++++++++++++++++ mysql-test/t/innodb_mysql.test | 30 ++++++++++++++++++++++++++++++ sql/sql_select.cc | 11 ++++++++++- 3 files changed, 72 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 2af3db75adc..e2f28b96f7e 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -2455,4 +2455,36 @@ AND f5 = 'abcdefghijklmnopwrst' AND f2 = 1221457 AND f4 = 0 ; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index_merge PRIMARY,idx1,idx2 idx2,idx1,PRIMARY 7,60,4 NULL 1 Using intersect(idx2,idx1,PRIMARY); Using where DROP TABLE t1; +# +# Bug#51431 Wrong sort order after import of dump file +# +CREATE TABLE t1 ( +f1 INT(11) NOT NULL, +f2 int(11) NOT NULL, +f3 int(11) NOT NULL, +f4 tinyint(1) NOT NULL, +PRIMARY KEY (f1), +UNIQUE KEY (f2, f3), +KEY (f4) +) ENGINE=InnoDB; +INSERT INTO t1 VALUES +(1,1,991,1), (2,1,992,1), (3,1,993,1), (4,1,994,1), (5,1,995,1), +(6,1,996,1), (7,1,997,1), (8,1,998,1), (10,1,999,1), (11,1,9910,1), +(16,1,9911,1), (17,1,9912,1), (18,1,9913,1), (19,1,9914,1), (20,1,9915,1), +(21,1,9916,1), (22,1,9917,1), (23,1,9918,1), (24,1,9919,1), (25,1,9920,1), +(26,1,9921,1), (27,1,9922,1); +FLUSH TABLES; +SELECT * FROM t1 WHERE f2 = 1 AND f4 = TRUE +ORDER BY f1 DESC LIMIT 5; +f1 f2 f3 f4 +27 1 9922 1 +26 1 9921 1 +25 1 9920 1 +24 1 9919 1 +23 1 9918 1 +EXPLAIN SELECT * FROM t1 WHERE f2 = 1 AND f4 = TRUE +ORDER BY f1 DESC LIMIT 5; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range f2,f4 f4 1 NULL 11 Using where +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index 47135578697..72795392e50 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -694,4 +694,34 @@ AND f5 = 'abcdefghijklmnopwrst' AND f2 = 1221457 AND f4 = 0 ; DROP TABLE t1; +--echo # +--echo # Bug#51431 Wrong sort order after import of dump file +--echo # + +CREATE TABLE t1 ( + f1 INT(11) NOT NULL, + f2 int(11) NOT NULL, + f3 int(11) NOT NULL, + f4 tinyint(1) NOT NULL, + PRIMARY KEY (f1), + UNIQUE KEY (f2, f3), + KEY (f4) +) ENGINE=InnoDB; + +INSERT INTO t1 VALUES +(1,1,991,1), (2,1,992,1), (3,1,993,1), (4,1,994,1), (5,1,995,1), +(6,1,996,1), (7,1,997,1), (8,1,998,1), (10,1,999,1), (11,1,9910,1), +(16,1,9911,1), (17,1,9912,1), (18,1,9913,1), (19,1,9914,1), (20,1,9915,1), +(21,1,9916,1), (22,1,9917,1), (23,1,9918,1), (24,1,9919,1), (25,1,9920,1), +(26,1,9921,1), (27,1,9922,1); + +FLUSH TABLES; + +SELECT * FROM t1 WHERE f2 = 1 AND f4 = TRUE +ORDER BY f1 DESC LIMIT 5; +EXPLAIN SELECT * FROM t1 WHERE f2 = 1 AND f4 = TRUE +ORDER BY f1 DESC LIMIT 5; + +DROP TABLE t1; + --echo End of 5.1 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index b61f7d1eb37..b20726fc151 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -13419,6 +13419,7 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit, uint nr; key_map keys; uint best_key_parts= 0; + uint saved_best_key_parts= 0; int best_key_direction= 0; ha_rows best_records= 0; double read_time; @@ -13579,6 +13580,7 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit, { best_key= nr; best_key_parts= keyinfo->key_parts; + saved_best_key_parts= used_key_parts; best_records= quick_records; is_best_covering= is_covering; best_key_direction= direction; @@ -13665,8 +13667,15 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit, */ } } - used_key_parts= best_key_parts; order_direction= best_key_direction; + /* + saved_best_key_parts is actual number of used keyparts found by the + test_if_order_by_key function. It could differ from keyinfo->key_parts, + thus we have to restore it in case of desc order as it affects + QUICK_SELECT_DESC behaviour. + */ + used_key_parts= (order_direction == -1) ? + saved_best_key_parts : best_key_parts; } else DBUG_RETURN(0); From 7f19cc824f0ad0367f731783bb45e0d7bff98be4 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Wed, 30 Jun 2010 22:06:01 -0700 Subject: [PATCH 258/461] Port fix for bug #54311 from mysql-trunk-innodb to mysql-5.1-innodb codeline. Bug #54311: Crash on CHECK PARTITION after concurrent LOAD DATA and adaptive_hash_index=OFF --- storage/innodb_plugin/ChangeLog | 6 ++++++ storage/innodb_plugin/btr/btr0sea.c | 11 ++++++++++- storage/innodb_plugin/ha/ha0ha.c | 15 +++++++++++---- storage/innodb_plugin/handler/ha_innodb.cc | 1 + storage/innodb_plugin/include/btr0sea.h | 8 +++++++- 5 files changed, 35 insertions(+), 6 deletions(-) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index f7e9a3df943..a49a6b54a39 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-06-30 The InnoDB Team + + * btr/btr0sea.c, ha/ha0ha.c, handler/ha_innodb.cc, include/btr0sea.h: + Fix Bug#54311 Crash on CHECK PARTITION after concurrent LOAD DATA + and adaptive_hash_index=OFF + 2010-06-29 The InnoDB Team * row/row0row.c, row/row0undo.c, row/row0upd.c: Fix Bug#54408 txn rollback after recovery: row0umod.c:673 diff --git a/storage/innodb_plugin/btr/btr0sea.c b/storage/innodb_plugin/btr/btr0sea.c index c91afa31bf0..ac7248fef20 100644 --- a/storage/innodb_plugin/btr/btr0sea.c +++ b/storage/innodb_plugin/btr/btr0sea.c @@ -46,6 +46,7 @@ Created 2/17/1996 Heikki Tuuri /** Flag: has the search system been enabled? Protected by btr_search_latch and btr_search_enabled_mutex. */ UNIV_INTERN char btr_search_enabled = TRUE; +UNIV_INTERN ibool btr_search_fully_disabled = FALSE; /** Mutex protecting btr_search_enabled */ static mutex_t btr_search_enabled_mutex; @@ -201,12 +202,19 @@ btr_search_disable(void) mutex_enter(&btr_search_enabled_mutex); rw_lock_x_lock(&btr_search_latch); + /* Disable access to hash index, also tell ha_insert_for_fold() + stop adding new nodes to hash index, but still allow updating + existing nodes */ btr_search_enabled = FALSE; /* Clear all block->is_hashed flags and remove all entries from btr_search_sys->hash_index. */ buf_pool_drop_hash_index(); + /* hash index has been cleaned up, disallow any operation to + the hash index */ + btr_search_fully_disabled = TRUE; + /* btr_search_enabled_mutex should guarantee this. */ ut_ad(!btr_search_enabled); @@ -225,6 +233,7 @@ btr_search_enable(void) rw_lock_x_lock(&btr_search_latch); btr_search_enabled = TRUE; + btr_search_fully_disabled = FALSE; rw_lock_x_unlock(&btr_search_latch); mutex_exit(&btr_search_enabled_mutex); @@ -1363,7 +1372,7 @@ btr_search_build_page_hash_index( rw_lock_x_lock(&btr_search_latch); - if (UNIV_UNLIKELY(!btr_search_enabled)) { + if (UNIV_UNLIKELY(btr_search_fully_disabled)) { goto exit_func; } diff --git a/storage/innodb_plugin/ha/ha0ha.c b/storage/innodb_plugin/ha/ha0ha.c index 9d9d341ad39..f9e798012f8 100644 --- a/storage/innodb_plugin/ha/ha0ha.c +++ b/storage/innodb_plugin/ha/ha0ha.c @@ -31,9 +31,7 @@ Created 8/22/1994 Heikki Tuuri #ifdef UNIV_DEBUG # include "buf0buf.h" #endif /* UNIV_DEBUG */ -#ifdef UNIV_SYNC_DEBUG -# include "btr0sea.h" -#endif /* UNIV_SYNC_DEBUG */ +#include "btr0sea.h" #include "page0page.h" /*************************************************************//** @@ -127,7 +125,8 @@ ha_clear( /*************************************************************//** Inserts an entry into a hash table. If an entry with the same fold number is found, its node is updated to point to the new data, and no new node -is inserted. +is inserted. If btr_search_enabled is set to FALSE, we will only allow +updating existing nodes, but no new node is allowed to be added. @return TRUE if succeed, FALSE if no more memory could be allocated */ UNIV_INTERN ibool @@ -174,6 +173,7 @@ ha_insert_for_fold_func( prev_block->n_pointers--; block->n_pointers++; } + ut_ad(!btr_search_fully_disabled); # endif /* !UNIV_HOTBACKUP */ prev_node->block = block; @@ -186,6 +186,13 @@ ha_insert_for_fold_func( prev_node = prev_node->next; } + /* We are in the process of disabling hash index, do not add + new chain node */ + if (!btr_search_enabled) { + ut_ad(!btr_search_fully_disabled); + return(TRUE); + } + /* We have to allocate a new chain node */ node = mem_heap_alloc(hash_get_heap(table, fold), sizeof(ha_node_t)); diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index aa80814dbe0..c6042815e6c 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -2270,6 +2270,7 @@ innobase_change_buffering_inited_ok: /* Get the current high water mark format. */ innobase_file_format_check = (char*) trx_sys_file_format_max_get(); + btr_search_fully_disabled = (!btr_search_enabled); DBUG_RETURN(FALSE); error: DBUG_RETURN(TRUE); diff --git a/storage/innodb_plugin/include/btr0sea.h b/storage/innodb_plugin/include/btr0sea.h index f98ba386f9c..20a2be7f877 100644 --- a/storage/innodb_plugin/include/btr0sea.h +++ b/storage/innodb_plugin/include/btr0sea.h @@ -190,7 +190,13 @@ btr_search_validate(void); /** Flag: has the search system been enabled? Protected by btr_search_latch and btr_search_enabled_mutex. */ -extern char btr_search_enabled; +extern char btr_search_enabled; + +/** Flag: whether the search system has completed its disabling process, +It is set to TRUE right after buf_pool_drop_hash_index() in +btr_search_disable(), indicating hash index entries are cleaned up. +Protected by btr_search_latch and btr_search_enabled_mutex. */ +extern ibool btr_search_fully_disabled; /** The search info struct in an index */ struct btr_search_struct{ From f3ccf5061fdf7110be6e6f1dd98fe696842081d1 Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Thu, 1 Jul 2010 12:02:00 +0400 Subject: [PATCH 259/461] Bug#54667: Unnecessary signal handler redefinition POSIX requires that a signal handler defined with sigaction() is not reset on delivering a signal unless SA_NODEFER or SA_RESETHAND is set. It is therefore unnecessary to redefine the handler on signal delivery on platforms where sigaction() is used without those flags. include/my_alarm.h: Renamed DONT_REMEMBER_SIGNAL -> SIGNAL_HANDLER_RESET_ON_DELIVERY. include/my_global.h: Renamed DONT_REMEMBER_SIGNAL -> SIGNAL_HANDLER_RESET_ON_DELIVERY. The latter is now defined only on non-BSD platforms missing the POSIX sigaction() function. libmysql/libmysql.c: Renamed DONT_REMEMBER_SIGNAL -> SIGNAL_HANDLER_RESET_ON_DELIVERY mysys/thr_alarm.c: Renamed DONT_REMEMBER_SIGNAL -> SIGNAL_HANDLER_RESET_ON_DELIVERY sql/mysqld.cc: Renamed DONT_REMEMBER_SIGNAL -> SIGNAL_HANDLER_RESET_ON_DELIVERY --- include/my_alarm.h | 4 ++-- include/my_global.h | 4 ++-- libmysql/libmysql.c | 2 +- mysys/thr_alarm.c | 10 +++++----- sql/mysqld.cc | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/my_alarm.h b/include/my_alarm.h index 750135d64ed..c41c1d65e27 100644 --- a/include/my_alarm.h +++ b/include/my_alarm.h @@ -36,14 +36,14 @@ extern ulong my_time_to_wait_for_lock; #define ALARM_END VOID(signal(SIGALRM,alarm_signal)); \ VOID(alarm(alarm_old)); #define ALARM_TEST my_have_got_alarm -#ifdef DONT_REMEMBER_SIGNAL +#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY #define ALARM_REINIT VOID(alarm(MY_HOW_OFTEN_TO_ALARM)); \ VOID(signal(SIGALRM,my_set_alarm_variable));\ my_have_got_alarm=0; #else #define ALARM_REINIT VOID(alarm((uint) MY_HOW_OFTEN_TO_ALARM)); \ my_have_got_alarm=0; -#endif /* DONT_REMEMBER_SIGNAL */ +#endif /* SIGNAL_HANDLER_RESET_ON_DELIVERY */ #else #define ALARM_VARIABLES long alarm_pos=0,alarm_end_pos=MY_HOW_OFTEN_TO_WRITE-1 #define ALARM_INIT diff --git a/include/my_global.h b/include/my_global.h index e284acce186..e13c7c37b62 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -541,8 +541,8 @@ extern "C" int madvise(void *addr, size_t len, int behav); #endif /* Does the system remember a signal handler after a signal ? */ -#ifndef HAVE_BSD_SIGNALS -#define DONT_REMEMBER_SIGNAL +#if !defined(HAVE_BSD_SIGNALS) && !defined(HAVE_SIGACTION) +#define SIGNAL_HANDLER_RESET_ON_DELIVERY #endif /* Define void to stop lint from generating "null effekt" comments */ diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 6ea777a0702..cfbeb99508f 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -328,7 +328,7 @@ sig_handler my_pipe_sig_handler(int sig __attribute__((unused))) { DBUG_PRINT("info",("Hit by signal %d",sig)); -#ifdef DONT_REMEMBER_SIGNAL +#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY (void) signal(SIGPIPE, my_pipe_sig_handler); #endif } diff --git a/mysys/thr_alarm.c b/mysys/thr_alarm.c index b710a7eee39..386691be4de 100644 --- a/mysys/thr_alarm.c +++ b/mysys/thr_alarm.c @@ -306,7 +306,7 @@ sig_handler process_alarm(int sig __attribute__((unused))) #if defined(MAIN) && !defined(__bsdi__) printf("thread_alarm in process_alarm\n"); fflush(stdout); #endif -#ifdef DONT_REMEMBER_SIGNAL +#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY my_sigset(thr_client_alarm, process_alarm); /* int. thread system calls */ #endif return; @@ -325,7 +325,7 @@ sig_handler process_alarm(int sig __attribute__((unused))) #endif process_alarm_part2(sig); #ifndef USE_ALARM_THREAD -#if defined(DONT_REMEMBER_SIGNAL) && !defined(USE_ONE_SIGNAL_HAND) +#if defined(SIGNAL_HANDLER_RESET_ON_DELIVERY) && !defined(USE_ONE_SIGNAL_HAND) my_sigset(THR_SERVER_ALARM,process_alarm); #endif pthread_mutex_unlock(&LOCK_alarm); @@ -523,12 +523,12 @@ void thr_alarm_info(ALARM_INFO *info) */ -static sig_handler thread_alarm(int sig) +static sig_handler thread_alarm(int sig __attribute__((unused))) { #ifdef MAIN printf("thread_alarm\n"); fflush(stdout); #endif -#ifdef DONT_REMEMBER_SIGNAL +#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY my_sigset(sig,thread_alarm); /* int. thread system calls */ #endif } @@ -797,7 +797,7 @@ static sig_handler print_signal_warning(int sig) { printf("Warning: Got signal %d from thread %s\n",sig,my_thread_name()); fflush(stdout); -#ifdef DONT_REMEMBER_SIGNAL +#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY my_sigset(sig,print_signal_warning); /* int. thread system calls */ #endif if (sig == SIGALRM) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index daa1bbe8ccc..cac17889638 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1232,7 +1232,7 @@ extern "C" sig_handler print_signal_warning(int sig) { if (global_system_variables.log_warnings) sql_print_warning("Got signal %d from thread %ld", sig,my_thread_id()); -#ifdef DONT_REMEMBER_SIGNAL +#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY my_sigset(sig,print_signal_warning); /* int. thread system calls */ #endif #if !defined(__WIN__) && !defined(__NETWARE__) From 279b3adfc78ae93f976eb8797f41c64f3bc6b4bb Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Thu, 1 Jul 2010 12:05:09 +0300 Subject: [PATCH 260/461] Bug #53613: mysql_upgrade incorrectly revokes TRIGGER privilege on given table Fixed an incomplete historical ALTER TABLE MODIFY trimming the trigger privilege bit from mysql.tables_priv.Table_priv column. Removed the duplicate ALTER TABLE MODIFY. Test suite added. --- mysql-test/r/mysql_upgrade.result | 42 +++++++++++++++++++++++++++++ mysql-test/t/mysql_upgrade.test | 16 +++++++++++ scripts/mysql_system_tables_fix.sql | 4 +-- 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/mysql_upgrade.result b/mysql-test/r/mysql_upgrade.result index 821ad31871f..4541763c7c5 100644 --- a/mysql-test/r/mysql_upgrade.result +++ b/mysql-test/r/mysql_upgrade.result @@ -169,3 +169,45 @@ DROP PROCEDURE testproc; WARNING: NULL values of the 'character_set_client' column ('mysql.proc' table) have been updated with a default value (latin1). Please verify if necessary. WARNING: NULL values of the 'collation_connection' column ('mysql.proc' table) have been updated with a default value (latin1_swedish_ci). Please verify if necessary. WARNING: NULL values of the 'db_collation' column ('mysql.proc' table) have been updated with default values. Please verify if necessary. +# +# Bug #53613: mysql_upgrade incorrectly revokes +# TRIGGER privilege on given table +# +GRANT USAGE ON *.* TO 'user3'@'%'; +GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%'; +Run mysql_upgrade with all privileges on a user +mtr.global_suppressions OK +mtr.test_suppressions OK +mysql.columns_priv OK +mysql.db OK +mysql.event OK +mysql.func OK +mysql.general_log +Error : You can't use locks with log tables. +status : OK +mysql.help_category OK +mysql.help_keyword OK +mysql.help_relation OK +mysql.help_topic OK +mysql.host OK +mysql.ndb_binlog_index OK +mysql.plugin OK +mysql.proc OK +mysql.procs_priv OK +mysql.servers OK +mysql.slow_log +Error : You can't use locks with log tables. +status : OK +mysql.tables_priv OK +mysql.time_zone OK +mysql.time_zone_leap_second OK +mysql.time_zone_name OK +mysql.time_zone_transition OK +mysql.time_zone_transition_type OK +mysql.user OK +SHOW GRANTS FOR 'user3'@'%'; +Grants for user3@% +GRANT USAGE ON *.* TO 'user3'@'%' +GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%' +DROP USER 'user3'@'%'; +End of 5.1 tests diff --git a/mysql-test/t/mysql_upgrade.test b/mysql-test/t/mysql_upgrade.test index 6c01f3b2027..5f3ff9c7bb8 100644 --- a/mysql-test/t/mysql_upgrade.test +++ b/mysql-test/t/mysql_upgrade.test @@ -108,3 +108,19 @@ CALL testproc(); DROP PROCEDURE testproc; --cat_file $MYSQLTEST_VARDIR/tmp/41569.txt --remove_file $MYSQLTEST_VARDIR/tmp/41569.txt + + +--echo # +--echo # Bug #53613: mysql_upgrade incorrectly revokes +--echo # TRIGGER privilege on given table +--echo # + +GRANT USAGE ON *.* TO 'user3'@'%'; +GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%'; +--echo Run mysql_upgrade with all privileges on a user +--exec $MYSQL_UPGRADE --skip-verbose --force 2>&1 +SHOW GRANTS FOR 'user3'@'%'; + +DROP USER 'user3'@'%'; + +--echo End of 5.1 tests diff --git a/scripts/mysql_system_tables_fix.sql b/scripts/mysql_system_tables_fix.sql index deeb4d4de82..90bdbdae338 100644 --- a/scripts/mysql_system_tables_fix.sql +++ b/scripts/mysql_system_tables_fix.sql @@ -58,7 +58,7 @@ ALTER TABLE tables_priv COLLATE utf8_general_ci DEFAULT '' NOT NULL, MODIFY Table_priv set('Select','Insert','Update','Delete','Create', 'Drop','Grant','References','Index','Alter', - 'Create View','Show view') + 'Create View','Show view','Trigger') COLLATE utf8_general_ci DEFAULT '' NOT NULL, COMMENT='Table privileges'; @@ -584,8 +584,6 @@ ALTER TABLE host MODIFY Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAU ALTER TABLE db ADD Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL; ALTER TABLE db MODIFY Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL; -ALTER TABLE tables_priv MODIFY Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') COLLATE utf8_general_ci DEFAULT '' NOT NULL; - UPDATE user SET Trigger_priv=Super_priv WHERE @hadTriggerPriv = 0; # Activate the new, possible modified privilege tables From 2caed165b119465458a14bca5226efc40ea850e9 Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Thu, 1 Jul 2010 12:12:48 +0200 Subject: [PATCH 261/461] Fix cpack run --- CMakeLists.txt | 5 +++++ libmysqld/CMakeLists.txt | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5cfe5dc8319..a6b52b8fdcc 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -342,6 +342,11 @@ SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MariaDB") SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING) SET(CPACK_GENERATOR NSIS) +# This will set the build type for CPack +IF(NOT CMAKE_BUILD_TYPE) + SET(CMAKE_BUILD_TYPE "RelWithDebInfo") +ENDIF() + # Use our own NSIS template set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/win/cmake" ${CMAKE_MODULE_PATH}) diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index 495a8375af8..1005d6fe032 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -170,4 +170,4 @@ TARGET_LINK_LIBRARIES(libmysqld mysqlserver wsock32) INSTALL(TARGETS mysqlserver DESTINATION Embedded/static COMPONENT embedded) INSTALL(TARGETS libmysqld DESTINATION Embedded/DLL COMPONENT embedded) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/Release/libmysqld.exp DESTINATION Embedded/DLL COMPONENT embedded) +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/libmysqld.exp DESTINATION Embedded/DLL COMPONENT embedded) From 916f7c5680ed7ce8f33baf1bfbfcae78bb275a4c Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Thu, 1 Jul 2010 15:50:54 +0200 Subject: [PATCH 262/461] Hardcode the build path for the installer temporarily --- CMakeLists.txt | 5 ----- libmysqld/CMakeLists.txt | 3 ++- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a6b52b8fdcc..5cfe5dc8319 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -342,11 +342,6 @@ SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MariaDB") SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING) SET(CPACK_GENERATOR NSIS) -# This will set the build type for CPack -IF(NOT CMAKE_BUILD_TYPE) - SET(CMAKE_BUILD_TYPE "RelWithDebInfo") -ENDIF() - # Use our own NSIS template set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/win/cmake" ${CMAKE_MODULE_PATH}) diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index 1005d6fe032..9526c944e50 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -170,4 +170,5 @@ TARGET_LINK_LIBRARIES(libmysqld mysqlserver wsock32) INSTALL(TARGETS mysqlserver DESTINATION Embedded/static COMPONENT embedded) INSTALL(TARGETS libmysqld DESTINATION Embedded/DLL COMPONENT embedded) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/libmysqld.exp DESTINATION Embedded/DLL COMPONENT embedded) + +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/libmysqld.exp DESTINATION Embedded/DLL COMPONENT embedded) From c4636b9df34768561ae24473ec0abee0623d02cf Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Thu, 1 Jul 2010 16:35:50 +0200 Subject: [PATCH 263/461] Remove the file libmysqld.exp from the installer --- libmysqld/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index 9526c944e50..332dd206e15 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -170,5 +170,3 @@ TARGET_LINK_LIBRARIES(libmysqld mysqlserver wsock32) INSTALL(TARGETS mysqlserver DESTINATION Embedded/static COMPONENT embedded) INSTALL(TARGETS libmysqld DESTINATION Embedded/DLL COMPONENT embedded) - -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/libmysqld.exp DESTINATION Embedded/DLL COMPONENT embedded) From 73c3a77b6a2532facc46d6a4318db7401be91154 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 1 Jul 2010 23:50:18 +0200 Subject: [PATCH 264/461] bug lp:578117 - Wrong usage of mutex LOCK_sync and LOCK_active in XA redone locking in TC_LOG_MMAP::log_xid --- mysql-test/suite/pbxt/r/pbxt_xa.result | 1 - mysql-test/suite/pbxt/t/pbxt_xa.test | 5 - sql/log.cc | 131 +++++++++++++++---------- 3 files changed, 77 insertions(+), 60 deletions(-) diff --git a/mysql-test/suite/pbxt/r/pbxt_xa.result b/mysql-test/suite/pbxt/r/pbxt_xa.result index 084a656a6db..8bcab926998 100644 --- a/mysql-test/suite/pbxt/r/pbxt_xa.result +++ b/mysql-test/suite/pbxt/r/pbxt_xa.result @@ -1,5 +1,4 @@ drop table if exists t1, t2; -CALL mtr.add_suppression("Found wrong usage of mutex 'LOCK_sync' and 'LOCK_active'"); CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb; CREATE TABLE t2 (b INT PRIMARY KEY) ENGINE=pbxt; BEGIN; diff --git a/mysql-test/suite/pbxt/t/pbxt_xa.test b/mysql-test/suite/pbxt/t/pbxt_xa.test index dfe4f0b0094..a9d1c5c38e8 100644 --- a/mysql-test/suite/pbxt/t/pbxt_xa.test +++ b/mysql-test/suite/pbxt/t/pbxt_xa.test @@ -4,11 +4,6 @@ drop table if exists t1, t2; --enable_warnings -# This warning is indication of a real bug, MBug#578117. -# But it is not a regression, so we suppress it to get a clean test run. -# This suppression must be removed as part of MBug#578117 fix. -CALL mtr.add_suppression("Found wrong usage of mutex 'LOCK_sync' and 'LOCK_active'"); - # # bug lp:544173, xa crash with two 2pc-capable storage engines without binlog # diff --git a/sql/log.cc b/sql/log.cc index cc236ef13d2..1b8cd52ebb0 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -5285,39 +5285,39 @@ void sql_print_information(const char *format, ...) /********* transaction coordinator log for 2pc - mmap() based solution *******/ /* - the log consists of a file, mmapped to a memory. - file is divided on pages of tc_log_page_size size. - (usable size of the first page is smaller because of log header) - there's PAGE control structure for each page - each page (or rather PAGE control structure) can be in one of three - states - active, syncing, pool. - there could be only one page in active or syncing states, - but many in pool - pool is fifo queue. - usual lifecycle of a page is pool->active->syncing->pool - "active" page - is a page where new xid's are logged. - the page stays active as long as syncing slot is taken. - "syncing" page is being synced to disk. no new xid can be added to it. - when the sync is done the page is moved to a pool and an active page + the log consists of a file, mapped to memory. + file is divided into pages of tc_log_page_size size. + (usable size of the first page is smaller because of the log header) + there is a PAGE control structure for each page + each page (or rather its PAGE control structure) can be in one of + the three states - active, syncing, pool. + there could be only one page in the active or syncing state, + but many in pool - pool is a fifo queue. + the usual lifecycle of a page is pool->active->syncing->pool. + the "active" page is a page where new xid's are logged. + the page stays active as long as the syncing slot is taken. + the "syncing" page is being synced to disk. no new xid can be added to it. + when the syncing is done the page is moved to a pool and an active page becomes "syncing". the result of such an architecture is a natural "commit grouping" - If commits are coming faster than the system can sync, they do not - stall. Instead, all commit that came since the last sync are - logged to the same page, and they all are synced with the next - + stall. Instead, all commits that came since the last sync are + logged to the same "active" page, and they all are synced with the next - one - sync. Thus, thought individual commits are delayed, throughput is not decreasing. - when a xid is added to an active page, the thread of this xid waits + when an xid is added to an active page, the thread of this xid waits for a page's condition until the page is synced. when syncing slot becomes vacant one of these waiters is awaken to take care of syncing. it syncs the page and signals all waiters that the page is synced. PAGE::waiters is used to count these waiters, and a page may never become active again until waiters==0 (that is all waiters from the - previous sync have noticed the sync was completed) + previous sync have noticed that the sync was completed) note, that the page becomes "dirty" and has to be synced only when a new xid is added into it. Removing a xid from a page does not make it - dirty - we don't sync removals to disk. + dirty - we don't sync xid removals to disk. */ ulong tc_log_page_waits= 0; @@ -5383,7 +5383,8 @@ int TC_LOG_MMAP::open(const char *opt_name) inited=2; npages=(uint)file_length/tc_log_page_size; - DBUG_ASSERT(npages >= 3); // to guarantee non-empty pool + if (npages < 3) // to guarantee non-empty pool + goto err; if (!(pages=(PAGE *)my_malloc(npages*sizeof(PAGE), MYF(MY_WME|MY_ZEROFILL)))) goto err; inited=3; @@ -5440,7 +5441,7 @@ err: -# if there're waiters - take the one with the most free space. @todo - TODO page merging. try to allocate adjacent page first, + page merging. try to allocate adjacent page first, so that they can be flushed both in one sync */ @@ -5449,8 +5450,7 @@ void TC_LOG_MMAP::get_active_from_pool() PAGE **p, **best_p=0; int best_free; - if (syncing) - pthread_mutex_lock(&LOCK_pool); + pthread_mutex_lock(&LOCK_pool); do { @@ -5470,20 +5470,21 @@ void TC_LOG_MMAP::get_active_from_pool() } while ((*best_p == 0 || best_free == 0) && overflow()); + safe_mutex_assert_owner(&LOCK_active); active=*best_p; - if (active->free == active->size) // we've chosen an empty page - { - tc_log_cur_pages_used++; - set_if_bigger(tc_log_max_pages_used, tc_log_cur_pages_used); - } if ((*best_p)->next) // unlink the page from the pool *best_p=(*best_p)->next; else pool_last=*best_p; + pthread_mutex_unlock(&LOCK_pool); - if (syncing) - pthread_mutex_unlock(&LOCK_pool); + pthread_mutex_lock(&active->lock); + if (active->free == active->size) // we've chosen an empty page + { + tc_log_cur_pages_used++; + set_if_bigger(tc_log_max_pages_used, tc_log_cur_pages_used); + } } /** @@ -5538,7 +5539,7 @@ int TC_LOG_MMAP::log_xid(THD *thd, my_xid xid) pthread_mutex_lock(&LOCK_active); /* - if active page is full - just wait... + if the active page is full - just wait... frankly speaking, active->free here accessed outside of mutex protection, but it's safe, because it only means we may miss an unlog() for the active page, and we're not waiting for it here - @@ -5550,9 +5551,17 @@ int TC_LOG_MMAP::log_xid(THD *thd, my_xid xid) /* no active page ? take one from the pool */ if (active == 0) get_active_from_pool(); + else + pthread_mutex_lock(&active->lock); p=active; - pthread_mutex_lock(&p->lock); + + /* + p->free is always > 0 here because to decrease it one needs + to take p->lock and before it one needs to take LOCK_active. + But checked that active->free > 0 under LOCK_active and + haven't release it ever since + */ /* searching for an empty slot */ while (*p->ptr) @@ -5566,38 +5575,51 @@ int TC_LOG_MMAP::log_xid(THD *thd, my_xid xid) *p->ptr++= xid; p->free--; p->state= DIRTY; - - /* to sync or not to sync - this is the question */ - pthread_mutex_unlock(&LOCK_active); - pthread_mutex_lock(&LOCK_sync); pthread_mutex_unlock(&p->lock); + pthread_mutex_lock(&LOCK_sync); if (syncing) { // somebody's syncing. let's wait + pthread_mutex_unlock(&LOCK_active); + pthread_mutex_lock(&p->lock); p->waiters++; - /* - note - it must be while (), not do ... while () here - as p->state may be not DIRTY when we come here - */ - while (p->state == DIRTY && syncing) + for (;;) + { + int not_dirty = p->state != DIRTY; + pthread_mutex_unlock(&p->lock); + if (not_dirty || !syncing) + break; pthread_cond_wait(&p->cond, &LOCK_sync); + pthread_mutex_lock(&p->lock); + } p->waiters--; err= p->state == ERROR; if (p->state != DIRTY) // page was synced { + pthread_mutex_unlock(&LOCK_sync); if (p->waiters == 0) pthread_cond_signal(&COND_pool); // in case somebody's waiting - pthread_mutex_unlock(&LOCK_sync); + pthread_mutex_unlock(&p->lock); goto done; // we're done } - } // page was not synced! do it now - DBUG_ASSERT(active == p && syncing == 0); - pthread_mutex_lock(&LOCK_active); - syncing=p; // place is vacant - take it - active=0; // page is not active anymore - pthread_cond_broadcast(&COND_active); // in case somebody's waiting - pthread_mutex_unlock(&LOCK_active); - pthread_mutex_unlock(&LOCK_sync); + DBUG_ASSERT(!syncing); + pthread_mutex_unlock(&p->lock); + syncing = p; + pthread_mutex_unlock(&LOCK_sync); + + pthread_mutex_lock(&LOCK_active); + active=0; // page is not active anymore + pthread_cond_broadcast(&COND_active); + pthread_mutex_unlock(&LOCK_active); + } + else + { + syncing = p; // place is vacant - take it + pthread_mutex_unlock(&LOCK_sync); + active = 0; // page is not active anymore + pthread_cond_broadcast(&COND_active); + pthread_mutex_unlock(&LOCK_active); + } err= sync(); done: @@ -5614,7 +5636,7 @@ int TC_LOG_MMAP::sync() sit down and relax - this can take a while... note - no locks are held at this point */ - err= my_msync(fd, syncing->start, 1, MS_SYNC); + err= my_msync(fd, syncing->start, syncing->size * sizeof(my_xid), MS_SYNC); /* page is synced. let's move it to the pool */ pthread_mutex_lock(&LOCK_pool); @@ -5622,19 +5644,20 @@ int TC_LOG_MMAP::sync() pool_last=syncing; syncing->next=0; syncing->state= err ? ERROR : POOL; - pthread_cond_broadcast(&syncing->cond); // signal "sync done" pthread_cond_signal(&COND_pool); // in case somebody's waiting pthread_mutex_unlock(&LOCK_pool); /* marking 'syncing' slot free */ pthread_mutex_lock(&LOCK_sync); + pthread_cond_broadcast(&syncing->cond); // signal "sync done" syncing=0; /* we check the "active" pointer without LOCK_active. Still, it's safe - "active" can change from NULL to not NULL any time, but it will take LOCK_sync before waiting on active->cond. That is, it can never miss a signal. - And "active" can change to NULL only after LOCK_sync, so this is safe too. + And "active" can change to NULL only by the syncing thread + (the thread that will send a signal below) */ if (active) pthread_cond_signal(&active->cond); // wake up a new syncer @@ -5654,13 +5677,13 @@ void TC_LOG_MMAP::unlog(ulong cookie, my_xid xid) DBUG_ASSERT(*x == xid); DBUG_ASSERT(x >= p->start && x < p->end); - *x=0; pthread_mutex_lock(&p->lock); + *x=0; p->free++; DBUG_ASSERT(p->free <= p->size); set_if_smaller(p->ptr, x); - if (p->free == p->size) // the page is completely empty + if (p->free == p->size) // the page is completely empty statistic_decrement(tc_log_cur_pages_used, &LOCK_status); if (p->waiters == 0) // the page is in pool and ready to rock pthread_cond_signal(&COND_pool); // ping ... for overflow() From 9b703c9112233dcf7f60dd691200790576db7c19 Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Fri, 2 Jul 2010 12:25:45 +0200 Subject: [PATCH 265/461] Fix bug 600744 --- storage/xtradb/handler/ha_innodb.cc | 10 +++++----- storage/xtradb/include/univ.i | 2 ++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc index 230a4fde81f..5a5e04bc9d7 100644 --- a/storage/xtradb/handler/ha_innodb.cc +++ b/storage/xtradb/handler/ha_innodb.cc @@ -10393,7 +10393,7 @@ static MYSQL_SYSVAR_BOOL(recovery_stats, innobase_recovery_stats, "Output statistics of recovery process after it.", NULL, NULL, FALSE); -static MYSQL_SYSVAR_ULONG(use_purge_thread, srv_use_purge_thread, +static MYSQL_SYSVAR_ULINT(use_purge_thread, srv_use_purge_thread, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, "Number of purge devoted threads. #### over 1 is EXPERIMENTAL ####", NULL, NULL, 1, 0, 64, 0); @@ -10548,7 +10548,7 @@ static MYSQL_SYSVAR_ULONG(stats_auto_update, srv_stats_auto_update, "(except for ANALYZE TABLE command) 0:disable 1:enable", NULL, NULL, 1, 0, 1, 0); -static MYSQL_SYSVAR_ULONG(stats_update_need_lock, srv_stats_update_need_lock, +static MYSQL_SYSVAR_ULINT(stats_update_need_lock, srv_stats_update_need_lock, PLUGIN_VAR_RQCMDARG, "Enable/Disable InnoDB's update statistics which needs to lock dictionary. " "e.g. Data_free.", @@ -10728,7 +10728,7 @@ static MYSQL_SYSVAR_ULONG(ibuf_accel_rate, srv_ibuf_accel_rate, "Tunes amount of insert buffer processing of background, in addition to innodb_io_capacity. (in percentage)", NULL, NULL, 100, 100, 999999999, 0); -static MYSQL_SYSVAR_ULONG(checkpoint_age_target, srv_checkpoint_age_target, +static MYSQL_SYSVAR_ULINT(checkpoint_age_target, srv_checkpoint_age_target, PLUGIN_VAR_RQCMDARG, "Control soft limit of checkpoint age. (0 : not control)", NULL, NULL, 0, 0, ~0UL, 0); @@ -10822,12 +10822,12 @@ static MYSQL_SYSVAR_ULONG(dict_size_limit, srv_dict_size_limit, "Limit the allocated memory for dictionary cache. (0: unlimited)", NULL, NULL, 0, 0, LONG_MAX, 0); -static MYSQL_SYSVAR_ULONG(relax_table_creation, srv_relax_table_creation, +static MYSQL_SYSVAR_ULINT(relax_table_creation, srv_relax_table_creation, PLUGIN_VAR_RQCMDARG, "Relax limitation of column size at table creation as builtin InnoDB.", NULL, NULL, 0, 0, 1, 0); -static MYSQL_SYSVAR_ULONG(pass_corrupt_table, srv_pass_corrupt_table, +static MYSQL_SYSVAR_ULINT(pass_corrupt_table, srv_pass_corrupt_table, PLUGIN_VAR_RQCMDARG, "Pass corruptions of user tables as 'corrupt table' instead of not crashing itself, " "when used with file_per_table. " diff --git a/storage/xtradb/include/univ.i b/storage/xtradb/include/univ.i index 0d9417fab38..09b28ce72dd 100644 --- a/storage/xtradb/include/univ.i +++ b/storage/xtradb/include/univ.i @@ -326,10 +326,12 @@ macro ULINTPF. */ typedef unsigned __int64 ulint; #define ULINTPF "%I64u" typedef __int64 lint; +#define MYSQL_SYSVAR_ULINT MYSQL_SYSVAR_ULONGLONG #else typedef unsigned long int ulint; #define ULINTPF "%lu" typedef long int lint; +#define MYSQL_SYSVAR_ULINT MYSQL_SYSVAR_ULONG #endif #ifdef __WIN__ From 1bfb6949bc867f20fe86c55b649188ab2297a357 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 2 Jul 2010 14:31:16 +0300 Subject: [PATCH 266/461] merge --- .bzr-mysql/default.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.bzr-mysql/default.conf b/.bzr-mysql/default.conf index e613cefc614..77df77c6021 100644 --- a/.bzr-mysql/default.conf +++ b/.bzr-mysql/default.conf @@ -1,4 +1,4 @@ [MYSQL] -post_commit_to = "commits@lists.mysql.com" -post_push_to = "commits@lists.mysql.com" -tree_name = "mysql-5.1-bugteam" +post_commit_to = "dbg_mysql_security@sun.com" +post_push_to = "dbg_mysql_security@sun.com" +tree_name = "mysql-5.1-security" From 0f5fed201fee686ddafb3221e3a055aa8fc194e6 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 2 Jul 2010 14:33:17 +0300 Subject: [PATCH 267/461] merge --- .bzr-mysql/default.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.bzr-mysql/default.conf b/.bzr-mysql/default.conf index 557df1b1ffe..4b2affc1529 100644 --- a/.bzr-mysql/default.conf +++ b/.bzr-mysql/default.conf @@ -1,4 +1,4 @@ [MYSQL] -post_commit_to = "commits@lists.mysql.com" -post_push_to = "commits@lists.mysql.com" -tree_name = "mysql-5.0-bugteam" +post_commit_to = "dbg_mysql_security@sun.com" +post_push_to = "dbg_mysql_security@sun.com" +tree_name = "mysql-5.0-security" From b95bd9f5e2040609e2269772ec4ed043d0036cf4 Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Fri, 2 Jul 2010 20:24:39 -0700 Subject: [PATCH 268/461] Fixed bug #601164. The functions mysql_delete and mysql_update lacked calls of updated_virtual_fields(). This caused wrong results for some DELETEs/UPDATEs. Added test cases for this bug. --- mysql-test/suite/vcol/r/vcol_misc.result | 32 ++++++++++++++++++++++++ mysql-test/suite/vcol/t/vcol_misc.test | 21 ++++++++++++++++ sql/sql_delete.cc | 1 + sql/sql_update.cc | 2 ++ 4 files changed, 56 insertions(+) create mode 100644 mysql-test/suite/vcol/r/vcol_misc.result create mode 100644 mysql-test/suite/vcol/t/vcol_misc.test diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result new file mode 100644 index 00000000000..f312527794a --- /dev/null +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -0,0 +1,32 @@ +drop table if exists t1,t2; +create table t1 (a int, b int, v int as (a+1), index idx(b)); +insert into t1(a, b) values +(4, 40), (3, 30), (5, 50), (7, 70), (8, 80), (2, 20), (1, 10); +select * from t1 order by b; +a b v +1 10 2 +2 20 3 +3 30 4 +4 40 5 +5 50 6 +7 70 8 +8 80 9 +delete from t1 where v > 6 order by b limit 1; +select * from t1 order by b; +a b v +1 10 2 +2 20 3 +3 30 4 +4 40 5 +5 50 6 +8 80 9 +update t1 set a=v order by b limit 1; +select * from t1 order by b; +a b v +2 10 3 +2 20 3 +3 30 4 +4 40 5 +5 50 6 +8 80 9 +drop table t1; diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test new file mode 100644 index 00000000000..a0e654daa57 --- /dev/null +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -0,0 +1,21 @@ +--disable_warnings +drop table if exists t1,t2; +--enable_warnings + +# +# Bug#601164: DELETE/UPDATE with ORDER BY index and LIMIT +# + +create table t1 (a int, b int, v int as (a+1), index idx(b)); +insert into t1(a, b) values + (4, 40), (3, 30), (5, 50), (7, 70), (8, 80), (2, 20), (1, 10); + +select * from t1 order by b; + +delete from t1 where v > 6 order by b limit 1; +select * from t1 order by b; + +update t1 set a=v order by b limit 1; +select * from t1 order by b; + +drop table t1; diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index ddb6af97865..eb05077f17a 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -304,6 +304,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, while (!(error=info.read_record(&info)) && !thd->killed && ! thd->is_error()) { + update_virtual_fields(table); // thd->is_error() is tested to disallow delete row on error if (!select || select->skip_record(thd) > 0) { diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 3c8f537d1d8..e260310206a 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -469,6 +469,7 @@ int mysql_update(THD *thd, while (!(error=info.read_record(&info)) && !thd->killed && !thd->is_error()) { + update_virtual_fields(table); if (!select || select->skip_record(thd) > 0) { if (table->file->was_semi_consistent_read()) @@ -575,6 +576,7 @@ int mysql_update(THD *thd, while (!(error=info.read_record(&info)) && !thd->killed) { + update_virtual_fields(table); if (!select || select->skip_record(thd) > 0) { if (table->file->was_semi_consistent_read()) From cd41cd953d9d76b4b9c13fd745856d5023f12d71 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Mon, 5 Jul 2010 09:00:39 -0300 Subject: [PATCH 269/461] Bug#22320: my_atomic-t unit test fails The atomic operations implementation on 5.1 has a few problems, which might cause tests to abort randomly. Since no code in 5.1 uses atomic operations, simply remove the code. --- include/Makefile.am | 6 +- include/atomic/gcc_builtins.h | 33 ------ include/atomic/nolock.h | 44 -------- include/atomic/rwlock.h | 48 -------- include/atomic/x86-gcc.h | 58 ---------- include/atomic/x86-msvc.h | 96 ---------------- include/my_atomic.h | 142 ----------------------- include/my_pthread.h | 2 +- mysys/Makefile.am | 3 +- mysys/my_atomic.c | 45 -------- storage/ibmdb2i/db2i_file.h | 1 - unittest/mysys/Makefile.am | 7 -- unittest/mysys/my_atomic-t.c | 205 ---------------------------------- 13 files changed, 4 insertions(+), 686 deletions(-) delete mode 100644 include/atomic/gcc_builtins.h delete mode 100644 include/atomic/nolock.h delete mode 100644 include/atomic/rwlock.h delete mode 100644 include/atomic/x86-gcc.h delete mode 100644 include/atomic/x86-msvc.h delete mode 100644 include/my_atomic.h delete mode 100644 mysys/my_atomic.c delete mode 100644 unittest/mysys/my_atomic-t.c diff --git a/include/Makefile.am b/include/Makefile.am index 64f73af8606..130517a405e 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -36,10 +36,8 @@ noinst_HEADERS = config-win.h config-netware.h my_bit.h \ my_nosys.h my_alarm.h queues.h rijndael.h sha1.h \ my_aes.h my_tree.h my_trie.h hash.h thr_alarm.h \ thr_lock.h t_ctype.h violite.h my_md5.h base64.h \ - my_handler.h my_time.h \ - my_vle.h my_user.h my_atomic.h atomic/nolock.h \ - atomic/rwlock.h atomic/x86-gcc.h atomic/x86-msvc.h \ - atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h + my_handler.h my_time.h my_vle.h my_user.h \ + my_libwrap.h my_stacktrace.h EXTRA_DIST = mysql.h.pp mysql/plugin.h.pp diff --git a/include/atomic/gcc_builtins.h b/include/atomic/gcc_builtins.h deleted file mode 100644 index 509701b30a5..00000000000 --- a/include/atomic/gcc_builtins.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 2008 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -#define make_atomic_add_body(S) \ - v= __sync_fetch_and_add(a, v); -#define make_atomic_swap_body(S) \ - v= __sync_lock_test_and_set(a, v); -#define make_atomic_cas_body(S) \ - int ## S sav; \ - sav= __sync_val_compare_and_swap(a, *cmp, set); \ - if (!(ret= (sav == *cmp))) *cmp= sav; - -#ifdef MY_ATOMIC_MODE_DUMMY -#define make_atomic_load_body(S) ret= *a -#define make_atomic_store_body(S) *a= v -#else -#define make_atomic_load_body(S) \ - ret= __sync_fetch_and_or(a, 0); -#define make_atomic_store_body(S) \ - (void) __sync_lock_test_and_set(a, v); -#endif diff --git a/include/atomic/nolock.h b/include/atomic/nolock.h deleted file mode 100644 index 10ac17884b6..00000000000 --- a/include/atomic/nolock.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (C) 2006 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -#if defined(__i386__) || defined(_M_IX86) || defined(HAVE_GCC_ATOMIC_BUILTINS) - -#ifdef MY_ATOMIC_MODE_DUMMY -# define LOCK "" -#else -# define LOCK "lock" -#endif - -#ifdef HAVE_GCC_ATOMIC_BUILTINS -#include "gcc_builtins.h" -#elif __GNUC__ -#include "x86-gcc.h" -#elif defined(_MSC_VER) -#include "x86-msvc.h" -#endif -#endif - -#ifdef make_atomic_cas_body - -typedef struct { } my_atomic_rwlock_t; -#define my_atomic_rwlock_destroy(name) -#define my_atomic_rwlock_init(name) -#define my_atomic_rwlock_rdlock(name) -#define my_atomic_rwlock_wrlock(name) -#define my_atomic_rwlock_rdunlock(name) -#define my_atomic_rwlock_wrunlock(name) - -#endif - diff --git a/include/atomic/rwlock.h b/include/atomic/rwlock.h deleted file mode 100644 index 18b77e93d80..00000000000 --- a/include/atomic/rwlock.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 2006 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -typedef struct {pthread_rwlock_t rw;} my_atomic_rwlock_t; - -#ifdef MY_ATOMIC_MODE_DUMMY -/* - the following can never be enabled by ./configure, one need to put #define in - a source to trigger the following warning. The resulting code will be broken, - it only makes sense to do it to see now test_atomic detects broken - implementations (another way is to run a UP build on an SMP box). -*/ -#warning MY_ATOMIC_MODE_DUMMY and MY_ATOMIC_MODE_RWLOCKS are incompatible -#define my_atomic_rwlock_destroy(name) -#define my_atomic_rwlock_init(name) -#define my_atomic_rwlock_rdlock(name) -#define my_atomic_rwlock_wrlock(name) -#define my_atomic_rwlock_rdunlock(name) -#define my_atomic_rwlock_wrunlock(name) -#define MY_ATOMIC_MODE "dummy (non-atomic)" -#else -#define my_atomic_rwlock_destroy(name) pthread_rwlock_destroy(& (name)->rw) -#define my_atomic_rwlock_init(name) pthread_rwlock_init(& (name)->rw, 0) -#define my_atomic_rwlock_rdlock(name) pthread_rwlock_rdlock(& (name)->rw) -#define my_atomic_rwlock_wrlock(name) pthread_rwlock_wrlock(& (name)->rw) -#define my_atomic_rwlock_rdunlock(name) pthread_rwlock_unlock(& (name)->rw) -#define my_atomic_rwlock_wrunlock(name) pthread_rwlock_unlock(& (name)->rw) -#define MY_ATOMIC_MODE "rwlocks" -#endif - -#define make_atomic_add_body(S) int ## S sav; sav= *a; *a+= v; v=sav; -#define make_atomic_swap_body(S) int ## S sav; sav= *a; *a= v; v=sav; -#define make_atomic_cas_body(S) if ((ret= (*a == *cmp))) *a= set; else *cmp=*a; -#define make_atomic_load_body(S) ret= *a; -#define make_atomic_store_body(S) *a= v; - diff --git a/include/atomic/x86-gcc.h b/include/atomic/x86-gcc.h deleted file mode 100644 index d79dadbf05e..00000000000 --- a/include/atomic/x86-gcc.h +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright (C) 2006 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -/* - XXX 64-bit atomic operations can be implemented using - cmpxchg8b, if necessary. Though I've heard that not all 64-bit - architectures support double-word (128-bit) cas. -*/ - -#ifdef MY_ATOMIC_NO_XADD -#define MY_ATOMIC_MODE "gcc-x86" LOCK "-no-xadd" -#else -#define MY_ATOMIC_MODE "gcc-x86" LOCK -#endif - -/* fix -ansi errors while maintaining readability */ -#ifndef asm -#define asm __asm__ -#endif - -#ifndef MY_ATOMIC_NO_XADD -#define make_atomic_add_body(S) \ - asm volatile (LOCK "; xadd %0, %1;" : "+r" (v) , "+m" (*a)) -#endif -#define make_atomic_swap_body(S) \ - asm volatile ("; xchg %0, %1;" : "+r" (v) , "+m" (*a)) -#define make_atomic_cas_body(S) \ - asm volatile (LOCK "; cmpxchg %3, %0; setz %2;" \ - : "+m" (*a), "+a" (*cmp), "=q" (ret): "r" (set)) - -#ifdef MY_ATOMIC_MODE_DUMMY -#define make_atomic_load_body(S) ret=*a -#define make_atomic_store_body(S) *a=v -#else -/* - Actually 32-bit reads/writes are always atomic on x86 - But we add LOCK here anyway to force memory barriers -*/ -#define make_atomic_load_body(S) \ - ret=0; \ - asm volatile (LOCK "; cmpxchg %2, %0" \ - : "+m" (*a), "+a" (ret): "r" (ret)) -#define make_atomic_store_body(S) \ - asm volatile ("; xchg %0, %1;" : "+m" (*a) : "r" (v)) -#endif - diff --git a/include/atomic/x86-msvc.h b/include/atomic/x86-msvc.h deleted file mode 100644 index c4885bb8451..00000000000 --- a/include/atomic/x86-msvc.h +++ /dev/null @@ -1,96 +0,0 @@ -/* Copyright (C) 2006 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -/* - XXX 64-bit atomic operations can be implemented using - cmpxchg8b, if necessary -*/ - -// Would it be better to use intrinsics ? -// (InterlockedCompareExchange, InterlockedCompareExchange16 -// InterlockedExchangeAdd, InterlockedExchange) - -#ifndef _atomic_h_cleanup_ -#define _atomic_h_cleanup_ "atomic/x86-msvc.h" - -#define MY_ATOMIC_MODE "msvc-x86" LOCK - -#define make_atomic_add_body(S) \ - _asm { \ - _asm mov reg_ ## S, v \ - _asm LOCK xadd *a, reg_ ## S \ - _asm movzx v, reg_ ## S \ - } -#define make_atomic_cas_body(S) \ - _asm { \ - _asm mov areg_ ## S, *cmp \ - _asm mov reg2_ ## S, set \ - _asm LOCK cmpxchg *a, reg2_ ## S \ - _asm mov *cmp, areg_ ## S \ - _asm setz al \ - _asm movzx ret, al \ - } -#define make_atomic_swap_body(S) \ - _asm { \ - _asm mov reg_ ## S, v \ - _asm xchg *a, reg_ ## S \ - _asm mov v, reg_ ## S \ - } - -#ifdef MY_ATOMIC_MODE_DUMMY -#define make_atomic_load_body(S) ret=*a -#define make_atomic_store_body(S) *a=v -#else -/* - Actually 32-bit reads/writes are always atomic on x86 - But we add LOCK here anyway to force memory barriers -*/ -#define make_atomic_load_body(S) \ - _asm { \ - _asm mov areg_ ## S, 0 \ - _asm mov reg2_ ## S, areg_ ## S \ - _asm LOCK cmpxchg *a, reg2_ ## S \ - _asm mov ret, areg_ ## S \ - } -#define make_atomic_store_body(S) \ - _asm { \ - _asm mov reg_ ## S, v \ - _asm xchg *a, reg_ ## S \ - } -#endif - -#define reg_8 al -#define reg_16 ax -#define reg_32 eax -#define areg_8 al -#define areg_16 ax -#define areg_32 eax -#define reg2_8 bl -#define reg2_16 bx -#define reg2_32 ebx - -#else /* cleanup */ - -#undef reg_8 -#undef reg_16 -#undef reg_32 -#undef areg_8 -#undef areg_16 -#undef areg_32 -#undef reg2_8 -#undef reg2_16 -#undef reg2_32 -#endif - diff --git a/include/my_atomic.h b/include/my_atomic.h deleted file mode 100644 index ed439e5fe87..00000000000 --- a/include/my_atomic.h +++ /dev/null @@ -1,142 +0,0 @@ -/* Copyright (C) 2006 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -#ifndef my_atomic_rwlock_init - -#define intptr void * - -#ifndef MY_ATOMIC_MODE_RWLOCKS -#include "atomic/nolock.h" -#endif - -#ifndef make_atomic_cas_body -#include "atomic/rwlock.h" -#endif - -#ifndef make_atomic_add_body -#define make_atomic_add_body(S) \ - int ## S tmp=*a; \ - while (!my_atomic_cas ## S(a, &tmp, tmp+v)); \ - v=tmp; -#endif - -#ifdef HAVE_INLINE - -#define make_atomic_add(S) \ -STATIC_INLINE int ## S my_atomic_add ## S( \ - int ## S volatile *a, int ## S v) \ -{ \ - make_atomic_add_body(S); \ - return v; \ -} - -#define make_atomic_swap(S) \ -STATIC_INLINE int ## S my_atomic_swap ## S( \ - int ## S volatile *a, int ## S v) \ -{ \ - make_atomic_swap_body(S); \ - return v; \ -} - -#define make_atomic_cas(S) \ -STATIC_INLINE int my_atomic_cas ## S(int ## S volatile *a, \ - int ## S *cmp, int ## S set) \ -{ \ - int8 ret; \ - make_atomic_cas_body(S); \ - return ret; \ -} - -#define make_atomic_load(S) \ -STATIC_INLINE int ## S my_atomic_load ## S(int ## S volatile *a) \ -{ \ - int ## S ret; \ - make_atomic_load_body(S); \ - return ret; \ -} - -#define make_atomic_store(S) \ -STATIC_INLINE void my_atomic_store ## S( \ - int ## S volatile *a, int ## S v) \ -{ \ - make_atomic_store_body(S); \ -} - -#else /* no inline functions */ - -#define make_atomic_add(S) \ -extern int ## S my_atomic_add ## S(int ## S volatile *a, int ## S v); - -#define make_atomic_swap(S) \ -extern int ## S my_atomic_swap ## S(int ## S volatile *a, int ## S v); - -#define make_atomic_cas(S) \ -extern int my_atomic_cas ## S(int ## S volatile *a, int ## S *cmp, int ## S set); - -#define make_atomic_load(S) \ -extern int ## S my_atomic_load ## S(int ## S volatile *a); - -#define make_atomic_store(S) \ -extern void my_atomic_store ## S(int ## S volatile *a, int ## S v); - -#endif - -make_atomic_cas( 8) -make_atomic_cas(16) -make_atomic_cas(32) -make_atomic_cas(ptr) - -make_atomic_add( 8) -make_atomic_add(16) -make_atomic_add(32) - -make_atomic_load( 8) -make_atomic_load(16) -make_atomic_load(32) -make_atomic_load(ptr) - -make_atomic_store( 8) -make_atomic_store(16) -make_atomic_store(32) -make_atomic_store(ptr) - -make_atomic_swap( 8) -make_atomic_swap(16) -make_atomic_swap(32) -make_atomic_swap(ptr) - -#undef make_atomic_add -#undef make_atomic_cas -#undef make_atomic_load -#undef make_atomic_store -#undef make_atomic_swap -#undef make_atomic_add_body -#undef make_atomic_cas_body -#undef make_atomic_load_body -#undef make_atomic_store_body -#undef make_atomic_swap_body -#undef intptr - -#ifdef _atomic_h_cleanup_ -#include _atomic_h_cleanup_ -#undef _atomic_h_cleanup_ -#endif - -#define MY_ATOMIC_OK 0 -#define MY_ATOMIC_NOT_1CPU 1 -extern int my_atomic_initialize(); - -#endif - diff --git a/include/my_pthread.h b/include/my_pthread.h index e9256610ea7..eff6a677192 100644 --- a/include/my_pthread.h +++ b/include/my_pthread.h @@ -715,7 +715,7 @@ extern uint thd_lib_detected; The implementation is guaranteed to be thread safe, on all platforms. Note that the calling code should *not* assume the counter is protected by the mutex given, as the implementation of these helpers may change - to use my_atomic operations instead. + to use atomic operations instead. */ /* diff --git a/mysys/Makefile.am b/mysys/Makefile.am index 19017330654..e4c71f66079 100644 --- a/mysys/Makefile.am +++ b/mysys/Makefile.am @@ -30,8 +30,7 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c my_mmap.c \ mf_tempdir.c my_lock.c mf_brkhant.c my_alarm.c \ my_malloc.c my_realloc.c my_once.c mulalloc.c \ my_alloc.c safemalloc.c my_new.cc \ - my_vle.c my_atomic.c \ - my_fopen.c my_fstream.c my_getsystime.c \ + my_vle.c my_fopen.c my_fstream.c my_getsystime.c \ my_error.c errors.c my_div.c my_messnc.c \ mf_format.c mf_same.c mf_dirname.c mf_fn_ext.c \ my_symlink.c my_symlink2.c \ diff --git a/mysys/my_atomic.c b/mysys/my_atomic.c deleted file mode 100644 index aa04d55f624..00000000000 --- a/mysys/my_atomic.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2006 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -#include -#include - -#ifndef HAVE_INLINE -/* the following will cause all inline functions to be instantiated */ -#define HAVE_INLINE -#undef STATIC_INLINE -#define STATIC_INLINE extern -#endif - -#include - -/* - checks that the current build of atomic ops - can run on this machine - - RETURN - ATOMIC_xxx values, see my_atomic.h -*/ -int my_atomic_initialize() -{ - compile_time_assert(sizeof(intptr) == sizeof(void *)); - /* currently the only thing worth checking is SMP/UP issue */ -#ifdef MY_ATOMIC_MODE_DUMMY - return my_getncpus() == 1 ? MY_ATOMIC_OK : MY_ATOMIC_NOT_1CPU; -#else - return MY_ATOMIC_OK; -#endif -} - diff --git a/storage/ibmdb2i/db2i_file.h b/storage/ibmdb2i/db2i_file.h index ff35a473b05..7b63b18c315 100644 --- a/storage/ibmdb2i/db2i_file.h +++ b/storage/ibmdb2i/db2i_file.h @@ -40,7 +40,6 @@ OF SUCH DAMAGE. #include "db2i_global.h" #include "db2i_ileBridge.h" #include "db2i_validatedPointer.h" -#include "my_atomic.h" #include "db2i_iconv.h" #include "db2i_charsetSupport.h" diff --git a/unittest/mysys/Makefile.am b/unittest/mysys/Makefile.am index f0ffc7a6720..b195017e914 100644 --- a/unittest/mysys/Makefile.am +++ b/unittest/mysys/Makefile.am @@ -23,12 +23,5 @@ LDADD = $(top_builddir)/unittest/mytap/libmytap.a \ noinst_PROGRAMS = bitmap-t base64-t -if NEED_THREAD -# my_atomic-t is used to check thread functions, so it is safe to -# ignore the file in non-threaded builds. -# In fact, it will not compile without thread support. -noinst_PROGRAMS += my_atomic-t -endif - # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/unittest/mysys/my_atomic-t.c b/unittest/mysys/my_atomic-t.c deleted file mode 100644 index f2bcd360508..00000000000 --- a/unittest/mysys/my_atomic-t.c +++ /dev/null @@ -1,205 +0,0 @@ -/* Copyright (C) 2006 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; version 2 of the License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -#include -#include -#include -#include - -/* at least gcc 3.4.5 and 3.4.6 (but not 3.2.3) on RHEL */ -#if __GNUC__ == 3 && __GNUC_MINOR__ == 4 -#define GCC_BUG_WORKAROUND volatile -#else -#define GCC_BUG_WORKAROUND -#endif - -int32 a32,b32,c32; -my_atomic_rwlock_t rwl; - -pthread_attr_t thr_attr; -pthread_mutex_t mutex; -pthread_cond_t cond; -int N; - -/* add and sub a random number in a loop. Must get 0 at the end */ -pthread_handler_t test_atomic_add_handler(void *arg) -{ - int m=*(int *)arg; - GCC_BUG_WORKAROUND int32 x; - for (x=((int)((long)(&m))); m ; m--) - { - x=x*m+0x87654321; - my_atomic_rwlock_wrlock(&rwl); - my_atomic_add32(&a32, x); - my_atomic_rwlock_wrunlock(&rwl); - - my_atomic_rwlock_wrlock(&rwl); - my_atomic_add32(&a32, -x); - my_atomic_rwlock_wrunlock(&rwl); - } - pthread_mutex_lock(&mutex); - N--; - if (!N) pthread_cond_signal(&cond); - pthread_mutex_unlock(&mutex); - return 0; -} - -/* - 1. generate thread number 0..N-1 from b32 - 2. add it to a32 - 3. swap thread numbers in c32 - 4. (optionally) one more swap to avoid 0 as a result - 5. subtract result from a32 - must get 0 in a32 at the end -*/ -pthread_handler_t test_atomic_swap_handler(void *arg) -{ - int m=*(int *)arg; - int32 x; - - my_atomic_rwlock_wrlock(&rwl); - x=my_atomic_add32(&b32, 1); - my_atomic_rwlock_wrunlock(&rwl); - - my_atomic_rwlock_wrlock(&rwl); - my_atomic_add32(&a32, x); - my_atomic_rwlock_wrunlock(&rwl); - - for (; m ; m--) - { - my_atomic_rwlock_wrlock(&rwl); - x=my_atomic_swap32(&c32, x); - my_atomic_rwlock_wrunlock(&rwl); - } - - if (!x) - { - my_atomic_rwlock_wrlock(&rwl); - x=my_atomic_swap32(&c32, x); - my_atomic_rwlock_wrunlock(&rwl); - } - - my_atomic_rwlock_wrlock(&rwl); - my_atomic_add32(&a32, -x); - my_atomic_rwlock_wrunlock(&rwl); - - pthread_mutex_lock(&mutex); - N--; - if (!N) pthread_cond_signal(&cond); - pthread_mutex_unlock(&mutex); - return 0; -} - -/* - same as test_atomic_add_handler, but my_atomic_add32 is emulated with - (slower) my_atomic_cas32 -*/ -pthread_handler_t test_atomic_cas_handler(void *arg) -{ - int m=*(int *)arg, ok; - GCC_BUG_WORKAROUND int32 x,y; - for (x=((int)((long)(&m))); m ; m--) - { - my_atomic_rwlock_wrlock(&rwl); - y=my_atomic_load32(&a32); - my_atomic_rwlock_wrunlock(&rwl); - - x=x*m+0x87654321; - do { - my_atomic_rwlock_wrlock(&rwl); - ok=my_atomic_cas32(&a32, &y, y+x); - my_atomic_rwlock_wrunlock(&rwl); - } while (!ok); - do { - my_atomic_rwlock_wrlock(&rwl); - ok=my_atomic_cas32(&a32, &y, y-x); - my_atomic_rwlock_wrunlock(&rwl); - } while (!ok); - } - pthread_mutex_lock(&mutex); - N--; - if (!N) pthread_cond_signal(&cond); - pthread_mutex_unlock(&mutex); - return 0; -} - -void test_atomic(const char *test, pthread_handler handler, int n, int m) -{ - pthread_t t; - ulonglong now=my_getsystime(); - - a32= 0; - b32= 0; - c32= 0; - - diag("Testing %s with %d threads, %d iterations... ", test, n, m); - for (N=n ; n ; n--) - { - if (pthread_create(&t, &thr_attr, handler, &m) != 0) - { - diag("Could not create thread"); - a32= 1; - goto err; - } - } - - pthread_mutex_lock(&mutex); - while (N) - pthread_cond_wait(&cond, &mutex); - pthread_mutex_unlock(&mutex); - now=my_getsystime()-now; -err: - ok(a32 == 0, "tested %s in %g secs", test, ((double)now)/1e7); -} - -int main() -{ - int err; - MY_INIT("my_atomic-t.c"); - - diag("N CPUs: %d", my_getncpus()); - err= my_atomic_initialize(); - - plan(4); - ok(err == 0, "my_atomic_initialize() returned %d", err); - - pthread_attr_init(&thr_attr); - pthread_attr_setdetachstate(&thr_attr,PTHREAD_CREATE_DETACHED); - pthread_mutex_init(&mutex, 0); - pthread_cond_init(&cond, 0); - my_atomic_rwlock_init(&rwl); - -#ifdef HPUX11 -#define CYCLES 1000 -#else -#define CYCLES 10000 -#endif -#define THREADS 100 - test_atomic("my_atomic_add32", test_atomic_add_handler, THREADS, CYCLES); - test_atomic("my_atomic_swap32", test_atomic_swap_handler, THREADS, CYCLES); - test_atomic("my_atomic_cas32", test_atomic_cas_handler, THREADS, CYCLES); - /* - workaround until we know why it crashes randomly on some machine - (BUG#22320). - */ - sleep(2); - - pthread_mutex_destroy(&mutex); - pthread_cond_destroy(&cond); - pthread_attr_destroy(&thr_attr); - my_atomic_rwlock_destroy(&rwl); - return exit_status(); -} - From 19ea597a385c768fe749c48c2453036a3fb7d6d8 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Mon, 5 Jul 2010 19:26:38 -0700 Subject: [PATCH 270/461] Add innodb_bug53756-master.opt for innodb_bug53756 test. --- mysql-test/suite/innodb/r/innodb_bug53756.result | 2 +- mysql-test/suite/innodb/t/innodb_bug53756-master.opt | 1 + mysql-test/suite/innodb/t/innodb_bug53756.test | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 mysql-test/suite/innodb/t/innodb_bug53756-master.opt diff --git a/mysql-test/suite/innodb/r/innodb_bug53756.result b/mysql-test/suite/innodb/r/innodb_bug53756.result index 67797f9c90f..37453be8201 100644 --- a/mysql-test/suite/innodb/r/innodb_bug53756.result +++ b/mysql-test/suite/innodb/r/innodb_bug53756.result @@ -78,7 +78,7 @@ ROLLBACK; # connection default selects resulting data. # Delete of row 1 was committed. -# Dpdate of row 3 was committed. +# Update of row 3 was committed. # Due to isolation level read committed, these should be included. # All other changes should not be included. SELECT * FROM bug_53756; diff --git a/mysql-test/suite/innodb/t/innodb_bug53756-master.opt b/mysql-test/suite/innodb/t/innodb_bug53756-master.opt new file mode 100644 index 00000000000..425fda95086 --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_bug53756-master.opt @@ -0,0 +1 @@ +--skip-stack-trace --skip-core-file diff --git a/mysql-test/suite/innodb/t/innodb_bug53756.test b/mysql-test/suite/innodb/t/innodb_bug53756.test index 85a09478486..8324f2640a2 100644 --- a/mysql-test/suite/innodb/t/innodb_bug53756.test +++ b/mysql-test/suite/innodb/t/innodb_bug53756.test @@ -114,7 +114,7 @@ ROLLBACK; --echo --echo # connection default selects resulting data. --echo # Delete of row 1 was committed. ---echo # Dpdate of row 3 was committed. +--echo # Update of row 3 was committed. --echo # Due to isolation level read committed, these should be included. --echo # All other changes should not be included. --connection default From 9dba6ddfac25088c5b187f15370d949eb4a40896 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Jul 2010 16:01:02 +0200 Subject: [PATCH 271/461] Raise version number after cloning 5.1.49 --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 74e575fad8c..a475185d880 100644 --- a/configure.in +++ b/configure.in @@ -12,7 +12,7 @@ dnl dnl When changing the major version number please also check the switch dnl statement in mysqlbinlog::check_master_version(). You may also need dnl to update version.c in ndb. -AC_INIT([MySQL Server], [5.1.49], [], [mysql]) +AC_INIT([MySQL Server], [5.1.50], [], [mysql]) AC_CONFIG_SRCDIR([sql/mysqld.cc]) AC_CANONICAL_SYSTEM From 04dd8ed0eb5f06f670f6e455b06c1173988a8f11 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Tue, 6 Jul 2010 15:36:31 -0300 Subject: [PATCH 272/461] Bug#52514: mysql 5.1 do_abi_check does not compile w/ gcc4.5 due to GCC preprocessor change Temporary workaround: disable abi_check if GCC >= 4.5 --- configure.in | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 539d597fd07..d47bf975fdd 100644 --- a/configure.in +++ b/configure.in @@ -475,7 +475,16 @@ if test "$GCC" != "yes" || expr "$CC" : ".*icc.*" then ABI_CHECK="" else - ABI_CHECK="abi_check" + # Workaround GCC >= 4.5 - See Bug#52514 + case `$CC -dumpversion` in + [[4-9]].[[5-9]]*) + AC_MSG_WARN([ABI check disabled (GCC >= 4.5)]) + ABI_CHECK="" + ;; + *) + ABI_CHECK="abi_check" + ;; + esac fi AC_SUBST(ABI_CHECK) From 6652fc78b7b5e1093a0670c3271fec7d626bb222 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Tue, 6 Jul 2010 19:31:54 -0300 Subject: [PATCH 273/461] Fix what is probably the result of a bad merge. No functional change. --- libmysql/libmysql.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index e0cc119bd16..362ad5de6c4 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -4421,6 +4421,7 @@ static my_bool setup_one_fetch_function(MYSQL_BIND *param, MYSQL_FIELD *field) case MYSQL_TYPE_TIME: field->max_length= 15; /* 19:23:48.123456 */ param->skip_result= skip_result_with_length; + break; case MYSQL_TYPE_DATE: field->max_length= 10; /* 2003-11-11 */ param->skip_result= skip_result_with_length; From d9e7c4efb6bfebf625af629b3ca878f1d0dc7e02 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Wed, 7 Jul 2010 12:15:58 +0300 Subject: [PATCH 274/461] Addendum to the fix for bug #53095 (failing information_schema.test on windows) Since the original fix for this bug lowercases the search pattern it's not a good idea to copy the search pattern to the output instead of the real table name found (since, depending on the case mode these two names may differ in case). Fixed the infrmation_schema.test failure by making sure the actual table name of an inoformation schema table is passed instead of the lookup pattern even when the pattern doesn't contain wildcards. --- sql/sql_show.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 0eeb333f278..17fbf62b097 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2939,11 +2939,15 @@ make_table_name_list(THD *thd, List *table_names, LEX *lex, { if (with_i_schema) { + LEX_STRING *name; ST_SCHEMA_TABLE *schema_table= find_schema_table(thd, lookup_field_vals->table_value.str); if (schema_table && !schema_table->hidden) { - if (table_names->push_back(&lookup_field_vals->table_value)) + if (!(name= + thd->make_lex_string(NULL, schema_table->table_name, + strlen(schema_table->table_name), TRUE)) || + table_names->push_back(name)) return 1; } } From ee45ab069478f532488befac0464c780c2f46f45 Mon Sep 17 00:00:00 2001 From: Bo Thorsen Date: Wed, 7 Jul 2010 13:30:33 +0200 Subject: [PATCH 275/461] Add 64 bit packages to the pack script. 32 bit is still the default --- win/make_mariadb_win_dist | 61 +++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/win/make_mariadb_win_dist b/win/make_mariadb_win_dist index e4cf611c0e3..a7ca8f2c9df 100644 --- a/win/make_mariadb_win_dist +++ b/win/make_mariadb_win_dist @@ -7,6 +7,55 @@ set -e +usage() +{ +cat < Date: Wed, 7 Jul 2010 13:55:09 +0200 Subject: [PATCH 276/461] Bug #54117 crash in thr_multi_unlock, temporary table This crash occured after ALTER TABLE was used on a temporary transactional table locked by LOCK TABLES. Any later attempts to execute LOCK/UNLOCK TABLES, caused the server to crash. The reason for the crash was the list of locked tables would end up having a pointer to a free'd table instance. This happened because ALTER TABLE deleted the table without also removing the table reference from the locked tables list. This patch fixes the problem by making sure ALTER TABLE also removes the table from the locked tables list. Test case added to innodb_mysql.test. --- mysql-test/suite/innodb/r/innodb_mysql.result | 8 ++++++++ mysql-test/suite/innodb/t/innodb_mysql.test | 14 ++++++++++++++ sql/sql_table.cc | 5 +++++ 3 files changed, 27 insertions(+) diff --git a/mysql-test/suite/innodb/r/innodb_mysql.result b/mysql-test/suite/innodb/r/innodb_mysql.result index ba37a46b62a..8765f58b120 100644 --- a/mysql-test/suite/innodb/r/innodb_mysql.result +++ b/mysql-test/suite/innodb/r/innodb_mysql.result @@ -2499,4 +2499,12 @@ ORDER BY f1 DESC LIMIT 5; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range f2,f4 f4 1 NULL 11 Using where DROP TABLE t1; +# +# Bug#54117 crash in thr_multi_unlock, temporary table +# +CREATE TEMPORARY TABLE t1(a INT) ENGINE = InnoDB; +LOCK TABLES t1 READ; +ALTER TABLE t1 COMMENT 'test'; +UNLOCK TABLES; +DROP TABLE t1; End of 5.1 tests diff --git a/mysql-test/suite/innodb/t/innodb_mysql.test b/mysql-test/suite/innodb/t/innodb_mysql.test index d802b04487e..80f14d32eb8 100644 --- a/mysql-test/suite/innodb/t/innodb_mysql.test +++ b/mysql-test/suite/innodb/t/innodb_mysql.test @@ -737,4 +737,18 @@ ORDER BY f1 DESC LIMIT 5; DROP TABLE t1; + +--echo # +--echo # Bug#54117 crash in thr_multi_unlock, temporary table +--echo # + +CREATE TEMPORARY TABLE t1(a INT) ENGINE = InnoDB; + +LOCK TABLES t1 READ; +ALTER TABLE t1 COMMENT 'test'; +UNLOCK TABLES; + +DROP TABLE t1; + + --echo End of 5.1 tests diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 50045ec6d90..6de461574d8 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -7387,6 +7387,11 @@ view_err: mysql_unlock_tables(thd, thd->lock); thd->lock=0; } + /* + If LOCK TABLES list is not empty and contains this table, + unlock the table and remove the table from this list. + */ + mysql_lock_remove(thd, thd->locked_tables, table, FALSE); /* Remove link to old table and rename the new one */ close_temporary_table(thd, table, 1, 1); /* Should pass the 'new_name' as we store table name in the cache */ From b2318bce9e8ed93d4566896c05806c6bf547b54f Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Wed, 7 Jul 2010 20:13:53 +0300 Subject: [PATCH 277/461] Merge the fix for Bug#49238 from SVN (without the unrelated whitespace changes): ------------------------------------------------------------------------ r7009 | jyang | 2010-04-29 20:44:56 +0300 (Thu, 29 Apr 2010) | 6 lines branches/5.0: Port fix for bug #49238 (Creating/Dropping a temporary table while at 1023 transactions will cause assert) from 5.1 to branches/5.1. Separate action for return value DB_TOO_MANY_CONCURRENT_TRXS from that of DB_MUST_GET_MORE_FILE_SPACE in row_drop_table_for_mysql(). ------------------------------------------------------------------------ --- innobase/row/row0mysql.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 75c54cec4b3..f636b505b6b 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -3335,20 +3335,13 @@ fputs(" InnoDB: You are trying to drop table ", stderr); err = trx->error_state; - if (err != DB_SUCCESS) { - ut_a(err == DB_OUT_OF_FILE_SPACE); - - err = DB_MUST_GET_MORE_FILE_SPACE; - - row_mysql_handle_errors(&err, trx, thr, NULL); - - ut_error; - } else { + switch (err) { ibool is_path; const char* name_or_path; + case DB_SUCCESS: space_id = table->space; - + if (table->dir_path_of_temp_table != NULL) { dir_path_of_temp_table = mem_strdup(table->dir_path_of_temp_table); @@ -3407,7 +3400,27 @@ fputs(" InnoDB: You are trying to drop table ", stderr); err = DB_ERROR; } } + break; + + case DB_TOO_MANY_CONCURRENT_TRXS: + /* Cannot even find a free slot for the + the undo log. We can directly exit here + and return the DB_TOO_MANY_CONCURRENT_TRXS + error. */ + break; + + case DB_OUT_OF_FILE_SPACE: + err = DB_MUST_GET_MORE_FILE_SPACE; + + row_mysql_handle_errors(&err, trx, thr, NULL); + + /* Fall through to raise error */ + + default: + /* No other possible error returns */ + ut_error; } + funct_exit: trx_commit_for_mysql(trx); From 0469e7df7ff4251c1afb8a832b34f84a74d4988f Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Wed, 7 Jul 2010 20:51:30 +0300 Subject: [PATCH 278/461] Add the innodb_plugin tests to "make dist". --- mysql-test/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 06aea68b52d..13e2388858f 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -100,6 +100,8 @@ TEST_DIRS = t r include std_data std_data/parts collections \ suite/rpl_ndb suite/rpl_ndb/t suite/rpl_ndb/r \ suite/parts suite/parts/t suite/parts/r suite/parts/inc \ suite/innodb suite/innodb/t suite/innodb/r suite/innodb/include \ + suite/innodb_plugin suite/innodb_plugin/t suite/innodb_plugin/r \ + suite/innodb_plugin/include \ suite/engines suite/engines/funcs suite/engines/iuds suite/engines/rr_trx \ suite/engines/funcs/r suite/engines/funcs/t suite/engines/iuds/r \ suite/engines/iuds/t suite/engines/rr_trx/include suite/engines/rr_trx/r \ From 2f570f7ce3a41d5bb99ce454c88e3e321751fc49 Mon Sep 17 00:00:00 2001 From: sunanda Date: Wed, 7 Jul 2010 20:34:50 +0200 Subject: [PATCH 279/461] rko Mdkeld change, revision 3351.14.134 add innodb_plugin to mysql-test-run default suites was not complete. Bootstrap failed to pick up necessary files needed by test and hence all tests failed. --- mysql-test/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 06aea68b52d..066c8d53c14 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -100,6 +100,7 @@ TEST_DIRS = t r include std_data std_data/parts collections \ suite/rpl_ndb suite/rpl_ndb/t suite/rpl_ndb/r \ suite/parts suite/parts/t suite/parts/r suite/parts/inc \ suite/innodb suite/innodb/t suite/innodb/r suite/innodb/include \ + suite/innodb_plugin suite/innodb_plugin/t suite/innodb_plugin/r suite/innodb_plugin/include \ suite/engines suite/engines/funcs suite/engines/iuds suite/engines/rr_trx \ suite/engines/funcs/r suite/engines/funcs/t suite/engines/iuds/r \ suite/engines/iuds/t suite/engines/rr_trx/include suite/engines/rr_trx/r \ From 625ae7185abcfc7042be225d4f8ef77806fc0803 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 8 Jul 2010 10:44:26 +0800 Subject: [PATCH 280/461] Postfix bug#48321 Fix the memory leak --- sql/log_event.cc | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/sql/log_event.cc b/sql/log_event.cc index 0e4d4bd512b..93d170e1510 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -2396,6 +2396,8 @@ bool Query_log_event::write(IO_CACHE* file) Query_log_event::Query_log_event() :Log_event(), data_buf(0) { + memset(&user, 0, sizeof(user)); + memset(&host, 0, sizeof(host)); } @@ -2438,6 +2440,9 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg, { time_t end_time; + memset(&user, 0, sizeof(user)); + memset(&host, 0, sizeof(host)); + error_code= errcode; time(&end_time); @@ -2783,13 +2788,13 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, CHECK_SPACE(pos, end, 1); user.length= *pos++; CHECK_SPACE(pos, end, user.length); - user.str= my_strndup((const char *)pos, user.length, MYF(0)); + user.str= (char *)pos; pos+= user.length; CHECK_SPACE(pos, end, 1); host.length= *pos++; CHECK_SPACE(pos, end, host.length); - host.str= my_strndup((const char *)pos, host.length, MYF(0)); + host.str= (char *)pos; pos+= host.length; } default: @@ -2805,12 +2810,16 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, time_zone_len + 1 + data_len + 1 + QUERY_CACHE_FLAGS_SIZE + + user.length + 1 + + host.length + 1 + db_len + 1, MYF(MY_WME)))) #else if (!(start= data_buf = (Log_event::Byte*) my_malloc(catalog_len + 1 + time_zone_len + 1 + - data_len + 1, + data_len + 1 + + user.length + 1 + + host.length + 1, MYF(MY_WME)))) #endif DBUG_VOID_RETURN; @@ -2833,6 +2842,11 @@ Query_log_event::Query_log_event(const char* buf, uint event_len, if (time_zone_len) copy_str_and_move(&time_zone_str, &start, time_zone_len); + if (user.length > 0) + copy_str_and_move((const char **)&(user.str), &start, user.length); + if (host.length > 0) + copy_str_and_move((const char **)&(host.str), &start, host.length); + /** if time_zone_len or catalog_len are 0, then time_zone and catalog are uninitialized at this point. shouldn't they point to the From 9edde02ebb908497a7ad12a2c9e28380d1e30531 Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Fri, 9 Jul 2010 01:09:31 +0200 Subject: [PATCH 281/461] Bug#52455: Subpar INSERT ON DUPLICATE KEY UPDATE performance with many partitions The handler function for reading one row from a specific index was not optimized in the partitioning handler since it used the default implementation. No test case since it is performance only, verified by hand. sql/ha_partition.cc: Implemented a optimized version of index_read_idx_map for the case when find flag == HA_READ_KEY_EXACT, which is the common case. sql/ha_partition.h: Declared ha_partition::index_read_idx_map --- sql/ha_partition.cc | 52 +++++++++++++++++++++++++++++++++++++++++++++ sql/ha_partition.h | 9 ++++++++ 2 files changed, 61 insertions(+) diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 60722f0100e..a87c7fbf7b8 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -4219,6 +4219,58 @@ int ha_partition::index_read_last_map(uchar *buf, const uchar *key, } +/* + Optimization of the default implementation to take advantage of dynamic + partition pruning. +*/ +int ha_partition::index_read_idx_map(uchar *buf, uint index, + const uchar *key, + key_part_map keypart_map, + enum ha_rkey_function find_flag) +{ + int error= HA_ERR_KEY_NOT_FOUND; + DBUG_ENTER("ha_partition::index_read_idx_map"); + + if (find_flag == HA_READ_KEY_EXACT) + { + uint part; + m_start_key.key= key; + m_start_key.keypart_map= keypart_map; + m_start_key.flag= find_flag; + m_start_key.length= calculate_key_len(table, index, m_start_key.key, + m_start_key.keypart_map); + + get_partition_set(table, buf, index, &m_start_key, &m_part_spec); + + /* How can it be more than one partition with the current use? */ + DBUG_ASSERT(m_part_spec.start_part == m_part_spec.end_part); + + for (part= m_part_spec.start_part; part <= m_part_spec.end_part; part++) + { + if (bitmap_is_set(&(m_part_info->used_partitions), part)) + { + error= m_file[part]->index_read_idx_map(buf, index, key, + keypart_map, find_flag); + if (error != HA_ERR_KEY_NOT_FOUND && + error != HA_ERR_END_OF_FILE) + break; + } + } + } + else + { + /* + If not only used with READ_EXACT, we should investigate if possible + to optimize for other find_flag's as well. + */ + DBUG_ASSERT(0); + /* fall back on the default implementation */ + error= handler::index_read_idx_map(buf, index, key, keypart_map, find_flag); + } + DBUG_RETURN(error); +} + + /* Read next record in a forward index scan diff --git a/sql/ha_partition.h b/sql/ha_partition.h index 9f6d9e0a5ba..d8872d37a09 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -448,6 +448,15 @@ public: virtual int index_init(uint idx, bool sorted); virtual int index_end(); + /** + @breif + Positions an index cursor to the index specified in the hanlde. Fetches the + row if available. If the key value is null, begin at first key of the + index. + */ + virtual int index_read_idx_map(uchar *buf, uint index, const uchar *key, + key_part_map keypart_map, + enum ha_rkey_function find_flag); /* These methods are used to jump to next or previous entry in the index scan. There are also methods to jump to first and last entry. From 74f23d7e8fe99700c62749251c8844deec8c97ae Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Fri, 9 Jul 2010 01:39:20 -0700 Subject: [PATCH 282/461] Fix bug #55039 Failing assertion: space_id > 0 in fil0fil.c. rb://396, approved by Sunny Bains. --- storage/innodb_plugin/dict/dict0crea.c | 18 +++++++++++++++--- storage/innodb_plugin/os/os0file.c | 12 ++++++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/storage/innodb_plugin/dict/dict0crea.c b/storage/innodb_plugin/dict/dict0crea.c index f185371bfca..09353c45c8c 100644 --- a/storage/innodb_plugin/dict/dict0crea.c +++ b/storage/innodb_plugin/dict/dict0crea.c @@ -240,17 +240,29 @@ dict_build_table_def_step( ibool is_path; mtr_t mtr; ulint space = 0; + ibool file_per_table; ut_ad(mutex_own(&(dict_sys->mutex))); table = node->table; - dict_hdr_get_new_id(&table->id, NULL, - srv_file_per_table ? &space : NULL); + /* Cache the global variable "srv_file_per_table" to + a local variable before using it. Please note + "srv_file_per_table" is not under dict_sys mutex + protection, and could be changed while executing + this function. So better to cache the current value + to a local variable, and all future reference to + "srv_file_per_table" should use this local variable. */ + file_per_table = srv_file_per_table; + + dict_hdr_get_new_id(&table->id, NULL, NULL); thr_get_trx(thr)->table_id = table->id; - if (srv_file_per_table) { + if (file_per_table) { + /* Get a new space id if srv_file_per_table is set */ + dict_hdr_get_new_id(NULL, NULL, &space); + if (UNIV_UNLIKELY(space == ULINT_UNDEFINED)) { return(DB_ERROR); } diff --git a/storage/innodb_plugin/os/os0file.c b/storage/innodb_plugin/os/os0file.c index b244e3974b3..9f937b9def2 100644 --- a/storage/innodb_plugin/os/os0file.c +++ b/storage/innodb_plugin/os/os0file.c @@ -1339,7 +1339,11 @@ try_again: /* When srv_file_per_table is on, file creation failure may not be critical to the whole instance. Do not crash the server in - case of unknown errors. */ + case of unknown errors. + Please note "srv_file_per_table" is a global variable with + no explicit synchronization protection. It could be + changed during this execution path. It might not have the + same value as the one when building the table definition */ if (srv_file_per_table) { retry = os_file_handle_error_no_exit(name, create_mode == OS_FILE_CREATE ? @@ -1426,7 +1430,11 @@ try_again: /* When srv_file_per_table is on, file creation failure may not be critical to the whole instance. Do not crash the server in - case of unknown errors. */ + case of unknown errors. + Please note "srv_file_per_table" is a global variable with + no explicit synchronization protection. It could be + changed during this execution path. It might not have the + same value as the one when building the table definition */ if (srv_file_per_table) { retry = os_file_handle_error_no_exit(name, create_mode == OS_FILE_CREATE ? From 013136364c95b7bcc5a987dd301b042f31dab1f9 Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Fri, 9 Jul 2010 14:39:47 +0400 Subject: [PATCH 283/461] Bug#54416 MAX from JOIN with HAVING returning NULL with 5.1 and Empty set The problem there is that HAVING condition evaluates const parts of condition despite the condition has references on aggregate functions. Table t1 became const tables after make_join_statistics and table1.pk = 1, HAVING is transformed into MAX(1) < 7 and taken away from HAVING. The fix is to skip evaluation of HAVING conts parts if HAVING condition has references on aggregate functions. mysql-test/r/having.result: test case mysql-test/t/having.test: test case sql/sql_select.cc: skip evaluation of HAVING conts parts if HAVING condition has references on aggregate functions. --- mysql-test/r/having.result | 16 ++++++++++++++++ mysql-test/t/having.test | 21 +++++++++++++++++++++ sql/sql_select.cc | 2 +- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/having.result b/mysql-test/r/having.result index 54293e9d02e..cd1b4ae0218 100644 --- a/mysql-test/r/having.result +++ b/mysql-test/r/having.result @@ -530,3 +530,19 @@ MAX(t2.f2) NULL DROP TABLE t1,t2; End of 5.0 tests +# +# Bug#54416 MAX from JOIN with HAVING returning NULL with 5.1 and Empty set +# +CREATE TABLE t1 (f1 INT(11), f2 VARCHAR(1), PRIMARY KEY (f1)); +INSERT INTO t1 VALUES (1,'f'); +CREATE TABLE t2 (f1 INT(11), f2 VARCHAR(1)); +INSERT INTO t2 VALUES (2,'m'); +INSERT INTO t2 VALUES (3,'m'); +INSERT INTO t2 VALUES (11,NULL); +INSERT INTO t2 VALUES (12,'k'); +SELECT MAX(t1.f1) field1 +FROM t1 JOIN t2 ON t2.f2 LIKE 'x' +HAVING field1 < 7; +field1 +DROP TABLE t1,t2; +End of 5.1 tests diff --git a/mysql-test/t/having.test b/mysql-test/t/having.test index 65bf9518a5c..c808e747523 100644 --- a/mysql-test/t/having.test +++ b/mysql-test/t/having.test @@ -544,3 +544,24 @@ ORDER BY t1.f2; DROP TABLE t1,t2; --echo End of 5.0 tests + +--echo # +--echo # Bug#54416 MAX from JOIN with HAVING returning NULL with 5.1 and Empty set +--echo # + +CREATE TABLE t1 (f1 INT(11), f2 VARCHAR(1), PRIMARY KEY (f1)); +INSERT INTO t1 VALUES (1,'f'); + +CREATE TABLE t2 (f1 INT(11), f2 VARCHAR(1)); +INSERT INTO t2 VALUES (2,'m'); +INSERT INTO t2 VALUES (3,'m'); +INSERT INTO t2 VALUES (11,NULL); +INSERT INTO t2 VALUES (12,'k'); + +SELECT MAX(t1.f1) field1 +FROM t1 JOIN t2 ON t2.f2 LIKE 'x' +HAVING field1 < 7; + +DROP TABLE t1,t2; + +--echo End of 5.1 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index b20726fc151..fe391b50bb9 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1132,7 +1132,7 @@ JOIN::optimize() elements may be lost during further having condition transformation in JOIN::exec. */ - if (having && const_table_map) + if (having && const_table_map && !having->with_sum_func) { having->update_used_tables(); having= remove_eq_conds(thd, having, &having_value); From 70b02d3aedb5c7ddf84720d0dd54e6f74c797788 Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Fri, 9 Jul 2010 13:15:26 +0200 Subject: [PATCH 284/461] Bug#52517: Regression in ROW level replication performance with partitions In bug-28430 HA_PRIMARY_KEY_REQUIRED_FOR_POSITION was disabled in the partitioning engine in the first patch, That bug was later fixed a second time, but that flag was not removed. No need to disable this flag, as it leads to bad choise in row replication. sql/ha_partition.h: Not disabling HA_PRIMARY_KEY_REQUIRED_FOR_POSITION flag. Updated comment (has nothing to do with hidden key. sql/handler.h: Updated comments to about HA_PRIMARY_KEY_REQUIRED_FOR_POSITION. --- sql/ha_partition.h | 6 +----- sql/handler.h | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/sql/ha_partition.h b/sql/ha_partition.h index 9f6d9e0a5ba..351d3d6b247 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -53,8 +53,7 @@ typedef struct st_ha_data_partition HA_CAN_FULLTEXT | \ HA_DUPLICATE_POS | \ HA_CAN_SQL_HANDLER | \ - HA_CAN_INSERT_DELAYED | \ - HA_PRIMARY_KEY_REQUIRED_FOR_POSITION) + HA_CAN_INSERT_DELAYED) class ha_partition :public handler { private: @@ -766,9 +765,6 @@ public: HA_PRIMARY_KEY_REQUIRED_FOR_POSITION: Does the storage engine need a PK for position? - Used with hidden primary key in InnoDB. - Hidden primary keys cannot be supported by partitioning, since the - partitioning expressions columns must be a part of the primary key. (InnoDB) HA_FILE_BASED is always set for partition handler since we use a diff --git a/sql/handler.h b/sql/handler.h index d9dfd4f0707..3c7cba747fa 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -93,7 +93,10 @@ #define HA_PRIMARY_KEY_IN_READ_INDEX (1 << 15) /* If HA_PRIMARY_KEY_REQUIRED_FOR_POSITION is set, it means that to position() - uses a primary key. Without primary key, we can't call position(). + uses a primary key given by the record argument. + Without primary key, we can't call position(). + If not set, the position is returned as the current rows position + regardless of what argument is given. */ #define HA_PRIMARY_KEY_REQUIRED_FOR_POSITION (1 << 16) #define HA_CAN_RTREEKEYS (1 << 17) @@ -1446,10 +1449,9 @@ public: virtual int rnd_next(uchar *buf)=0; virtual int rnd_pos(uchar * buf, uchar *pos)=0; /** - One has to use this method when to find - random position by record as the plain - position() call doesn't work for some - handlers for random position. + This function only works for handlers having + HA_PRIMARY_KEY_REQUIRED_FOR_POSITION set. + It will return the row with the PK given in the record argument. */ virtual int rnd_pos_by_record(uchar *record) { @@ -1467,6 +1469,12 @@ public: { return HA_ERR_WRONG_COMMAND; } virtual ha_rows records_in_range(uint inx, key_range *min_key, key_range *max_key) { return (ha_rows) 10; } + /* + If HA_PRIMARY_KEY_REQUIRED_FOR_POSITION is set, then it sets ref + (reference to the row, aka position, with the primary key given in + the record). + Otherwise it set ref to the current row. + */ virtual void position(const uchar *record)=0; virtual int info(uint)=0; // see my_base.h for full description virtual void get_dynamic_partition_info(PARTITION_INFO *stat_info, From cd37b73fe5107098c669fcbf569e9f20de013141 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 9 Jul 2010 08:37:51 -0300 Subject: [PATCH 285/461] Bug#53445: Build with -Wall and fix warnings that it generates Introduce a MySQL maintainer/developer mode that enables a set of warning options for the C/C++ compiler. This mode is intended to help improve the overall quality of the code. The warning options are: C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Werror" CXX_WARNINGS="$C_WARNINGS -Wno-unused-parameter" Since -Wall is essentially a moving target, autoconf checks are not run with warning options enabled, in particualr -Werror. This decision might be revisited in the future. The patch also fixes a mistake in the makefiles, where automake CXXFLAGS would be set to CFLAGS. config/ac-macros/maintainer.m4: Add a set of default compiler flags used when in maintainer mode. configure.in: Hook into the maintainer mode. Disabled by default. --- config/ac-macros/maintainer.m4 | 66 +++++++++++++++++++++++++++++++ configure.in | 9 +++++ plugin/daemon_example/Makefile.am | 4 +- storage/archive/Makefile.am | 4 +- storage/blackhole/Makefile.am | 4 +- storage/csv/Makefile.am | 4 +- storage/example/Makefile.am | 4 +- storage/federated/Makefile.am | 4 +- storage/ibmdb2i/Makefile.am | 4 +- storage/innobase/Makefile.am | 4 +- storage/innodb_plugin/Makefile.am | 4 +- 11 files changed, 93 insertions(+), 18 deletions(-) create mode 100644 config/ac-macros/maintainer.m4 diff --git a/config/ac-macros/maintainer.m4 b/config/ac-macros/maintainer.m4 new file mode 100644 index 00000000000..6aa1d166f2a --- /dev/null +++ b/config/ac-macros/maintainer.m4 @@ -0,0 +1,66 @@ +# +# Control aspects of the development environment which are +# specific to MySQL maintainers and developers. +# +AC_DEFUN([MY_MAINTAINER_MODE], [ + AC_MSG_CHECKING([whether to enable the maintainer-specific development environment]) + AC_ARG_ENABLE([mysql-maintainer-mode], + [AS_HELP_STRING([--enable-mysql-maintainer-mode], + [Enable a MySQL maintainer-specific development environment])], + [USE_MYSQL_MAINTAINER_MODE=$enableval], + [USE_MYSQL_MAINTAINER_MODE=no]) + AC_MSG_RESULT([$USE_MYSQL_MAINTAINER_MODE]) +]) + +# Set warning options required under maintainer mode. +AC_DEFUN([MY_MAINTAINER_MODE_WARNINGS], [ + # Setup GCC warning options. + AS_IF([test "$GCC" = "yes"], [ + C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Werror" + CXX_WARNINGS="${C_WARNINGS} -Wno-unused-parameter" + ]) + + # Test whether the warning options work. + # Test C options + AS_IF([test -n "$C_WARNINGS"], [ + save_CFLAGS="$CFLAGS" + AC_MSG_CHECKING([whether to use C warning options ${C_WARNINGS}]) + AC_LANG_PUSH(C) + CFLAGS="$CFLAGS ${C_WARNINGS}" + AC_LANG_WERROR + AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [myac_c_warning_flags=yes], + [myac_c_warning_flags=no]) + AC_LANG_POP() + AC_MSG_RESULT([$myac_c_warning_flags]) + CFLAGS="$save_CFLAGS" + ]) + + # Test C++ options + AS_IF([test -n "$CXX_WARNINGS"], [ + save_CXXFLAGS="$CXXFLAGS" + AC_MSG_CHECKING([whether to use C++ warning options ${CXX_WARNINGS}]) + AC_LANG_PUSH(C++) + CXXFLAGS="$CXXFLAGS ${CXX_WARNINGS}" + AC_LANG_WERROR + AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [myac_cxx_warning_flags=yes], + [myac_cxx_warning_flags=no]) + AC_LANG_POP() + AC_MSG_RESULT([$myac_cxx_warning_flags]) + CXXFLAGS="$save_CXXFLAGS" + ]) + + # Set compile flag variables. + AS_IF([test "$myac_c_warning_flags" = "yes"], [ + AM_CFLAGS="${AM_CFLAGS} ${C_WARNINGS}" + AC_SUBST([AM_CFLAGS])]) + AS_IF([test "$myac_cxx_warning_flags" = "yes"], [ + AM_CXXFLAGS="${AM_CXXFLAGS} ${CXX_WARNINGS}" + AC_SUBST([AM_CXXFLAGS])]) +]) + + +# Set compiler flags required under maintainer mode. +AC_DEFUN([MY_MAINTAINER_MODE_SETUP], [ + AS_IF([test "$USE_MYSQL_MAINTAINER_MODE" = "yes"], + [MY_MAINTAINER_MODE_WARNINGS]) +]) diff --git a/configure.in b/configure.in index d47bf975fdd..bc1d7df6703 100644 --- a/configure.in +++ b/configure.in @@ -65,6 +65,7 @@ MYSQL_TCP_PORT_DEFAULT=3306 MYSQL_UNIX_ADDR_DEFAULT="/tmp/mysql.sock" dnl Include m4 +sinclude(config/ac-macros/maintainer.m4) sinclude(config/ac-macros/alloca.m4) sinclude(config/ac-macros/check_cpu.m4) sinclude(config/ac-macros/character_sets.m4) @@ -102,6 +103,8 @@ AC_SUBST(SHARED_LIB_MAJOR_VERSION) AC_SUBST(SHARED_LIB_VERSION) AC_SUBST(AVAILABLE_LANGUAGES) +# Whether the maintainer mode should be enabled. +MY_MAINTAINER_MODE # Canonicalize the configuration name. @@ -2889,6 +2892,12 @@ do done AC_SUBST(sql_union_dirs) +# +# Setup maintainer mode options by the end to not disturb +# system and other checks. +# +MY_MAINTAINER_MODE_SETUP + # Some usefull subst AC_SUBST(CC) AC_SUBST(GXX) diff --git a/plugin/daemon_example/Makefile.am b/plugin/daemon_example/Makefile.am index c5414cd46c7..02310699396 100644 --- a/plugin/daemon_example/Makefile.am +++ b/plugin/daemon_example/Makefile.am @@ -27,14 +27,14 @@ INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include \ EXTRA_LTLIBRARIES = libdaemon_example.la pkgplugin_LTLIBRARIES = @plugin_daemon_example_shared_target@ libdaemon_example_la_LDFLAGS = -module -rpath $(pkgplugindir) -libdaemon_example_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN +libdaemon_example_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN libdaemon_example_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN libdaemon_example_la_SOURCES = daemon_example.cc EXTRA_LIBRARIES = libdaemon_example.a noinst_LIBRARIES = @plugin_daemon_example_static_target@ -libdaemon_example_a_CXXFLAGS = $(AM_CFLAGS) +libdaemon_example_a_CXXFLAGS = $(AM_CXXFLAGS) libdaemon_example_a_CFLAGS = $(AM_CFLAGS) libdaemon_example_a_SOURCES= daemon_example.cc diff --git a/storage/archive/Makefile.am b/storage/archive/Makefile.am index d092f091798..94e98c468ad 100644 --- a/storage/archive/Makefile.am +++ b/storage/archive/Makefile.am @@ -36,14 +36,14 @@ noinst_PROGRAMS = archive_test archive_reader EXTRA_LTLIBRARIES = ha_archive.la pkgplugin_LTLIBRARIES = @plugin_archive_shared_target@ ha_archive_la_LDFLAGS = -module -rpath $(pkgplugindir) -ha_archive_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN +ha_archive_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_archive_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_archive_la_SOURCES = ha_archive.cc azio.c EXTRA_LIBRARIES = libarchive.a noinst_LIBRARIES = @plugin_archive_static_target@ -libarchive_a_CXXFLAGS = $(AM_CFLAGS) +libarchive_a_CXXFLAGS = $(AM_CXXFLAGS) libarchive_a_CFLAGS = $(AM_CFLAGS) libarchive_a_SOURCES = ha_archive.cc azio.c diff --git a/storage/blackhole/Makefile.am b/storage/blackhole/Makefile.am index db4f67cf847..2d27261b671 100644 --- a/storage/blackhole/Makefile.am +++ b/storage/blackhole/Makefile.am @@ -35,14 +35,14 @@ noinst_HEADERS = ha_blackhole.h EXTRA_LTLIBRARIES = ha_blackhole.la pkgplugin_LTLIBRARIES = @plugin_blackhole_shared_target@ ha_blackhole_la_LDFLAGS=-module -rpath $(pkgplugindir) -ha_blackhole_la_CXXFLAGS=$(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN +ha_blackhole_la_CXXFLAGS=$(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_blackhole_la_CFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_blackhole_la_SOURCES=ha_blackhole.cc EXTRA_LIBRARIES = libblackhole.a noinst_LIBRARIES = @plugin_blackhole_static_target@ -libblackhole_a_CXXFLAGS=$(AM_CFLAGS) +libblackhole_a_CXXFLAGS=$(AM_CXXFLAGS) libblackhole_a_CFLAGS = $(AM_CFLAGS) libblackhole_a_SOURCES= ha_blackhole.cc diff --git a/storage/csv/Makefile.am b/storage/csv/Makefile.am index 07ffac88a96..3a00ae85e20 100644 --- a/storage/csv/Makefile.am +++ b/storage/csv/Makefile.am @@ -32,12 +32,12 @@ noinst_HEADERS = ha_tina.h transparent_file.h EXTRA_LTLIBRARIES = ha_csv.la pkglib_LTLIBRARIES = @plugin_csv_shared_target@ ha_csv_la_LDFLAGS = -module -rpath $(MYSQLLIBdir) -ha_csv_la_CXXFLAGS = $(AM_CFLAGS) -DMYSQL_PLUGIN +ha_csv_la_CXXFLAGS = $(AM_CXXFLAGS) -DMYSQL_PLUGIN ha_csv_la_SOURCES = transparent_file.cc ha_tina.cc EXTRA_LIBRARIES = libcsv.a noinst_LIBRARIES = @plugin_csv_static_target@ -libcsv_a_CXXFLAGS = $(AM_CFLAGS) +libcsv_a_CXXFLAGS = $(AM_CXXFLAGS) libcsv_a_SOURCES = transparent_file.cc ha_tina.cc EXTRA_DIST = CMakeLists.txt plug.in diff --git a/storage/example/Makefile.am b/storage/example/Makefile.am index 4b2f165377c..1c87adbbb4c 100644 --- a/storage/example/Makefile.am +++ b/storage/example/Makefile.am @@ -35,14 +35,14 @@ noinst_HEADERS = ha_example.h EXTRA_LTLIBRARIES = ha_example.la pkgplugin_LTLIBRARIES = @plugin_example_shared_target@ ha_example_la_LDFLAGS = -module -rpath $(pkgplugindir) -ha_example_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN +ha_example_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_example_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_example_la_SOURCES = ha_example.cc EXTRA_LIBRARIES = libexample.a noinst_LIBRARIES = @plugin_example_static_target@ -libexample_a_CXXFLAGS = $(AM_CFLAGS) +libexample_a_CXXFLAGS = $(AM_CXXFLAGS) libexample_a_CFLAGS = $(AM_CFLAGS) libexample_a_SOURCES= ha_example.cc diff --git a/storage/federated/Makefile.am b/storage/federated/Makefile.am index 64ea0207017..eab8c0c3929 100644 --- a/storage/federated/Makefile.am +++ b/storage/federated/Makefile.am @@ -35,14 +35,14 @@ noinst_HEADERS = ha_federated.h EXTRA_LTLIBRARIES = ha_federated.la pkgplugin_LTLIBRARIES = @plugin_federated_shared_target@ ha_federated_la_LDFLAGS = -module -rpath $(pkgplugindir) -ha_federated_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN +ha_federated_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_federated_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_federated_la_SOURCES = ha_federated.cc EXTRA_LIBRARIES = libfederated.a noinst_LIBRARIES = @plugin_federated_static_target@ -libfederated_a_CXXFLAGS = $(AM_CFLAGS) +libfederated_a_CXXFLAGS = $(AM_CXXFLAGS) libfederated_a_CFLAGS = $(AM_CFLAGS) libfederated_a_SOURCES= ha_federated.cc diff --git a/storage/ibmdb2i/Makefile.am b/storage/ibmdb2i/Makefile.am index 768ca15f4cf..b9602e392e0 100644 --- a/storage/ibmdb2i/Makefile.am +++ b/storage/ibmdb2i/Makefile.am @@ -34,7 +34,7 @@ EXTRA_LTLIBRARIES = ha_ibmdb2i.la pkgplugin_LTLIBRARIES = @plugin_ibmdb2i_shared_target@ ha_ibmdb2i_la_LIBADD = -liconv ha_ibmdb2i_la_LDFLAGS = -module -rpath $(MYSQLLIBdir) -ha_ibmdb2i_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN +ha_ibmdb2i_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_ibmdb2i_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_ibmdb2i_la_SOURCES = ha_ibmdb2i.cc db2i_ileBridge.cc db2i_conversion.cc \ db2i_blobCollection.cc db2i_file.cc db2i_charsetSupport.cc \ @@ -44,7 +44,7 @@ ha_ibmdb2i_la_SOURCES = ha_ibmdb2i.cc db2i_ileBridge.cc db2i_conversion.cc \ EXTRA_LIBRARIES = libibmdb2i.a noinst_LIBRARIES = @plugin_ibmdb2i_static_target@ -libibmdb2i_a_CXXFLAGS = $(AM_CFLAGS) +libibmdb2i_a_CXXFLAGS = $(AM_CXXFLAGS) libibmdb2i_a_CFLAGS = $(AM_CFLAGS) libibmdb2i_a_SOURCES= $(ha_ibmdb2i_la_SOURCES) diff --git a/storage/innobase/Makefile.am b/storage/innobase/Makefile.am index a597e3c24e4..2c93a3a409a 100644 --- a/storage/innobase/Makefile.am +++ b/storage/innobase/Makefile.am @@ -156,14 +156,14 @@ libinnobase_a_SOURCES= btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c \ ut/ut0ut.c ut/ut0vec.c ut/ut0wqueue.c \ handler/ha_innodb.cc -libinnobase_a_CXXFLAGS= $(AM_CFLAGS) +libinnobase_a_CXXFLAGS= $(AM_CXXFLAGS) libinnobase_a_CFLAGS= $(AM_CFLAGS) EXTRA_LTLIBRARIES= ha_innodb.la pkgplugin_LTLIBRARIES= @plugin_innobase_shared_target@ ha_innodb_la_LDFLAGS= -module -rpath $(pkgplugindir) -ha_innodb_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) +ha_innodb_la_CXXFLAGS= $(AM_CXXFLAGS) $(INNODB_DYNAMIC_CFLAGS) ha_innodb_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) ha_innodb_la_SOURCES= $(libinnobase_a_SOURCES) diff --git a/storage/innodb_plugin/Makefile.am b/storage/innodb_plugin/Makefile.am index 1d0dd936895..f11e5db01f4 100644 --- a/storage/innodb_plugin/Makefile.am +++ b/storage/innodb_plugin/Makefile.am @@ -325,14 +325,14 @@ libinnobase_a_SOURCES= \ ut/ut0vec.c \ ut/ut0wqueue.c -libinnobase_a_CXXFLAGS= $(AM_CFLAGS) +libinnobase_a_CXXFLAGS= $(AM_CXXFLAGS) libinnobase_a_CFLAGS= $(AM_CFLAGS) EXTRA_LTLIBRARIES= ha_innodb_plugin.la pkgplugin_LTLIBRARIES= @plugin_innodb_plugin_shared_target@ ha_innodb_plugin_la_LDFLAGS= -module -rpath $(pkgplugindir) -ha_innodb_plugin_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) +ha_innodb_plugin_la_CXXFLAGS= $(AM_CXXFLAGS) $(INNODB_DYNAMIC_CFLAGS) ha_innodb_plugin_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) ha_innodb_plugin_la_SOURCES= $(libinnobase_a_SOURCES) From 11fae04527098cb6c266eae41188504bd22a5b52 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 9 Jul 2010 09:00:17 -0300 Subject: [PATCH 286/461] Bug#45288: pb2 returns a lot of compilation warnings on linux Although the C standard mandates that sprintf return the number of bytes written, some very ancient systems (i.e. SunOS 4) returned a pointer to the buffer instead. Since these systems are not supported anymore and are hopefully long dead by now, simply remove the portability wrapper that dealt with this discrepancy. The autoconf check was causing trouble with GCC. --- client/mysqlbinlog.cc | 2 +- client/mysqlcheck.c | 3 +-- client/sql_string.cc | 5 +++-- configure.in | 34 ------------------------------- include/my_global.h | 11 ---------- sql-common/my_time.c | 23 +++++++-------------- sql/field.cc | 10 ++++----- sql/item_timefunc.cc | 24 ++++++++-------------- sql/log_event.cc | 32 ++++++++++++++--------------- sql/my_decimal.cc | 8 ++++---- sql/partition_info.cc | 6 +++--- sql/protocol.cc | 24 ++++++++-------------- sql/sql_acl.cc | 10 ++++----- sql/sql_analyse.cc | 10 ++++----- sql/sql_show.cc | 2 +- sql/sql_string.cc | 5 +++-- storage/federated/ha_federated.cc | 17 ++++++---------- strings/decimal.c | 2 +- tests/mysql_client_test.c | 26 +++++++++++------------ 19 files changed, 90 insertions(+), 164 deletions(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 30bdb58153f..dec3f142798 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -437,7 +437,7 @@ Exit_status Load_log_processor::process_first_event(const char *bname, ptr= fname + target_dir_name_len; memcpy(ptr,bname,blen); ptr+= blen; - ptr+= my_sprintf(ptr, (ptr, "-%x", file_id)); + ptr+= sprintf(ptr, "-%x", file_id); if ((file= create_unique_file(fname,ptr)) < 0) { diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c index 4183ab1dd5e..78c4b79085e 100644 --- a/client/mysqlcheck.c +++ b/client/mysqlcheck.c @@ -703,8 +703,7 @@ static int handle_request_for_tables(char *tables, uint length) if (opt_all_in_1) { /* No backticks here as we added them before */ - query_length= my_sprintf(query, - (query, "%s TABLE %s %s", op, tables, options)); + query_length= sprintf(query, "%s TABLE %s %s", op, tables, options); } else { diff --git a/client/sql_string.cc b/client/sql_string.cc index dc6147b563f..50fb4a5b777 100644 --- a/client/sql_string.cc +++ b/client/sql_string.cc @@ -122,7 +122,8 @@ bool String::set(double num,uint decimals, CHARSET_INFO *cs) str_charset=cs; if (decimals >= NOT_FIXED_DEC) { - uint32 len= my_sprintf(buff,(buff, "%.15g",num));// Enough for a DATETIME + // Enough for a DATETIME + uint32 len= sprintf(buff, "%.15g", num); return copy(buff, len, &my_charset_latin1, cs, &dummy_errors); } #ifdef HAVE_FCONVERT @@ -674,7 +675,7 @@ void String::qs_append(const char *str, uint32 len) void String::qs_append(double d) { char *buff = Ptr + str_length; - str_length+= my_sprintf(buff, (buff, "%.15g", d)); + str_length+= sprintf(buff, buff, "%.15g", d); } void String::qs_append(double *d) diff --git a/configure.in b/configure.in index bc1d7df6703..0264c351b07 100644 --- a/configure.in +++ b/configure.in @@ -278,40 +278,6 @@ AC_CHECK_PROGS(YACC, ['bison -y -p MYSQL']) AC_CHECK_PROG(PDFMANUAL, pdftex, manual.pdf) AC_CHECK_PROG(DVIS, tex, manual.dvi) -#check the return type of sprintf -AC_MSG_CHECKING("return type of sprintf") -AC_TRY_RUN([ - int main() - { - char* s = "hello"; - char buf[6]; - if((int)sprintf(buf, s) == strlen(s)) - return 0; - - return -1; - } - ], - [AC_DEFINE(SPRINTF_RETURNS_INT, [1], [POSIX sprintf]) - AC_MSG_RESULT("int")], - [AC_TRY_RUN([ - int main() - { - char* s = "hello"; - char buf[6]; - if((char*)sprintf(buf,s) == buf + strlen(s)) - return 0; - return -1; - } ], - [AC_DEFINE(SPRINTF_RETURNS_PTR, [1], [Broken sprintf]) - AC_MSG_RESULT("ptr")], - [AC_DEFINE(SPRINTF_RETURNS_GARBAGE, [1], [Broken sprintf]) - AC_MSG_RESULT("garbage")] - )], - # Cross compile, assume POSIX - [AC_DEFINE(SPRINTF_RETURNS_INT, [1], [POSIX sprintf]) - AC_MSG_RESULT("int (we assume)")] -) - AC_PATH_PROG(uname_prog, uname, no) # We should go through this and put all the explictly system dependent diff --git a/include/my_global.h b/include/my_global.h index 572df6a584d..f03ed665d5a 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -1467,17 +1467,6 @@ do { doubleget_union _tmp; \ #endif /* WORDS_BIGENDIAN */ -/* sprintf does not always return the number of bytes :- */ -#ifdef SPRINTF_RETURNS_INT -#define my_sprintf(buff,args) sprintf args -#else -#ifdef SPRINTF_RETURNS_PTR -#define my_sprintf(buff,args) ((int)(sprintf args - buff)) -#else -#define my_sprintf(buff,args) ((ulong) sprintf args, (ulong) strlen(buff)) -#endif -#endif - #ifndef THREAD #define thread_safe_increment(V,L) (V)++ #define thread_safe_decrement(V,L) (V)-- diff --git a/sql-common/my_time.c b/sql-common/my_time.c index 95078a50097..c4e917801d5 100644 --- a/sql-common/my_time.c +++ b/sql-common/my_time.c @@ -1024,30 +1024,21 @@ void set_zero_time(MYSQL_TIME *tm, enum enum_mysql_timestamp_type time_type) int my_time_to_str(const MYSQL_TIME *l_time, char *to) { uint extra_hours= 0; - return my_sprintf(to, (to, "%s%02u:%02u:%02u", - (l_time->neg ? "-" : ""), - extra_hours+ l_time->hour, - l_time->minute, - l_time->second)); + return sprintf(to, "%s%02u:%02u:%02u", (l_time->neg ? "-" : ""), + extra_hours+ l_time->hour, l_time->minute, l_time->second); } int my_date_to_str(const MYSQL_TIME *l_time, char *to) { - return my_sprintf(to, (to, "%04u-%02u-%02u", - l_time->year, - l_time->month, - l_time->day)); + return sprintf(to, "%04u-%02u-%02u", + l_time->year, l_time->month, l_time->day); } int my_datetime_to_str(const MYSQL_TIME *l_time, char *to) { - return my_sprintf(to, (to, "%04u-%02u-%02u %02u:%02u:%02u", - l_time->year, - l_time->month, - l_time->day, - l_time->hour, - l_time->minute, - l_time->second)); + return sprintf(to, "%04u-%02u-%02u %02u:%02u:%02u", + l_time->year, l_time->month, l_time->day, + l_time->hour, l_time->minute, l_time->second); } diff --git a/sql/field.cc b/sql/field.cc index 2229bc19b3c..c648b53e139 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -2277,7 +2277,7 @@ int Field_decimal::store(double nr) snprintf(buff,sizeof(buff)-1, "%.*f",(int) dec,nr); length= strlen(buff); #else - length= my_sprintf(buff,(buff,"%.*f",dec,nr)); + length= sprintf(buff, "%.*f", dec, nr); #endif if (length > field_length) @@ -4259,7 +4259,7 @@ String *Field_float::val_str(String *val_buffer, snprintf(to,to_length-1,"%.*f",dec,nr); to=strend(to); #else - to+= my_sprintf(to,(to,"%.*f",dec,nr)); + to+= sprintf(to, "%.*f", dec, nr); #endif #endif } @@ -4617,7 +4617,7 @@ String *Field_double::val_str(String *val_buffer, snprintf(to,to_length-1,"%.*f",dec,nr); to=strend(to); #else - to+= my_sprintf(to,(to,"%.*f",dec,nr)); + to+= sprintf(to, "%.*f", dec, nr); #endif #endif } @@ -6461,7 +6461,7 @@ int Field_str::store(double nr) /* Limit precision to DBL_DIG to avoid garbage past significant digits */ set_if_smaller(digits, DBL_DIG); - length= (uint) my_sprintf(buff, (buff, "%-.*g", digits, nr)); + length= (uint) sprintf(buff, "%-.*g", digits, nr); #ifdef __WIN__ /* @@ -10419,7 +10419,7 @@ Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code, { /* DBL_DIG is enough to print '-[digits].E+###' */ char str_nr[DBL_DIG + 8]; - uint str_len= my_sprintf(str_nr, (str_nr, "%g", nr)); + uint str_len= sprintf(str_nr, "%g", nr); make_truncated_value_warning(thd, level, str_nr, str_len, ts_type, field_name); } diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 4248c2e6b4f..dff4d20f347 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -754,13 +754,11 @@ bool make_date_time(DATE_TIME_FORMAT *format, MYSQL_TIME *l_time, str->append(hours_i < 12 ? "AM" : "PM",2); break; case 'r': - length= my_sprintf(intbuff, - (intbuff, - ((l_time->hour % 24) < 12) ? - "%02d:%02d:%02d AM" : "%02d:%02d:%02d PM", - (l_time->hour+11)%12+1, - l_time->minute, - l_time->second)); + length= sprintf(intbuff, ((l_time->hour % 24) < 12) ? + "%02d:%02d:%02d AM" : "%02d:%02d:%02d PM", + (l_time->hour+11)%12+1, + l_time->minute, + l_time->second); str->append(intbuff, length); break; case 'S': @@ -769,12 +767,8 @@ bool make_date_time(DATE_TIME_FORMAT *format, MYSQL_TIME *l_time, str->append_with_prefill(intbuff, length, 2, '0'); break; case 'T': - length= my_sprintf(intbuff, - (intbuff, - "%02d:%02d:%02d", - l_time->hour, - l_time->minute, - l_time->second)); + length= sprintf(intbuff, "%02d:%02d:%02d", + l_time->hour, l_time->minute, l_time->second); str->append(intbuff, length); break; case 'U': @@ -2985,12 +2979,12 @@ String *Item_func_maketime::val_str(String *str) char buf[28]; char *ptr= longlong10_to_str(hour, buf, args[0]->unsigned_flag ? 10 : -10); int len = (int)(ptr - buf) + - my_sprintf(ptr, (ptr, ":%02u:%02u", (uint)minute, (uint)second)); + sprintf(ptr, ":%02u:%02u", (uint) minute, (uint) second); make_truncated_value_warning(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, buf, len, MYSQL_TIMESTAMP_TIME, NullS); } - + if (make_time_with_warn((DATE_TIME_FORMAT *) 0, <ime, str)) { null_value= 1; diff --git a/sql/log_event.cc b/sql/log_event.cc index 93d170e1510..7becdf51747 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -1664,17 +1664,17 @@ beg: int i, end; char buff[512], *pos; pos= buff; - pos+= my_sprintf(buff, (buff, "%s", dec.sign() ? "-" : "")); + pos+= sprintf(buff, "%s", dec.sign() ? "-" : ""); end= ROUND_UP(dec.frac) + ROUND_UP(dec.intg)-1; for (i=0; i < end; i++) - pos+= my_sprintf(pos, (pos, "%09d.", dec.buf[i])); - pos+= my_sprintf(pos, (pos, "%09d", dec.buf[i])); + pos+= sprintf(pos, "%09d.", dec.buf[i]); + pos+= sprintf(pos, "%09d", dec.buf[i]); my_b_printf(file, "%s", buff); my_snprintf(typestr, typestr_length, "DECIMAL(%d,%d)", precision, decimals); return bin_size; } - + case MYSQL_TYPE_FLOAT: { float fl; @@ -5481,8 +5481,7 @@ void User_var_log_event::pack_info(Protocol* protocol) if (!(buf= (char*) my_malloc(val_offset + FLOATING_POINT_BUFFER, MYF(MY_WME)))) return; - event_len+= my_sprintf(buf + val_offset, - (buf + val_offset, "%.14g", real_val)); + event_len+= sprintf(buf + val_offset, "%.14g", real_val); break; case INT_RESULT: if (!(buf= (char*) my_malloc(val_offset + 22, MYF(MY_WME)))) @@ -5664,7 +5663,7 @@ void User_var_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info) double real_val; char real_buf[FMT_G_BUFSIZE(14)]; float8get(real_val, val); - my_sprintf(real_buf, (real_buf, "%.14g", real_val)); + sprintf(real_buf, "%.14g", real_val); my_b_printf(&cache, ":=%s%s\n", real_buf, print_event_info->delimiter); break; case INT_RESULT: @@ -6414,10 +6413,9 @@ void Append_block_log_event::print(FILE* file, void Append_block_log_event::pack_info(Protocol *protocol) { char buf[256]; - uint length; - length= (uint) my_sprintf(buf, - (buf, ";file_id=%u;block_len=%u", file_id, - block_len)); + size_t length; + length= my_snprintf(buf, sizeof(buf), ";file_id=%u;block_len=%u", + file_id, block_len); protocol->store(buf, length, &my_charset_bin); } @@ -6566,9 +6564,9 @@ void Delete_file_log_event::print(FILE* file, void Delete_file_log_event::pack_info(Protocol *protocol) { char buf[64]; - uint length; - length= (uint) my_sprintf(buf, (buf, ";file_id=%u", (uint) file_id)); - protocol->store(buf, (int32) length, &my_charset_bin); + size_t length; + length= my_snprintf(buf, sizeof(buf), ";file_id=%u", (uint) file_id); + protocol->store(buf, length, &my_charset_bin); } #endif @@ -6664,9 +6662,9 @@ void Execute_load_log_event::print(FILE* file, void Execute_load_log_event::pack_info(Protocol *protocol) { char buf[64]; - uint length; - length= (uint) my_sprintf(buf, (buf, ";file_id=%u", (uint) file_id)); - protocol->store(buf, (int32) length, &my_charset_bin); + size_t length; + length= my_snprintf(buf, sizeof(buf), ";file_id=%u", (uint) file_id); + protocol->store(buf, length, &my_charset_bin); } diff --git a/sql/my_decimal.cc b/sql/my_decimal.cc index 208ddefb890..3aa01880b83 100644 --- a/sql/my_decimal.cc +++ b/sql/my_decimal.cc @@ -249,12 +249,12 @@ print_decimal(const my_decimal *dec) int i, end; char buff[512], *pos; pos= buff; - pos+= my_sprintf(buff, (buff, "Decimal: sign: %d intg: %d frac: %d { ", - dec->sign(), dec->intg, dec->frac)); + pos+= sprintf(buff, "Decimal: sign: %d intg: %d frac: %d { ", + dec->sign(), dec->intg, dec->frac); end= ROUND_UP(dec->frac)+ROUND_UP(dec->intg)-1; for (i=0; i < end; i++) - pos+= my_sprintf(pos, (pos, "%09d, ", dec->buf[i])); - pos+= my_sprintf(pos, (pos, "%09d }\n", dec->buf[i])); + pos+= sprintf(pos, "%09d, ", dec->buf[i]); + pos+= sprintf(pos, "%09d }\n", dec->buf[i]); fputs(buff, DBUG_FILE); } diff --git a/sql/partition_info.cc b/sql/partition_info.cc index 6e2f7dfad26..d85888e295c 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -103,8 +103,8 @@ char *partition_info::create_default_partition_names(uint part_no, { do { - my_sprintf(move_ptr, (move_ptr,"p%u", (start_no + i))); - move_ptr+=MAX_PART_NAME_SIZE; + sprintf(move_ptr, "p%u", (start_no + i)); + move_ptr+= MAX_PART_NAME_SIZE; } while (++i < no_parts_arg); } else @@ -135,7 +135,7 @@ char *partition_info::create_subpartition_name(uint subpart_no, if (likely(ptr != NULL)) { - my_sprintf(ptr, (ptr, "%ssp%u", part_name, subpart_no)); + my_snprintf(ptr, size_alloc, "%ssp%u", part_name, subpart_no); } else { diff --git a/sql/protocol.cc b/sql/protocol.cc index dc53e029647..eaf01ecd550 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -1003,16 +1003,12 @@ bool Protocol_text::store(MYSQL_TIME *tm) #endif char buff[40]; uint length; - length= my_sprintf(buff,(buff, "%04d-%02d-%02d %02d:%02d:%02d", - (int) tm->year, - (int) tm->month, - (int) tm->day, - (int) tm->hour, - (int) tm->minute, - (int) tm->second)); + length= sprintf(buff, "%04d-%02d-%02d %02d:%02d:%02d", + (int) tm->year, (int) tm->month, + (int) tm->day, (int) tm->hour, + (int) tm->minute, (int) tm->second); if (tm->second_part) - length+= my_sprintf(buff+length,(buff+length, ".%06d", - (int)tm->second_part)); + length+= sprintf(buff+length, ".%06d", (int) tm->second_part); return net_store_data((uchar*) buff, length); } @@ -1046,13 +1042,11 @@ bool Protocol_text::store_time(MYSQL_TIME *tm) char buff[40]; uint length; uint day= (tm->year || tm->month) ? 0 : tm->day; - length= my_sprintf(buff,(buff, "%s%02ld:%02d:%02d", - tm->neg ? "-" : "", - (long) day*24L+(long) tm->hour, - (int) tm->minute, - (int) tm->second)); + length= sprintf(buff, "%s%02ld:%02d:%02d", tm->neg ? "-" : "", + (long) day*24L+(long) tm->hour, (int) tm->minute, + (int) tm->second); if (tm->second_part) - length+= my_sprintf(buff+length,(buff+length, ".%06d", (int)tm->second_part)); + length+= sprintf(buff+length, ".%06d", (int) tm->second_part); return net_store_data((uchar*) buff, length); } diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 9640b8db1b2..90eef872115 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -1653,12 +1653,10 @@ bool change_password(THD *thd, const char *host, const char *user, result= 0; if (mysql_bin_log.is_open()) { - query_length= - my_sprintf(buff, - (buff,"SET PASSWORD FOR '%-.120s'@'%-.120s'='%-.120s'", - acl_user->user ? acl_user->user : "", - acl_user->host.hostname ? acl_user->host.hostname : "", - new_password)); + query_length= sprintf(buff, "SET PASSWORD FOR '%-.120s'@'%-.120s'='%-.120s'", + acl_user->user ? acl_user->user : "", + acl_user->host.hostname ? acl_user->host.hostname : "", + new_password); thd->clear_error(); result= thd->binlog_query(THD::MYSQL_QUERY_TYPE, buff, query_length, FALSE, FALSE, 0); diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc index d273b3319ee..29ba956bf6c 100644 --- a/sql/sql_analyse.cc +++ b/sql/sql_analyse.cc @@ -408,7 +408,7 @@ void field_real::add() if ((decs = decimals()) == NOT_FIXED_DEC) { - length= my_sprintf(buff, (buff, "%g", num)); + length= sprintf(buff, "%g", num); if (rint(num) != num) max_notzero_dec_len = 1; } @@ -419,7 +419,7 @@ void field_real::add() snprintf(buff, sizeof(buff)-1, "%-.*f", (int) decs, num); length = (uint) strlen(buff); #else - length= my_sprintf(buff, (buff, "%-.*f", (int) decs, num)); + length= sprintf(buff, "%-.*f", (int) decs, num); #endif // We never need to check further than this @@ -1006,9 +1006,9 @@ void field_decimal::get_opt_type(String *answer, my_decimal_set_zero(&zero); my_bool is_unsigned= (my_decimal_cmp(&zero, &min_arg) >= 0); - length= my_sprintf(buff, (buff, "DECIMAL(%d, %d)", - (int) (max_length - (item->decimals ? 1 : 0)), - item->decimals)); + length= my_snprintf(buff, sizeof(buff), "DECIMAL(%d, %d)", + (int) (max_length - (item->decimals ? 1 : 0)), + item->decimals); if (is_unsigned) length= (uint) (strmov(buff+length, " UNSIGNED")- buff); answer->append(buff, length); diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 17fbf62b097..ca0d16697cd 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2278,7 +2278,7 @@ static bool show_status_array(THD *thd, const char *wild, value= ((char *) status_var + (ulong) value); /* fall through */ case SHOW_DOUBLE: - end= buff + my_sprintf(buff, (buff, "%f", *(double*) value)); + end= buff + sprintf(buff, "%f", *(double*) value); break; case SHOW_LONG_STATUS: value= ((char *) status_var + (ulong) value); diff --git a/sql/sql_string.cc b/sql/sql_string.cc index 7c9793b273b..a41f4d52101 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -112,7 +112,8 @@ bool String::set_real(double num,uint decimals, CHARSET_INFO *cs) str_charset=cs; if (decimals >= NOT_FIXED_DEC) { - uint32 len= my_sprintf(buff,(buff, "%.15g",num));// Enough for a DATETIME + // Enough for a DATETIME + uint32 len= sprintf(buff, "%.15g", num); return copy(buff, len, &my_charset_latin1, cs, &dummy_errors); } #ifdef HAVE_FCONVERT @@ -676,7 +677,7 @@ void String::qs_append(const char *str, uint32 len) void String::qs_append(double d) { char *buff = Ptr + str_length; - str_length+= my_sprintf(buff, (buff, "%.15g", d)); + str_length+= sprintf(buff, "%.15g", d); } void String::qs_append(double *d) diff --git a/storage/federated/ha_federated.cc b/storage/federated/ha_federated.cc index 955c35ad71b..e881b253274 100644 --- a/storage/federated/ha_federated.cc +++ b/storage/federated/ha_federated.cc @@ -561,7 +561,6 @@ static int parse_url_error(FEDERATED_SHARE *share, TABLE *table, int error_num) int get_connection(MEM_ROOT *mem_root, FEDERATED_SHARE *share) { int error_num= ER_FOREIGN_SERVER_DOESNT_EXIST; - char error_buffer[FEDERATED_QUERY_BUFFER_SIZE]; FOREIGN_SERVER *server, server_buffer; DBUG_ENTER("ha_federated::get_connection"); @@ -613,10 +612,8 @@ int get_connection(MEM_ROOT *mem_root, FEDERATED_SHARE *share) DBUG_RETURN(0); error: - my_sprintf(error_buffer, - (error_buffer, "server name: '%s' doesn't exist!", - share->connection_string)); - my_error(error_num, MYF(0), error_buffer); + my_printf_error(error_num, "server name: '%s' doesn't exist!", + MYF(0), share->connection_string); DBUG_RETURN(error_num); } @@ -2405,8 +2402,8 @@ int ha_federated::index_read_idx_with_result_set(uchar *buf, uint index, if (real_query(sql_query.ptr(), sql_query.length())) { - my_sprintf(error_buffer, (error_buffer, "error: %d '%s'", - mysql_errno(mysql), mysql_error(mysql))); + sprintf(error_buffer, "error: %d '%s'", + mysql_errno(mysql), mysql_error(mysql)); retval= ER_QUERY_ON_FOREIGN_DATA_SOURCE; goto error; } @@ -2775,7 +2772,6 @@ int ha_federated::rnd_pos(uchar *buf, uchar *pos) int ha_federated::info(uint flag) { - char error_buffer[FEDERATED_QUERY_BUFFER_SIZE]; char status_buf[FEDERATED_QUERY_BUFFER_SIZE]; int error; uint error_code; @@ -2859,9 +2855,8 @@ error: mysql_free_result(result); if (mysql) { - my_sprintf(error_buffer, (error_buffer, ": %d : %s", - mysql_errno(mysql), mysql_error(mysql))); - my_error(error_code, MYF(0), error_buffer); + my_printf_error(error_code, ": %d : %s", MYF(0), + mysql_errno(mysql), mysql_error(mysql)); } else if (remote_error_number != -1 /* error already reported */) diff --git a/strings/decimal.c b/strings/decimal.c index d6c33baf713..4403fc9fd6b 100644 --- a/strings/decimal.c +++ b/strings/decimal.c @@ -994,7 +994,7 @@ int double2decimal(double from, decimal_t *to) char buff[400], *end; int length, res; DBUG_ENTER("double2decimal"); - length= my_sprintf(buff, (buff, "%.16G", from)); + length= sprintf(buff, "%.16G", from); DBUG_PRINT("info",("from: %g from_as_str: %s", from, buff)); end= buff+length; res= string2decimal(buff, to, &end); diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index c492db723b0..00389d431fa 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -1685,7 +1685,7 @@ static void test_prepare() /* now, execute the prepared statement to insert 10 records.. */ for (tiny_data= 0; tiny_data < 100; tiny_data++) { - length[1]= my_sprintf(str_data, (str_data, "MySQL%d", int_data)); + length[1]= sprintf(str_data, "MySQL%d", int_data); rc= mysql_stmt_execute(stmt); check_execute(stmt, rc); int_data += 25; @@ -1724,7 +1724,7 @@ static void test_prepare() /* now, execute the prepared statement to insert 10 records.. */ for (o_tiny_data= 0; o_tiny_data < 100; o_tiny_data++) { - len= my_sprintf(data, (data, "MySQL%d", o_int_data)); + len= sprintf(data, "MySQL%d", o_int_data); rc= mysql_stmt_fetch(stmt); check_execute(stmt, rc); @@ -3090,7 +3090,7 @@ static void test_simple_update() my_bind[0].buffer= szData; /* string data */ my_bind[0].buffer_length= sizeof(szData); my_bind[0].length= &length[0]; - length[0]= my_sprintf(szData, (szData, "updated-data")); + length[0]= sprintf(szData, "updated-data"); my_bind[1].buffer= (void *) &nData; my_bind[1].buffer_type= MYSQL_TYPE_LONG; @@ -3286,7 +3286,7 @@ static void test_long_data_str() DIE_UNLESS(rc == 1); mysql_free_result(result); - my_sprintf(data, (data, "%d", i*5)); + sprintf(data, "%d", i*5); verify_col_data("test_long_data_str", "LENGTH(longstr)", data); data[0]= '\0'; while (i--) @@ -3344,7 +3344,7 @@ static void test_long_data_str1() rc= mysql_stmt_bind_param(stmt, my_bind); check_execute(stmt, rc); - length= my_sprintf(data, (data, "MySQL AB")); + length= sprintf(data, "MySQL AB"); /* supply data in pieces */ for (i= 0; i < 3; i++) @@ -3384,10 +3384,10 @@ static void test_long_data_str1() DIE_UNLESS(rc == 1); mysql_free_result(result); - my_sprintf(data, (data, "%ld", (long)i*length)); + sprintf(data, "%ld", (long)i*length); verify_col_data("test_long_data_str", "length(longstr)", data); - my_sprintf(data, (data, "%d", i*2)); + sprintf(data, "%d", i*2); verify_col_data("test_long_data_str", "length(blb)", data); /* Test length of field->max_length */ @@ -3659,7 +3659,7 @@ static void test_update() my_bind[0].buffer= szData; my_bind[0].buffer_length= sizeof(szData); my_bind[0].length= &length[0]; - length[0]= my_sprintf(szData, (szData, "inserted-data")); + length[0]= sprintf(szData, "inserted-data"); my_bind[1].buffer= (void *)&nData; my_bind[1].buffer_type= MYSQL_TYPE_LONG; @@ -3688,7 +3688,7 @@ static void test_update() my_bind[0].buffer= szData; my_bind[0].buffer_length= sizeof(szData); my_bind[0].length= &length[0]; - length[0]= my_sprintf(szData, (szData, "updated-data")); + length[0]= sprintf(szData, "updated-data"); my_bind[1].buffer= (void *)&nData; my_bind[1].buffer_type= MYSQL_TYPE_LONG; @@ -4257,7 +4257,7 @@ static void bind_fetch(int row_count) /* CHAR */ { char buff[20]; - long len= my_sprintf(buff, (buff, "%d", rc)); + long len= sprintf(buff, "%d", rc); DIE_UNLESS(strcmp(s_data, buff) == 0); DIE_UNLESS(length[6] == (ulong) len); } @@ -4850,7 +4850,7 @@ static void test_insert() /* now, execute the prepared statement to insert 10 records.. */ for (tiny_data= 0; tiny_data < 3; tiny_data++) { - length= my_sprintf(str_data, (str_data, "MySQL%d", tiny_data)); + length= sprintf(str_data, "MySQL%d", tiny_data); rc= mysql_stmt_execute(stmt); check_execute(stmt, rc); } @@ -17512,7 +17512,7 @@ static void test_wl4166_1() /* now, execute the prepared statement to insert 10 records.. */ for (tiny_data= 0; tiny_data < 10; tiny_data++) { - length[1]= my_sprintf(str_data, (str_data, "MySQL%d", int_data)); + length[1]= sprintf(str_data, "MySQL%d", int_data); rc= mysql_stmt_execute(stmt); check_execute(stmt, rc); int_data += 25; @@ -17535,7 +17535,7 @@ static void test_wl4166_1() for (tiny_data= 50; tiny_data < 60; tiny_data++) { - length[1]= my_sprintf(str_data, (str_data, "MySQL%d", int_data)); + length[1]= sprintf(str_data, "MySQL%d", int_data); rc= mysql_stmt_execute(stmt); check_execute(stmt, rc); int_data += 25; From 6197332366ec1908af34b2415f01ccca7757f0c2 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 9 Jul 2010 14:03:09 +0200 Subject: [PATCH 287/461] Initial import of SpinxSE, with fixes for MariaDB. --- storage/sphinx/CMakeLists.txt | 11 + storage/sphinx/Makefile.am | 55 + storage/sphinx/gen_data.php | 37 + storage/sphinx/ha_sphinx.cc | 3115 +++++++++++++++++++++++++++++ storage/sphinx/ha_sphinx.h | 158 ++ storage/sphinx/make-patch.sh | 36 + storage/sphinx/plug.in | 6 + storage/sphinx/snippets_udf.cc | 766 +++++++ storage/sphinx/sphinx.5.0.22.diff | 284 +++ storage/sphinx/sphinx.5.0.27.diff | 284 +++ storage/sphinx/sphinx.5.0.37.diff | 338 ++++ 11 files changed, 5090 insertions(+) create mode 100644 storage/sphinx/CMakeLists.txt create mode 100644 storage/sphinx/Makefile.am create mode 100644 storage/sphinx/gen_data.php create mode 100644 storage/sphinx/ha_sphinx.cc create mode 100644 storage/sphinx/ha_sphinx.h create mode 100644 storage/sphinx/make-patch.sh create mode 100644 storage/sphinx/plug.in create mode 100644 storage/sphinx/snippets_udf.cc create mode 100644 storage/sphinx/sphinx.5.0.22.diff create mode 100644 storage/sphinx/sphinx.5.0.27.diff create mode 100644 storage/sphinx/sphinx.5.0.37.diff diff --git a/storage/sphinx/CMakeLists.txt b/storage/sphinx/CMakeLists.txt new file mode 100644 index 00000000000..2bc04eefc44 --- /dev/null +++ b/storage/sphinx/CMakeLists.txt @@ -0,0 +1,11 @@ +SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") +SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") +ADD_DEFINITIONS(-DMYSQL_SERVER) + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include + ${CMAKE_SOURCE_DIR}/sql + ${CMAKE_SOURCE_DIR}/extra/yassl/include + ${CMAKE_SOURCE_DIR}/regex) + +SET(SPHINX_SOURCES ha_sphinx.cc) +ADD_LIBRARY(sphinx ha_sphinx.cc) diff --git a/storage/sphinx/Makefile.am b/storage/sphinx/Makefile.am new file mode 100644 index 00000000000..5f58d673547 --- /dev/null +++ b/storage/sphinx/Makefile.am @@ -0,0 +1,55 @@ +# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +#called from the top level Makefile + +MYSQLDATAdir = $(localstatedir) +MYSQLSHAREdir = $(pkgdatadir) +MYSQLBASEdir= $(prefix) +MYSQLLIBdir= $(pkglibdir) +pkgplugindir = $(pkglibdir)/plugin +INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include \ + -I$(top_srcdir)/regex \ + -I$(top_srcdir)/sql \ + -I$(srcdir) + +DEFS= @DEFS@ -D_REENTRANT -D_PTHREADS -DMYSQL_SERVER + +noinst_HEADERS = ha_sphinx.h + +EXTRA_LTLIBRARIES = ha_sphinx.la +pkgplugin_LTLIBRARIES = @plugin_sphinx_shared_target@ sphinx.la + +ha_sphinx_la_LDFLAGS = -module -rpath $(MYSQLLIBdir) \ + -L$(top_builddir)/libservices -lmysqlservices +ha_sphinx_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN +ha_sphinx_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN +ha_sphinx_la_SOURCES = ha_sphinx.cc + +sphinx_la_LDFLAGS = -module +sphinx_la_CXXFLAGS = $(AM_CFLAGS) +sphinx_la_CFLAGS = $(AM_CFLAGS) +sphinx_la_SOURCES = snippets_udf.cc + +EXTRA_LIBRARIES = libsphinx.a +noinst_LIBRARIES = @plugin_sphinx_static_target@ +libsphinx_a_CXXFLAGS = $(AM_CFLAGS) +libsphinx_a_CFLAGS = $(AM_CFLAGS) +libsphinx_a_SOURCES= ha_sphinx.cc + +EXTRA_DIST = CMakeLists.txt +# Don't update the files from bitkeeper +%::SCCS/s.% diff --git a/storage/sphinx/gen_data.php b/storage/sphinx/gen_data.php new file mode 100644 index 00000000000..dac374f095d --- /dev/null +++ b/storage/sphinx/gen_data.php @@ -0,0 +1,37 @@ + diff --git a/storage/sphinx/ha_sphinx.cc b/storage/sphinx/ha_sphinx.cc new file mode 100644 index 00000000000..057cec29d2d --- /dev/null +++ b/storage/sphinx/ha_sphinx.cc @@ -0,0 +1,3115 @@ +// +// $Id: ha_sphinx.cc 2058 2009-11-07 04:01:57Z shodan $ +// + +#ifdef USE_PRAGMA_IMPLEMENTATION +#pragma implementation // gcc: Class implementation +#endif + +#if _MSC_VER>=1400 +#define _CRT_SECURE_NO_DEPRECATE 1 +#define _CRT_NONSTDC_NO_DEPRECATE 1 +#endif + +#include + +#if MYSQL_VERSION_ID>50100 +#include "mysql_priv.h" +#include +#else +#include "../mysql_priv.h" +#endif + +#include +#include + +#ifndef __WIN__ + // UNIX-specific + #include + #include + #include + + #define RECV_FLAGS MSG_WAITALL + + #define sphSockClose(_sock) ::close(_sock) +#else + // Windows-specific + #include + #define strcasecmp stricmp + #define snprintf _snprintf + + #define RECV_FLAGS 0 + + #define sphSockClose(_sock) ::closesocket(_sock) +#endif + +#include +#include "ha_sphinx.h" + +#ifndef MSG_WAITALL +#define MSG_WAITALL 0 +#endif + +#if _MSC_VER>=1400 +#pragma warning(push,4) +#endif + +///////////////////////////////////////////////////////////////////////////// + +/// there might be issues with min() on different platforms (eg. Gentoo, they say) +#define Min(a,b) ((a)<(b)?(a):(b)) + +/// unaligned RAM accesses are forbidden on SPARC +#if defined(sparc) || defined(__sparc__) +#define UNALIGNED_RAM_ACCESS 0 +#else +#define UNALIGNED_RAM_ACCESS 1 +#endif + +#if MYSQL_VERSION_ID<50100 +#define thd_ha_data(X,Y) (X)->ha_data[sphinx_hton.slot] +#define ha_thd() current_thd +#endif // <50100 + +#if UNALIGNED_RAM_ACCESS + +/// pass-through wrapper +template < typename T > inline T sphUnalignedRead ( const T & tRef ) +{ + return tRef; +} + +/// pass-through wrapper +template < typename T > void sphUnalignedWrite ( void * pPtr, const T & tVal ) +{ + *(T*)pPtr = tVal; +} + +#else + +/// unaligned read wrapper for some architectures (eg. SPARC) +template < typename T > +inline T sphUnalignedRead ( const T & tRef ) +{ + T uTmp; + byte * pSrc = (byte *) &tRef; + byte * pDst = (byte *) &uTmp; + for ( int i=0; i<(int)sizeof(T); i++ ) + *pDst++ = *pSrc++; + return uTmp; +} + +/// unaligned write wrapper for some architectures (eg. SPARC) +template < typename T > +void sphUnalignedWrite ( void * pPtr, const T & tVal ) +{ + byte * pDst = (byte *) pPtr; + byte * pSrc = (byte *) &tVal; + for ( int i=0; i<(int)sizeof(T); i++ ) + *pDst++ = *pSrc++; +} + +#endif + +///////////////////////////////////////////////////////////////////////////// + +// FIXME! make this all dynamic +#define SPHINXSE_MAX_FILTERS 32 + +#define SPHINXSE_DEFAULT_HOST "127.0.0.1" +#define SPHINXSE_DEFAULT_PORT 9312 +#define SPHINXSE_DEFAULT_INDEX "*" + +#define SPHINXSE_SYSTEM_COLUMNS 3 + +#define SPHINXSE_MAX_ALLOC (16*1024*1024) +#define SPHINXSE_MAX_KEYWORDSTATS 4096 + +// FIXME! all the following is cut-n-paste from sphinx.h and searchd.cpp +#define SPHINX_VERSION "0.9.9" + +enum +{ + SPHINX_SEARCHD_PROTO = 1, + SEARCHD_COMMAND_SEARCH = 0, + VER_COMMAND_SEARCH = 0x116, +}; + +/// search query sorting orders +enum ESphSortOrder +{ + SPH_SORT_RELEVANCE = 0, ///< sort by document relevance desc, then by date + SPH_SORT_ATTR_DESC = 1, ///< sort by document date desc, then by relevance desc + SPH_SORT_ATTR_ASC = 2, ///< sort by document date asc, then by relevance desc + SPH_SORT_TIME_SEGMENTS = 3, ///< sort by time segments (hour/day/week/etc) desc, then by relevance desc + SPH_SORT_EXTENDED = 4, ///< sort by SQL-like expression (eg. "@relevance DESC, price ASC, @id DESC") + SPH_SORT_EXPR = 5, ///< sort by expression + + SPH_SORT_TOTAL +}; + +/// search query matching mode +enum ESphMatchMode +{ + SPH_MATCH_ALL = 0, ///< match all query words + SPH_MATCH_ANY, ///< match any query word + SPH_MATCH_PHRASE, ///< match this exact phrase + SPH_MATCH_BOOLEAN, ///< match this boolean query + SPH_MATCH_EXTENDED, ///< match this extended query + SPH_MATCH_FULLSCAN, ///< match all document IDs w/o fulltext query, apply filters + SPH_MATCH_EXTENDED2, ///< extended engine V2 + + SPH_MATCH_TOTAL +}; + +/// search query relevance ranking mode +enum ESphRankMode +{ + SPH_RANK_PROXIMITY_BM25 = 0, ///< default mode, phrase proximity major factor and BM25 minor one + SPH_RANK_BM25 = 1, ///< statistical mode, BM25 ranking only (faster but worse quality) + SPH_RANK_NONE = 2, ///< no ranking, all matches get a weight of 1 + SPH_RANK_WORDCOUNT = 3, ///< simple word-count weighting, rank is a weighted sum of per-field keyword occurence counts + SPH_RANK_PROXIMITY = 4, ///< phrase proximity + SPH_RANK_MATCHANY = 5, ///< emulate old match-any weighting + SPH_RANK_FIELDMASK = 6, ///< sets bits where there were matches + + SPH_RANK_TOTAL, + SPH_RANK_DEFAULT = SPH_RANK_PROXIMITY_BM25 +}; + +/// search query grouping mode +enum ESphGroupBy +{ + SPH_GROUPBY_DAY = 0, ///< group by day + SPH_GROUPBY_WEEK = 1, ///< group by week + SPH_GROUPBY_MONTH = 2, ///< group by month + SPH_GROUPBY_YEAR = 3, ///< group by year + SPH_GROUPBY_ATTR = 4 ///< group by attribute value +}; + +/// known attribute types +enum +{ + SPH_ATTR_NONE = 0, ///< not an attribute at all + SPH_ATTR_INTEGER = 1, ///< this attr is just an integer + SPH_ATTR_TIMESTAMP = 2, ///< this attr is a timestamp + SPH_ATTR_ORDINAL = 3, ///< this attr is an ordinal string number (integer at search time, specially handled at indexing time) + SPH_ATTR_BOOL = 4, ///< this attr is a boolean bit field + SPH_ATTR_FLOAT = 5, + SPH_ATTR_BIGINT = 6, + + SPH_ATTR_MULTI = 0x40000000UL ///< this attr has multiple values (0 or more) +}; + +/// known answers +enum +{ + SEARCHD_OK = 0, ///< general success, command-specific reply follows + SEARCHD_ERROR = 1, ///< general failure, error message follows + SEARCHD_RETRY = 2, ///< temporary failure, error message follows, client should retry later + SEARCHD_WARNING = 3 ///< general success, warning message and command-specific reply follow +}; + +////////////////////////////////////////////////////////////////////////////// + +#define SPHINX_DEBUG_OUTPUT 0 +#define SPHINX_DEBUG_CALLS 0 + +#include + +#if SPHINX_DEBUG_OUTPUT +inline void SPH_DEBUG ( const char * format, ... ) +{ + va_list ap; + va_start ( ap, format ); + fprintf ( stderr, "SphinxSE: " ); + vfprintf ( stderr, format, ap ); + fprintf ( stderr, "\n" ); + va_end ( ap ); +} +#else +inline void SPH_DEBUG ( const char *, ... ) {} +#endif + +#if SPHINX_DEBUG_CALLS + +#define SPH_ENTER_FUNC() { SPH_DEBUG ( "enter %s", __FUNCTION__ ); } +#define SPH_ENTER_METHOD() { SPH_DEBUG ( "enter %s(this=%08x)", __FUNCTION__, this ); } +#define SPH_RET(_arg) { SPH_DEBUG ( "leave %s", __FUNCTION__ ); return _arg; } +#define SPH_VOID_RET() { SPH_DEBUG ( "leave %s", __FUNCTION__ ); return; } + +#else + +#define SPH_ENTER_FUNC() +#define SPH_ENTER_METHOD() +#define SPH_RET(_arg) { return(_arg); } +#define SPH_VOID_RET() { return; } + +#endif + + +#define SafeDelete(_arg) { if ( _arg ) delete ( _arg ); (_arg) = NULL; } +#define SafeDeleteArray(_arg) { if ( _arg ) delete [] ( _arg ); (_arg) = NULL; } + +////////////////////////////////////////////////////////////////////////////// + +/// a structure that will be shared among all open Sphinx SE handlers +struct CSphSEShare +{ + pthread_mutex_t m_tMutex; + THR_LOCK m_tLock; + + char * m_sTable; + char * m_sScheme; + char * m_sHost; ///< points into m_sScheme buffer, DO NOT FREE EXPLICITLY + char * m_sSocket; ///< points into m_sScheme buffer, DO NOT FREE EXPLICITLY + char * m_sIndex; ///< points into m_sScheme buffer, DO NOT FREE EXPLICITLY + ushort m_iPort; + uint m_iTableNameLen; + uint m_iUseCount; + CHARSET_INFO * m_pTableQueryCharset; + + int m_iTableFields; + char ** m_sTableField; + enum_field_types * m_eTableFieldType; + + CSphSEShare () + : m_sTable ( NULL ) + , m_sScheme ( NULL ) + , m_sHost ( NULL ) + , m_sSocket ( NULL ) + , m_sIndex ( NULL ) + , m_iPort ( 0 ) + , m_iTableNameLen ( 0 ) + , m_iUseCount ( 1 ) + , m_pTableQueryCharset ( NULL ) + + , m_iTableFields ( 0 ) + , m_sTableField ( NULL ) + , m_eTableFieldType ( NULL ) + { + thr_lock_init ( &m_tLock ); + pthread_mutex_init ( &m_tMutex, MY_MUTEX_INIT_FAST ); + } + + ~CSphSEShare () + { + pthread_mutex_destroy ( &m_tMutex ); + thr_lock_delete ( &m_tLock ); + + SafeDeleteArray ( m_sTable ); + SafeDeleteArray ( m_sScheme ); + ResetTable (); + } + + void ResetTable () + { + for ( int i=0; i m_dIds; + Dynamic_array m_dValues; + }; + Dynamic_array m_dOverrides; + +public: + char m_sParseError[256]; + +public: + CSphSEQuery ( const char * sQuery, int iLength, const char * sIndex ); + ~CSphSEQuery (); + + bool Parse (); + int BuildRequest ( char ** ppBuffer ); + +protected: + char * m_pBuf; + char * m_pCur; + int m_iBufLeft; + bool m_bBufOverrun; + + template < typename T > int ParseArray ( T ** ppValues, const char * sValue ); + bool ParseField ( char * sField ); + + void SendBytes ( const void * pBytes, int iBytes ); + void SendWord ( short int v ) { v = ntohs(v); SendBytes ( &v, sizeof(short int) ); } + void SendInt ( int v ) { v = ntohl(v); SendBytes ( &v, sizeof(int) ); } + void SendDword ( uint v ) { v = ntohl(v) ;SendBytes ( &v, sizeof(uint) ); } + void SendUint64 ( ulonglong v ) { SendDword ( uint(v>>32) ); SendDword ( uint(v&0xFFFFFFFFUL) ); } + void SendString ( const char * v ) { int iLen = strlen(v); SendDword(iLen); SendBytes ( v, iLen ); } + void SendFloat ( float v ) { SendDword ( sphF2DW(v) ); } +}; + +template int CSphSEQuery::ParseArray ( uint32 **, const char * ); +template int CSphSEQuery::ParseArray ( longlong **, const char * ); + +////////////////////////////////////////////////////////////////////////////// + +#if MYSQL_VERSION_ID>50100 + +#if MYSQL_VERSION_ID<50114 +#error Sphinx SE requires MySQL 5.1.14 or higher if compiling for 5.1.x series! +#endif + +static handler * sphinx_create_handler ( handlerton * hton, TABLE_SHARE * table, MEM_ROOT * mem_root ); +static int sphinx_init_func ( void * p ); +static int sphinx_close_connection ( handlerton * hton, THD * thd ); +static int sphinx_panic ( handlerton * hton, enum ha_panic_function flag ); +static bool sphinx_show_status ( handlerton * hton, THD * thd, stat_print_fn * stat_print, enum ha_stat_type stat_type ); + +#else + +static bool sphinx_init_func_for_handlerton (); +static int sphinx_close_connection ( THD * thd ); +bool sphinx_show_status ( THD * thd ); + +#endif // >50100 + +////////////////////////////////////////////////////////////////////////////// + +static const char sphinx_hton_name[] = "SPHINX"; +static const char sphinx_hton_comment[] = "Sphinx storage engine " SPHINX_VERSION; + +#if MYSQL_VERSION_ID<50100 +handlerton sphinx_hton = +{ + #ifdef MYSQL_HANDLERTON_INTERFACE_VERSION + MYSQL_HANDLERTON_INTERFACE_VERSION, + #endif + sphinx_hton_name, + SHOW_OPTION_YES, + sphinx_hton_comment, + DB_TYPE_SPHINX_DB, + sphinx_init_func_for_handlerton, + 0, // slot + 0, // savepoint size + sphinx_close_connection, // close_connection + NULL, // savepoint + NULL, // rollback to savepoint + NULL, // release savepoint + NULL, // commit + NULL, // rollback + NULL, // prepare + NULL, // recover + NULL, // commit_by_xid + NULL, // rollback_by_xid + NULL, // create_cursor_read_view + NULL, // set_cursor_read_view + NULL, // close_cursor_read_view + HTON_CAN_RECREATE +}; +#else +static handlerton * sphinx_hton_ptr = NULL; +#endif + +////////////////////////////////////////////////////////////////////////////// + +// variables for Sphinx shared methods +pthread_mutex_t sphinx_mutex; // mutex to init the hash +static int sphinx_init = 0; // flag whether the hash was initialized +static HASH sphinx_open_tables; // hash used to track open tables + +////////////////////////////////////////////////////////////////////////////// +// INITIALIZATION AND SHUTDOWN +////////////////////////////////////////////////////////////////////////////// + +// hashing function +#if MYSQL_VERSION_ID>=50120 +typedef size_t GetKeyLength_t; +#else +typedef uint GetKeyLength_t; +#endif + +static byte * sphinx_get_key ( const byte * pSharePtr, GetKeyLength_t * pLength, my_bool ) +{ + CSphSEShare * pShare = (CSphSEShare *) pSharePtr; + *pLength = (size_t) pShare->m_iTableNameLen; + return (byte*) pShare->m_sTable; +} + +#if MYSQL_VERSION_ID<50100 +static int sphinx_init_func ( void * ) // to avoid unused arg warning +#else +static int sphinx_init_func ( void * p ) +#endif +{ + SPH_ENTER_FUNC(); + if ( !sphinx_init ) + { + sphinx_init = 1; + VOID ( pthread_mutex_init ( &sphinx_mutex, MY_MUTEX_INIT_FAST ) ); + hash_init ( &sphinx_open_tables, system_charset_info, 32, 0, 0, + sphinx_get_key, 0, 0 ); + + #if MYSQL_VERSION_ID > 50100 + handlerton * hton = (handlerton*) p; + hton->state = SHOW_OPTION_YES; + hton->db_type = DB_TYPE_AUTOASSIGN; + hton->create = sphinx_create_handler; + hton->close_connection = sphinx_close_connection; + hton->show_status = sphinx_show_status; + hton->panic = sphinx_panic; + hton->flags = HTON_CAN_RECREATE; + sphinx_hton_ptr = hton; + #endif + } + SPH_RET(0); +} + + +#if MYSQL_VERSION_ID<50100 +static bool sphinx_init_func_for_handlerton () +{ + return sphinx_init_func ( &sphinx_hton ); +} +#endif + + +#if MYSQL_VERSION_ID>50100 + +static int sphinx_close_connection ( handlerton * hton, THD * thd ) +{ + // deallocate common handler data + SPH_ENTER_FUNC(); + void ** tmp = thd_ha_data ( thd, hton ); + CSphSEThreadData * pTls = (CSphSEThreadData*) (*tmp); + SafeDelete ( pTls ); + *tmp = NULL; + SPH_RET(0); +} + + +static int sphinx_done_func ( void * ) +{ + SPH_ENTER_FUNC(); + + int error = 0; + if ( sphinx_init ) + { + sphinx_init = 0; + if ( sphinx_open_tables.records ) + error = 1; + hash_free ( &sphinx_open_tables ); + pthread_mutex_destroy ( &sphinx_mutex ); + } + + SPH_RET(0); +} + + +static int sphinx_panic ( handlerton * hton, enum ha_panic_function ) +{ + return sphinx_done_func ( hton ); +} + +#else + +static int sphinx_close_connection ( THD * thd ) +{ + // deallocate common handler data + SPH_ENTER_FUNC(); + CSphSEThreadData * pTls = (CSphSEThreadData*) thd->ha_data[sphinx_hton.slot]; + SafeDelete ( pTls ); + thd->ha_data[sphinx_hton.slot] = NULL; + SPH_RET(0); +} + +#endif // >50100 + +////////////////////////////////////////////////////////////////////////////// +// SHOW STATUS +////////////////////////////////////////////////////////////////////////////// + +#if MYSQL_VERSION_ID>50100 +static bool sphinx_show_status ( handlerton * hton, THD * thd, stat_print_fn * stat_print, + enum ha_stat_type ) +#else +bool sphinx_show_status ( THD * thd ) +#endif +{ + SPH_ENTER_FUNC(); + +#if MYSQL_VERSION_ID<50100 + Protocol * protocol = thd->protocol; + List field_list; +#endif + + char buf1[IO_SIZE]; + uint buf1len; + char buf2[IO_SIZE]; + uint buf2len= 0; + String words; + + buf1[0] = '\0'; + buf2[0] = '\0'; + +#if MYSQL_VERSION_ID>50100 + CSphSEThreadData * pTls = (CSphSEThreadData*) ( *thd_ha_data ( thd, hton ) ); +#else + if ( have_sphinx_db!=SHOW_OPTION_YES ) + { + my_message ( ER_NOT_SUPPORTED_YET, + "failed to call SHOW SPHINX STATUS: --skip-sphinx was specified", + MYF(0) ); + SPH_RET(TRUE); + } + CSphSEThreadData * pTls = (CSphSEThreadData*) thd->ha_data[sphinx_hton.slot]; +#endif + + if ( pTls && pTls->m_bStats ) + { + const CSphSEStats * pStats = &pTls->m_tStats; + buf1len = my_snprintf ( buf1, sizeof(buf1), + "total: %d, total found: %d, time: %d, words: %d", + pStats->m_iMatchesTotal, pStats->m_iMatchesFound, pStats->m_iQueryMsec, pStats->m_iWords ); + +#if MYSQL_VERSION_ID>50100 + stat_print ( thd, sphinx_hton_name, strlen(sphinx_hton_name), + STRING_WITH_LEN("stats"), buf1, buf1len ); +#else + field_list.push_back ( new Item_empty_string ( "Type",10 ) ); + field_list.push_back ( new Item_empty_string ( "Name",FN_REFLEN ) ); + field_list.push_back ( new Item_empty_string ( "Status",10 ) ); + if ( protocol->send_fields ( &field_list, Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF ) ) + SPH_RET(TRUE); + + protocol->prepare_for_resend (); + protocol->store ( STRING_WITH_LEN("SPHINX"), system_charset_info ); + protocol->store ( STRING_WITH_LEN("stats"), system_charset_info ); + protocol->store ( buf1, buf1len, system_charset_info ); + if ( protocol->write() ) + SPH_RET(TRUE); +#endif + + if ( pStats->m_iWords ) + { + for ( int i=0; im_iWords; i++ ) + { + CSphSEWordStats & tWord = pStats->m_dWords[i]; + buf2len = my_snprintf ( buf2, sizeof(buf2), "%s%s:%d:%d ", + buf2, tWord.m_sWord, tWord.m_iDocs, tWord.m_iHits ); + } + + // convert it if we can + const char * sWord = buf2; + int iWord = buf2len; + + String sBuf3; + if ( pTls->m_pQueryCharset ) + { + uint iErrors; + sBuf3.copy ( buf2, buf2len, pTls->m_pQueryCharset, system_charset_info, &iErrors ); + sWord = sBuf3.c_ptr(); + iWord = sBuf3.length(); + } + +#if MYSQL_VERSION_ID>50100 + stat_print ( thd, sphinx_hton_name, strlen(sphinx_hton_name), + STRING_WITH_LEN("words"), sWord, iWord ); +#else + protocol->prepare_for_resend (); + protocol->store ( STRING_WITH_LEN("SPHINX"), system_charset_info ); + protocol->store ( STRING_WITH_LEN("words"), system_charset_info ); + protocol->store ( sWord, iWord, system_charset_info ); + if ( protocol->write() ) + SPH_RET(TRUE); +#endif + } + + // send last error or warning + if ( pStats->m_sLastMessage && pStats->m_sLastMessage[0] ) + { + const char * sMessageType = pStats->m_bLastError ? "error" : "warning"; + +#if MYSQL_VERSION_ID>50100 + stat_print ( thd, sphinx_hton_name, strlen(sphinx_hton_name), + sMessageType, strlen(sMessageType), pStats->m_sLastMessage, strlen(pStats->m_sLastMessage) ); +#else + protocol->prepare_for_resend (); + protocol->store ( STRING_WITH_LEN("SPHINX"), system_charset_info ); + protocol->store ( sMessageType, strlen(sMessageType), system_charset_info ); + protocol->store ( pStats->m_sLastMessage, strlen(pStats->m_sLastMessage), system_charset_info ); + if ( protocol->write() ) + SPH_RET(TRUE); +#endif + } + + } else + { + #if MYSQL_VERSION_ID < 50100 + field_list.push_back ( new Item_empty_string ( "Type", 10 ) ); + field_list.push_back ( new Item_empty_string ( "Name", FN_REFLEN ) ); + field_list.push_back ( new Item_empty_string ( "Status", 10 ) ); + if ( protocol->send_fields ( &field_list, Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF ) ) + SPH_RET(TRUE); + + protocol->prepare_for_resend (); + protocol->store ( STRING_WITH_LEN("SPHINX"), system_charset_info ); + protocol->store ( STRING_WITH_LEN("stats"), system_charset_info ); + protocol->store ( STRING_WITH_LEN("no query has been executed yet"), system_charset_info ); + if ( protocol->write() ) + SPH_RET(TRUE); + #endif + } + + #if MYSQL_VERSION_ID < 50100 + send_eof(thd); + #endif + + SPH_RET(FALSE); +} + +////////////////////////////////////////////////////////////////////////////// +// HELPERS +////////////////////////////////////////////////////////////////////////////// + +static char * sphDup ( const char * sSrc, int iLen=-1 ) +{ + if ( !sSrc ) + return NULL; + + if ( iLen<0 ) + iLen = strlen(sSrc); + + char * sRes = new char [ 1+iLen ]; + memcpy ( sRes, sSrc, iLen ); + sRes[iLen] = '\0'; + return sRes; +} + + +static void sphLogError ( const char * sFmt, ... ) +{ + // emit timestamp +#ifdef __WIN__ + SYSTEMTIME t; + GetLocalTime ( &t ); + + fprintf ( stderr, "%02d%02d%02d %2d:%02d:%02d SphinxSE: internal error: ", + (int)t.wYear % 100, (int)t.wMonth, (int)t.wDay, + (int)t.wHour, (int)t.wMinute, (int)t.wSecond ); +#else + // Unix version + time_t tStamp; + time ( &tStamp ); + + struct tm * pParsed; +#ifdef HAVE_LOCALTIME_R + struct tm tParsed; + localtime_r ( &tStamp, &tParsed ); + pParsed = &tParsed; +#else + pParsed = localtime ( &tStamp ); +#endif // HAVE_LOCALTIME_R + + fprintf ( stderr, "%02d%02d%02d %2d:%02d:%02d SphinxSE: internal error: ", + pParsed->tm_year % 100, pParsed->tm_mon + 1, pParsed->tm_mday, + pParsed->tm_hour, pParsed->tm_min, pParsed->tm_sec); +#endif // __WIN__ + + // emit message + va_list ap; + va_start ( ap, sFmt ); + vfprintf ( stderr, sFmt, ap ); + va_end ( ap ); + + // emit newline + fprintf ( stderr, "\n" ); +} + + + +// the following scheme variants are recognized +// +// sphinx://host/index +// sphinx://host:port/index +// unix://unix/domain/socket:index +// unix://unix/domain/socket +static bool ParseUrl ( CSphSEShare * share, TABLE * table, bool bCreate ) +{ + SPH_ENTER_FUNC(); + + if ( share ) + { + // check incoming stuff + if ( !table ) + { + sphLogError ( "table==NULL in ParseUrl()" ); + return false; + } + if ( !table->s ) + { + sphLogError ( "(table->s)==NULL in ParseUrl()" ); + return false; + } + + // free old stuff + share->ResetTable (); + + // fill new stuff + share->m_iTableFields = table->s->fields; + if ( share->m_iTableFields ) + { + share->m_sTableField = new char * [ share->m_iTableFields ]; + share->m_eTableFieldType = new enum_field_types [ share->m_iTableFields ]; + + for ( int i=0; im_iTableFields; i++ ) + { + share->m_sTableField[i] = sphDup ( table->field[i]->field_name ); + share->m_eTableFieldType[i] = table->field[i]->type(); + } + } + } + + char * sScheme = NULL; + char * sHost = SPHINXSE_DEFAULT_HOST; + char * sIndex = SPHINXSE_DEFAULT_INDEX; + int iPort = SPHINXSE_DEFAULT_PORT; + + bool bOk = true; + while ( table->s->connect_string.length!=0 ) + { + bOk = false; + sScheme = sphDup ( table->s->connect_string.str, table->s->connect_string.length ); + + sHost = strstr ( sScheme, "://" ); + if ( !sHost ) + break; + sHost[0] = '\0'; + sHost += 2; + + if ( !strcmp ( sScheme, "unix" ) ) + { + // unix-domain socket + iPort = 0; + if (!( sIndex = strrchr ( sHost, ':' ) )) + sIndex = SPHINXSE_DEFAULT_INDEX; + else + { + *sIndex++ = '\0'; + if ( !*sIndex ) + sIndex = SPHINXSE_DEFAULT_INDEX; + } + bOk = true; + break; + } + if( strcmp ( sScheme, "sphinx" )!=0 && strcmp ( sScheme, "inet" )!=0 ) + break; + + // tcp + sHost++; + char * sPort = strchr ( sHost, ':' ); + if ( sPort ) + { + *sPort++ = '\0'; + if ( *sPort ) + { + sIndex = strchr ( sPort, '/' ); + if ( sIndex ) + *sIndex++ = '\0'; + else + sIndex = SPHINXSE_DEFAULT_INDEX; + + iPort = atoi(sPort); + if ( !iPort ) + iPort = SPHINXSE_DEFAULT_PORT; + } + } else + { + sIndex = strchr ( sHost, '/' ); + if ( sIndex ) + *sIndex++ = '\0'; + else + sIndex = SPHINXSE_DEFAULT_INDEX; + } + + bOk = true; + break; + } + + if ( !bOk ) + { + my_error ( bCreate ? ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE : ER_FOREIGN_DATA_STRING_INVALID, + MYF(0), table->s->connect_string ); + } else + { + if ( share ) + { + SafeDeleteArray ( share->m_sScheme ); + share->m_sScheme = sScheme; + share->m_sHost = sHost; + share->m_sIndex = sIndex; + share->m_iPort = (ushort)iPort; + } + } + if ( !bOk && !share ) + SafeDeleteArray ( sScheme ); + + SPH_RET(bOk); +} + + +// Example of simple lock controls. The "share" it creates is structure we will +// pass to each sphinx handler. Do you have to have one of these? Well, you have +// pieces that are used for locking, and they are needed to function. +static CSphSEShare * get_share ( const char * table_name, TABLE * table ) +{ + SPH_ENTER_FUNC(); + pthread_mutex_lock ( &sphinx_mutex ); + + CSphSEShare * pShare = NULL; + for ( ;; ) + { + // check if we already have this share +#if MYSQL_VERSION_ID>=50120 + pShare = (CSphSEShare*) hash_search ( &sphinx_open_tables, (const uchar *) table_name, strlen(table_name) ); +#else +#ifdef __WIN__ + pShare = (CSphSEShare*) hash_search ( &sphinx_open_tables, (const byte *) table_name, strlen(table_name) ); +#else + pShare = (CSphSEShare*) hash_search ( &sphinx_open_tables, table_name, strlen(table_name) ); +#endif // win +#endif // pre-5.1.20 + + if ( pShare ) + { + pShare->m_iUseCount++; + break; + } + + // try to allocate new share + pShare = new CSphSEShare (); + if ( !pShare ) + break; + + // try to setup it + pShare->m_pTableQueryCharset = table->field[2]->charset(); + if ( !ParseUrl ( pShare, table, false ) ) + { + SafeDelete ( pShare ); + break; + } + + // try to hash it + pShare->m_iTableNameLen = strlen(table_name); + pShare->m_sTable = sphDup ( table_name ); + if ( my_hash_insert ( &sphinx_open_tables, (const byte *)pShare ) ) + { + SafeDelete ( pShare ); + break; + } + + // all seems fine + break; + } + + pthread_mutex_unlock ( &sphinx_mutex ); + SPH_RET(pShare); +} + + +// Free lock controls. We call this whenever we close a table. If the table had +// the last reference to the share then we free memory associated with it. +static int free_share ( CSphSEShare * pShare ) +{ + SPH_ENTER_FUNC(); + pthread_mutex_lock ( &sphinx_mutex ); + + if ( !--pShare->m_iUseCount ) + { + hash_delete ( &sphinx_open_tables, (byte *)pShare ); + SafeDelete ( pShare ); + } + + pthread_mutex_unlock ( &sphinx_mutex ); + SPH_RET(0); +} + + +#if MYSQL_VERSION_ID>50100 +static handler * sphinx_create_handler ( handlerton * hton, TABLE_SHARE * table, MEM_ROOT * mem_root ) +{ + return new ( mem_root ) ha_sphinx ( hton, table ); +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// CLIENT-SIDE REQUEST STUFF +////////////////////////////////////////////////////////////////////////////// + +CSphSEQuery::CSphSEQuery ( const char * sQuery, int iLength, const char * sIndex ) + : m_sHost ( "" ) + , m_iPort ( 0 ) + , m_sIndex ( sIndex ? sIndex : "*" ) + , m_iOffset ( 0 ) + , m_iLimit ( 20 ) + , m_bQuery ( false ) + , m_sQuery ( "" ) + , m_pWeights ( NULL ) + , m_iWeights ( 0 ) + , m_eMode ( SPH_MATCH_ALL ) + , m_eRanker ( SPH_RANK_PROXIMITY_BM25 ) + , m_eSort ( SPH_SORT_RELEVANCE ) + , m_sSortBy ( "" ) + , m_iMaxMatches ( 1000 ) + , m_iMaxQueryTime ( 0 ) + , m_iMinID ( 0 ) + , m_iMaxID ( 0 ) + , m_iFilters ( 0 ) + , m_eGroupFunc ( SPH_GROUPBY_DAY ) + , m_sGroupBy ( "" ) + , m_sGroupSortBy ( "@group desc" ) + , m_iCutoff ( 0 ) + , m_iRetryCount ( 0 ) + , m_iRetryDelay ( 0 ) + , m_sGroupDistinct ( "" ) + , m_iIndexWeights ( 0 ) + , m_iFieldWeights ( 0 ) + , m_bGeoAnchor ( false ) + , m_sGeoLatAttr ( "" ) + , m_sGeoLongAttr ( "" ) + , m_fGeoLatitude ( 0.0f ) + , m_fGeoLongitude ( 0.0f ) + , m_sComment ( "" ) + + , m_pBuf ( NULL ) + , m_pCur ( NULL ) + , m_iBufLeft ( 0 ) + , m_bBufOverrun ( false ) +{ + m_sQueryBuffer = new char [ iLength+2 ]; + memcpy ( m_sQueryBuffer, sQuery, iLength ); + m_sQueryBuffer[iLength]= ';'; + m_sQueryBuffer[iLength+1]= '\0'; +} + + +CSphSEQuery::~CSphSEQuery () +{ + SPH_ENTER_METHOD(); + SafeDeleteArray ( m_sQueryBuffer ); + SafeDeleteArray ( m_pWeights ); + SafeDeleteArray ( m_pBuf ); + for ( int i=0; i +int CSphSEQuery::ParseArray ( T ** ppValues, const char * sValue ) +{ + SPH_ENTER_METHOD(); + + assert ( ppValues ); + assert ( !(*ppValues) ); + + const char * pValue; + bool bPrevDigit = false; + int iValues = 0; + + // count the values + for ( pValue=sValue; *pValue; pValue++ ) + { + bool bDigit = (*pValue)>='0' && (*pValue)<='9'; + if ( bDigit && !bPrevDigit ) + iValues++; + bPrevDigit = bDigit; + } + if ( !iValues ) + SPH_RET(0); + + // extract the values + T * pValues = new T [ iValues ]; + *ppValues = pValues; + + int iIndex = 0, iSign = 1; + T uValue = 0; + + bPrevDigit = false; + for ( pValue=sValue ;; pValue++ ) + { + bool bDigit = (*pValue)>='0' && (*pValue)<='9'; + + if ( bDigit ) + { + if ( !bPrevDigit ) + uValue = 0; + uValue = uValue*10 + ( (*pValue)-'0' ); + } + else if ( bPrevDigit ) + { + assert ( iIndexs && isspace(p[-1]) ) + p--; + *p = '\0'; + + return s; +} + + +static bool myisattr ( char c ) +{ + return + ( c>='0' && c<='9' ) || + ( c>='a' && c<='z' ) || + ( c>='A' && c<='Z' ) || + c=='_'; +} + + +bool CSphSEQuery::ParseField ( char * sField ) +{ + SPH_ENTER_METHOD(); + + // look for option name/value separator + char * sValue = strchr ( sField, '=' ); + if ( !sValue || sValue==sField || sValue[-1]=='\\' ) + { + // by default let's assume it's just query + if ( sField[0] ) + { + if ( m_bQuery ) + { + snprintf ( m_sParseError, sizeof(m_sParseError), "search query already specified; '%s' is redundant", sField ); + SPH_RET(false); + } else + { + m_sQuery = sField; + m_bQuery = true; + + // unescape + char *s = sField, *d = sField; + while ( *s ) + { + if ( *s!='\\' ) *d++ = *s; + s++; + } + *d = '\0'; + } + } + SPH_RET(true); + } + + // split + *sValue++ = '\0'; + sValue = chop ( sValue ); + int iValue = atoi ( sValue ); + + // handle options + char * sName = chop ( sField ); + + if ( !strcmp ( sName, "query" ) ) m_sQuery = sValue; + else if ( !strcmp ( sName, "host" ) ) m_sHost = sValue; + else if ( !strcmp ( sName, "port" ) ) m_iPort = iValue; + else if ( !strcmp ( sName, "index" ) ) m_sIndex = sValue; + else if ( !strcmp ( sName, "offset" ) ) m_iOffset = iValue; + else if ( !strcmp ( sName, "limit" ) ) m_iLimit = iValue; + else if ( !strcmp ( sName, "weights" ) ) m_iWeights = ParseArray ( &m_pWeights, sValue ); + else if ( !strcmp ( sName, "minid" ) ) m_iMinID = iValue; + else if ( !strcmp ( sName, "maxid" ) ) m_iMaxID = iValue; + else if ( !strcmp ( sName, "maxmatches" ) ) m_iMaxMatches = iValue; + else if ( !strcmp ( sName, "maxquerytime" ) ) m_iMaxQueryTime = iValue; + else if ( !strcmp ( sName, "groupsort" ) ) m_sGroupSortBy = sValue; + else if ( !strcmp ( sName, "distinct" ) ) m_sGroupDistinct = sValue; + else if ( !strcmp ( sName, "cutoff" ) ) m_iCutoff = iValue; + else if ( !strcmp ( sName, "comment" ) ) m_sComment = sValue; + + else if ( !strcmp ( sName, "mode" ) ) + { + + m_eMode = SPH_MATCH_ALL; + if ( !strcmp ( sValue, "any") ) m_eMode = SPH_MATCH_ANY; + else if ( !strcmp ( sValue, "phrase" ) ) m_eMode = SPH_MATCH_PHRASE; + else if ( !strcmp ( sValue, "boolean") ) m_eMode = SPH_MATCH_BOOLEAN; + else if ( !strcmp ( sValue, "ext") ) m_eMode = SPH_MATCH_EXTENDED; + else if ( !strcmp ( sValue, "extended") ) m_eMode = SPH_MATCH_EXTENDED; + else if ( !strcmp ( sValue, "ext2") ) m_eMode = SPH_MATCH_EXTENDED2; + else if ( !strcmp ( sValue, "extended2") ) m_eMode = SPH_MATCH_EXTENDED2; + else if ( !strcmp ( sValue, "all") ) m_eMode = SPH_MATCH_ALL; + else if ( !strcmp ( sValue, "fullscan") ) m_eMode = SPH_MATCH_FULLSCAN; + else + { + snprintf ( m_sParseError, sizeof(m_sParseError), "unknown matching mode '%s'", sValue ); + SPH_RET(false); + } + } else if ( !strcmp ( sName, "ranker" ) ) + { + + m_eRanker = SPH_RANK_PROXIMITY_BM25; + if ( !strcmp ( sValue, "proximity_bm25") ) m_eRanker = SPH_RANK_PROXIMITY_BM25; + else if ( !strcmp ( sValue, "bm25" ) ) m_eRanker = SPH_RANK_BM25; + else if ( !strcmp ( sValue, "none" ) ) m_eRanker = SPH_RANK_NONE; + else if ( !strcmp ( sValue, "wordcount" ) ) m_eRanker = SPH_RANK_WORDCOUNT; + else if ( !strcmp ( sValue, "proximity" ) ) m_eRanker = SPH_RANK_PROXIMITY; + else if ( !strcmp ( sValue, "matchany" ) ) m_eRanker = SPH_RANK_MATCHANY; + else if ( !strcmp ( sValue, "fieldmask" ) ) m_eRanker = SPH_RANK_FIELDMASK; + else + { + snprintf ( m_sParseError, sizeof(m_sParseError), "unknown ranking mode '%s'", sValue ); + SPH_RET(false); + } + } else if ( !strcmp ( sName, "sort" ) ) + { + static const struct + { + const char * m_sName; + ESphSortOrder m_eSort; + } dSortModes[] = + { + { "relevance", SPH_SORT_RELEVANCE }, + { "attr_desc:", SPH_SORT_ATTR_DESC }, + { "attr_asc:", SPH_SORT_ATTR_ASC }, + { "time_segments:", SPH_SORT_TIME_SEGMENTS }, + { "extended:", SPH_SORT_EXTENDED }, + { "expr:", SPH_SORT_EXPR } + }; + + int i; + const int nModes = sizeof(dSortModes)/sizeof(dSortModes[0]); + for ( i=0; i ( &tFilter.m_pValues, sValue ); + if ( !tFilter.m_iValues ) + { + assert ( !tFilter.m_pValues ); + break; + } + + // all ok + m_iFilters++; + break; + } + + } else if ( !strcmp ( sName, "indexweights" ) || !strcmp ( sName, "fieldweights" ) ) + { + bool bIndex = !strcmp ( sName, "indexweights" ); + int * pCount = bIndex ? &m_iIndexWeights : &m_iFieldWeights; + char ** pNames = bIndex ? &m_sIndexWeight[0] : &m_sFieldWeight[0]; + int * pWeights = bIndex ? &m_iIndexWeight[0] : &m_iFieldWeight[0]; + + *pCount = 0; + + char * p = sValue; + while ( *p && *pCountm_sName = chop(sName); + pOverride->m_iType = iType; + m_dOverrides.append(pOverride); + } + + ulonglong uId = strtoull ( sId, NULL, 10 ); + CSphSEQuery::Override_t::Value_t tValue; + if ( iType == SPH_ATTR_FLOAT ) + tValue.m_fValue = (float)atof(sValue); + else if ( iType == SPH_ATTR_BIGINT ) + tValue.m_iValue64 = strtoll ( sValue, NULL, 10 ); + else + tValue.m_uValue = (uint32)strtoul ( sValue, NULL, 10 ); + + pOverride->m_dIds.append ( uId ); + pOverride->m_dValues.append ( tValue ); + } + + if ( !pOverride ) + { + snprintf ( m_sParseError, sizeof(m_sParseError), "override: id:value mapping expected" ); + SPH_RET(false); + } + SPH_RET(true); + } + else + { + snprintf ( m_sParseError, sizeof(m_sParseError), "unknown parameter '%s'", sName ); + SPH_RET(false); + } + + // !COMMIT handle syntax errors + + SPH_RET(true); +} + + +bool CSphSEQuery::Parse () +{ + SPH_ENTER_METHOD(); + SPH_DEBUG ( "query [[ %s ]]", m_sQueryBuffer ); + + m_bQuery = false; + char * pCur = m_sQueryBuffer; + char * pNext = pCur; + + while (( pNext = strchr ( pNext, ';' ) )) + { + // handle escaped semicolons + if ( pNext>m_sQueryBuffer && pNext[-1]=='\\' && pNext[1]!='\0' ) + { + pNext++; + continue; + } + + // handle semicolon-separated clauses + *pNext++ = '\0'; + if ( !ParseField ( pCur ) ) + SPH_RET(false); + pCur = pNext; + } + + SPH_RET(true); +} + + +void CSphSEQuery::SendBytes ( const void * pBytes, int iBytes ) +{ + SPH_ENTER_METHOD(); + if ( m_iBufLeftm_iType == SPH_ATTR_BIGINT ? 16 : 12; // id64 + value + iReqSize += strlen ( pOverride->m_sName ) + 12 + uSize*pOverride->m_dIds.elements(); + } + // select + iReqSize += 4; + + m_iBufLeft = 0; + SafeDeleteArray ( m_pBuf ); + + m_pBuf = new char [ iReqSize ]; + if ( !m_pBuf ) + SPH_RET(-1); + + m_pCur = m_pBuf; + m_iBufLeft = iReqSize; + m_bBufOverrun = false; + (*ppBuffer) = m_pBuf; + + // build request + SendWord ( SEARCHD_COMMAND_SEARCH ); // command id + SendWord ( VER_COMMAND_SEARCH ); // command version + SendInt ( iReqSize-8 ); // packet body length + + SendInt ( 1 ); // number of queries + SendInt ( m_iOffset ); + SendInt ( m_iLimit ); + SendInt ( m_eMode ); + SendInt ( m_eRanker ); // 1.16+ + SendInt ( m_eSort ); + SendString ( m_sSortBy ); // sort attr + SendString ( m_sQuery ); // query + SendInt ( m_iWeights ); + for ( int j=0; jm_sName ); + SendDword ( pOverride->m_iType ); + SendInt ( pOverride->m_dIds.elements() ); + for ( int j=0; jm_dIds.elements(); j++ ) + { + SendUint64 ( pOverride->m_dIds.at(j) ); + if ( pOverride->m_iType == SPH_ATTR_FLOAT ) + SendFloat ( pOverride->m_dValues.at(j).m_fValue ); + else if ( pOverride->m_iType == SPH_ATTR_BIGINT ) + SendUint64 ( pOverride->m_dValues.at(j).m_iValue64 ); + else + SendDword ( pOverride->m_dValues.at(j).m_uValue ); + } + } + + // select + SendString ( "" ); + + // detect buffer overruns and underruns, and report internal error + if ( m_bBufOverrun || m_iBufLeft!=0 || m_pCur-m_pBuf!=iReqSize ) + SPH_RET(-1); + + // all fine + SPH_RET(iReqSize); +} + +////////////////////////////////////////////////////////////////////////////// +// SPHINX HANDLER +////////////////////////////////////////////////////////////////////////////// + +static const char * ha_sphinx_exts[] = { NullS }; + + +#if MYSQL_VERSION_ID<50100 +ha_sphinx::ha_sphinx ( TABLE_ARG * table ) + : handler ( &sphinx_hton, table ) +#else +ha_sphinx::ha_sphinx ( handlerton * hton, TABLE_ARG * table ) + : handler ( hton, table ) +#endif + , m_pShare ( NULL ) + , m_iMatchesTotal ( 0 ) + , m_iCurrentPos ( 0 ) + , m_pCurrentKey ( NULL ) + , m_iCurrentKeyLen ( 0 ) + , m_pResponse ( NULL ) + , m_pResponseEnd ( NULL ) + , m_pCur ( NULL ) + , m_bUnpackError ( false ) + , m_iFields ( 0 ) + , m_dFields ( NULL ) + , m_iAttrs ( 0 ) + , m_dAttrs ( NULL ) + , m_bId64 ( 0 ) + , m_dUnboundFields ( NULL ) +{ + SPH_ENTER_METHOD(); + SPH_VOID_RET(); +} + + +// If frm_error() is called then we will use this to to find out what file extentions +// exist for the storage engine. This is also used by the default rename_table and +// delete_table method in handler.cc. +const char ** ha_sphinx::bas_ext() const +{ + return ha_sphinx_exts; +} + + +// Used for opening tables. The name will be the name of the file. +// A table is opened when it needs to be opened. For instance +// when a request comes in for a select on the table (tables are not +// open and closed for each request, they are cached). +// +// Called from handler.cc by handler::ha_open(). The server opens all tables by +// calling ha_open() which then calls the handler specific open(). +int ha_sphinx::open ( const char * name, int, uint ) +{ + SPH_ENTER_METHOD(); + m_pShare = get_share ( name, table ); + if ( !m_pShare ) + SPH_RET(1); + + thr_lock_data_init ( &m_pShare->m_tLock, &m_tLock, NULL ); + + *thd_ha_data ( table->in_use, ht ) = NULL; + + SPH_RET(0); +} + + +int ha_sphinx::ConnectToSearchd ( const char * sQueryHost, int iQueryPort ) +{ + SPH_ENTER_METHOD(); + + struct sockaddr_in sin; +#ifndef __WIN__ + struct sockaddr_un saun; +#endif + + int iDomain = 0; + int iSockaddrSize = 0; + struct sockaddr * pSockaddr = NULL; + + in_addr_t ip_addr; + int version; + uint uClientVersion = htonl ( SPHINX_SEARCHD_PROTO ); + + const char * sHost = ( sQueryHost && *sQueryHost ) ? sQueryHost : m_pShare->m_sHost; + ushort iPort = iQueryPort ? (ushort)iQueryPort : m_pShare->m_iPort; + + if ( iPort ) + { + iDomain = AF_INET; + iSockaddrSize = sizeof(sin); + pSockaddr = (struct sockaddr *) &sin; + + memset ( &sin, 0, sizeof(sin) ); + sin.sin_family = AF_INET; + sin.sin_port = htons(iPort); + + // prepare host address + if ( (int)( ip_addr=inet_addr(sHost) ) != (int)INADDR_NONE ) + { + memcpy ( &sin.sin_addr, &ip_addr, sizeof(ip_addr) ); + } else + { + int tmp_errno; + struct hostent tmp_hostent, *hp; + char buff2 [ GETHOSTBYNAME_BUFF_SIZE ]; + + hp = my_gethostbyname_r ( sHost, &tmp_hostent, + buff2, sizeof(buff2), &tmp_errno ); + if ( !hp ) + { + my_gethostbyname_r_free(); + + char sError[256]; + my_snprintf ( sError, sizeof(sError), "failed to resolve searchd host (name=%s)", sHost ); + + my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError ); + SPH_RET(-1); + } + + memcpy ( &sin.sin_addr, hp->h_addr, + Min ( sizeof(sin.sin_addr), (size_t)hp->h_length ) ); + my_gethostbyname_r_free(); + } + } else + { +#ifndef __WIN__ + iDomain = AF_UNIX; + iSockaddrSize = sizeof(saun); + pSockaddr = (struct sockaddr *) &saun; + + memset ( &saun, 0, sizeof(saun) ); + saun.sun_family = AF_UNIX; + strncpy ( saun.sun_path, sHost, sizeof(saun.sun_path)-1 ); +#else + my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), "UNIX sockets are not supported on Windows" ); + SPH_RET(-1); +#endif + } + + char sError[512]; + int iSocket = socket ( iDomain, SOCK_STREAM, 0 ); + + if ( iSocket<0 ) + { + my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), "failed to create client socket" ); + SPH_RET(-1); + } + + if ( connect ( iSocket, pSockaddr, iSockaddrSize )<0 ) + { + sphSockClose ( iSocket ); + my_snprintf ( sError, sizeof(sError), "failed to connect to searchd (host=%s, errno=%d, port=%d)", + sHost, errno, iPort ); + my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError ); + SPH_RET(-1); + } + + if ( ::recv ( iSocket, (char *)&version, sizeof(version), 0 )!=sizeof(version) ) + { + sphSockClose ( iSocket ); + my_snprintf ( sError, sizeof(sError), "failed to receive searchd version (host=%s, port=%d)", + sHost, iPort ); + my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError ); + SPH_RET(-1); + } + + if ( ::send ( iSocket, (char*)&uClientVersion, sizeof(uClientVersion), 0 )!=sizeof(uClientVersion) ) + { + sphSockClose ( iSocket ); + my_snprintf ( sError, sizeof(sError), "failed to send client version (host=%s, port=%d)", + sHost, iPort ); + my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError ); + SPH_RET(-1); + } + + SPH_RET(iSocket); +} + + +// Closes a table. We call the free_share() function to free any resources +// that we have allocated in the "shared" structure. +// +// Called from sql_base.cc, sql_select.cc, and table.cc. +// In sql_select.cc it is only used to close up temporary tables or during +// the process where a temporary table is converted over to being a +// myisam table. +// For sql_base.cc look at close_data_tables(). +int ha_sphinx::close() +{ + SPH_ENTER_METHOD(); + SPH_RET ( free_share(m_pShare) ); +} + + +int ha_sphinx::write_row ( uchar * ) +{ + SPH_ENTER_METHOD(); + SPH_RET ( HA_ERR_WRONG_COMMAND ); +} + + +int ha_sphinx::update_row ( const uchar *, uchar * ) +{ + SPH_ENTER_METHOD(); + SPH_RET ( HA_ERR_WRONG_COMMAND ); +} + + +int ha_sphinx::delete_row ( const uchar * ) +{ + SPH_ENTER_METHOD(); + SPH_RET ( HA_ERR_WRONG_COMMAND ); +} + + +// keynr is key (index) number +// sorted is 1 if result MUST be sorted according to index +int ha_sphinx::index_init ( uint keynr, bool ) +{ + SPH_ENTER_METHOD(); + active_index = keynr; + SPH_RET(0); +} + + +int ha_sphinx::index_end() +{ + SPH_ENTER_METHOD(); + SPH_RET(0); +} + + +uint32 ha_sphinx::UnpackDword () +{ + if ( m_pCur+sizeof(uint32)>m_pResponseEnd ) + { + m_pCur = m_pResponseEnd; + m_bUnpackError = true; + return 0; + } + + uint32 uRes = ntohl ( sphUnalignedRead ( *(uint32*)m_pCur ) ); + m_pCur += sizeof(uint32); + return uRes; +} + + +char * ha_sphinx::UnpackString () +{ + uint32 iLen = UnpackDword (); + if ( !iLen ) + return NULL; + + if ( m_pCur+iLen>m_pResponseEnd ) + { + m_pCur = m_pResponseEnd; + m_bUnpackError = true; + return NULL; + } + + char * sRes = new char [ 1+iLen ]; + memcpy ( sRes, m_pCur, iLen ); + sRes[iLen] = '\0'; + m_pCur += iLen; + return sRes; +} + + +static inline const char * FixNull ( const char * s ) +{ + return s ? s : "(null)"; +} + + +bool ha_sphinx::UnpackSchema () +{ + SPH_ENTER_METHOD(); + + // cleanup + if ( m_dFields ) + for ( int i=0; i<(int)m_iFields; i++ ) + SafeDeleteArray ( m_dFields[i] ); + SafeDeleteArray ( m_dFields ); + + // unpack network packet + uint32 uStatus = UnpackDword (); + char * sMessage = NULL; + + if ( uStatus!=SEARCHD_OK ) + { + sMessage = UnpackString (); + CSphSEThreadData * pTls = GetTls (); + if ( pTls ) + { + strncpy ( pTls->m_tStats.m_sLastMessage, sMessage, sizeof(pTls->m_tStats.m_sLastMessage) ); + pTls->m_tStats.m_bLastError = ( uStatus==SEARCHD_ERROR ); + } + + if ( uStatus==SEARCHD_ERROR ) + { + char sError[1024]; + my_snprintf ( sError, sizeof(sError), "searchd error: %s", sMessage ); + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sError ); + SafeDeleteArray ( sMessage ); + SPH_RET ( false ); + } + } + + m_iFields = UnpackDword (); + m_dFields = new char * [ m_iFields ]; + if ( !m_dFields ) + { + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: UnpackSchema() failed (fields alloc error)" ); + SPH_RET(false); + } + + for ( uint32 i=0; im_iTableFields; j++ ) + { + const char * sTableField = m_pShare->m_sTableField[j]; + const char * sAttrField = m_dAttrs[i].m_sName; + if ( m_dAttrs[i].m_sName[0]=='@' ) + { + const char * sAtPrefix = "_sph_"; + if ( strncmp ( sTableField, sAtPrefix, strlen(sAtPrefix) ) ) + continue; + sTableField += strlen(sAtPrefix); + sAttrField++; + } + + if ( !strcasecmp ( sAttrField, sTableField ) ) + { + // we're almost good, but + // let's enforce that timestamp columns can only receive timestamp attributes + if ( m_pShare->m_eTableFieldType[j]!=MYSQL_TYPE_TIMESTAMP || m_dAttrs[i].m_uType==SPH_ATTR_TIMESTAMP ) + m_dAttrs[i].m_iField = j; + break; + } + } + } + + m_iMatchesTotal = UnpackDword (); + + m_bId64 = UnpackDword (); + if ( m_bId64 && m_pShare->m_eTableFieldType[0] != MYSQL_TYPE_LONGLONG ) + { + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: 1st column must be bigint to accept 64-bit DOCIDs" ); + SPH_RET(false); + } + + // network packet unpacked; build unbound fields map + SafeDeleteArray ( m_dUnboundFields ); + m_dUnboundFields = new int [ m_pShare->m_iTableFields ]; + + for ( int i=0; im_iTableFields; i++ ) + { + if ( im_eTableFieldType[i]==MYSQL_TYPE_TIMESTAMP ) + m_dUnboundFields[i] = SPH_ATTR_TIMESTAMP; + + else + m_dUnboundFields[i] = SPH_ATTR_INTEGER; + } + + for ( uint32 i=0; i=0 ) + m_dUnboundFields [ m_dAttrs[i].m_iField ] = SPH_ATTR_NONE; + + if ( m_bUnpackError ) + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: UnpackSchema() failed (unpack error)" ); + + SPH_RET(!m_bUnpackError); +} + + +bool ha_sphinx::UnpackStats ( CSphSEStats * pStats ) +{ + assert ( pStats ); + + char * pCurSave = m_pCur; + for ( uint i=0; im_iMatchesTotal = UnpackDword (); + pStats->m_iMatchesFound = UnpackDword (); + pStats->m_iQueryMsec = UnpackDword (); + pStats->m_iWords = UnpackDword (); + + if ( m_bUnpackError ) + return false; + + SafeDeleteArray ( pStats->m_dWords ); + if ( pStats->m_iWords<0 || pStats->m_iWords>=SPHINXSE_MAX_KEYWORDSTATS ) + return false; + pStats->m_dWords = new CSphSEWordStats [ pStats->m_iWords ]; + if ( !pStats->m_dWords ) + return false; + + for ( int i=0; im_iWords; i++ ) + { + CSphSEWordStats & tWord = pStats->m_dWords[i]; + tWord.m_sWord = UnpackString (); + tWord.m_iDocs = UnpackDword (); + tWord.m_iHits = UnpackDword (); + } + + if ( m_bUnpackError ) + return false; + + m_pCur = pCurSave; + return true; +} + + +/// condition pushdown implementation, to properly intercept WHERE clauses on my columns +const COND * ha_sphinx::cond_push ( const COND * cond ) +{ + // catch the simplest case: query_column="some text" + for ( ;; ) + { + if ( cond->type()!=COND::FUNC_ITEM ) + break; + + Item_func * condf = (Item_func *)cond; + if ( condf->functype()!=Item_func::EQ_FUNC || condf->argument_count()!=2 ) + break; + + Item ** args = condf->arguments(); + if ( args[0]->type()!=COND::FIELD_ITEM || args[1]->type()!=COND::STRING_ITEM ) + break; + + Item_field * pField = (Item_field *) args[0]; + if ( pField->field->field_index!=2 ) // FIXME! magic key index + break; + + // get my tls + CSphSEThreadData * pTls = GetTls (); + if ( !pTls ) + break; + + // copy the query, and let know that we intercepted this condition + Item_string * pString = (Item_string *) args[1]; + pTls->m_bQuery = true; + strncpy ( pTls->m_sQuery, pString->str_value.c_ptr(), sizeof(pTls->m_sQuery) ); + pTls->m_sQuery[sizeof(pTls->m_sQuery)-1] = '\0'; + pTls->m_pQueryCharset = pString->str_value.charset(); + return NULL; + } + + // don't change anything + return cond; +} + + +/// condition popup +void ha_sphinx::cond_pop () +{ + CSphSEThreadData * pTls = GetTls (); + if ( pTls && pTls->m_bQuery ) + pTls->m_bQuery = false; + return; +} + + +/// get TLS (maybe allocate it, too) +CSphSEThreadData * ha_sphinx::GetTls() +{ + // where do we store that pointer in today's version? + CSphSEThreadData ** ppTls; + ppTls = (CSphSEThreadData**) thd_ha_data ( ha_thd(), ht ); + + // allocate if needed + if ( !*ppTls ) + *ppTls = new CSphSEThreadData (); + + // errors will be handled by caller + return *ppTls; +} + + +// Positions an index cursor to the index specified in the handle. Fetches the +// row if available. If the key value is null, begin at the first key of the +// index. +int ha_sphinx::index_read ( byte * buf, const byte * key, uint key_len, enum ha_rkey_function ) +{ + SPH_ENTER_METHOD(); + char sError[256]; + + // set new data for thd->ha_data, it is used in show_status + CSphSEThreadData * pTls = GetTls(); + if ( !pTls ) + { + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: TLS malloc() failed" ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + pTls->m_tStats.Reset (); + + // parse query + if ( pTls->m_bQuery ) + { + // we have a query from condition pushdown + m_pCurrentKey = (const byte *) pTls->m_sQuery; + m_iCurrentKeyLen = strlen(pTls->m_sQuery); + } else + { + // just use the key (might be truncated) + m_pCurrentKey = key+HA_KEY_BLOB_LENGTH; + m_iCurrentKeyLen = uint2korr(key); // or maybe key_len? + pTls->m_pQueryCharset = m_pShare ? m_pShare->m_pTableQueryCharset : NULL; + } + + CSphSEQuery q ( (const char*)m_pCurrentKey, m_iCurrentKeyLen, m_pShare->m_sIndex ); + if ( !q.Parse () ) + { + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), q.m_sParseError ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + + // do connect + int iSocket = ConnectToSearchd ( q.m_sHost, q.m_iPort ); + if ( iSocket<0 ) + SPH_RET ( HA_ERR_END_OF_FILE ); + + // my buffer + char * pBuffer; // will be free by CSphSEQuery dtor; do NOT free manually + int iReqLen = q.BuildRequest ( &pBuffer ); + + if ( iReqLen<=0 ) + { + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: q.BuildRequest() failed" ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + + // send request + ::send ( iSocket, pBuffer, iReqLen, 0 ); + + // receive reply + char sHeader[8]; + int iGot = ::recv ( iSocket, sHeader, sizeof(sHeader), RECV_FLAGS ); + if ( iGot!=sizeof(sHeader) ) + { + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "failed to receive response header (searchd went away?)" ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + + short int uRespStatus = ntohs ( sphUnalignedRead ( *(short int*)( &sHeader[0] ) ) ); + short int uRespVersion = ntohs ( sphUnalignedRead ( *(short int*)( &sHeader[2] ) ) ); + uint uRespLength = ntohl ( sphUnalignedRead ( *(uint *)( &sHeader[4] ) ) ); + SPH_DEBUG ( "got response header (status=%d version=%d length=%d)", + uRespStatus, uRespVersion, uRespLength ); + + SafeDeleteArray ( m_pResponse ); + if ( uRespLength<=SPHINXSE_MAX_ALLOC ) + m_pResponse = new char [ uRespLength+1 ]; + + if ( !m_pResponse ) + { + my_snprintf ( sError, sizeof(sError), "bad searchd response length (length=%u)", uRespLength ); + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sError ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + + int iRecvLength = 0; + while ( iRecvLength<(int)uRespLength ) + { + int iRecv = ::recv ( iSocket, m_pResponse+iRecvLength, uRespLength-iRecvLength, RECV_FLAGS ); + if ( iRecv<0 ) + break; + iRecvLength += iRecv; + } + + ::closesocket ( iSocket ); + iSocket = -1; + + if ( iRecvLength!=(int)uRespLength ) + { + my_snprintf ( sError, sizeof(sError), "net read error (expected=%d, got=%d)", uRespLength, iRecvLength ); + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sError ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + + // we'll have a message, at least + pTls->m_bStats = true; + + // parse reply + m_iCurrentPos = 0; + m_pCur = m_pResponse; + m_pResponseEnd = m_pResponse + uRespLength; + m_bUnpackError = false; + + if ( uRespStatus!=SEARCHD_OK ) + { + char * sMessage = UnpackString (); + if ( !sMessage ) + { + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "no valid response from searchd (status=%d, resplen=%d)", + uRespStatus, uRespLength ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + + strncpy ( pTls->m_tStats.m_sLastMessage, sMessage, sizeof(pTls->m_tStats.m_sLastMessage) ); + SafeDeleteArray ( sMessage ); + + if ( uRespStatus!=SEARCHD_WARNING ) + { + my_snprintf ( sError, sizeof(sError), "searchd error: %s", pTls->m_tStats.m_sLastMessage ); + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sError ); + + pTls->m_tStats.m_bLastError = true; + SPH_RET ( HA_ERR_END_OF_FILE ); + } + } + + if ( !UnpackSchema () ) + SPH_RET ( HA_ERR_END_OF_FILE ); + + if ( !UnpackStats ( &pTls->m_tStats ) ) + { + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: UnpackStats() failed" ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + + SPH_RET ( get_rec ( buf, key, key_len ) ); +} + + +// Positions an index cursor to the index specified in key. Fetches the +// row if any. This is only used to read whole keys. +int ha_sphinx::index_read_idx ( byte *, uint, const byte *, uint, enum ha_rkey_function ) +{ + SPH_ENTER_METHOD(); + SPH_RET ( HA_ERR_WRONG_COMMAND ); +} + + +// Used to read forward through the index. +int ha_sphinx::index_next ( byte * buf ) +{ + SPH_ENTER_METHOD(); + SPH_RET ( get_rec ( buf, m_pCurrentKey, m_iCurrentKeyLen ) ); +} + + +int ha_sphinx::index_next_same ( byte * buf, const byte * key, uint keylen ) +{ + SPH_ENTER_METHOD(); + SPH_RET ( get_rec ( buf, key, keylen ) ); +} + + +int ha_sphinx::get_rec ( byte * buf, const byte *, uint ) +{ + SPH_ENTER_METHOD(); + + if ( m_iCurrentPos>=m_iMatchesTotal ) + { + SafeDeleteArray ( m_pResponse ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + + #if MYSQL_VERSION_ID>50100 + my_bitmap_map * org_bitmap = dbug_tmp_use_all_columns ( table, table->write_set ); + #endif + Field ** field = table->field; + + // unpack and return the match + longlong uMatchID = UnpackDword (); + if ( m_bId64 ) + uMatchID = ( uMatchID<<32 ) + UnpackDword(); + uint32 uMatchWeight = UnpackDword (); + + field[0]->store ( uMatchID, 1 ); + field[1]->store ( uMatchWeight, 1 ); + field[2]->store ( (const char*)m_pCurrentKey, m_iCurrentKeyLen, &my_charset_bin ); + + for ( uint32 i=0; i0 && !m_bUnpackError; uValue-- ) + UnpackDword(); + continue; + } + + Field * af = field [ m_dAttrs[i].m_iField ]; + switch ( m_dAttrs[i].m_uType ) + { + case SPH_ATTR_INTEGER: + case SPH_ATTR_ORDINAL: + case SPH_ATTR_BOOL: + af->store ( uValue, 1 ); + break; + + case SPH_ATTR_FLOAT: + af->store ( sphDW2F(uValue) ); + break; + + case SPH_ATTR_TIMESTAMP: + if ( af->type()==MYSQL_TYPE_TIMESTAMP ) + longstore ( af->ptr, uValue ); // because store() does not accept timestamps + else + af->store ( uValue, 1 ); + break; + + case SPH_ATTR_BIGINT: + af->store ( iValue64, 0 ); + break; + + case ( SPH_ATTR_MULTI | SPH_ATTR_INTEGER ): + if ( uValue<=0 ) + { + // shortcut, empty MVA set + af->store ( "", 0, &my_charset_bin ); + + } else + { + // convert MVA set to comma-separated string + char sBuf[1024]; // FIXME! magic size + char * pCur = sBuf; + + for ( ; uValue>0 && !m_bUnpackError; uValue-- ) + { + uint32 uEntry = UnpackDword (); + if ( pCur < sBuf+sizeof(sBuf)-16 ) // 10 chars per 32bit value plus some safety bytes + { + sprintf ( pCur, "%u", uEntry ); + while ( *pCur ) *pCur++; + if ( uValue>1 ) + *pCur++ = ','; // non-trailing commas + } + } + + af->store ( sBuf, pCur-sBuf, &my_charset_bin ); + } + break; + + default: + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: unhandled attr type" ); + SafeDeleteArray ( m_pResponse ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + } + + if ( m_bUnpackError ) + { + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: response unpacker failed" ); + SafeDeleteArray ( m_pResponse ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + + // zero out unmapped fields + for ( int i=SPHINXSE_SYSTEM_COLUMNS; i<(int)table->s->fields; i++ ) + if ( m_dUnboundFields[i]!=SPH_ATTR_NONE ) + switch ( m_dUnboundFields[i] ) + { + case SPH_ATTR_INTEGER: table->field[i]->store ( 0, 1 ); break; + case SPH_ATTR_TIMESTAMP: longstore ( table->field[i]->ptr, 0 ); break; + default: + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), + "INTERNAL ERROR: unhandled unbound field type %d", m_dUnboundFields[i] ); + SafeDeleteArray ( m_pResponse ); + SPH_RET ( HA_ERR_END_OF_FILE ); + } + + memset ( buf, 0, table->s->null_bytes ); + m_iCurrentPos++; + + #if MYSQL_VERSION_ID > 50100 + dbug_tmp_restore_column_map(table->write_set, org_bitmap); + #endif + + SPH_RET(0); +} + + +// Used to read backwards through the index. +int ha_sphinx::index_prev ( byte * ) +{ + SPH_ENTER_METHOD(); + SPH_RET ( HA_ERR_WRONG_COMMAND ); +} + + +// index_first() asks for the first key in the index. +// +// Called from opt_range.cc, opt_sum.cc, sql_handler.cc, +// and sql_select.cc. +int ha_sphinx::index_first ( byte * ) +{ + SPH_ENTER_METHOD(); + SPH_RET ( HA_ERR_END_OF_FILE ); +} + +// index_last() asks for the last key in the index. +// +// Called from opt_range.cc, opt_sum.cc, sql_handler.cc, +// and sql_select.cc. +int ha_sphinx::index_last ( byte * ) +{ + SPH_ENTER_METHOD(); + SPH_RET ( HA_ERR_WRONG_COMMAND ); +} + + +int ha_sphinx::rnd_init ( bool ) +{ + SPH_ENTER_METHOD(); + SPH_RET(0); +} + + +int ha_sphinx::rnd_end() +{ + SPH_ENTER_METHOD(); + SPH_RET(0); +} + + +int ha_sphinx::rnd_next ( byte * ) +{ + SPH_ENTER_METHOD(); + SPH_RET ( HA_ERR_END_OF_FILE ); +} + + +void ha_sphinx::position ( const byte * ) +{ + SPH_ENTER_METHOD(); + SPH_VOID_RET(); +} + + +// This is like rnd_next, but you are given a position to use +// to determine the row. The position will be of the type that you stored in +// ref. You can use ha_get_ptr(pos,ref_length) to retrieve whatever key +// or position you saved when position() was called. +// Called from filesort.cc records.cc sql_insert.cc sql_select.cc sql_update.cc. +int ha_sphinx::rnd_pos ( byte *, byte * ) +{ + SPH_ENTER_METHOD(); + SPH_RET ( HA_ERR_WRONG_COMMAND ); +} + + +#if MYSQL_VERSION_ID>=50030 +int ha_sphinx::info ( uint ) +#else +void ha_sphinx::info ( uint ) +#endif +{ + SPH_ENTER_METHOD(); + + if ( table->s->keys>0 ) + table->key_info[0].rec_per_key[0] = 1; + + #if MYSQL_VERSION_ID>50100 + stats.records = 20; + #else + records = 20; + #endif + +#if MYSQL_VERSION_ID>=50030 + SPH_RET(0); +#else + SPH_VOID_RET(); +#endif +} + + +int ha_sphinx::reset () +{ + SPH_ENTER_METHOD(); + CSphSEThreadData * pTls = GetTls (); + if ( pTls ) + pTls->m_bQuery = false; + SPH_RET(0); +} + + +int ha_sphinx::delete_all_rows() +{ + SPH_ENTER_METHOD(); + SPH_RET ( HA_ERR_WRONG_COMMAND ); +} + + +// First you should go read the section "locking functions for mysql" in +// lock.cc to understand this. +// This create a lock on the table. If you are implementing a storage engine +// that can handle transacations look at ha_berkely.cc to see how you will +// want to go about doing this. Otherwise you should consider calling flock() +// here. +// +// Called from lock.cc by lock_external() and unlock_external(). Also called +// from sql_table.cc by copy_data_between_tables(). +int ha_sphinx::external_lock ( THD *, int ) +{ + SPH_ENTER_METHOD(); + SPH_RET(0); +} + + +THR_LOCK_DATA ** ha_sphinx::store_lock ( THD *, THR_LOCK_DATA ** to, + enum thr_lock_type lock_type ) +{ + SPH_ENTER_METHOD(); + + if ( lock_type!=TL_IGNORE && m_tLock.type==TL_UNLOCK ) + m_tLock.type=lock_type; + + *to++ = &m_tLock; + SPH_RET(to); +} + + +int ha_sphinx::delete_table ( const char * ) +{ + SPH_ENTER_METHOD(); + SPH_RET(0); +} + + +// Renames a table from one name to another from alter table call. +// +// If you do not implement this, the default rename_table() is called from +// handler.cc and it will delete all files with the file extentions returned +// by bas_ext(). +// +// Called from sql_table.cc by mysql_rename_table(). +int ha_sphinx::rename_table ( const char *, const char * ) +{ + SPH_ENTER_METHOD(); + SPH_RET(0); +} + + +// Given a starting key, and an ending key estimate the number of rows that +// will exist between the two. end_key may be empty which in case determine +// if start_key matches any rows. +// +// Called from opt_range.cc by check_quick_keys(). +ha_rows ha_sphinx::records_in_range ( uint, key_range *, key_range * ) +{ + SPH_ENTER_METHOD(); + SPH_RET(3); // low number to force index usage +} + + +static inline bool IsIntegerFieldType ( enum_field_types eType ) +{ + return eType==MYSQL_TYPE_LONG || eType==MYSQL_TYPE_LONGLONG; +} + + +// create() is called to create a database. The variable name will have the name +// of the table. When create() is called you do not need to worry about opening +// the table. Also, the FRM file will have already been created so adjusting +// create_info will not do you any good. You can overwrite the frm file at this +// point if you wish to change the table definition, but there are no methods +// currently provided for doing that. +// +// Called from handle.cc by ha_create_table(). +int ha_sphinx::create ( const char * name, TABLE * table, HA_CREATE_INFO * ) +{ + SPH_ENTER_METHOD(); + char sError[256]; + + if ( !ParseUrl ( NULL, table, true ) ) + SPH_RET(-1); + + for ( ;; ) + { + // check system fields (count and types) + if ( table->s->fieldsfield[0]->type() ) || !((Field_num *)table->field[0])->unsigned_flag ) + { + my_snprintf ( sError, sizeof(sError), "%s: 1st column (docid) MUST be unsigned integer or bigint", name ); + break; + } + + if ( !IsIntegerFieldType ( table->field[1]->type() ) ) + { + my_snprintf ( sError, sizeof(sError), "%s: 2nd column (weight) MUST be integer or bigint", name ); + break; + } + + enum_field_types f2 = table->field[2]->type(); + if ( f2!=MYSQL_TYPE_VARCHAR + && f2!=MYSQL_TYPE_BLOB && f2!=MYSQL_TYPE_MEDIUM_BLOB && f2!=MYSQL_TYPE_LONG_BLOB && f2!=MYSQL_TYPE_TINY_BLOB ) + { + my_snprintf ( sError, sizeof(sError), "%s: 3rd column (search query) MUST be varchar or text", name ); + break; + } + + // check attributes + int i; + for ( i=3; i<(int)table->s->fields; i++ ) + { + enum_field_types eType = table->field[i]->type(); + if ( eType!=MYSQL_TYPE_TIMESTAMP && !IsIntegerFieldType(eType) && eType!=MYSQL_TYPE_VARCHAR && eType!=MYSQL_TYPE_FLOAT ) + { + my_snprintf ( sError, sizeof(sError), "%s: %dth column (attribute %s) MUST be integer, bigint, timestamp, varchar, or float", + name, i+1, table->field[i]->field_name ); + break; + } + } + + if ( i!=(int)table->s->fields ) + break; + + // check index + if ( + table->s->keys!=1 || + table->key_info[0].key_parts!=1 || + strcasecmp ( table->key_info[0].key_part[0].field->field_name, table->field[2]->field_name ) ) + { + my_snprintf ( sError, sizeof(sError), "%s: there must be an index on '%s' column", + name, table->field[2]->field_name ); + break; + } + + // all good + sError[0] = '\0'; + break; + } + if ( sError[0] ) + { + my_error ( ER_CANT_CREATE_TABLE, MYF(0), sError, -1 ); + SPH_RET(-1); + } + + SPH_RET(0); +} + +//// show functions + +#if MYSQL_VERSION_ID<50100 +#define SHOW_VAR_FUNC_BUFF_SIZE 1024 +#endif + +static int sphinx_showfunc ( THD * thd, SHOW_VAR * out, char * sBuffer ) +{ + CSphSEThreadData *pTls = (CSphSEThreadData *) *thd_ha_data ( thd, sphinx_hton_ptr ); + CSphSEStats * pStats = ( pTls && pTls->m_bStats ) ? &pTls->m_tStats : 0; + SHOW_VAR *array = (SHOW_VAR*)thd_alloc(thd, sizeof(SHOW_VAR)*7); + out->type = SHOW_ARRAY; + out->value = (char*)array; + if (pStats) + { + array[0].name = "total"; + array[0].type = SHOW_INT; + array[0].value = (char *) &pStats->m_iMatchesTotal; + array[1].name = "total_found"; + array[1].type = SHOW_INT; + array[1].value = (char *) &pStats->m_iMatchesFound; + array[2].name = "time"; + array[2].type = SHOW_INT; + array[2].value = (char *) &pStats->m_iQueryMsec; + array[3].name = "word_count"; + array[3].type = SHOW_INT; + array[3].value = (char *) &pStats->m_iWords; + array[4].name = "error"; + array[4].type = SHOW_CHAR; + array[4].value = (char *) &pStats->m_sLastMessage; + array[5].name = "words"; + array[5].type = SHOW_CHAR; + array[5].value = sBuffer; + sBuffer[0] = 0; + + if ( pStats->m_iWords ) + { + uint uBuffLen = 0; + + // the following is partially based on code in sphinx_show_status() + for ( int i=0; im_iWords; i++ ) + { + CSphSEWordStats & tWord = pStats->m_dWords[i]; + uBuffLen = my_snprintf ( sBuffer, SHOW_VAR_FUNC_BUFF_SIZE, "%s%s:%d:%d ", sBuffer, + tWord.m_sWord, tWord.m_iDocs, tWord.m_iHits ); + } + + if ( uBuffLen > 0 ) + { + // trim last space + sBuffer [ --uBuffLen ] = 0; + + if ( pTls->m_pQueryCharset ) + { + // String::c_ptr() will nul-terminate the buffer. + // + // NOTE: It's not entirely clear whether this conversion is necessary at all. + + String sConvert; + uint iErrors; + sConvert.copy ( sBuffer, uBuffLen, pTls->m_pQueryCharset, system_charset_info, &iErrors ); + memcpy ( sBuffer, sConvert.c_ptr(), sConvert.length() + 1 ); + } + } + } + + array[6].name = 0; // terminate the array + } + else + array[0].name = 0; + return 0; +} + +#if MYSQL_VERSION_ID>50100 +struct st_mysql_storage_engine sphinx_storage_engine = +{ + MYSQL_HANDLERTON_INTERFACE_VERSION +}; + +struct st_mysql_show_var sphinx_status_vars[] = +{ + {"sphinx", (char *)sphinx_showfunc, SHOW_FUNC}, + {0, 0, (enum_mysql_show_type)0} +}; + + +mysql_declare_plugin(sphinx) +{ + MYSQL_STORAGE_ENGINE_PLUGIN, + &sphinx_storage_engine, + sphinx_hton_name, + "Sphinx developers", + sphinx_hton_comment, + PLUGIN_LICENSE_GPL, + sphinx_init_func, // Plugin Init + sphinx_done_func, // Plugin Deinit + 0x0001, // 0.1 + sphinx_status_vars, + NULL, + NULL +} +mysql_declare_plugin_end; + +#ifdef maria_declare_plugin +maria_declare_plugin(sphinx) +{ + MYSQL_STORAGE_ENGINE_PLUGIN, + &sphinx_storage_engine, + sphinx_hton_name, + "Sphinx developers", + sphinx_hton_comment, + PLUGIN_LICENSE_GPL, + sphinx_init_func, // Plugin Init + sphinx_done_func, // Plugin Deinit + 0x0001, // 0.1 + sphinx_status_vars, + NULL, + "0.1", // string version + MariaDB_PLUGIN_MATURITY_EXPERIMENTAL +} +maria_declare_plugin_end; +#endif + +#endif // >50100 + +// +// $Id: ha_sphinx.cc 2058 2009-11-07 04:01:57Z shodan $ +// diff --git a/storage/sphinx/ha_sphinx.h b/storage/sphinx/ha_sphinx.h new file mode 100644 index 00000000000..2a7191fc34d --- /dev/null +++ b/storage/sphinx/ha_sphinx.h @@ -0,0 +1,158 @@ +// +// $Id: ha_sphinx.h 1428 2008-09-05 18:06:30Z xale $ +// + +#ifdef USE_PRAGMA_INTERFACE +#pragma interface // gcc class implementation +#endif + + +#if MYSQL_VERSION_ID>50100 +#define TABLE_ARG st_table_share +#else +#define TABLE_ARG st_table +#endif + + +#if MYSQL_VERSION_ID>=50120 +typedef uchar byte; +#endif + + +/// forward decls +class THD; +struct CSphReqQuery; +struct CSphSEShare; +struct CSphSEAttr; +struct CSphSEStats; +struct CSphSEThreadData; + +/// Sphinx SE handler class +class ha_sphinx : public handler +{ +protected: + THR_LOCK_DATA m_tLock; ///< MySQL lock + + CSphSEShare * m_pShare; ///< shared lock info + + uint m_iMatchesTotal; + uint m_iCurrentPos; + const byte * m_pCurrentKey; + uint m_iCurrentKeyLen; + + char * m_pResponse; ///< searchd response storage + char * m_pResponseEnd; ///< searchd response storage end (points to wilderness!) + char * m_pCur; ///< current position into response + bool m_bUnpackError; ///< any errors while unpacking response + +public: +#if MYSQL_VERSION_ID<50100 + ha_sphinx ( TABLE_ARG * table_arg ); +#else + ha_sphinx ( handlerton * hton, TABLE_ARG * table_arg ); +#endif + ~ha_sphinx () {} + + const char * table_type () const { return "SPHINX"; } ///< SE name for display purposes + const char * index_type ( uint ) { return "HASH"; } ///< index type name for display purposes + const char ** bas_ext () const; ///< my file extensions + + #if MYSQL_VERSION_ID>50100 + ulonglong table_flags () const { return HA_CAN_INDEX_BLOBS; } ///< bitmap of implemented flags (see handler.h for more info) + #else + ulong table_flags () const { return HA_CAN_INDEX_BLOBS; } ///< bitmap of implemented flags (see handler.h for more info) + #endif + + ulong index_flags ( uint, uint, bool ) const { return 0; } ///< bitmap of flags that says how SE implements indexes + uint max_supported_record_length () const { return HA_MAX_REC_LENGTH; } + uint max_supported_keys () const { return 1; } + uint max_supported_key_parts () const { return 1; } + uint max_supported_key_length () const { return MAX_KEY_LENGTH; } + uint max_supported_key_part_length () const { return MAX_KEY_LENGTH; } + + #if MYSQL_VERSION_ID>50100 + virtual double scan_time () { return (double)( stats.records+stats.deleted )/20.0 + 10; } ///< called in test_quick_select to determine if indexes should be used + #else + virtual double scan_time () { return (double)( records+deleted )/20.0 + 10; } ///< called in test_quick_select to determine if indexes should be used + #endif + + virtual double read_time ( ha_rows rows ) { return (double)rows/20.0 + 1; } ///< index read time estimate + +public: + int open ( const char * name, int mode, uint test_if_locked ); + int close (); + + int write_row ( uchar * buf ); + int update_row ( const uchar * old_data, uchar * new_data ); + int delete_row ( const uchar * buf ); + + int index_init ( uint keynr, bool sorted ); // 5.1.x + int index_init ( uint keynr ) { return index_init ( keynr, false ); } // 5.0.x + + int index_end (); + int index_read ( byte * buf, const byte * key, uint key_len, enum ha_rkey_function find_flag ); + int index_read_idx ( byte * buf, uint idx, const byte * key, uint key_len, enum ha_rkey_function find_flag ); + int index_next ( byte * buf ); + int index_next_same ( byte * buf, const byte * key, uint keylen ); + int index_prev ( byte * buf ); + int index_first ( byte * buf ); + int index_last ( byte * buf ); + + int get_rec ( byte * buf, const byte * key, uint keylen ); + + int rnd_init ( bool scan ); + int rnd_end (); + int rnd_next ( byte * buf ); + int rnd_pos ( byte * buf, byte * pos ); + void position ( const byte * record ); + +#if MYSQL_VERSION_ID>=50030 + int info ( uint ); +#else + void info ( uint ); +#endif + + int reset(); + int external_lock ( THD * thd, int lock_type ); + int delete_all_rows (); + ha_rows records_in_range ( uint inx, key_range * min_key, key_range * max_key ); + + int delete_table ( const char * from ); + int rename_table ( const char * from, const char * to ); + int create ( const char * name, TABLE * form, HA_CREATE_INFO * create_info ); + + THR_LOCK_DATA **store_lock ( THD * thd, THR_LOCK_DATA ** to, enum thr_lock_type lock_type ); + +public: + virtual const COND * cond_push ( const COND *cond ); + virtual void cond_pop (); + +private: + uint32 m_iFields; + char ** m_dFields; + + uint32 m_iAttrs; + CSphSEAttr * m_dAttrs; + int m_bId64; + + int * m_dUnboundFields; + +private: + int ConnectToSearchd ( const char * sQueryHost, int iQueryPort ); + + uint32 UnpackDword (); + char * UnpackString (); + bool UnpackSchema (); + bool UnpackStats ( CSphSEStats * pStats ); + + CSphSEThreadData * GetTls (); +}; + + +#if MYSQL_VERSION_ID < 50100 +bool sphinx_show_status ( THD * thd ); +#endif + +// +// $Id: ha_sphinx.h 1428 2008-09-05 18:06:30Z xale $ +// diff --git a/storage/sphinx/make-patch.sh b/storage/sphinx/make-patch.sh new file mode 100644 index 00000000000..6fca5838ded --- /dev/null +++ b/storage/sphinx/make-patch.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +OUT=$1 +ORIG=$2 +NEW=$3 + +if [ ! \( "$1" -a "$2" -a "$3" \) ]; then + echo "$0 " + exit 1 +fi + +FILES=' +/config/ac-macros/ha_sphinx.m4 +/configure.in +/libmysqld/Makefile.am +/sql/handler.cc +/sql/handler.h +/sql/Makefile.am +/sql/mysqld.cc +/sql/mysql_priv.h +/sql/set_var.cc +/sql/sql_lex.h +/sql/sql_parse.cc +/sql/sql_yacc.yy +/sql/structs.h +/sql/sql_show.cc +' + +rm -f $OUT +if [ -e $OUT ]; then + exit 1 +fi + +for name in $FILES; do + diff -BNru "$ORIG$name" "$NEW$name" >> $OUT +done diff --git a/storage/sphinx/plug.in b/storage/sphinx/plug.in new file mode 100644 index 00000000000..6c96e41ae52 --- /dev/null +++ b/storage/sphinx/plug.in @@ -0,0 +1,6 @@ +MYSQL_STORAGE_ENGINE(sphinx,,[Sphinx Storage Engine], + [SE client for Sphinx search daemon], []) +MYSQL_PLUGIN_DIRECTORY(sphinx, [storage/sphinx]) +MYSQL_PLUGIN_STATIC(sphinx, [libsphinx.a]) +MYSQL_PLUGIN_DYNAMIC(sphinx, [ha_sphinx.la]) + diff --git a/storage/sphinx/snippets_udf.cc b/storage/sphinx/snippets_udf.cc new file mode 100644 index 00000000000..a93aac0426e --- /dev/null +++ b/storage/sphinx/snippets_udf.cc @@ -0,0 +1,766 @@ +// +// $Id: snippets_udf.cc 2058 2009-11-07 04:01:57Z shodan $ +// + +// +// Copyright (c) 2001-2008, Andrew Aksyonoff. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License. You should have +// received a copy of the GPL license along with this program; if you +// did not, you can find it at http://www.gnu.org/ +// + +#include +#include +#include + +#include +#include + +#include + +#if MYSQL_VERSION_ID>50100 +#include "mysql_priv.h" +#include +#else +#include "../mysql_priv.h" +#endif + +#include +#include + +#if MYSQL_VERSION_ID>=50120 +typedef uchar byte; +#endif + +/// partially copy-pasted stuff that should be moved elsewhere + +#if UNALIGNED_RAM_ACCESS + +/// pass-through wrapper +template < typename T > inline T sphUnalignedRead ( const T & tRef ) +{ + return tRef; +} + +/// pass-through wrapper +template < typename T > void sphUnalignedWrite ( void * pPtr, const T & tVal ) +{ + *(T*)pPtr = tVal; +} + +#else + +/// unaligned read wrapper for some architectures (eg. SPARC) +template < typename T > +inline T sphUnalignedRead ( const T & tRef ) +{ + T uTmp; + byte * pSrc = (byte *) &tRef; + byte * pDst = (byte *) &uTmp; + for ( int i=0; i<(int)sizeof(T); i++ ) + *pDst++ = *pSrc++; + return uTmp; +} + +/// unaligned write wrapper for some architectures (eg. SPARC) +template < typename T > +void sphUnalignedWrite ( void * pPtr, const T & tVal ) +{ + byte * pDst = (byte *) pPtr; + byte * pSrc = (byte *) &tVal; + for ( int i=0; i<(int)sizeof(T); i++ ) + *pDst++ = *pSrc++; +} + +#endif + +#define SPHINXSE_MAX_ALLOC (16*1024*1024) + +#define SafeDelete(_arg) { if ( _arg ) delete ( _arg ); (_arg) = NULL; } +#define SafeDeleteArray(_arg) { if ( _arg ) delete [] ( _arg ); (_arg) = NULL; } + +#define Min(a,b) ((a)<(b)?(a):(b)) + +typedef unsigned int DWORD; + +inline DWORD sphF2DW ( float f ) { union { float f; uint32 d; } u; u.f = f; return u.d; } + +static char * sphDup ( const char * sSrc, int iLen=-1 ) +{ + if ( !sSrc ) + return NULL; + + if ( iLen<0 ) + iLen = strlen(sSrc); + + char * sRes = new char [ 1+iLen ]; + memcpy ( sRes, sSrc, iLen ); + sRes[iLen] = '\0'; + return sRes; +} + +static inline void sphShowErrno ( const char * sCall ) +{ + char sError[256]; + snprintf ( sError, sizeof(sError), "%s() failed: [%d] %s", sCall, errno, strerror(errno) ); + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sError ); +} + +static const bool sphReportErrors = true; + +static bool sphSend ( int iFd, const char * pBuffer, int iSize, bool bReportErrors = false ) +{ + assert ( pBuffer ); + assert ( iSize > 0 ); + + const int iResult = send ( iFd, pBuffer, iSize, 0 ); + if ( iResult != iSize ) + { + if ( bReportErrors ) sphShowErrno("send"); + return false; + } + return true; +} + +static bool sphRecv ( int iFd, char * pBuffer, int iSize, bool bReportErrors = false ) +{ + assert ( pBuffer ); + assert ( iSize > 0 ); + + while ( iSize ) + { + const int iResult = recv ( iFd, pBuffer, iSize, 0 ); + if ( iResult > 0 ) + { + iSize -= iResult; + pBuffer += iSize; + } + else if ( iResult == 0 ) + { + if ( bReportErrors ) + my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), "recv() failed: disconnected" ); + return false; + } + else + { + if ( bReportErrors ) sphShowErrno("recv"); + return false; + } + } + return true; +} + +enum +{ + SPHINX_SEARCHD_PROTO = 1, + + SEARCHD_COMMAND_SEARCH = 0, + SEARCHD_COMMAND_EXCERPT = 1, + + VER_COMMAND_SEARCH = 0x116, + VER_COMMAND_EXCERPT = 0x100, +}; + +/// known answers +enum +{ + SEARCHD_OK = 0, ///< general success, command-specific reply follows + SEARCHD_ERROR = 1, ///< general failure, error message follows + SEARCHD_RETRY = 2, ///< temporary failure, error message follows, client should retry later + SEARCHD_WARNING = 3 ///< general success, warning message and command-specific reply follow +}; + +#define SPHINXSE_DEFAULT_SCHEME "sphinx" +#define SPHINXSE_DEFAULT_HOST "127.0.0.1" +#define SPHINXSE_DEFAULT_PORT 9312 +#define SPHINXSE_DEFAULT_INDEX "*" + +class CSphBuffer +{ +private: + bool m_bOverrun; + int m_iSize; + int m_iLeft; + char * m_pBuffer; + char * m_pCurrent; + +public: + CSphBuffer ( const int iSize ) + : m_bOverrun ( false ) + , m_iSize ( iSize ) + , m_iLeft ( iSize ) + { + assert ( iSize > 0 ); + m_pBuffer = new char[iSize]; + m_pCurrent = m_pBuffer; + } + + ~CSphBuffer () + { + SafeDelete ( m_pBuffer ); + } + + const char * Ptr() const { return m_pBuffer; } + + bool Finalize() + { + return !( m_bOverrun || m_iLeft != 0 || m_pCurrent - m_pBuffer != m_iSize ); + } + + void SendBytes ( const void * pBytes, int iBytes ); + + void SendWord ( short int v ) { v = ntohs(v); SendBytes ( &v, sizeof(v) ); } + void SendInt ( int v ) { v = ntohl(v); SendBytes ( &v, sizeof(v) ); } + void SendDword ( DWORD v ) { v = ntohl(v) ;SendBytes ( &v, sizeof(v) ); } + void SendUint64 ( ulonglong v ) { SendDword ( uint(v>>32) ); SendDword ( uint(v&0xFFFFFFFFUL) ); } + void SendString ( const char * v ) { SendString ( v, strlen(v) ); } + void SendString ( const char * v, int iLen ) { SendDword(iLen); SendBytes ( v, iLen ); } + void SendFloat ( float v ) { SendDword ( sphF2DW(v) ); } +}; + +void CSphBuffer::SendBytes ( const void * pBytes, int iBytes ) +{ + if ( m_iLeft < iBytes ) + { + m_bOverrun = true; + return; + } + + memcpy ( m_pCurrent, pBytes, iBytes ); + + m_pCurrent += iBytes; + m_iLeft -= iBytes; +} + +struct CSphUrl +{ + char * m_sBuffer; + char * m_sFormatted; + + char * m_sScheme; + char * m_sHost; + char * m_sIndex; + + int m_iPort; + + CSphUrl() + : m_sBuffer ( NULL ) + , m_sFormatted ( NULL ) + , m_sScheme ( SPHINXSE_DEFAULT_SCHEME ) + , m_sHost ( SPHINXSE_DEFAULT_HOST ) + , m_sIndex ( SPHINXSE_DEFAULT_INDEX ) + , m_iPort ( SPHINXSE_DEFAULT_PORT ) + {} + + ~CSphUrl() + { + SafeDeleteArray ( m_sFormatted ); + SafeDeleteArray ( m_sBuffer ); + } + + bool Parse ( const char * sUrl, int iLen ); + int Connect(); + const char * Format(); +}; + +const char * CSphUrl::Format() +{ + if ( !m_sFormatted ) + { + int iSize = 15 + strlen(m_sHost) + strlen(m_sIndex); + m_sFormatted = new char [ iSize ]; + if ( m_iPort ) + snprintf ( m_sFormatted, iSize, "inet://%s:%d/%s", m_sHost, m_iPort, m_sIndex ); + else + snprintf ( m_sFormatted, iSize, "unix://%s/%s", m_sHost, m_sIndex ); + } + return m_sFormatted; +} + +// the following scheme variants are recognized +// +// inet://host/index +// inet://host:port/index +// unix://unix/domain/socket:index +// unix://unix/domain/socket +bool CSphUrl::Parse ( const char * sUrl, int iLen ) +{ + bool bOk = true; + while ( iLen ) + { + bOk = false; + + m_sBuffer = sphDup ( sUrl, iLen ); + m_sScheme = m_sBuffer; + + m_sHost = strstr ( m_sBuffer, "://" ); + if ( !m_sHost ) + break; + m_sHost[0] = '\0'; + m_sHost += 2; + + if ( !strcmp ( m_sScheme, "unix" ) ) + { + // unix-domain socket + m_iPort = 0; + if (!( m_sIndex = strrchr ( m_sHost, ':' ) )) + m_sIndex = SPHINXSE_DEFAULT_INDEX; + else + { + *m_sIndex++ = '\0'; + if ( !*m_sIndex ) + m_sIndex = SPHINXSE_DEFAULT_INDEX; + } + bOk = true; + break; + } + if( strcmp ( m_sScheme, "sphinx" ) != 0 && strcmp ( m_sScheme, "inet" ) != 0 ) + break; + + // inet + m_sHost++; + char * sPort = strchr ( m_sHost, ':' ); + if ( sPort ) + { + *sPort++ = '\0'; + if ( *sPort ) + { + m_sIndex = strchr ( sPort, '/' ); + if ( m_sIndex ) + *m_sIndex++ = '\0'; + else + m_sIndex = SPHINXSE_DEFAULT_INDEX; + + m_iPort = atoi(sPort); + if ( !m_iPort ) + m_iPort = SPHINXSE_DEFAULT_PORT; + } + } else + { + m_sIndex = strchr ( m_sHost, '/' ); + if ( m_sIndex ) + *m_sIndex++ = '\0'; + else + m_sIndex = SPHINXSE_DEFAULT_INDEX; + } + + bOk = true; + break; + } + + return bOk; +} + +int CSphUrl::Connect() +{ + struct sockaddr_in sin; +#ifndef __WIN__ + struct sockaddr_un saun; +#endif + + int iDomain = 0; + int iSockaddrSize = 0; + struct sockaddr * pSockaddr = NULL; + + in_addr_t ip_addr; + + if ( m_iPort ) + { + iDomain = AF_INET; + iSockaddrSize = sizeof(sin); + pSockaddr = (struct sockaddr *) &sin; + + memset ( &sin, 0, sizeof(sin) ); + sin.sin_family = AF_INET; + sin.sin_port = htons(m_iPort); + + // resolve address + if ( (int)( ip_addr=inet_addr(m_sHost) ) != (int)INADDR_NONE ) + memcpy ( &sin.sin_addr, &ip_addr, sizeof(ip_addr) ); + else + { + int tmp_errno; + struct hostent tmp_hostent, *hp; + char buff2 [ GETHOSTBYNAME_BUFF_SIZE ]; + + hp = my_gethostbyname_r ( m_sHost, &tmp_hostent, + buff2, sizeof(buff2), &tmp_errno ); + if ( !hp ) + { + my_gethostbyname_r_free(); + + char sError[256]; + snprintf ( sError, sizeof(sError), "failed to resolve searchd host (name=%s)", m_sHost ); + + my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError ); + return -1; + } + + memcpy ( &sin.sin_addr, hp->h_addr, Min ( sizeof(sin.sin_addr), (size_t)hp->h_length ) ); + my_gethostbyname_r_free(); + } + } + else + { +#ifndef __WIN__ + iDomain = AF_UNIX; + iSockaddrSize = sizeof(saun); + pSockaddr = (struct sockaddr *) &saun; + + memset ( &saun, 0, sizeof(saun) ); + saun.sun_family = AF_UNIX; + strncpy ( saun.sun_path, m_sHost, sizeof(saun.sun_path)-1 ); +#else + my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), "Unix-domain sockets are not supported on Windows" ); + return -1; +#endif + } + + // connect to searchd and exchange versions + uint uServerVersion; + uint uClientVersion = htonl ( SPHINX_SEARCHD_PROTO ); + int iSocket = -1; + char * pError = NULL; + do + { + iSocket = socket ( iDomain, SOCK_STREAM, 0 ); + if ( iSocket == -1 ) + { + pError = "Failed to create client socket"; + break; + } + + if ( connect ( iSocket, pSockaddr, iSockaddrSize ) == -1) + { + pError = "Failed to connect to searchd"; + break; + } + + if ( !sphRecv ( iSocket, (char *)&uServerVersion, sizeof(uServerVersion) ) ) + { + pError = "Failed to receive searchd version"; + break; + } + + if ( !sphSend ( iSocket, (char *)&uClientVersion, sizeof(uClientVersion) ) ) + { + pError = "Failed to send client version"; + break; + } + } + while(0); + + // fixme: compare versions? + + if ( pError ) + { + char sError[1024]; + snprintf ( sError, sizeof(sError), "%s [%d] %s", Format(), errno, strerror(errno) ); + my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError ); + + if ( iSocket != -1 ) + close ( iSocket ); + + return -1; + } + + return iSocket; +} + +struct CSphResponse +{ + char * m_pBuffer; + char * m_pBody; + + CSphResponse () + : m_pBuffer ( NULL ) + , m_pBody ( NULL ) + {} + + CSphResponse ( DWORD uSize ) + : m_pBody ( NULL ) + { + m_pBuffer = new char[uSize]; + } + + ~CSphResponse () + { + SafeDeleteArray ( m_pBuffer ); + } + + static CSphResponse * Read ( int iSocket, int iClientVersion ); +}; + +CSphResponse * +CSphResponse::Read ( int iSocket, int iClientVersion ) +{ + char sHeader[8]; + if ( !sphRecv ( iSocket, sHeader, sizeof(sHeader) ) ) + return NULL; + + int iStatus = ntohs ( sphUnalignedRead ( *(short int *) &sHeader[0] ) ); + int iVersion = ntohs ( sphUnalignedRead ( *(short int *) &sHeader[2] ) ); + DWORD uLength = ntohl ( sphUnalignedRead ( *(DWORD *) &sHeader[4] ) ); + + if ( iVersion < iClientVersion ) // fixme: warn + ; + + if ( uLength <= SPHINXSE_MAX_ALLOC ) + { + CSphResponse * pResponse = new CSphResponse ( uLength ); + if ( !sphRecv ( iSocket, pResponse->m_pBuffer, uLength ) ) + { + SafeDelete ( pResponse ); + return NULL; + } + + pResponse->m_pBody = pResponse->m_pBuffer; + if ( iStatus != SEARCHD_OK ) + { + DWORD uSize = ntohl ( *(DWORD *)pResponse->m_pBuffer ); + if ( iStatus == SEARCHD_WARNING ) + pResponse->m_pBody += uSize; // fixme: report the warning somehow + else + { + char * sMessage = sphDup ( pResponse->m_pBuffer + sizeof(DWORD), uSize ); + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sMessage ); + SafeDelete ( sMessage ); + SafeDelete ( pResponse ); + return NULL; + } + } + return pResponse; + } + return NULL; +} + +/// udf + +extern "C" +{ + my_bool sphinx_snippets_init ( UDF_INIT * pUDF, UDF_ARGS * pArgs, char * sMessage ); + void sphinx_snippets_deinit ( UDF_INIT * pUDF ); + char * sphinx_snippets ( UDF_INIT * pUDF, UDF_ARGS * pArgs, char * sResult, unsigned long * pLength, char * pIsNull, char * sError ); +}; + +#define MAX_MESSAGE_LENGTH 255 +#define MAX_RESULT_LENGTH 255 + +struct CSphSnippets +{ + CSphUrl m_tUrl; + CSphResponse * m_pResponse; + + int m_iBeforeMatch; + int m_iAfterMatch; + int m_iChunkSeparator; + int m_iLimit; + int m_iAround; + int m_iFlags; + + CSphSnippets() + : m_pResponse(NULL) + , m_iBeforeMatch(0) + , m_iAfterMatch(0) + , m_iChunkSeparator(0) + // defaults + , m_iLimit(256) + , m_iAround(5) + , m_iFlags(1) + { + } + + ~CSphSnippets() + { + SafeDelete ( m_pResponse ); + } +}; + +#define KEYWORD(NAME) else if ( strncmp ( NAME, pArgs->attributes[i], pArgs->attribute_lengths[i] ) == 0 ) + +#define CHECK_TYPE(TYPE) \ + if ( pArgs->arg_type[i] != TYPE ) \ + { \ + snprintf ( sMessage, MAX_MESSAGE_LENGTH, \ + "%.*s argument must be a string", \ + (int)pArgs->attribute_lengths[i], \ + pArgs->attributes[i] ); \ + bFail = true; \ + break; \ + } \ + if ( TYPE == STRING_RESULT && !pArgs->args[i] ) \ + { \ + snprintf ( sMessage, MAX_MESSAGE_LENGTH, \ + "%.*s argument must be constant (and not NULL)", \ + (int)pArgs->attribute_lengths[i], \ + pArgs->attributes[i] ); \ + bFail = true; \ + break; \ + } + +#define STRING CHECK_TYPE(STRING_RESULT) +#define INT CHECK_TYPE(INT_RESULT); int iValue = *(long long *)pArgs->args[i] + +my_bool sphinx_snippets_init ( UDF_INIT * pUDF, UDF_ARGS * pArgs, char * sMessage ) +{ + if ( pArgs->arg_count < 3 ) + { + strncpy ( sMessage, "insufficient arguments", MAX_MESSAGE_LENGTH ); + return 1; + } + + bool bFail = false; + CSphSnippets * pOpts = new CSphSnippets; + for ( uint i = 0; i < pArgs->arg_count; i++ ) + { + if ( i < 3 ) + { + if ( pArgs->arg_type[i] != STRING_RESULT ) + { + strncpy ( sMessage, "first three arguments must be of string type", MAX_MESSAGE_LENGTH ); + bFail = true; + break; + } + } + KEYWORD("sphinx") + { + STRING; + if ( !pOpts->m_tUrl.Parse ( pArgs->args[i], pArgs->lengths[i] ) ) + { + strncpy ( sMessage, "failed to parse connection string", MAX_MESSAGE_LENGTH ); + bFail = true; + break; + } + } + KEYWORD("before_match") { STRING; pOpts->m_iBeforeMatch = i; } + KEYWORD("after_match") { STRING; pOpts->m_iAfterMatch = i; } + KEYWORD("chunk_separator") { STRING; pOpts->m_iChunkSeparator = i; } + KEYWORD("limit") { INT; pOpts->m_iLimit = iValue; } + KEYWORD("around") { INT; pOpts->m_iAround = iValue; } + KEYWORD("exact_phrase") { INT; if ( iValue ) pOpts->m_iFlags |= 2; } + KEYWORD("single_passage") { INT; if ( iValue ) pOpts->m_iFlags |= 4; } + KEYWORD("use_boundaries") { INT; if ( iValue ) pOpts->m_iFlags |= 8; } + KEYWORD("weight_order") { INT; if ( iValue ) pOpts->m_iFlags |= 16; } + else + { + snprintf ( sMessage, MAX_MESSAGE_LENGTH, "unrecognized argument: %.*s", + (int)pArgs->attribute_lengths[i], pArgs->attributes[i] ); + bFail = true; + break; + } + } + + if ( bFail ) + { + SafeDelete ( pOpts ); + return 1; + } + pUDF->ptr = (char *)pOpts; + return 0; +} + +#undef STRING +#undef INT +#undef KEYWORD +#undef CHECK_TYPE + +#define ARG(i) pArgs->args[i], pArgs->lengths[i] +#define ARG_LEN(VAR, LEN) ( VAR ? pArgs->lengths[VAR] : LEN ) + +#define SEND_STRING(INDEX, DEFAULT) \ + if ( INDEX ) \ + tBuffer.SendString ( ARG(INDEX) ); \ + else \ + tBuffer.SendString ( DEFAULT, sizeof(DEFAULT) - 1 ); + + +char * sphinx_snippets ( UDF_INIT * pUDF, UDF_ARGS * pArgs, char * sResult, unsigned long * pLength, char * pIsNull, char * pError ) +{ + CSphSnippets * pOpts = (CSphSnippets *)pUDF->ptr; + assert ( pOpts ); + + if ( !pArgs->args[0] || !pArgs->args[1] || !pArgs->args[2] ) + { + *pIsNull = 1; + return sResult; + } + + const int iSize = + 8 + // header + 8 + + 4 + pArgs->lengths[1] + // index + 4 + pArgs->lengths[2] + // words + 4 + ARG_LEN ( pOpts->m_iBeforeMatch, 3 ) + + 4 + ARG_LEN ( pOpts->m_iAfterMatch, 4 ) + + 4 + ARG_LEN ( pOpts->m_iChunkSeparator, 5 ) + + 12 + + 4 + pArgs->lengths[0]; // document + + CSphBuffer tBuffer(iSize); + + tBuffer.SendWord ( SEARCHD_COMMAND_EXCERPT ); + tBuffer.SendWord ( VER_COMMAND_EXCERPT ); + tBuffer.SendDword ( iSize - 8 ); + + tBuffer.SendDword ( 0 ); + tBuffer.SendDword ( pOpts->m_iFlags ); + + tBuffer.SendString ( ARG(1) ); // index + tBuffer.SendString ( ARG(2) ); // words + + SEND_STRING ( pOpts->m_iBeforeMatch, "" ); + SEND_STRING ( pOpts->m_iAfterMatch, "" ); + SEND_STRING ( pOpts->m_iChunkSeparator, " ... " ); + + tBuffer.SendInt ( pOpts->m_iLimit ); + tBuffer.SendInt ( pOpts->m_iAround ); + + // single document + tBuffer.SendInt ( 1 ); + tBuffer.SendString ( ARG(0) ); + + int iSocket = -1; + do + { + if ( !tBuffer.Finalize() ) + { + my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: failed to build request" ); + break; + } + + iSocket = pOpts->m_tUrl.Connect(); + if ( iSocket == -1 ) break; + if ( !sphSend ( iSocket, tBuffer.Ptr(), iSize, sphReportErrors ) ) break; + + CSphResponse * pResponse = CSphResponse::Read ( iSocket, 0x100 ); + if ( !pResponse ) break; + + close ( iSocket ); + pOpts->m_pResponse = pResponse; + *pLength = ntohl( *(DWORD *)pResponse->m_pBody ); + return pResponse->m_pBody + sizeof(DWORD); + } + while(0); + + if ( iSocket != -1 ) + close ( iSocket ); + + *pError = 1; + return sResult; +} + +#undef SEND_STRING +#undef ARG_LEN +#undef ARG + +void sphinx_snippets_deinit ( UDF_INIT * pUDF ) +{ + CSphSnippets * pOpts = (CSphSnippets *)pUDF->ptr; + SafeDelete ( pOpts ); +} + +// +// $Id: snippets_udf.cc 2058 2009-11-07 04:01:57Z shodan $ +// diff --git a/storage/sphinx/sphinx.5.0.22.diff b/storage/sphinx/sphinx.5.0.22.diff new file mode 100644 index 00000000000..7dd4ebf1410 --- /dev/null +++ b/storage/sphinx/sphinx.5.0.22.diff @@ -0,0 +1,284 @@ +diff -B -N -r -u mysql-5.0.22/config/ac-macros/ha_sphinx.m4 mysql-5.0.22.sx/config/ac-macros/ha_sphinx.m4 +--- mysql-5.0.22/config/ac-macros/ha_sphinx.m4 1970-01-01 01:00:00.000000000 +0100 ++++ mysql-5.0.22.sx/config/ac-macros/ha_sphinx.m4 2006-06-06 19:49:38.000000000 +0200 +@@ -0,0 +1,30 @@ ++dnl --------------------------------------------------------------------------- ++dnl Macro: MYSQL_CHECK_EXAMPLEDB ++dnl Sets HAVE_SPHINX_DB if --with-sphinx-storage-engine is used ++dnl --------------------------------------------------------------------------- ++AC_DEFUN([MYSQL_CHECK_SPHINXDB], [ ++ AC_ARG_WITH([sphinx-storage-engine], ++ [ ++ --with-sphinx-storage-engine ++ Enable the Sphinx Storage Engine], ++ [sphinxdb="$withval"], ++ [sphinxdb=no]) ++ AC_MSG_CHECKING([for example storage engine]) ++ ++ case "$sphinxdb" in ++ yes ) ++ AC_DEFINE([HAVE_SPHINX_DB], [1], [Builds Sphinx Engine]) ++ AC_MSG_RESULT([yes]) ++ [sphinxdb=yes] ++ ;; ++ * ) ++ AC_MSG_RESULT([no]) ++ [sphinxdb=no] ++ ;; ++ esac ++ ++]) ++dnl --------------------------------------------------------------------------- ++dnl END OF MYSQL_CHECK_EXAMPLE SECTION ++dnl --------------------------------------------------------------------------- ++ +diff -B -N -r -u mysql-5.0.22/configure.in mysql-5.0.22.sx/configure.in +--- mysql-5.0.22/configure.in 2006-05-25 10:56:45.000000000 +0200 ++++ mysql-5.0.22.sx/configure.in 2006-06-06 19:49:38.000000000 +0200 +@@ -41,6 +41,7 @@ + sinclude(config/ac-macros/ha_berkeley.m4) + sinclude(config/ac-macros/ha_blackhole.m4) + sinclude(config/ac-macros/ha_example.m4) ++sinclude(config/ac-macros/ha_sphinx.m4) + sinclude(config/ac-macros/ha_federated.m4) + sinclude(config/ac-macros/ha_innodb.m4) + sinclude(config/ac-macros/ha_ndbcluster.m4) +@@ -2450,6 +2451,7 @@ + MYSQL_CHECK_BDB + MYSQL_CHECK_INNODB + MYSQL_CHECK_EXAMPLEDB ++MYSQL_CHECK_SPHINXDB + MYSQL_CHECK_ARCHIVEDB + MYSQL_CHECK_CSVDB + MYSQL_CHECK_BLACKHOLEDB +diff -B -N -r -u mysql-5.0.22/libmysqld/Makefile.am mysql-5.0.22.sx/libmysqld/Makefile.am +--- mysql-5.0.22/libmysqld/Makefile.am 2006-05-25 10:56:55.000000000 +0200 ++++ mysql-5.0.22.sx/libmysqld/Makefile.am 2006-06-06 19:49:38.000000000 +0200 +@@ -27,7 +27,7 @@ + -DSHAREDIR="\"$(MYSQLSHAREdir)\"" + INCLUDES= @bdb_includes@ \ + -I$(top_builddir)/include -I$(top_srcdir)/include \ +- -I$(top_srcdir)/sql -I$(top_srcdir)/sql/examples \ ++ -I$(top_srcdir)/sql -I$(top_srcdir)/sql/examples -I$(top_srcdir)/sql/sphinx \ + -I$(top_srcdir)/regex \ + $(openssl_includes) $(yassl_includes) @ZLIB_INCLUDES@ + +@@ -38,6 +38,7 @@ + libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \ + my_time.c + sqlexamplessources = ha_example.cc ha_tina.cc ++sqlsphinxsources = ha_sphinx.cc + + noinst_HEADERS = embedded_priv.h emb_qcache.h + +@@ -65,7 +66,7 @@ + parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \ + ha_blackhole.cc ha_archive.cc my_user.c + +-libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources) ++libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources) $(sqlsphinxsources) + libmysqld_a_SOURCES= + + # automake misses these +@@ -133,12 +134,16 @@ + rm -f $$f; \ + @LN_CP_F@ $(top_srcdir)/sql/examples/$$f $$f; \ + done; \ ++ for f in $(sqlsphinxsources); do \ ++ rm -f $$f; \ ++ @LN_CP_F@ $(top_srcdir)/sql/sphinx/$$f $$f; \ ++ done; \ + rm -f client_settings.h; \ + @LN_CP_F@ $(top_srcdir)/libmysql/client_settings.h client_settings.h + + + clean-local: +- rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) | sed "s;\.lo;.c;g"` \ ++ rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) $(sqlsphinxsources) | sed "s;\.lo;.c;g"` \ + $(top_srcdir)/linked_libmysqld_sources; \ + rm -f client_settings.h + +diff -B -N -r -u mysql-5.0.22/sql/handler.cc mysql-5.0.22.sx/sql/handler.cc +--- mysql-5.0.22/sql/handler.cc 2006-05-25 10:56:42.000000000 +0200 ++++ mysql-5.0.22.sx/sql/handler.cc 2006-06-06 19:49:38.000000000 +0200 +@@ -78,6 +78,15 @@ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + HTON_NO_FLAGS }; + #endif ++#ifdef HAVE_SPHINX_DB ++#include "sphinx/ha_sphinx.h" ++extern handlerton sphinx_hton; ++#else ++handlerton sphinx_hton = { "SPHINX", SHOW_OPTION_NO, "SPHINX storage engine", ++ DB_TYPE_SPHINX_DB, NULL, 0, 0, NULL, NULL, ++ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ++ HTON_NO_FLAGS }; ++#endif + #ifdef HAVE_INNOBASE_DB + #include "ha_innodb.h" + extern handlerton innobase_hton; +@@ -147,6 +156,7 @@ + &example_hton, + &archive_hton, + &tina_hton, ++ &sphinx_hton, + &ndbcluster_hton, + &federated_hton, + &myisammrg_hton, +@@ -345,6 +355,12 @@ + return new (alloc) ha_tina(table); + return NULL; + #endif ++#ifdef HAVE_SPHINX_DB ++ case DB_TYPE_SPHINX_DB: ++ if (have_sphinx_db == SHOW_OPTION_YES) ++ return new (alloc) ha_sphinx(table); ++ return NULL; ++#endif + #ifdef HAVE_NDBCLUSTER_DB + case DB_TYPE_NDBCLUSTER: + if (have_ndbcluster == SHOW_OPTION_YES) +diff -B -N -r -u mysql-5.0.22/sql/handler.h mysql-5.0.22.sx/sql/handler.h +--- mysql-5.0.22/sql/handler.h 2006-05-25 10:56:55.000000000 +0200 ++++ mysql-5.0.22.sx/sql/handler.h 2006-06-06 19:49:38.000000000 +0200 +@@ -183,8 +183,9 @@ + DB_TYPE_BERKELEY_DB, DB_TYPE_INNODB, + DB_TYPE_GEMINI, DB_TYPE_NDBCLUSTER, + DB_TYPE_EXAMPLE_DB, DB_TYPE_ARCHIVE_DB, DB_TYPE_CSV_DB, +- DB_TYPE_FEDERATED_DB, ++ DB_TYPE_FEDERATED_DB, + DB_TYPE_BLACKHOLE_DB, ++ DB_TYPE_SPHINX_DB, + DB_TYPE_DEFAULT // Must be last + }; + +diff -B -N -r -u mysql-5.0.22/sql/Makefile.am mysql-5.0.22.sx/sql/Makefile.am +--- mysql-5.0.22/sql/Makefile.am 2006-05-25 10:56:41.000000000 +0200 ++++ mysql-5.0.22.sx/sql/Makefile.am 2006-06-06 19:49:38.000000000 +0200 +@@ -66,6 +66,7 @@ + sql_array.h sql_cursor.h \ + examples/ha_example.h ha_archive.h \ + examples/ha_tina.h ha_blackhole.h \ ++ sphinx/ha_sphinx.h \ + ha_federated.h + mysqld_SOURCES = sql_lex.cc sql_handler.cc \ + item.cc item_sum.cc item_buff.cc item_func.cc \ +@@ -102,6 +103,7 @@ + sp_cache.cc parse_file.cc sql_trigger.cc \ + examples/ha_example.cc ha_archive.cc \ + examples/ha_tina.cc ha_blackhole.cc \ ++ sphinx/ha_sphinx.cc \ + ha_federated.cc + + gen_lex_hash_SOURCES = gen_lex_hash.cc +diff -B -N -r -u mysql-5.0.22/sql/mysqld.cc mysql-5.0.22.sx/sql/mysqld.cc +--- mysql-5.0.22/sql/mysqld.cc 2006-05-25 10:56:41.000000000 +0200 ++++ mysql-5.0.22.sx/sql/mysqld.cc 2006-06-06 19:49:38.000000000 +0200 +@@ -6420,6 +6420,11 @@ + #else + have_csv_db= SHOW_OPTION_NO; + #endif ++#ifdef HAVE_SPHINX_DB ++ have_sphinx_db= SHOW_OPTION_YES; ++#else ++ have_sphinx_db= SHOW_OPTION_NO; ++#endif + #ifdef HAVE_NDBCLUSTER_DB + have_ndbcluster=SHOW_OPTION_DISABLED; + #else +@@ -7457,6 +7462,7 @@ + #undef have_example_db + #undef have_archive_db + #undef have_csv_db ++#undef have_sphinx_db + #undef have_federated_db + #undef have_partition_db + #undef have_blackhole_db +@@ -7467,6 +7473,7 @@ + SHOW_COMP_OPTION have_example_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_archive_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_csv_db= SHOW_OPTION_NO; ++SHOW_COMP_OPTION have_sphinx_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_federated_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_partition_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_blackhole_db= SHOW_OPTION_NO; +diff -B -N -r -u mysql-5.0.22/sql/mysql_priv.h mysql-5.0.22.sx/sql/mysql_priv.h +--- mysql-5.0.22/sql/mysql_priv.h 2006-05-25 10:56:43.000000000 +0200 ++++ mysql-5.0.22.sx/sql/mysql_priv.h 2006-06-06 19:49:38.000000000 +0200 +@@ -1279,6 +1279,12 @@ + #else + extern SHOW_COMP_OPTION have_csv_db; + #endif ++#ifdef HAVE_SPHINX_DB ++extern handlerton sphinx_hton; ++#define have_sphinx_db sphinx_hton.state ++#else ++extern SHOW_COMP_OPTION have_sphinx_db; ++#endif + #ifdef HAVE_FEDERATED_DB + extern handlerton federated_hton; + #define have_federated_db federated_hton.state +diff -B -N -r -u mysql-5.0.22/sql/set_var.cc mysql-5.0.22.sx/sql/set_var.cc +--- mysql-5.0.22/sql/set_var.cc 2006-05-25 10:56:41.000000000 +0200 ++++ mysql-5.0.22.sx/sql/set_var.cc 2006-06-06 19:49:38.000000000 +0200 +@@ -809,6 +809,7 @@ + {"have_compress", (char*) &have_compress, SHOW_HAVE}, + {"have_crypt", (char*) &have_crypt, SHOW_HAVE}, + {"have_csv", (char*) &have_csv_db, SHOW_HAVE}, ++ {"have_sphinx", (char*) &have_sphinx_db, SHOW_HAVE}, + {"have_example_engine", (char*) &have_example_db, SHOW_HAVE}, + {"have_federated_engine", (char*) &have_federated_db, SHOW_HAVE}, + {"have_geometry", (char*) &have_geometry, SHOW_HAVE}, +diff -B -N -r -u mysql-5.0.22/sql/sql_lex.h mysql-5.0.22.sx/sql/sql_lex.h +--- mysql-5.0.22/sql/sql_lex.h 2006-05-25 10:56:41.000000000 +0200 ++++ mysql-5.0.22.sx/sql/sql_lex.h 2006-06-06 19:49:38.000000000 +0200 +@@ -58,6 +58,7 @@ + SQLCOM_SHOW_DATABASES, SQLCOM_SHOW_TABLES, SQLCOM_SHOW_FIELDS, + SQLCOM_SHOW_KEYS, SQLCOM_SHOW_VARIABLES, SQLCOM_SHOW_LOGS, SQLCOM_SHOW_STATUS, + SQLCOM_SHOW_INNODB_STATUS, SQLCOM_SHOW_NDBCLUSTER_STATUS, SQLCOM_SHOW_MUTEX_STATUS, ++ SQLCOM_SHOW_SPHINX_STATUS, + SQLCOM_SHOW_PROCESSLIST, SQLCOM_SHOW_MASTER_STAT, SQLCOM_SHOW_SLAVE_STAT, + SQLCOM_SHOW_GRANTS, SQLCOM_SHOW_CREATE, SQLCOM_SHOW_CHARSETS, + SQLCOM_SHOW_COLLATIONS, SQLCOM_SHOW_CREATE_DB, SQLCOM_SHOW_TABLE_STATUS, +diff -B -N -r -u mysql-5.0.22/sql/sql_parse.cc mysql-5.0.22.sx/sql/sql_parse.cc +--- mysql-5.0.22/sql/sql_parse.cc 2006-05-25 10:56:41.000000000 +0200 ++++ mysql-5.0.22.sx/sql/sql_parse.cc 2006-06-06 19:49:38.000000000 +0200 +@@ -25,6 +25,9 @@ + #ifdef HAVE_INNOBASE_DB + #include "ha_innodb.h" + #endif ++#ifdef HAVE_SPHINX_DB ++#include "sphinx/ha_sphinx.h" ++#endif + + #ifdef HAVE_NDBCLUSTER_DB + #include "ha_ndbcluster.h" +@@ -2722,6 +2725,15 @@ + break; + } + #endif ++#ifdef HAVE_SPHINX_DB ++ case SQLCOM_SHOW_SPHINX_STATUS: ++ { ++ if (check_global_access(thd, SUPER_ACL)) ++ goto error; ++ res = sphinx_show_status(thd); ++ break; ++ } ++#endif + #ifdef HAVE_REPLICATION + case SQLCOM_LOAD_MASTER_TABLE: + { +diff -B -N -r -u mysql-5.0.22/sql/sql_yacc.yy mysql-5.0.22.sx/sql/sql_yacc.yy +--- mysql-5.0.22/sql/sql_yacc.yy 2006-05-25 10:56:43.000000000 +0200 ++++ mysql-5.0.22.sx/sql/sql_yacc.yy 2006-06-06 19:49:38.000000000 +0200 +@@ -6584,6 +6584,9 @@ + case DB_TYPE_INNODB: + Lex->sql_command = SQLCOM_SHOW_INNODB_STATUS; + break; ++ case DB_TYPE_SPHINX_DB: ++ Lex->sql_command = SQLCOM_SHOW_SPHINX_STATUS; ++ break; + default: + my_error(ER_NOT_SUPPORTED_YET, MYF(0), "STATUS"); + YYABORT; diff --git a/storage/sphinx/sphinx.5.0.27.diff b/storage/sphinx/sphinx.5.0.27.diff new file mode 100644 index 00000000000..9ff6cf4fe48 --- /dev/null +++ b/storage/sphinx/sphinx.5.0.27.diff @@ -0,0 +1,284 @@ +diff -B -N -r -u mysql-5.0.22/config/ac-macros/ha_sphinx.m4 mysql-5.0.22.sx/config/ac-macros/ha_sphinx.m4 +--- mysql-5.0.22/config/ac-macros/ha_sphinx.m4 1970-01-01 01:00:00.000000000 +0100 ++++ mysql-5.0.22.sx/config/ac-macros/ha_sphinx.m4 2006-06-06 19:49:38.000000000 +0200 +@@ -0,0 +1,30 @@ ++dnl --------------------------------------------------------------------------- ++dnl Macro: MYSQL_CHECK_EXAMPLEDB ++dnl Sets HAVE_SPHINX_DB if --with-sphinx-storage-engine is used ++dnl --------------------------------------------------------------------------- ++AC_DEFUN([MYSQL_CHECK_SPHINXDB], [ ++ AC_ARG_WITH([sphinx-storage-engine], ++ [ ++ --with-sphinx-storage-engine ++ Enable the Sphinx Storage Engine], ++ [sphinxdb="$withval"], ++ [sphinxdb=no]) ++ AC_MSG_CHECKING([for example storage engine]) ++ ++ case "$sphinxdb" in ++ yes ) ++ AC_DEFINE([HAVE_SPHINX_DB], [1], [Builds Sphinx Engine]) ++ AC_MSG_RESULT([yes]) ++ [sphinxdb=yes] ++ ;; ++ * ) ++ AC_MSG_RESULT([no]) ++ [sphinxdb=no] ++ ;; ++ esac ++ ++]) ++dnl --------------------------------------------------------------------------- ++dnl END OF MYSQL_CHECK_EXAMPLE SECTION ++dnl --------------------------------------------------------------------------- ++ +diff -B -N -r -u mysql-5.0.22/configure.in mysql-5.0.22.sx/configure.in +--- mysql-5.0.22/configure.in 2006-05-25 10:56:45.000000000 +0200 ++++ mysql-5.0.22.sx/configure.in 2006-06-06 19:49:38.000000000 +0200 +@@ -41,6 +41,7 @@ + sinclude(config/ac-macros/ha_berkeley.m4) + sinclude(config/ac-macros/ha_blackhole.m4) + sinclude(config/ac-macros/ha_example.m4) ++sinclude(config/ac-macros/ha_sphinx.m4) + sinclude(config/ac-macros/ha_federated.m4) + sinclude(config/ac-macros/ha_innodb.m4) + sinclude(config/ac-macros/ha_ndbcluster.m4) +@@ -2450,6 +2451,7 @@ + MYSQL_CHECK_BDB + MYSQL_CHECK_INNODB + MYSQL_CHECK_EXAMPLEDB ++MYSQL_CHECK_SPHINXDB + MYSQL_CHECK_ARCHIVEDB + MYSQL_CHECK_CSVDB + MYSQL_CHECK_BLACKHOLEDB +diff -B -N -r -u mysql-5.0.22/libmysqld/Makefile.am mysql-5.0.22.sx/libmysqld/Makefile.am +--- mysql-5.0.22/libmysqld/Makefile.am 2006-05-25 10:56:55.000000000 +0200 ++++ mysql-5.0.22.sx/libmysqld/Makefile.am 2006-06-06 19:49:38.000000000 +0200 +@@ -27,7 +27,7 @@ + -DSHAREDIR="\"$(MYSQLSHAREdir)\"" + INCLUDES= @bdb_includes@ \ + -I$(top_builddir)/include -I$(top_srcdir)/include \ +- -I$(top_srcdir)/sql -I$(top_srcdir)/sql/examples \ ++ -I$(top_srcdir)/sql -I$(top_srcdir)/sql/examples -I$(top_srcdir)/sql/sphinx \ + -I$(top_srcdir)/regex \ + $(openssl_includes) $(yassl_includes) @ZLIB_INCLUDES@ + +@@ -38,6 +38,7 @@ + libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \ + my_time.c + sqlexamplessources = ha_example.cc ha_tina.cc ++sqlsphinxsources = ha_sphinx.cc + + noinst_HEADERS = embedded_priv.h emb_qcache.h + +@@ -65,7 +66,7 @@ + parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \ + ha_blackhole.cc ha_archive.cc my_user.c + +-libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources) ++libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources) $(sqlsphinxsources) + libmysqld_a_SOURCES= + + # automake misses these +@@ -133,12 +134,16 @@ + rm -f $$f; \ + @LN_CP_F@ $(top_srcdir)/sql/examples/$$f $$f; \ + done; \ ++ for f in $(sqlsphinxsources); do \ ++ rm -f $$f; \ ++ @LN_CP_F@ $(top_srcdir)/sql/sphinx/$$f $$f; \ ++ done; \ + rm -f client_settings.h; \ + @LN_CP_F@ $(top_srcdir)/libmysql/client_settings.h client_settings.h + + + clean-local: +- rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) | sed "s;\.lo;.c;g"` \ ++ rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) $(sqlsphinxsources) | sed "s;\.lo;.c;g"` \ + $(top_srcdir)/linked_libmysqld_sources; \ + rm -f client_settings.h + +diff -B -N -r -u mysql-5.0.22/sql/handler.cc mysql-5.0.22.sx/sql/handler.cc +--- mysql-5.0.22/sql/handler.cc 2006-05-25 10:56:42.000000000 +0200 ++++ mysql-5.0.22.sx/sql/handler.cc 2006-06-06 19:49:38.000000000 +0200 +@@ -78,6 +78,15 @@ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + HTON_NO_FLAGS }; + #endif ++#ifdef HAVE_SPHINX_DB ++#include "sphinx/ha_sphinx.h" ++extern handlerton sphinx_hton; ++#else ++handlerton sphinx_hton = { "SPHINX", SHOW_OPTION_NO, "SPHINX storage engine", ++ DB_TYPE_SPHINX_DB, NULL, 0, 0, NULL, NULL, ++ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ++ HTON_NO_FLAGS }; ++#endif + #ifdef HAVE_INNOBASE_DB + #include "ha_innodb.h" + extern handlerton innobase_hton; +@@ -147,6 +156,7 @@ + &example_hton, + &archive_hton, + &tina_hton, ++ &sphinx_hton, + &ndbcluster_hton, + &federated_hton, + &myisammrg_hton, +@@ -345,6 +355,12 @@ + return new (alloc) ha_tina(table); + return NULL; + #endif ++#ifdef HAVE_SPHINX_DB ++ case DB_TYPE_SPHINX_DB: ++ if (have_sphinx_db == SHOW_OPTION_YES) ++ return new (alloc) ha_sphinx(table); ++ return NULL; ++#endif + #ifdef HAVE_NDBCLUSTER_DB + case DB_TYPE_NDBCLUSTER: + if (have_ndbcluster == SHOW_OPTION_YES) +diff -B -N -r -u mysql-5.0.22/sql/handler.h mysql-5.0.22.sx/sql/handler.h +--- mysql-5.0.22/sql/handler.h 2006-05-25 10:56:55.000000000 +0200 ++++ mysql-5.0.22.sx/sql/handler.h 2006-06-06 19:49:38.000000000 +0200 +@@ -183,8 +183,9 @@ + DB_TYPE_BERKELEY_DB, DB_TYPE_INNODB, + DB_TYPE_GEMINI, DB_TYPE_NDBCLUSTER, + DB_TYPE_EXAMPLE_DB, DB_TYPE_ARCHIVE_DB, DB_TYPE_CSV_DB, +- DB_TYPE_FEDERATED_DB, ++ DB_TYPE_FEDERATED_DB, + DB_TYPE_BLACKHOLE_DB, ++ DB_TYPE_SPHINX_DB, + DB_TYPE_DEFAULT // Must be last + }; + +diff -B -N -r -u mysql-5.0.22/sql/Makefile.am mysql-5.0.22.sx/sql/Makefile.am +--- mysql-5.0.22/sql/Makefile.am 2006-05-25 10:56:41.000000000 +0200 ++++ mysql-5.0.22.sx/sql/Makefile.am 2006-06-06 19:49:38.000000000 +0200 +@@ -66,6 +66,7 @@ + sql_array.h sql_cursor.h \ + examples/ha_example.h ha_archive.h \ + examples/ha_tina.h ha_blackhole.h \ ++ sphinx/ha_sphinx.h \ + ha_federated.h + mysqld_SOURCES = sql_lex.cc sql_handler.cc \ + item.cc item_sum.cc item_buff.cc item_func.cc \ +@@ -102,6 +103,7 @@ + sp_cache.cc parse_file.cc sql_trigger.cc \ + examples/ha_example.cc ha_archive.cc \ + examples/ha_tina.cc ha_blackhole.cc \ ++ sphinx/ha_sphinx.cc \ + ha_federated.cc + + gen_lex_hash_SOURCES = gen_lex_hash.cc +diff -B -N -r -u mysql-5.0.22/sql/mysqld.cc mysql-5.0.22.sx/sql/mysqld.cc +--- mysql-5.0.22/sql/mysqld.cc 2006-05-25 10:56:41.000000000 +0200 ++++ mysql-5.0.22.sx/sql/mysqld.cc 2006-06-06 19:49:38.000000000 +0200 +@@ -6420,6 +6420,11 @@ + #else + have_csv_db= SHOW_OPTION_NO; + #endif ++#ifdef HAVE_SPHINX_DB ++ have_sphinx_db= SHOW_OPTION_YES; ++#else ++ have_sphinx_db= SHOW_OPTION_NO; ++#endif + #ifdef HAVE_NDBCLUSTER_DB + have_ndbcluster=SHOW_OPTION_DISABLED; + #else +@@ -7457,6 +7462,7 @@ + #undef have_example_db + #undef have_archive_db + #undef have_csv_db ++#undef have_sphinx_db + #undef have_federated_db + #undef have_partition_db + #undef have_blackhole_db +@@ -7467,6 +7473,7 @@ + SHOW_COMP_OPTION have_example_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_archive_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_csv_db= SHOW_OPTION_NO; ++SHOW_COMP_OPTION have_sphinx_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_federated_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_partition_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_blackhole_db= SHOW_OPTION_NO; +diff -B -N -r -u mysql-5.0.22/sql/mysql_priv.h mysql-5.0.22.sx/sql/mysql_priv.h +--- mysql-5.0.22/sql/mysql_priv.h 2006-05-25 10:56:43.000000000 +0200 ++++ mysql-5.0.22.sx/sql/mysql_priv.h 2006-06-06 19:49:38.000000000 +0200 +@@ -1279,6 +1279,12 @@ + #else + extern SHOW_COMP_OPTION have_csv_db; + #endif ++#ifdef HAVE_SPHINX_DB ++extern handlerton sphinx_hton; ++#define have_sphinx_db sphinx_hton.state ++#else ++extern SHOW_COMP_OPTION have_sphinx_db; ++#endif + #ifdef HAVE_FEDERATED_DB + extern handlerton federated_hton; + #define have_federated_db federated_hton.state +diff -B -N -r -u mysql-5.0.22/sql/set_var.cc mysql-5.0.22.sx/sql/set_var.cc +--- mysql-5.0.22/sql/set_var.cc 2006-05-25 10:56:41.000000000 +0200 ++++ mysql-5.0.22.sx/sql/set_var.cc 2006-06-06 19:49:38.000000000 +0200 +@@ -864,6 +864,7 @@ + {"have_compress", (char*) &have_compress, SHOW_HAVE}, + {"have_crypt", (char*) &have_crypt, SHOW_HAVE}, + {"have_csv", (char*) &have_csv_db, SHOW_HAVE}, ++ {"have_sphinx", (char*) &have_sphinx_db, SHOW_HAVE}, + {"have_dynamic_loading", (char*) &have_dlopen, SHOW_HAVE}, + {"have_example_engine", (char*) &have_example_db, SHOW_HAVE}, + {"have_federated_engine", (char*) &have_federated_db, SHOW_HAVE}, +diff -B -N -r -u mysql-5.0.22/sql/sql_lex.h mysql-5.0.22.sx/sql/sql_lex.h +--- mysql-5.0.22/sql/sql_lex.h 2006-05-25 10:56:41.000000000 +0200 ++++ mysql-5.0.22.sx/sql/sql_lex.h 2006-06-06 19:49:38.000000000 +0200 +@@ -58,6 +58,7 @@ + SQLCOM_SHOW_DATABASES, SQLCOM_SHOW_TABLES, SQLCOM_SHOW_FIELDS, + SQLCOM_SHOW_KEYS, SQLCOM_SHOW_VARIABLES, SQLCOM_SHOW_LOGS, SQLCOM_SHOW_STATUS, + SQLCOM_SHOW_INNODB_STATUS, SQLCOM_SHOW_NDBCLUSTER_STATUS, SQLCOM_SHOW_MUTEX_STATUS, ++ SQLCOM_SHOW_SPHINX_STATUS, + SQLCOM_SHOW_PROCESSLIST, SQLCOM_SHOW_MASTER_STAT, SQLCOM_SHOW_SLAVE_STAT, + SQLCOM_SHOW_GRANTS, SQLCOM_SHOW_CREATE, SQLCOM_SHOW_CHARSETS, + SQLCOM_SHOW_COLLATIONS, SQLCOM_SHOW_CREATE_DB, SQLCOM_SHOW_TABLE_STATUS, +diff -B -N -r -u mysql-5.0.22/sql/sql_parse.cc mysql-5.0.22.sx/sql/sql_parse.cc +--- mysql-5.0.22/sql/sql_parse.cc 2006-05-25 10:56:41.000000000 +0200 ++++ mysql-5.0.22.sx/sql/sql_parse.cc 2006-06-06 19:49:38.000000000 +0200 +@@ -25,6 +25,9 @@ + #ifdef HAVE_INNOBASE_DB + #include "ha_innodb.h" + #endif ++#ifdef HAVE_SPHINX_DB ++#include "sphinx/ha_sphinx.h" ++#endif + + #ifdef HAVE_NDBCLUSTER_DB + #include "ha_ndbcluster.h" +@@ -2722,6 +2725,15 @@ + break; + } + #endif ++#ifdef HAVE_SPHINX_DB ++ case SQLCOM_SHOW_SPHINX_STATUS: ++ { ++ if (check_global_access(thd, SUPER_ACL)) ++ goto error; ++ res = sphinx_show_status(thd); ++ break; ++ } ++#endif + #ifdef HAVE_REPLICATION + case SQLCOM_LOAD_MASTER_TABLE: + { +diff -B -N -r -u mysql-5.0.22/sql/sql_yacc.yy mysql-5.0.22.sx/sql/sql_yacc.yy +--- mysql-5.0.22/sql/sql_yacc.yy 2006-05-25 10:56:43.000000000 +0200 ++++ mysql-5.0.22.sx/sql/sql_yacc.yy 2006-06-06 19:49:38.000000000 +0200 +@@ -6584,6 +6584,9 @@ + case DB_TYPE_INNODB: + Lex->sql_command = SQLCOM_SHOW_INNODB_STATUS; + break; ++ case DB_TYPE_SPHINX_DB: ++ Lex->sql_command = SQLCOM_SHOW_SPHINX_STATUS; ++ break; + default: + my_error(ER_NOT_SUPPORTED_YET, MYF(0), "STATUS"); + YYABORT; diff --git a/storage/sphinx/sphinx.5.0.37.diff b/storage/sphinx/sphinx.5.0.37.diff new file mode 100644 index 00000000000..3f86e545b4d --- /dev/null +++ b/storage/sphinx/sphinx.5.0.37.diff @@ -0,0 +1,338 @@ +--- mysql-5.0.67/config/ac-macros/ha_sphinx.m4 1970-01-01 10:00:00.000000000 +1000 ++++ mysql-5.0.67-sphinx/config/ac-macros/ha_sphinx.m4 2009-02-14 09:15:48.000000000 +1000 +@@ -0,0 +1,30 @@ ++dnl --------------------------------------------------------------------------- ++dnl Macro: MYSQL_CHECK_EXAMPLEDB ++dnl Sets HAVE_SPHINX_DB if --with-sphinx-storage-engine is used ++dnl --------------------------------------------------------------------------- ++AC_DEFUN([MYSQL_CHECK_SPHINXDB], [ ++ AC_ARG_WITH([sphinx-storage-engine], ++ [ ++ --with-sphinx-storage-engine ++ Enable the Sphinx Storage Engine], ++ [sphinxdb="$withval"], ++ [sphinxdb=no]) ++ AC_MSG_CHECKING([for example storage engine]) ++ ++ case "$sphinxdb" in ++ yes ) ++ AC_DEFINE([HAVE_SPHINX_DB], [1], [Builds Sphinx Engine]) ++ AC_MSG_RESULT([yes]) ++ [sphinxdb=yes] ++ ;; ++ * ) ++ AC_MSG_RESULT([no]) ++ [sphinxdb=no] ++ ;; ++ esac ++ ++]) ++dnl --------------------------------------------------------------------------- ++dnl END OF MYSQL_CHECK_EXAMPLE SECTION ++dnl --------------------------------------------------------------------------- ++ +--- mysql-5.0.67/configure.in 2008-08-04 23:19:07.000000000 +1100 ++++ mysql-5.0.67-sphinx/configure.in 2009-02-14 09:15:48.000000000 +1000 +@@ -58,6 +58,7 @@ + sinclude(config/ac-macros/ha_berkeley.m4) + sinclude(config/ac-macros/ha_blackhole.m4) + sinclude(config/ac-macros/ha_example.m4) ++sinclude(config/ac-macros/ha_sphinx.m4) + sinclude(config/ac-macros/ha_federated.m4) + sinclude(config/ac-macros/ha_innodb.m4) + sinclude(config/ac-macros/ha_ndbcluster.m4) +@@ -2625,6 +2626,7 @@ + MYSQL_CHECK_BDB + MYSQL_CHECK_INNODB + MYSQL_CHECK_EXAMPLEDB ++MYSQL_CHECK_SPHINXDB + MYSQL_CHECK_ARCHIVEDB + MYSQL_CHECK_CSVDB + MYSQL_CHECK_BLACKHOLEDB +--- mysql-5.0.67/libmysqld/Makefile.am 2008-08-04 23:19:18.000000000 +1100 ++++ mysql-5.0.67-sphinx/libmysqld/Makefile.am 2009-02-14 09:15:48.000000000 +1000 +@@ -29,6 +29,7 @@ + -I$(top_builddir)/include -I$(top_srcdir)/include \ + -I$(top_builddir)/sql -I$(top_srcdir)/sql \ + -I$(top_srcdir)/sql/examples \ ++ -I$(top_srcdir)/sql/sphinx \ + -I$(top_srcdir)/regex \ + $(openssl_includes) @ZLIB_INCLUDES@ + +@@ -39,6 +40,7 @@ + libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \ + my_time.c + sqlexamplessources = ha_example.cc ha_tina.cc ++sqlsphinxsources = ha_sphinx.cc + + noinst_HEADERS = embedded_priv.h emb_qcache.h + +@@ -67,7 +69,7 @@ + parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \ + ha_blackhole.cc ha_archive.cc my_user.c + +-libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources) ++libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources) $(sqlsphinxsources) + libmysqld_a_SOURCES= + + # automake misses these +@@ -147,12 +149,16 @@ + rm -f $$f; \ + @LN_CP_F@ $(top_srcdir)/sql/examples/$$f $$f; \ + done; \ ++ for f in $(sqlsphinxsources); do \ ++ rm -f $$f; \ ++ @LN_CP_F@ $(top_srcdir)/sql/sphinx/$$f $$f; \ ++ done; \ + rm -f client_settings.h; \ + @LN_CP_F@ $(top_srcdir)/libmysql/client_settings.h client_settings.h + + + clean-local: +- rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) | sed "s;\.lo;.c;g"` \ ++ rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) $(sqlsphinxsources) | sed "s;\.lo;.c;g"` \ + $(top_srcdir)/linked_libmysqld_sources; \ + rm -f client_settings.h + +--- mysql-5.0.67/sql/handler.cc 2008-08-04 23:20:04.000000000 +1100 ++++ mysql-5.0.67-sphinx/sql/handler.cc 2009-02-14 09:15:48.000000000 +1000 +@@ -77,6 +77,15 @@ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + HTON_NO_FLAGS }; + #endif ++#ifdef HAVE_SPHINX_DB ++#include "sphinx/ha_sphinx.h" ++extern handlerton sphinx_hton; ++#else ++handlerton sphinx_hton = { "SPHINX", SHOW_OPTION_NO, "SPHINX storage engine", ++ DB_TYPE_SPHINX_DB, NULL, 0, 0, NULL, NULL, ++ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ++ HTON_NO_FLAGS }; ++#endif + #ifdef HAVE_INNOBASE_DB + #include "ha_innodb.h" + extern handlerton innobase_hton; +@@ -141,6 +150,7 @@ + &example_hton, + &archive_hton, + &tina_hton, ++ &sphinx_hton, + &ndbcluster_hton, + &federated_hton, + &myisammrg_hton, +@@ -341,6 +351,12 @@ + return new (alloc) ha_tina(table); + return NULL; + #endif ++#ifdef HAVE_SPHINX_DB ++ case DB_TYPE_SPHINX_DB: ++ if (have_sphinx_db == SHOW_OPTION_YES) ++ return new (alloc) ha_sphinx(table); ++ return NULL; ++#endif + #ifdef HAVE_NDBCLUSTER_DB + case DB_TYPE_NDBCLUSTER: + if (have_ndbcluster == SHOW_OPTION_YES) +--- mysql-5.0.67/sql/handler.h 2008-08-04 23:20:04.000000000 +1100 ++++ mysql-5.0.67-sphinx/sql/handler.h 2009-02-14 09:15:48.000000000 +1000 +@@ -186,8 +186,9 @@ + DB_TYPE_BERKELEY_DB, DB_TYPE_INNODB, + DB_TYPE_GEMINI, DB_TYPE_NDBCLUSTER, + DB_TYPE_EXAMPLE_DB, DB_TYPE_ARCHIVE_DB, DB_TYPE_CSV_DB, +- DB_TYPE_FEDERATED_DB, ++ DB_TYPE_FEDERATED_DB, + DB_TYPE_BLACKHOLE_DB, ++ DB_TYPE_SPHINX_DB, + DB_TYPE_DEFAULT // Must be last + }; + +--- mysql-5.0.67/sql/Makefile.am 2008-08-04 23:20:02.000000000 +1100 ++++ mysql-5.0.67-sphinx/sql/Makefile.am 2009-02-14 09:23:28.000000000 +1000 +@@ -68,6 +68,7 @@ + sql_array.h sql_cursor.h \ + examples/ha_example.h ha_archive.h \ + examples/ha_tina.h ha_blackhole.h \ ++ sphinx/ha_sphinx.h \ + ha_federated.h + mysqld_SOURCES = sql_lex.cc sql_handler.cc \ + item.cc item_sum.cc item_buff.cc item_func.cc \ +@@ -105,6 +106,7 @@ + sp_cache.cc parse_file.cc sql_trigger.cc \ + examples/ha_example.cc ha_archive.cc \ + examples/ha_tina.cc ha_blackhole.cc \ ++ sphinx/ha_sphinx.cc \ + ha_federated.cc + + gen_lex_hash_SOURCES = gen_lex_hash.cc +@@ -174,6 +176,10 @@ + udf_example_la_SOURCES= udf_example.c + udf_example_la_LDFLAGS= -module -rpath $(pkglibdir) + ++pkglib_LTLIBRARIES = sphinx/sphinx.la ++sphinx_sphinx_la_SOURCES = sphinx/snippets_udf.cc ++sphinx_sphinx_la_LDFLAGS = -module ++ + + # Don't update the files from bitkeeper + %::SCCS/s.% +--- mysql-5.0.67/sql/mysqld.cc 2008-08-04 23:20:07.000000000 +1100 ++++ mysql-5.0.67-sphinx/sql/mysqld.cc 2009-02-14 09:15:48.000000000 +1000 +@@ -36,6 +36,10 @@ + #include + #endif + ++#ifdef HAVE_SPHINX_DB ++#include "sphinx/ha_sphinx.h" ++#endif ++ + #ifdef HAVE_INNOBASE_DB + #define OPT_INNODB_DEFAULT 1 + #else +@@ -6633,6 +6637,13 @@ + {"Threads_running", (char*) &thread_running, SHOW_INT_CONST}, + {"Uptime", (char*) 0, SHOW_STARTTIME}, + {"Uptime_since_flush_status",(char*) 0, SHOW_FLUSHTIME}, ++#ifdef HAVE_SPHINX_DB ++ {"sphinx_total", (char *)sphinx_showfunc_total, SHOW_SPHINX_FUNC}, ++ {"sphinx_total_found", (char *)sphinx_showfunc_total_found, SHOW_SPHINX_FUNC}, ++ {"sphinx_time", (char *)sphinx_showfunc_time, SHOW_SPHINX_FUNC}, ++ {"sphinx_word_count", (char *)sphinx_showfunc_word_count, SHOW_SPHINX_FUNC}, ++ {"sphinx_words", (char *)sphinx_showfunc_words, SHOW_SPHINX_FUNC}, ++#endif + {NullS, NullS, SHOW_LONG} + }; + +@@ -6875,6 +6886,11 @@ + #else + have_csv_db= SHOW_OPTION_NO; + #endif ++#ifdef HAVE_SPHINX_DB ++ have_sphinx_db= SHOW_OPTION_YES; ++#else ++ have_sphinx_db= SHOW_OPTION_NO; ++#endif + #ifdef HAVE_NDBCLUSTER_DB + have_ndbcluster=SHOW_OPTION_DISABLED; + #else +@@ -7983,6 +7999,7 @@ + #undef have_example_db + #undef have_archive_db + #undef have_csv_db ++#undef have_sphinx_db + #undef have_federated_db + #undef have_partition_db + #undef have_blackhole_db +@@ -7993,6 +8010,7 @@ + SHOW_COMP_OPTION have_example_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_archive_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_csv_db= SHOW_OPTION_NO; ++SHOW_COMP_OPTION have_sphinx_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_federated_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_partition_db= SHOW_OPTION_NO; + SHOW_COMP_OPTION have_blackhole_db= SHOW_OPTION_NO; +--- mysql-5.0.67/sql/mysql_priv.h 2008-08-04 23:20:07.000000000 +1100 ++++ mysql-5.0.67-sphinx/sql/mysql_priv.h 2009-02-14 09:15:48.000000000 +1000 +@@ -1439,6 +1439,12 @@ + #else + extern SHOW_COMP_OPTION have_csv_db; + #endif ++#ifdef HAVE_SPHINX_DB ++extern handlerton sphinx_hton; ++#define have_sphinx_db sphinx_hton.state ++#else ++extern SHOW_COMP_OPTION have_sphinx_db; ++#endif + #ifdef HAVE_FEDERATED_DB + extern handlerton federated_hton; + #define have_federated_db federated_hton.state +--- mysql-5.0.67/sql/set_var.cc 2008-08-04 23:20:08.000000000 +1100 ++++ mysql-5.0.67-sphinx/sql/set_var.cc 2009-02-14 09:15:48.000000000 +1000 +@@ -888,6 +888,7 @@ + {"have_compress", (char*) &have_compress, SHOW_HAVE}, + {"have_crypt", (char*) &have_crypt, SHOW_HAVE}, + {"have_csv", (char*) &have_csv_db, SHOW_HAVE}, ++ {"have_sphinx", (char*) &have_sphinx_db, SHOW_HAVE}, + {"have_dynamic_loading", (char*) &have_dlopen, SHOW_HAVE}, + {"have_example_engine", (char*) &have_example_db, SHOW_HAVE}, + {"have_federated_engine", (char*) &have_federated_db, SHOW_HAVE}, +--- mysql-5.0.67/sql/sql_lex.h 2008-08-04 23:20:10.000000000 +1100 ++++ mysql-5.0.67-sphinx/sql/sql_lex.h 2009-02-14 09:15:48.000000000 +1000 +@@ -57,6 +57,7 @@ + SQLCOM_SHOW_DATABASES, SQLCOM_SHOW_TABLES, SQLCOM_SHOW_FIELDS, + SQLCOM_SHOW_KEYS, SQLCOM_SHOW_VARIABLES, SQLCOM_SHOW_LOGS, SQLCOM_SHOW_STATUS, + SQLCOM_SHOW_INNODB_STATUS, SQLCOM_SHOW_NDBCLUSTER_STATUS, SQLCOM_SHOW_MUTEX_STATUS, ++ SQLCOM_SHOW_SPHINX_STATUS, + SQLCOM_SHOW_PROCESSLIST, SQLCOM_SHOW_MASTER_STAT, SQLCOM_SHOW_SLAVE_STAT, + SQLCOM_SHOW_GRANTS, SQLCOM_SHOW_CREATE, SQLCOM_SHOW_CHARSETS, + SQLCOM_SHOW_COLLATIONS, SQLCOM_SHOW_CREATE_DB, SQLCOM_SHOW_TABLE_STATUS, +--- mysql-5.0.67/sql/sql_parse.cc 2008-08-04 23:20:10.000000000 +1100 ++++ mysql-5.0.67-sphinx/sql/sql_parse.cc 2009-02-14 09:15:48.000000000 +1000 +@@ -24,6 +24,9 @@ + #ifdef HAVE_INNOBASE_DB + #include "ha_innodb.h" + #endif ++#ifdef HAVE_SPHINX_DB ++#include "sphinx/ha_sphinx.h" ++#endif + + #ifdef HAVE_NDBCLUSTER_DB + #include "ha_ndbcluster.h" +@@ -3006,6 +3009,15 @@ + break; + } + #endif ++#ifdef HAVE_SPHINX_DB ++ case SQLCOM_SHOW_SPHINX_STATUS: ++ { ++ if (check_global_access(thd, SUPER_ACL)) ++ goto error; ++ res = sphinx_show_status(thd); ++ break; ++ } ++#endif + #ifdef HAVE_REPLICATION + case SQLCOM_LOAD_MASTER_TABLE: + { +--- mysql-5.0.67/sql/sql_yacc.yy 2008-08-04 23:20:12.000000000 +1100 ++++ mysql-5.0.67-sphinx/sql/sql_yacc.yy 2009-02-14 09:15:48.000000000 +1000 +@@ -7393,6 +7393,9 @@ + case DB_TYPE_INNODB: + Lex->sql_command = SQLCOM_SHOW_INNODB_STATUS; + break; ++ case DB_TYPE_SPHINX_DB: ++ Lex->sql_command = SQLCOM_SHOW_SPHINX_STATUS; ++ break; + default: + my_error(ER_NOT_SUPPORTED_YET, MYF(0), "STATUS"); + MYSQL_YYABORT; +--- mysql-5.0.67/sql/structs.h 2008-08-04 23:20:12.000000000 +1100 ++++ mysql-5.0.67-sphinx/sql/structs.h 2009-02-14 09:15:48.000000000 +1000 +@@ -188,6 +188,9 @@ + SHOW_SSL_CTX_SESS_TIMEOUTS, SHOW_SSL_CTX_SESS_CACHE_FULL, + SHOW_SSL_GET_CIPHER_LIST, + #endif /* HAVE_OPENSSL */ ++#ifdef HAVE_SPHINX_DB ++ SHOW_SPHINX_FUNC, ++#endif + SHOW_NET_COMPRESSION, + SHOW_RPL_STATUS, SHOW_SLAVE_RUNNING, SHOW_SLAVE_RETRIED_TRANS, + SHOW_KEY_CACHE_LONG, SHOW_KEY_CACHE_CONST_LONG, SHOW_KEY_CACHE_LONGLONG, +--- mysql-5.0.67/sql/sql_show.cc 2008-08-04 23:20:11.000000000 +1100 ++++ mysql-5.0.67-sphinx/sql/sql_show.cc 2009-02-14 09:15:48.000000000 +1000 +@@ -1473,6 +1473,16 @@ + value= (char*) ((sys_var*) value)->value_ptr(thd, value_type, + &null_lex_str); + } ++ #ifdef HAVE_SPHINX_DB ++ else if (show_type == SHOW_SPHINX_FUNC) ++ { ++ SHOW_VAR var; ++ ((int (*)(THD *, SHOW_VAR *, char *))value)(thd, &var, buff); ++ ++ value = var.value; ++ show_type = var.type; ++ } ++ #endif /* HAVE_SPHINX_DB */ + + pos= end= buff; + switch (show_type) { From 51ada4dcb05da577fcd26d11b66b8ac2557b3967 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 9 Jul 2010 15:17:47 +0300 Subject: [PATCH 288/461] Addendum #2 to bug #53095 : fixed a bad testcase result. --- mysql-test/suite/funcs_1/r/is_basics_mixed.result | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/suite/funcs_1/r/is_basics_mixed.result b/mysql-test/suite/funcs_1/r/is_basics_mixed.result index 2ae4f96c400..d20e5750403 100644 --- a/mysql-test/suite/funcs_1/r/is_basics_mixed.result +++ b/mysql-test/suite/funcs_1/r/is_basics_mixed.result @@ -328,7 +328,7 @@ ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_ SELECT table_schema,table_name FROM information_schema.tables WHERE table_schema = 'information_schema' AND table_name = 'tables'; table_schema table_name -information_schema tables +information_schema TABLES SELECT * FROM information_schema.table_privileges WHERE table_schema = 'information_schema'; GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE From 6ad06b15222300e4eed4fe3972d1ad249c4c42a2 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 9 Jul 2010 14:23:48 +0200 Subject: [PATCH 289/461] Fix bug #55039 Failing assertion: space_id > 0 in fil0fil.c. --- storage/innodb_plugin/dict/dict0crea.c | 18 +++++++++++++++--- storage/innodb_plugin/os/os0file.c | 12 ++++++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/storage/innodb_plugin/dict/dict0crea.c b/storage/innodb_plugin/dict/dict0crea.c index f185371bfca..09353c45c8c 100644 --- a/storage/innodb_plugin/dict/dict0crea.c +++ b/storage/innodb_plugin/dict/dict0crea.c @@ -240,17 +240,29 @@ dict_build_table_def_step( ibool is_path; mtr_t mtr; ulint space = 0; + ibool file_per_table; ut_ad(mutex_own(&(dict_sys->mutex))); table = node->table; - dict_hdr_get_new_id(&table->id, NULL, - srv_file_per_table ? &space : NULL); + /* Cache the global variable "srv_file_per_table" to + a local variable before using it. Please note + "srv_file_per_table" is not under dict_sys mutex + protection, and could be changed while executing + this function. So better to cache the current value + to a local variable, and all future reference to + "srv_file_per_table" should use this local variable. */ + file_per_table = srv_file_per_table; + + dict_hdr_get_new_id(&table->id, NULL, NULL); thr_get_trx(thr)->table_id = table->id; - if (srv_file_per_table) { + if (file_per_table) { + /* Get a new space id if srv_file_per_table is set */ + dict_hdr_get_new_id(NULL, NULL, &space); + if (UNIV_UNLIKELY(space == ULINT_UNDEFINED)) { return(DB_ERROR); } diff --git a/storage/innodb_plugin/os/os0file.c b/storage/innodb_plugin/os/os0file.c index b244e3974b3..9f937b9def2 100644 --- a/storage/innodb_plugin/os/os0file.c +++ b/storage/innodb_plugin/os/os0file.c @@ -1339,7 +1339,11 @@ try_again: /* When srv_file_per_table is on, file creation failure may not be critical to the whole instance. Do not crash the server in - case of unknown errors. */ + case of unknown errors. + Please note "srv_file_per_table" is a global variable with + no explicit synchronization protection. It could be + changed during this execution path. It might not have the + same value as the one when building the table definition */ if (srv_file_per_table) { retry = os_file_handle_error_no_exit(name, create_mode == OS_FILE_CREATE ? @@ -1426,7 +1430,11 @@ try_again: /* When srv_file_per_table is on, file creation failure may not be critical to the whole instance. Do not crash the server in - case of unknown errors. */ + case of unknown errors. + Please note "srv_file_per_table" is a global variable with + no explicit synchronization protection. It could be + changed during this execution path. It might not have the + same value as the one when building the table definition */ if (srv_file_per_table) { retry = os_file_handle_error_no_exit(name, create_mode == OS_FILE_CREATE ? From 72e404be34096c2b750345f7d23f6be08a95a78d Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 9 Jul 2010 09:51:21 -0300 Subject: [PATCH 290/461] Remove AC_LANG_WERROR, it causes trouble earlier versions of autoconf and is not strictly needed for now. --- config/ac-macros/maintainer.m4 | 2 -- 1 file changed, 2 deletions(-) diff --git a/config/ac-macros/maintainer.m4 b/config/ac-macros/maintainer.m4 index 6aa1d166f2a..1b7df75d6f7 100644 --- a/config/ac-macros/maintainer.m4 +++ b/config/ac-macros/maintainer.m4 @@ -27,7 +27,6 @@ AC_DEFUN([MY_MAINTAINER_MODE_WARNINGS], [ AC_MSG_CHECKING([whether to use C warning options ${C_WARNINGS}]) AC_LANG_PUSH(C) CFLAGS="$CFLAGS ${C_WARNINGS}" - AC_LANG_WERROR AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [myac_c_warning_flags=yes], [myac_c_warning_flags=no]) AC_LANG_POP() @@ -41,7 +40,6 @@ AC_DEFUN([MY_MAINTAINER_MODE_WARNINGS], [ AC_MSG_CHECKING([whether to use C++ warning options ${CXX_WARNINGS}]) AC_LANG_PUSH(C++) CXXFLAGS="$CXXFLAGS ${CXX_WARNINGS}" - AC_LANG_WERROR AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [myac_cxx_warning_flags=yes], [myac_cxx_warning_flags=no]) AC_LANG_POP() From e98169d52c8610efa523040d4409054e352f92df Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Mon, 12 Jul 2010 18:58:55 +0400 Subject: [PATCH 291/461] Bug#55061: Build failing on sol 8 x86 - assembler code vs compiler problem GCC-style inline assembly is not supported by the Sun Studio compilers prior to version 12. Added a check for the Sun Studio version to avoid using _FPU_GETCW() / _FPU_SETCW() when inline assembly is unsupported. This can lead to some differences in floating point calculations on Solaris 8/x86 which, however, is not worth bothering with Sun-style assembly .il templates. --- sql/mysqld.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 99f16b36dfa..598db8d993c 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -190,7 +190,7 @@ typedef fp_except fp_except_t; # define fpu_control_t unsigned int # define _FPU_EXTENDED 0x300 # define _FPU_DOUBLE 0x200 -# if defined(__GNUC__) || defined(__SUNPRO_CC) +# if defined(__GNUC__) || (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x590) # define _FPU_GETCW(cw) asm volatile ("fnstcw %0" : "=m" (*&cw)) # define _FPU_SETCW(cw) asm volatile ("fldcw %0" : : "m" (*&cw)) # else From 73be27c07f3283cb35e0fb7085b5068ab360bc01 Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Tue, 13 Jul 2010 07:34:14 -0700 Subject: [PATCH 292/461] Fixed bug #604549. There was no error thrown when creating a table with a virtual table computed by an expression returning a row. This caused a crash when inserting into the table. Removed periods at the end of the error messages for virtual columns. Adjusted output in test result files accordingly. --- mysql-test/r/plugin.result | 6 +- mysql-test/r/table_options.result | 46 +++--- mysql-test/suite/vcol/r/vcol_archive.result | 4 +- mysql-test/suite/vcol/r/vcol_blackhole.result | 4 +- .../r/vcol_blocked_sql_funcs_innodb.result | 140 ++++++++--------- .../r/vcol_blocked_sql_funcs_myisam.result | 142 +++++++++--------- mysql-test/suite/vcol/r/vcol_csv.result | 4 +- .../suite/vcol/r/vcol_ins_upd_innodb.result | 20 +-- .../suite/vcol/r/vcol_ins_upd_myisam.result | 20 +-- .../suite/vcol/r/vcol_keys_innodb.result | 30 ++-- .../suite/vcol/r/vcol_keys_myisam.result | 30 ++-- mysql-test/suite/vcol/r/vcol_memory.result | 4 +- mysql-test/suite/vcol/r/vcol_merge.result | 2 +- mysql-test/suite/vcol/r/vcol_misc.result | 5 + .../r/vcol_non_stored_columns_innodb.result | 4 +- .../r/vcol_non_stored_columns_myisam.result | 4 +- mysql-test/suite/vcol/t/vcol_misc.test | 14 ++ sql/share/errmsg.txt | 19 ++- sql/table.cc | 5 + 19 files changed, 265 insertions(+), 238 deletions(-) diff --git a/mysql-test/r/plugin.result b/mysql-test/r/plugin.result index 8d765945329..8169bd458e8 100644 --- a/mysql-test/r/plugin.result +++ b/mysql-test/r/plugin.result @@ -75,9 +75,9 @@ SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS'; #illegal value fixed CREATE TABLE t1 (a int) ENGINE=example ULL=10000000000000000000 one_or_two='ttt' YESNO=SSS; Warnings: -Warning 1651 Incorrect value '10000000000000000000' for option 'ULL' -Warning 1651 Incorrect value 'ttt' for option 'one_or_two' -Warning 1651 Incorrect value 'SSS' for option 'YESNO' +Warning 1652 Incorrect value '10000000000000000000' for option 'ULL' +Warning 1652 Incorrect value 'ttt' for option 'one_or_two' +Warning 1652 Incorrect value 'SSS' for option 'YESNO' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( diff --git a/mysql-test/r/table_options.result b/mysql-test/r/table_options.result index e5b23ea4a5a..ed6fe4fb3de 100644 --- a/mysql-test/r/table_options.result +++ b/mysql-test/r/table_options.result @@ -3,9 +3,9 @@ SET @OLD_SQL_MODE=@@SQL_MODE; SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS'; create table t1 (a int fkey=vvv, key akey (a) dff=vvv) tkey1='1v1'; Warnings: -Warning 1650 Unknown option 'fkey' -Warning 1650 Unknown option 'dff' -Warning 1650 Unknown option 'tkey1' +Warning 1651 Unknown option 'fkey' +Warning 1651 Unknown option 'dff' +Warning 1651 Unknown option 'tkey1' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -16,10 +16,10 @@ drop table t1; #reassiginig options in the same line create table t1 (a int fkey=vvv, key akey (a) dff=vvv) tkey1=1v1 TKEY1=DEFAULT tkey1=1v2 tkey2=2v1; Warnings: -Warning 1650 Unknown option 'fkey' -Warning 1650 Unknown option 'dff' -Warning 1650 Unknown option 'tkey1' -Warning 1650 Unknown option 'tkey2' +Warning 1651 Unknown option 'fkey' +Warning 1651 Unknown option 'dff' +Warning 1651 Unknown option 'tkey1' +Warning 1651 Unknown option 'tkey2' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -29,7 +29,7 @@ t1 CREATE TABLE `t1` ( #add option alter table t1 tkey4=4v1; Warnings: -Warning 1650 Unknown option 'tkey4' +Warning 1651 Unknown option 'tkey4' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -39,8 +39,8 @@ t1 CREATE TABLE `t1` ( #remove options alter table t1 tkey3=DEFAULT tkey4=DEFAULT; Warnings: -Warning 1650 Unknown option 'tkey3' -Warning 1650 Unknown option 'tkey4' +Warning 1651 Unknown option 'tkey3' +Warning 1651 Unknown option 'tkey4' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -50,11 +50,11 @@ t1 CREATE TABLE `t1` ( drop table t1; create table t1 (a int fkey1=v1, key akey (a) kkey1=v1) tkey1=1v1 tkey1=1v2 TKEY1=DEFAULT tkey2=2v1 tkey3=3v1; Warnings: -Warning 1650 Unknown option 'fkey1' -Warning 1650 Unknown option 'kkey1' -Warning 1650 Unknown option 'TKEY1' -Warning 1650 Unknown option 'tkey2' -Warning 1650 Unknown option 'tkey3' +Warning 1651 Unknown option 'fkey1' +Warning 1651 Unknown option 'kkey1' +Warning 1651 Unknown option 'TKEY1' +Warning 1651 Unknown option 'tkey2' +Warning 1651 Unknown option 'tkey3' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -64,7 +64,7 @@ t1 CREATE TABLE `t1` ( #change field with option with the same value alter table t1 change a a int `FKEY1`='v1'; Warnings: -Warning 1650 Unknown option 'FKEY1' +Warning 1651 Unknown option 'FKEY1' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -74,7 +74,7 @@ t1 CREATE TABLE `t1` ( #change field with option with a different value alter table t1 change a a int fkey1=v2; Warnings: -Warning 1650 Unknown option 'fkey1' +Warning 1651 Unknown option 'fkey1' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -93,7 +93,7 @@ t1 CREATE TABLE `t1` ( #new key with options alter table t1 add key bkey (b) kkey2=v1; Warnings: -Warning 1650 Unknown option 'kkey2' +Warning 1651 Unknown option 'kkey2' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -105,8 +105,8 @@ t1 CREATE TABLE `t1` ( #new column with options alter table t1 add column c int fkey1=v1 fkey2=v2; Warnings: -Warning 1650 Unknown option 'fkey1' -Warning 1650 Unknown option 'fkey2' +Warning 1651 Unknown option 'fkey1' +Warning 1651 Unknown option 'fkey2' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -141,7 +141,7 @@ t1 CREATE TABLE `t1` ( #add column with options after delete alter table t1 add column b int fkey2=v1; Warnings: -Warning 1650 Unknown option 'fkey2' +Warning 1651 Unknown option 'fkey2' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -154,7 +154,7 @@ t1 CREATE TABLE `t1` ( #add key alter table t1 add key bkey (b) kkey2=v2; Warnings: -Warning 1650 Unknown option 'kkey2' +Warning 1651 Unknown option 'kkey2' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -168,7 +168,7 @@ t1 CREATE TABLE `t1` ( drop table t1; create table t1 (a int) tkey1=100; Warnings: -Warning 1650 Unknown option 'tkey1' +Warning 1651 Unknown option 'tkey1' show create table t1; Table Create Table t1 CREATE TABLE `t1` ( diff --git a/mysql-test/suite/vcol/r/vcol_archive.result b/mysql-test/suite/vcol/r/vcol_archive.result index 1a046dc1fe2..83fb78a5592 100644 --- a/mysql-test/suite/vcol/r/vcol_archive.result +++ b/mysql-test/suite/vcol/r/vcol_archive.result @@ -1,7 +1,7 @@ SET @@session.storage_engine = 'archive'; create table t1 (a int, b int as (a+1)); -ERROR HY000: 'Specified storage engine' is not yet supported for computed columns. +ERROR HY000: 'Specified storage engine' is not yet supported for computed columns create table t1 (a int); alter table t1 add column b int as (a+1); -ERROR HY000: 'Specified storage engine' is not yet supported for computed columns. +ERROR HY000: 'Specified storage engine' is not yet supported for computed columns drop table t1; diff --git a/mysql-test/suite/vcol/r/vcol_blackhole.result b/mysql-test/suite/vcol/r/vcol_blackhole.result index 3ee9f626aa9..15e7505aebb 100644 --- a/mysql-test/suite/vcol/r/vcol_blackhole.result +++ b/mysql-test/suite/vcol/r/vcol_blackhole.result @@ -1,7 +1,7 @@ SET @@session.storage_engine = 'blackhole'; create table t1 (a int, b int as (a+1)); -ERROR HY000: 'Specified storage engine' is not yet supported for computed columns. +ERROR HY000: 'Specified storage engine' is not yet supported for computed columns create table t1 (a int); alter table t1 add column b int as (a+1); -ERROR HY000: 'Specified storage engine' is not yet supported for computed columns. +ERROR HY000: 'Specified storage engine' is not yet supported for computed columns drop table t1; diff --git a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_innodb.result b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_innodb.result index 97991264066..a4099dff381 100644 --- a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_innodb.result +++ b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_innodb.result @@ -1,131 +1,131 @@ SET @@session.storage_engine = 'InnoDB'; # RAND() create table t1 (b double as (rand())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # LOAD_FILE() create table t1 (a varchar(64), b varchar(1024) as (load_file(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # CURDATE() create table t1 (a datetime as (curdate())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # CURRENT_DATE(), CURRENT_DATE create table t1 (a datetime as (current_date)); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' create table t1 (a datetime as (current_date())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # CURRENT_TIME(), CURRENT_TIME create table t1 (a datetime as (current_time)); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' create table t1 (a datetime as (current_time())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP create table t1 (a datetime as (current_timestamp())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' create table t1 (a datetime as (current_timestamp)); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # CURTIME() create table t1 (a datetime as (curtime())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # LOCALTIME(), LOCALTIME create table t1 (a datetime, b varchar(10) as (localtime())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' create table t1 (a datetime, b varchar(10) as (localtime)); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # LOCALTIMESTAMP, LOCALTIMESTAMP()(v4.0.6) create table t1 (a datetime, b varchar(10) as (localtimestamp())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' create table t1 (a datetime, b varchar(10) as (localtimestamp)); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # NOW() create table t1 (a datetime, b varchar(10) as (now())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # SYSDATE() create table t1 (a int, b varchar(10) as (sysdate())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UNIX_TIMESTAMP() create table t1 (a datetime, b datetime as (unix_timestamp())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UTC_DATE() create table t1 (a datetime, b datetime as (utc_date())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UTC_TIME() create table t1 (a datetime, b datetime as (utc_time())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UTC_TIMESTAMP() create table t1 (a datetime, b datetime as (utc_timestamp())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # MATCH() # BENCHMARK() create table t1 (a varchar(1024), b varchar(1024) as (benchmark(a,3))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # CONNECTION_ID() create table t1 (a int as (connection_id())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # CURRENT_USER(), CURRENT_USER create table t1 (a varchar(32) as (current_user())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' create table t1 (a varchar(32) as (current_user)); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # DATABASE() create table t1 (a varchar(1024), b varchar(1024) as (database())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # FOUND_ROWS() create table t1 (a varchar(1024), b varchar(1024) as (found_rows())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # GET_LOCK() create table t1 (a varchar(1024), b varchar(1024) as (get_lock(a,10))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # IS_FREE_LOCK() create table t1 (a varchar(1024), b varchar(1024) as (is_free_lock(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # IS_USED_LOCK() create table t1 (a varchar(1024), b varchar(1024) as (is_used_lock(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # LAST_INSERT_ID() create table t1 (a int as (last_insert_id())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # MASTER_POS_WAIT() create table t1 (a varchar(32), b int as (master_pos_wait(a,0,2))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # NAME_CONST() create table t1 (a varchar(32) as (name_const('test',1))); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # RELEASE_LOCK() create table t1 (a varchar(32), b int as (release_lock(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # ROW_COUNT() create table t1 (a int as (row_count())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # SCHEMA() create table t1 (a varchar(32) as (schema())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # SESSION_USER() create table t1 (a varchar(32) as (session_user())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # SLEEP() create table t1 (a int, b int as (sleep(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # SYSTEM_USER() create table t1 (a varchar(32) as (system_user())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # USER() create table t1 (a varchar(1024), b varchar(1024) as (user())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UUID_SHORT() create table t1 (a varchar(1024) as (uuid_short())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # UUID() create table t1 (a varchar(1024) as (uuid())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # VALUES() create table t1 (a varchar(1024), b varchar(1024) as (values(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # VERSION() create table t1 (a varchar(1024), b varchar(1024) as (version())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # ENCRYPT() create table t1 (a varchar(1024), b varchar(1024) as (encrypt(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # Stored procedures create procedure p1() begin @@ -137,77 +137,77 @@ begin return 1; end // create table t1 (a int as (p1())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' create table t1 (a int as (f1())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' drop procedure p1; drop function f1; # Unknown functions create table t1 (a int as (f1())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # # GROUP BY FUNCTIONS # # AVG() create table t1 (a int, b int as (avg(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # BIT_AND() create table t1 (a int, b int as (bit_and(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # BIT_OR() create table t1 (a int, b int as (bit_or(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # BIT_XOR() create table t1 (a int, b int as (bit_xor(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # COUNT(DISTINCT) create table t1 (a int, b int as (count(distinct a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # COUNT() create table t1 (a int, b int as (count(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # GROUP_CONCAT() create table t1 (a varchar(32), b int as (group_concat(a,''))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # MAX() create table t1 (a int, b int as (max(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # MIN() create table t1 (a int, b int as (min(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # STD() create table t1 (a int, b int as (std(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # STDDEV_POP() create table t1 (a int, b int as (stddev_pop(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # STDDEV_SAMP() create table t1 (a int, b int as (stddev_samp(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # STDDEV() create table t1 (a int, b int as (stddev(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # SUM() create table t1 (a int, b int as (sum(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # VAR_POP() create table t1 (a int, b int as (var_pop(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # VAR_SAMP() create table t1 (a int, b int as (var_samp(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # VARIANCE() create table t1 (a int, b int as (variance(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # # XML FUNCTIONS # # ExtractValue() create table t1 (a varchar(1024), b varchar(1024) as (ExtractValue(a,'//b[$@j]'))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UpdateXML() create table t1 (a varchar(1024), b varchar(1024) as (UpdateXML(a,'/a','fff'))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # # Sub-selects # @@ -216,9 +216,9 @@ create table t2 (a int, b int as (select count(*) from t1)); ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select count(*) from t1))' at line 1 drop table t1; create table t1 (a int, b int as ((select 1))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' create table t1 (a int, b int as (a+(select 1))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # # SP functions # @@ -229,7 +229,7 @@ select sub1(1); sub1(1) 2 create table t1 (a int, b int as (a+sub3(1))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' drop function sub1; # # Long expression @@ -240,4 +240,4 @@ ERROR HY000: String 'concat(a,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa # # Constant expression create table t1 (a int as (PI())); -ERROR HY000: Constant expression in computed column function is not allowed. +ERROR HY000: Constant expression in computed column function is not allowed diff --git a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_myisam.result b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_myisam.result index c3815e991e7..dda222f5e8a 100644 --- a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_myisam.result +++ b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_myisam.result @@ -1,133 +1,133 @@ SET @@session.storage_engine = 'MyISAM'; # RAND() create table t1 (b double as (rand())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # LOAD_FILE() create table t1 (a varchar(64), b varchar(1024) as (load_file(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # CURDATE() create table t1 (a datetime as (curdate())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # CURRENT_DATE(), CURRENT_DATE create table t1 (a datetime as (current_date)); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' create table t1 (a datetime as (current_date())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # CURRENT_TIME(), CURRENT_TIME create table t1 (a datetime as (current_time)); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' create table t1 (a datetime as (current_time())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP create table t1 (a datetime as (current_timestamp())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' create table t1 (a datetime as (current_timestamp)); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # CURTIME() create table t1 (a datetime as (curtime())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # LOCALTIME(), LOCALTIME create table t1 (a datetime, b varchar(10) as (localtime())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' create table t1 (a datetime, b varchar(10) as (localtime)); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # LOCALTIMESTAMP, LOCALTIMESTAMP()(v4.0.6) create table t1 (a datetime, b varchar(10) as (localtimestamp())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' create table t1 (a datetime, b varchar(10) as (localtimestamp)); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # NOW() create table t1 (a datetime, b varchar(10) as (now())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # SYSDATE() create table t1 (a int, b varchar(10) as (sysdate())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UNIX_TIMESTAMP() create table t1 (a datetime, b datetime as (unix_timestamp())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UTC_DATE() create table t1 (a datetime, b datetime as (utc_date())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UTC_TIME() create table t1 (a datetime, b datetime as (utc_time())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UTC_TIMESTAMP() create table t1 (a datetime, b datetime as (utc_timestamp())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # MATCH() create table t1 (a varchar(32), b bool as (match a against ('sample text'))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # BENCHMARK() create table t1 (a varchar(1024), b varchar(1024) as (benchmark(a,3))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # CONNECTION_ID() create table t1 (a int as (connection_id())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # CURRENT_USER(), CURRENT_USER create table t1 (a varchar(32) as (current_user())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' create table t1 (a varchar(32) as (current_user)); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # DATABASE() create table t1 (a varchar(1024), b varchar(1024) as (database())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # FOUND_ROWS() create table t1 (a varchar(1024), b varchar(1024) as (found_rows())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # GET_LOCK() create table t1 (a varchar(1024), b varchar(1024) as (get_lock(a,10))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # IS_FREE_LOCK() create table t1 (a varchar(1024), b varchar(1024) as (is_free_lock(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # IS_USED_LOCK() create table t1 (a varchar(1024), b varchar(1024) as (is_used_lock(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # LAST_INSERT_ID() create table t1 (a int as (last_insert_id())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # MASTER_POS_WAIT() create table t1 (a varchar(32), b int as (master_pos_wait(a,0,2))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # NAME_CONST() create table t1 (a varchar(32) as (name_const('test',1))); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # RELEASE_LOCK() create table t1 (a varchar(32), b int as (release_lock(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # ROW_COUNT() create table t1 (a int as (row_count())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # SCHEMA() create table t1 (a varchar(32) as (schema())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # SESSION_USER() create table t1 (a varchar(32) as (session_user())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # SLEEP() create table t1 (a int, b int as (sleep(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # SYSTEM_USER() create table t1 (a varchar(32) as (system_user())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # USER() create table t1 (a varchar(1024), b varchar(1024) as (user())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UUID_SHORT() create table t1 (a varchar(1024) as (uuid_short())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # UUID() create table t1 (a varchar(1024) as (uuid())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # VALUES() create table t1 (a varchar(1024), b varchar(1024) as (values(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # VERSION() create table t1 (a varchar(1024), b varchar(1024) as (version())); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # ENCRYPT() create table t1 (a varchar(1024), b varchar(1024) as (encrypt(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # Stored procedures create procedure p1() begin @@ -139,77 +139,77 @@ begin return 1; end // create table t1 (a int as (p1())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' create table t1 (a int as (f1())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' drop procedure p1; drop function f1; # Unknown functions create table t1 (a int as (f1())); -ERROR HY000: Function or expression is not allowed for column 'a'. +ERROR HY000: Function or expression is not allowed for column 'a' # # GROUP BY FUNCTIONS # # AVG() create table t1 (a int, b int as (avg(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # BIT_AND() create table t1 (a int, b int as (bit_and(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # BIT_OR() create table t1 (a int, b int as (bit_or(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # BIT_XOR() create table t1 (a int, b int as (bit_xor(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # COUNT(DISTINCT) create table t1 (a int, b int as (count(distinct a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # COUNT() create table t1 (a int, b int as (count(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # GROUP_CONCAT() create table t1 (a varchar(32), b int as (group_concat(a,''))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # MAX() create table t1 (a int, b int as (max(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # MIN() create table t1 (a int, b int as (min(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # STD() create table t1 (a int, b int as (std(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # STDDEV_POP() create table t1 (a int, b int as (stddev_pop(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # STDDEV_SAMP() create table t1 (a int, b int as (stddev_samp(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # STDDEV() create table t1 (a int, b int as (stddev(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # SUM() create table t1 (a int, b int as (sum(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # VAR_POP() create table t1 (a int, b int as (var_pop(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # VAR_SAMP() create table t1 (a int, b int as (var_samp(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # VARIANCE() create table t1 (a int, b int as (variance(a))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # # XML FUNCTIONS # # ExtractValue() create table t1 (a varchar(1024), b varchar(1024) as (ExtractValue(a,'//b[$@j]'))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # UpdateXML() create table t1 (a varchar(1024), b varchar(1024) as (UpdateXML(a,'/a','fff'))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # # Sub-selects # @@ -218,9 +218,9 @@ create table t2 (a int, b int as (select count(*) from t1)); ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select count(*) from t1))' at line 1 drop table t1; create table t1 (a int, b int as ((select 1))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' create table t1 (a int, b int as (a+(select 1))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' # # SP functions # @@ -231,7 +231,7 @@ select sub1(1); sub1(1) 2 create table t1 (a int, b int as (a+sub3(1))); -ERROR HY000: Function or expression is not allowed for column 'b'. +ERROR HY000: Function or expression is not allowed for column 'b' drop function sub1; # # Long expression @@ -242,4 +242,4 @@ ERROR HY000: String 'concat(a,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa # # Constant expression create table t1 (a int as (PI())); -ERROR HY000: Constant expression in computed column function is not allowed. +ERROR HY000: Constant expression in computed column function is not allowed diff --git a/mysql-test/suite/vcol/r/vcol_csv.result b/mysql-test/suite/vcol/r/vcol_csv.result index 79c1bd2d6f4..97977505696 100644 --- a/mysql-test/suite/vcol/r/vcol_csv.result +++ b/mysql-test/suite/vcol/r/vcol_csv.result @@ -1,7 +1,7 @@ SET @@session.storage_engine = 'CSV'; create table t1 (a int, b int as (a+1)); -ERROR HY000: 'Specified storage engine' is not yet supported for computed columns. +ERROR HY000: 'Specified storage engine' is not yet supported for computed columns create table t1 (a int not null); alter table t1 add column b int as (a+1); -ERROR HY000: 'Specified storage engine' is not yet supported for computed columns. +ERROR HY000: 'Specified storage engine' is not yet supported for computed columns drop table t1; diff --git a/mysql-test/suite/vcol/r/vcol_ins_upd_innodb.result b/mysql-test/suite/vcol/r/vcol_ins_upd_innodb.result index 6d1fb0d3526..b996a0108e3 100644 --- a/mysql-test/suite/vcol/r/vcol_ins_upd_innodb.result +++ b/mysql-test/suite/vcol/r/vcol_ins_upd_innodb.result @@ -25,8 +25,8 @@ a b c # INSERT INTO tbl_name VALUES... a non-NULL value is specified against vcols insert into t1 values (1,2,3); Warnings: -Warning 1645 The value specified for computed column 'b' in table 't1' ignored. -Warning 1645 The value specified for computed column 'c' in table 't1' ignored. +Warning 1645 The value specified for computed column 'b' in table 't1' ignored +Warning 1645 The value specified for computed column 'c' in table 't1' ignored select * from t1; a b c 1 -1 -1 @@ -65,8 +65,8 @@ a b c # against vcols insert into t1 (a,b) values (1,3), (2,4); Warnings: -Warning 1645 The value specified for computed column 'b' in table 't1' ignored. -Warning 1645 The value specified for computed column 'b' in table 't1' ignored. +Warning 1645 The value specified for computed column 'b' in table 't1' ignored +Warning 1645 The value specified for computed column 'b' in table 't1' ignored select * from t1; a b c 1 -1 -1 @@ -107,8 +107,8 @@ a b c create table t2 like t1; insert into t2 select * from t1; Warnings: -Warning 1645 The value specified for computed column 'b' in table 't2' ignored. -Warning 1645 The value specified for computed column 'c' in table 't2' ignored. +Warning 1645 The value specified for computed column 'b' in table 't2' ignored +Warning 1645 The value specified for computed column 'c' in table 't2' ignored select * from t1; a b c 2 -2 -2 @@ -123,8 +123,8 @@ a b c create table t2 like t1; insert into t2 (a,b) select a,b from t1; Warnings: -Warning 1645 The value specified for computed column 'b' in table 't2' ignored. -Warning 1645 The value specified for computed column 'b' in table 't2' ignored. +Warning 1645 The value specified for computed column 'b' in table 't2' ignored +Warning 1645 The value specified for computed column 'b' in table 't2' ignored select * from t2; a b c 2 -2 -2 @@ -159,7 +159,7 @@ a b c 2 -2 -2 update t1 set c=3 where a=2; Warnings: -Warning 1645 The value specified for computed column 'c' in table 't1' ignored. +Warning 1645 The value specified for computed column 'c' in table 't1' ignored select * from t1; a b c 1 -1 -1 @@ -189,7 +189,7 @@ a b c 2 -2 -2 update t1 set c=3 where b=-2; Warnings: -Warning 1645 The value specified for computed column 'c' in table 't1' ignored. +Warning 1645 The value specified for computed column 'c' in table 't1' ignored select * from t1; a b c 1 -1 -1 diff --git a/mysql-test/suite/vcol/r/vcol_ins_upd_myisam.result b/mysql-test/suite/vcol/r/vcol_ins_upd_myisam.result index 9aac0086b4a..fa636597536 100644 --- a/mysql-test/suite/vcol/r/vcol_ins_upd_myisam.result +++ b/mysql-test/suite/vcol/r/vcol_ins_upd_myisam.result @@ -25,8 +25,8 @@ a b c # INSERT INTO tbl_name VALUES... a non-NULL value is specified against vcols insert into t1 values (1,2,3); Warnings: -Warning 1645 The value specified for computed column 'b' in table 't1' ignored. -Warning 1645 The value specified for computed column 'c' in table 't1' ignored. +Warning 1645 The value specified for computed column 'b' in table 't1' ignored +Warning 1645 The value specified for computed column 'c' in table 't1' ignored select * from t1; a b c 1 -1 -1 @@ -65,8 +65,8 @@ a b c # against vcols insert into t1 (a,b) values (1,3), (2,4); Warnings: -Warning 1645 The value specified for computed column 'b' in table 't1' ignored. -Warning 1645 The value specified for computed column 'b' in table 't1' ignored. +Warning 1645 The value specified for computed column 'b' in table 't1' ignored +Warning 1645 The value specified for computed column 'b' in table 't1' ignored select * from t1; a b c 1 -1 -1 @@ -107,8 +107,8 @@ a b c create table t2 like t1; insert into t2 select * from t1; Warnings: -Warning 1645 The value specified for computed column 'b' in table 't2' ignored. -Warning 1645 The value specified for computed column 'c' in table 't2' ignored. +Warning 1645 The value specified for computed column 'b' in table 't2' ignored +Warning 1645 The value specified for computed column 'c' in table 't2' ignored select * from t1; a b c 2 -2 -2 @@ -123,8 +123,8 @@ a b c create table t2 like t1; insert into t2 (a,b) select a,b from t1; Warnings: -Warning 1645 The value specified for computed column 'b' in table 't2' ignored. -Warning 1645 The value specified for computed column 'b' in table 't2' ignored. +Warning 1645 The value specified for computed column 'b' in table 't2' ignored +Warning 1645 The value specified for computed column 'b' in table 't2' ignored select * from t2; a b c 2 -2 -2 @@ -159,7 +159,7 @@ a b c 2 -2 -2 update t1 set c=3 where a=2; Warnings: -Warning 1645 The value specified for computed column 'c' in table 't1' ignored. +Warning 1645 The value specified for computed column 'c' in table 't1' ignored select * from t1; a b c 1 -1 -1 @@ -189,7 +189,7 @@ a b c 2 -2 -2 update t1 set c=3 where b=-2; Warnings: -Warning 1645 The value specified for computed column 'c' in table 't1' ignored. +Warning 1645 The value specified for computed column 'c' in table 't1' ignored select * from t1; a b c 1 -1 -1 diff --git a/mysql-test/suite/vcol/r/vcol_keys_innodb.result b/mysql-test/suite/vcol/r/vcol_keys_innodb.result index ee272fb7db8..857dcb8423f 100644 --- a/mysql-test/suite/vcol/r/vcol_keys_innodb.result +++ b/mysql-test/suite/vcol/r/vcol_keys_innodb.result @@ -7,7 +7,7 @@ SET @@session.storage_engine = 'InnoDB'; # - CHECK (allowed but not used) # UNIQUE create table t1 (a int, b int as (a*2) unique); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column create table t1 (a int, b int as (a*2) persistent unique); show create table t1; Table Create Table @@ -22,7 +22,7 @@ a int(11) YES NULL b int(11) YES UNI NULL VIRTUAL drop table t1; create table t1 (a int, b int as (a*2), unique key (b)); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column create table t1 (a int, b int as (a*2) persistent, unique (b)); show create table t1; Table Create Table @@ -38,7 +38,7 @@ b int(11) YES UNI NULL VIRTUAL drop table t1; create table t1 (a int, b int as (a*2)); alter table t1 add unique key (b); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column drop table t1; create table t1 (a int, b int as (a*2) persistent); alter table t1 add unique key (b); @@ -50,9 +50,9 @@ drop table t1; # # INDEX create table t1 (a int, b int as (a*2), index (b)); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column create table t1 (a int, b int as (a*2), index (a,b)); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column create table t1 (a int, b int as (a*2) persistent, index (b)); show create table t1; Table Create Table @@ -81,9 +81,9 @@ b int(11) YES NULL VIRTUAL drop table t1; create table t1 (a int, b int as (a*2)); alter table t1 add index (b); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column alter table t1 add index (a,b); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column drop table t1; create table t1 (a int, b int as (a*2) persistent); alter table t1 add index (b); @@ -103,27 +103,27 @@ drop table t1; # Rejected FK options. create table t1 (a int, b int as (a+1) persistent, foreign key (b) references t2(a) on update set null); -ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column. +ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column create table t1 (a int, b int as (a+1) persistent, foreign key (b) references t2(a) on update cascade); -ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column. +ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column create table t1 (a int, b int as (a+1) persistent, foreign key (b) references t2(a) on delete set null); -ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column. +ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column create table t1 (a int, b int as (a+1) persistent); alter table t1 add foreign key (b) references t2(a) on update set null; -ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column. +ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column alter table t1 add foreign key (b) references t2(a) on update cascade; -ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column. +ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column alter table t1 add foreign key (b) references t2(a) on delete set null; -ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column. +ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column drop table t1; create table t1 (a int, b int as (a+1), foreign key (b) references t2(a)); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column create table t1 (a int, b int as (a+1)); alter table t1 add foreign key (b) references t2(a); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column drop table t1; # Allowed FK options. create table t2 (a int primary key, b char(5)); diff --git a/mysql-test/suite/vcol/r/vcol_keys_myisam.result b/mysql-test/suite/vcol/r/vcol_keys_myisam.result index 8a11e44f201..af0935affbc 100644 --- a/mysql-test/suite/vcol/r/vcol_keys_myisam.result +++ b/mysql-test/suite/vcol/r/vcol_keys_myisam.result @@ -7,7 +7,7 @@ SET @@session.storage_engine = 'MyISAM'; # - CHECK (allowed but not used) # UNIQUE create table t1 (a int, b int as (a*2) unique); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column create table t1 (a int, b int as (a*2) persistent unique); show create table t1; Table Create Table @@ -22,7 +22,7 @@ a int(11) YES NULL b int(11) YES UNI NULL VIRTUAL drop table t1; create table t1 (a int, b int as (a*2), unique key (b)); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column create table t1 (a int, b int as (a*2) persistent, unique (b)); show create table t1; Table Create Table @@ -38,7 +38,7 @@ b int(11) YES UNI NULL VIRTUAL drop table t1; create table t1 (a int, b int as (a*2)); alter table t1 add unique key (b); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column drop table t1; create table t1 (a int, b int as (a*2) persistent); alter table t1 add unique key (b); @@ -50,9 +50,9 @@ drop table t1; # # INDEX create table t1 (a int, b int as (a*2), index (b)); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column create table t1 (a int, b int as (a*2), index (a,b)); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column create table t1 (a int, b int as (a*2) persistent, index (b)); show create table t1; Table Create Table @@ -81,9 +81,9 @@ b int(11) YES NULL VIRTUAL drop table t1; create table t1 (a int, b int as (a*2)); alter table t1 add index (b); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column alter table t1 add index (a,b); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column drop table t1; create table t1 (a int, b int as (a*2) persistent); alter table t1 add index (b); @@ -110,27 +110,27 @@ drop table t1; # Rejected FK options. create table t1 (a int, b int as (a+1) persistent, foreign key (b) references t2(a) on update set null); -ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column. +ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column create table t1 (a int, b int as (a+1) persistent, foreign key (b) references t2(a) on update cascade); -ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column. +ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column create table t1 (a int, b int as (a+1) persistent, foreign key (b) references t2(a) on delete set null); -ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column. +ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column create table t1 (a int, b int as (a+1) persistent); alter table t1 add foreign key (b) references t2(a) on update set null; -ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column. +ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column alter table t1 add foreign key (b) references t2(a) on update cascade; -ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column. +ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column alter table t1 add foreign key (b) references t2(a) on delete set null; -ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column. +ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column drop table t1; create table t1 (a int, b int as (a+1), foreign key (b) references t2(a)); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column create table t1 (a int, b int as (a+1)); alter table t1 add foreign key (b) references t2(a); -ERROR HY000: Key/Index cannot be defined on a non-stored computed column. +ERROR HY000: Key/Index cannot be defined on a non-stored computed column drop table t1; # Allowed FK options. create table t2 (a int primary key, b char(5)); diff --git a/mysql-test/suite/vcol/r/vcol_memory.result b/mysql-test/suite/vcol/r/vcol_memory.result index 37154df61e7..30b6bd4a4bf 100644 --- a/mysql-test/suite/vcol/r/vcol_memory.result +++ b/mysql-test/suite/vcol/r/vcol_memory.result @@ -1,7 +1,7 @@ SET @@session.storage_engine = 'memory'; create table t1 (a int, b int as (a+1)); -ERROR HY000: 'Specified storage engine' is not yet supported for computed columns. +ERROR HY000: 'Specified storage engine' is not yet supported for computed columns create table t1 (a int); alter table t1 add column b int as (a+1); -ERROR HY000: 'Specified storage engine' is not yet supported for computed columns. +ERROR HY000: 'Specified storage engine' is not yet supported for computed columns drop table t1; diff --git a/mysql-test/suite/vcol/r/vcol_merge.result b/mysql-test/suite/vcol/r/vcol_merge.result index 32f3268329f..03a1e151c2e 100644 --- a/mysql-test/suite/vcol/r/vcol_merge.result +++ b/mysql-test/suite/vcol/r/vcol_merge.result @@ -4,5 +4,5 @@ create table t2 (a int, b int as (a % 10)); insert into t1 values (1,default); insert into t2 values (2,default); create table t3 (a int, b int as (a % 10)) engine=MERGE UNION=(t1,t2); -ERROR HY000: 'Specified storage engine' is not yet supported for computed columns. +ERROR HY000: 'Specified storage engine' is not yet supported for computed columns drop table t1,t2; diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result index f312527794a..896dd6fa654 100644 --- a/mysql-test/suite/vcol/r/vcol_misc.result +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -30,3 +30,8 @@ a b v 5 50 6 8 80 9 drop table t1; +CREATE TABLE t1 ( +a int NOT NULL DEFAULT '0', +v double AS ((1, a)) VIRTUAL +); +ERROR HY000: Expression for computed column cannot return a row diff --git a/mysql-test/suite/vcol/r/vcol_non_stored_columns_innodb.result b/mysql-test/suite/vcol/r/vcol_non_stored_columns_innodb.result index 0f46abf0054..c638ced4f41 100644 --- a/mysql-test/suite/vcol/r/vcol_non_stored_columns_innodb.result +++ b/mysql-test/suite/vcol/r/vcol_non_stored_columns_innodb.result @@ -76,7 +76,7 @@ drop table t1; # Case 7. ALTER. Modify virtual stored -> virtual non-stored create table t1 (a int, b int as (a % 2) persistent); alter table t1 modify b int as (a % 2); -ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns. +ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -87,7 +87,7 @@ drop table t1; # Case 8. ALTER. Modify virtual non-stored -> virtual stored create table t1 (a int, b int as (a % 2)); alter table t1 modify b int as (a % 2) persistent; -ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns. +ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns show create table t1; Table Create Table t1 CREATE TABLE `t1` ( diff --git a/mysql-test/suite/vcol/r/vcol_non_stored_columns_myisam.result b/mysql-test/suite/vcol/r/vcol_non_stored_columns_myisam.result index 3c7d29ef6fe..be42b8b76c4 100644 --- a/mysql-test/suite/vcol/r/vcol_non_stored_columns_myisam.result +++ b/mysql-test/suite/vcol/r/vcol_non_stored_columns_myisam.result @@ -76,7 +76,7 @@ drop table t1; # Case 7. ALTER. Modify virtual stored -> virtual non-stored create table t1 (a int, b int as (a % 2) persistent); alter table t1 modify b int as (a % 2); -ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns. +ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -87,7 +87,7 @@ drop table t1; # Case 8. ALTER. Modify virtual non-stored -> virtual stored create table t1 (a int, b int as (a % 2)); alter table t1 modify b int as (a % 2) persistent; -ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns. +ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns show create table t1; Table Create Table t1 CREATE TABLE `t1` ( diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index a0e654daa57..06a9313edd3 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -19,3 +19,17 @@ update t1 set a=v order by b limit 1; select * from t1 order by b; drop table t1; + +# +# Bug#604549: Expression for virtual column returns row +# + +-- error ER_ROW_EXPR_FOR_VCOL +CREATE TABLE t1 ( + a int NOT NULL DEFAULT '0', + v double AS ((1, a)) VIRTUAL +); + + + + diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 117a4b8e1e6..023bd57e14f 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -6211,28 +6211,31 @@ ER_VCOL_BASED_ON_VCOL eng "A computed column cannot be based on a computed column" ER_VIRTUAL_COLUMN_FUNCTION_IS_NOT_ALLOWED - eng "Function or expression is not allowed for column '%s'." + eng "Function or expression is not allowed for column '%s'" ER_DATA_CONVERSION_ERROR_FOR_VIRTUAL_COLUMN - eng "Generated value for computed column '%s' cannot be converted to type '%s'." + eng "Generated value for computed column '%s' cannot be converted to type '%s'" ER_PRIMARY_KEY_BASED_ON_VIRTUAL_COLUMN - eng "Primary key cannot be defined upon a computed column." + eng "Primary key cannot be defined upon a computed column" ER_KEY_BASED_ON_GENERATED_VIRTUAL_COLUMN - eng "Key/Index cannot be defined on a non-stored computed column." + eng "Key/Index cannot be defined on a non-stored computed column" ER_WRONG_FK_OPTION_FOR_VIRTUAL_COLUMN - eng "Cannot define foreign key with %s clause on a computed column." + eng "Cannot define foreign key with %s clause on a computed column" ER_WARNING_NON_DEFAULT_VALUE_FOR_VIRTUAL_COLUMN - eng "The value specified for computed column '%s' in table '%s' ignored." + eng "The value specified for computed column '%s' in table '%s' ignored" ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN - eng "'%s' is not yet supported for computed columns." + eng "'%s' is not yet supported for computed columns" ER_CONST_EXPR_IN_VCOL - eng "Constant expression in computed column function is not allowed." + eng "Constant expression in computed column function is not allowed" + +ER_ROW_EXPR_FOR_VCOL + eng "Expression for computed column cannot return a row" ER_DEBUG_SYNC_TIMEOUT eng "debug sync point wait timed out" diff --git a/sql/table.cc b/sql/table.cc index b9a2a8be2f1..451515c1262 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1859,6 +1859,11 @@ bool fix_vcol_expr(THD *thd, goto end; } thd->where= save_where; + if (unlikely(func_expr->result_type() == ROW_RESULT)) + { + my_error(ER_ROW_EXPR_FOR_VCOL, MYF(0)); + goto end; + } #ifdef PARANOID /* Walk through the Item tree checking if all items are valid From 683154d1fa6249a8bfcde4bb9227570c452ea802 Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Tue, 13 Jul 2010 10:45:23 -0700 Subject: [PATCH 293/461] Fixed bug #603654. If a virtual column was used in the ORDER BY clause of a query and some of the columns this virtual column was based upon were not referenced anywhere in the query then the execution of the query could cause an assertion failure. It happened because in this case the bitmap of the columns used for ordering keys was not formed correctly. --- mysql-test/suite/vcol/r/vcol_misc.result | 10 ++++++++++ mysql-test/suite/vcol/t/vcol_misc.test | 12 ++++++++++++ sql/filesort.cc | 9 ++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result index 896dd6fa654..fe41e7e65f3 100644 --- a/mysql-test/suite/vcol/r/vcol_misc.result +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -35,3 +35,13 @@ a int NOT NULL DEFAULT '0', v double AS ((1, a)) VIRTUAL ); ERROR HY000: Expression for computed column cannot return a row +CREATE TABLE t1 ( +a CHAR(255) BINARY NOT NULL DEFAULT 0, +b CHAR(255) BINARY NOT NULL DEFAULT 0, +v CHAR(255) BINARY AS (CONCAT(a,b)) VIRTUAL ); +INSERT INTO t1(a,b) VALUES ('4','7'), ('4','6'); +SELECT 1 AS C FROM t1 ORDER BY v; +C +1 +1 +DROP TABLE t1; diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index 06a9313edd3..2ed08a69fa2 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -30,6 +30,18 @@ CREATE TABLE t1 ( v double AS ((1, a)) VIRTUAL ); +# +# Bug#603654: Virtual column in ORDER BY, no other references of table columns +# + +CREATE TABLE t1 ( + a CHAR(255) BINARY NOT NULL DEFAULT 0, + b CHAR(255) BINARY NOT NULL DEFAULT 0, + v CHAR(255) BINARY AS (CONCAT(a,b)) VIRTUAL ); +INSERT INTO t1(a,b) VALUES ('4','7'), ('4','6'); +SELECT 1 AS C FROM t1 ORDER BY v; + +DROP TABLE t1; diff --git a/sql/filesort.cc b/sql/filesort.cc index 33c838f1bcb..270f0f1ac37 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -1009,7 +1009,14 @@ static void register_used_fields(SORTPARAM *param) if ((field= sort_field->field)) { if (field->table == table) - bitmap_set_bit(bitmap, field->field_index); + { + if (field->vcol_info) + { + Item *vcol_item= field->vcol_info->expr_item; + vcol_item->walk(&Item::register_field_in_read_map, 1, (uchar *) 0); + } + bitmap_set_bit(bitmap, field->field_index); + } } else { // Item From 4c28b6776884b3890cc82c251eb4b54fe5dd81d4 Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Thu, 15 Jul 2010 10:10:16 +0400 Subject: [PATCH 294/461] Backport of the fix for bug#25421 to 5.0. Calculating the estimated number of records for a range scan may take a significant time, and it was impossible for a user to interrupt that process by killing the connection or the query. Fixed by checking the thread's 'killed' status in check_quick_keys() and interrupting the calculation process if it is set to a non-zero value. --- sql/opt_range.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 84519c091b9..35d1216387c 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -6066,6 +6066,9 @@ check_quick_keys(PARAM *param,uint idx,SEL_ARG *key_tree, tmp_max_flag=max_key_flag | key_tree->max_flag; } + if (unlikely(param->thd->killed != 0)) + return HA_POS_ERROR; + keynr=param->real_keynr[idx]; param->range_count++; if (!tmp_min_flag && ! tmp_max_flag && From 40901007434a30882e1f51171551ff287fbe540c Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Thu, 15 Jul 2010 16:51:05 -0700 Subject: [PATCH 295/461] Fixed bug #603186. There were two problems that caused wrong results reported with this bug. 1. In some cases stored(persistent) virtual columns were not marked in the write_set and in the vcol_set bitmaps. 2. If the list of fields in an insert command was empty then the values of the stored virtual columns were set to default. To fix the first problem the function st_table::mark_virtual_columns_for_write was modified. Now the function has a parameter that says whether the virtual columns are to be marked for insert or for update. To fix the second problem a special handling of empty insert lists is added in the function fill_record(). --- mysql-test/suite/vcol/r/vcol_misc.result | 17 ++++++++++++ mysql-test/suite/vcol/t/vcol_misc.test | 17 ++++++++++++ sql/sql_base.cc | 2 ++ sql/sql_insert.cc | 15 ++++++++-- sql/sql_lex.cc | 1 + sql/sql_lex.h | 7 +++++ sql/sql_table.cc | 2 +- sql/table.cc | 35 +++++++++++++++--------- sql/table.h | 2 +- 9 files changed, 81 insertions(+), 17 deletions(-) diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result index fe41e7e65f3..1826bf2dd3e 100644 --- a/mysql-test/suite/vcol/r/vcol_misc.result +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -45,3 +45,20 @@ C 1 1 DROP TABLE t1; +CREATE TABLE t1(a int, b int DEFAULT 0, v INT AS (b+10) PERSISTENT); +INSERT INTO t1(a) VALUES (1); +SELECT b, v FROM t1; +b v +0 10 +DROP TABLE t1; +CREATE TABLE t1(a int DEFAULT 100, v int AS (a+1) PERSISTENT); +INSERT INTO t1 () VALUES (); +CREATE TABLE t2(a int DEFAULT 100 , v int AS (a+1)); +INSERT INTO t2 () VALUES (); +SELECT a, v FROM t1; +a v +100 101 +SELECT a, v FROM t2; +a v +100 101 +DROP TABLE t1,t2; diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index 2ed08a69fa2..67e4b18d596 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -43,5 +43,22 @@ SELECT 1 AS C FROM t1 ORDER BY v; DROP TABLE t1; +# +# Bug#603186: Insert for a table with stored vurtual columns +# +CREATE TABLE t1(a int, b int DEFAULT 0, v INT AS (b+10) PERSISTENT); +INSERT INTO t1(a) VALUES (1); +SELECT b, v FROM t1; +DROP TABLE t1; + +CREATE TABLE t1(a int DEFAULT 100, v int AS (a+1) PERSISTENT); +INSERT INTO t1 () VALUES (); +CREATE TABLE t2(a int DEFAULT 100 , v int AS (a+1)); +INSERT INTO t2 () VALUES (); + +SELECT a, v FROM t1; +SELECT a, v FROM t2; + +DROP TABLE t1,t2; diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 8baff521c02..af4a6577915 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -8204,6 +8204,8 @@ fill_record(THD * thd, List &fields, List &values, table->auto_increment_field_not_null= FALSE; f.rewind(); } + else if (thd->lex->unit.insert_table_with_stored_vcol) + tbl_list.push_back(thd->lex->unit.insert_table_with_stored_vcol); while ((fld= f++)) { if (!(field= fld->filed_for_view_update())) diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 54234eb8ab4..4ce13374d03 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -273,7 +273,7 @@ static int check_insert_fields(THD *thd, TABLE_LIST *table_list, } /* Mark virtual columns used in the insert statement */ if (table->vfield) - table->mark_virtual_columns_for_write(); + table->mark_virtual_columns_for_write(TRUE); // For the values we need select_priv #ifndef NO_EMBEDDED_ACCESS_CHECKS table->grant.want_privilege= (SELECT_ACL & ~table->grant.privilege); @@ -1267,7 +1267,6 @@ bool mysql_prepare_insert(THD *thd, TABLE_LIST *table_list, if (mysql_prepare_insert_check_table(thd, table_list, fields, select_insert)) DBUG_RETURN(TRUE); - /* Prepare the fields in the statement. */ if (values) { @@ -1320,6 +1319,18 @@ bool mysql_prepare_insert(THD *thd, TABLE_LIST *table_list, if (!table) table= table_list->table; + if (!fields.elements && table->vfield) + { + for (Field **vfield_ptr= table->vfield; *vfield_ptr; vfield_ptr++) + { + if ((*vfield_ptr)->stored_in_db) + { + thd->lex->unit.insert_table_with_stored_vcol= table; + break; + } + } + } + if (!select_insert) { Item *fake_conds= 0; diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 51a87a3aa60..e380c94b58a 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1590,6 +1590,7 @@ void st_select_lex_unit::init_query() item_list.empty(); describe= 0; found_rows_for_union= 0; + insert_table_with_stored_vcol= 0; } void st_select_lex::init_query() diff --git a/sql/sql_lex.h b/sql/sql_lex.h index de3e01e06a9..b571d7d707a 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -532,6 +532,13 @@ public: bool describe; /* union exec() called for EXPLAIN */ Procedure *last_procedure; /* Pointer to procedure, if such exists */ + /* + Insert table with stored virtual columns. + This is used only in those rare cases + when the list of inserted values is empty. + */ + TABLE *insert_table_with_stored_vcol; + void init_query(); st_select_lex_unit* master_unit(); st_select_lex* outer_select(); diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 624aab93e33..1c0a29c589d 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -7876,7 +7876,7 @@ copy_data_between_tables(TABLE *from,TABLE *to, /* Tell handler that we have values for all columns in the to table */ to->use_all_columns(); - to->mark_virtual_columns_for_write(); + to->mark_virtual_columns_for_write(TRUE); init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1, 1, FALSE); errpos= 4; if (ignore) diff --git a/sql/table.cc b/sql/table.cc index 451515c1262..80c0c72d8f4 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -5024,7 +5024,7 @@ void st_table::mark_columns_needed_for_update() } } /* Mark all virtual columns needed for update */ - mark_virtual_columns_for_write(); + mark_virtual_columns_for_write(FALSE); DBUG_VOID_RETURN; } @@ -5052,7 +5052,7 @@ void st_table::mark_columns_needed_for_insert() if (found_next_number_field) mark_auto_increment_column(); /* Mark virtual columns for insert */ - mark_virtual_columns_for_write(); + mark_virtual_columns_for_write(TRUE); } @@ -5090,10 +5090,14 @@ bool st_table::mark_virtual_col(Field *field) /* @brief Mark virtual columns for update/insert commands + + @param insert_fl <-> virtual columns are marked for insert command @details The function marks virtual columns used in a update/insert commands in the vcol_set bitmap. + For an insert command a virtual column is always marked in write_set if + it is a stored column. If a virtual column is from write_set it is always marked in vcol_set. If a stored virtual column is not from write_set but it is computed through columns from write_set it is also marked in vcol_set, and, @@ -5112,7 +5116,7 @@ bool st_table::mark_virtual_col(Field *field) be added to read_set either. */ -void st_table::mark_virtual_columns_for_write(void) +void st_table::mark_virtual_columns_for_write(bool insert_fl) { Field **vfield_ptr, *tmp_vfield; bool bitmap_updated= FALSE; @@ -5124,16 +5128,21 @@ void st_table::mark_virtual_columns_for_write(void) bitmap_updated= mark_virtual_col(tmp_vfield); else if (tmp_vfield->stored_in_db) { - MY_BITMAP *save_read_set; - Item *vcol_item= tmp_vfield->vcol_info->expr_item; - DBUG_ASSERT(vcol_item); - bitmap_clear_all(&tmp_set); - save_read_set= read_set; - read_set= &tmp_set; - vcol_item->walk(&Item::register_field_in_read_map, 1, (uchar *) 0); - read_set= save_read_set; - bitmap_intersect(&tmp_set, write_set); - if (!bitmap_is_clear_all(&tmp_set)) + bool mark_fl= insert_fl; + if (!mark_fl) + { + MY_BITMAP *save_read_set; + Item *vcol_item= tmp_vfield->vcol_info->expr_item; + DBUG_ASSERT(vcol_item); + bitmap_clear_all(&tmp_set); + save_read_set= read_set; + read_set= &tmp_set; + vcol_item->walk(&Item::register_field_in_read_map, 1, (uchar *) 0); + read_set= save_read_set; + bitmap_intersect(&tmp_set, write_set); + mark_fl= !bitmap_is_clear_all(&tmp_set); + } + if (mark_fl) { bitmap_set_bit(write_set, tmp_vfield->field_index); mark_virtual_col(tmp_vfield); diff --git a/sql/table.h b/sql/table.h index 1424414ade8..fdd055daeeb 100644 --- a/sql/table.h +++ b/sql/table.h @@ -886,7 +886,7 @@ struct st_table { void mark_columns_needed_for_delete(void); void mark_columns_needed_for_insert(void); bool mark_virtual_col(Field *field); - void mark_virtual_columns_for_write(void); + void mark_virtual_columns_for_write(bool insert_fl); inline void column_bitmaps_set(MY_BITMAP *read_set_arg, MY_BITMAP *write_set_arg) { From 37c97fd472846fcb35575a51ab2937c0b82b9c5a Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Fri, 16 Jul 2010 11:15:22 +0400 Subject: [PATCH 296/461] Fix for bug #50667: The InnoDB plugin prevents initialization of the "embedded" server Problem: mysqltest_embedded failed to load ha_innodb_plugin library on some platforms (due to some unresolved references). Fix: on FreeBSD use -export-dynamic flag building mysqltest_embedded. That allows to use its global symbols to resolve references in the dynamically loaded plugin library. libmysqld/examples/Makefile.am: Fix for bug #50667: The InnoDB plugin prevents initialization of the "embedded" server - use -export-dynamic (on FreeBSD/DragonFly) building mysqltest_embedded to allow using its global symbols to resolve references in the dynamically loaded plugin libraries. --- libmysqld/examples/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libmysqld/examples/Makefile.am b/libmysqld/examples/Makefile.am index 109d33a85ae..fd37f362960 100644 --- a/libmysqld/examples/Makefile.am +++ b/libmysqld/examples/Makefile.am @@ -42,7 +42,8 @@ LDADD = @CLIENT_EXTRA_LDFLAGS@ ../libmysqld.a @LIBDL@ $(CXXLDFLAGS) \ mysqltest_embedded_LINK = $(CXXLINK) nodist_mysqltest_embedded_SOURCES = mysqltest.cc -mysqltest_embedded_LDADD = $(LDADD) $(top_builddir)/regex/libregex.a +mysqltest_embedded_LDADD = $(LDADD) $(top_builddir)/regex/libregex.a \ + @MYSQLD_EXTRA_LDFLAGS@ nodist_mysql_SOURCES = mysql.cc readline.cc completion_hash.cc \ my_readline.h sql_string.h completion_hash.h From 9f96097a05f6fb4abd25d09c85e92cdb94b486c9 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Fri, 16 Jul 2010 13:35:49 +0300 Subject: [PATCH 297/461] mysql client: Ignore --comments at start of command line. This allows one to more easily run mysqltest tests trough the command line. Fixed bug: LP#603026 RQG: pagecache_read: Assertion `pageno < ((1ULL) << 40)' on OPTIMIZE TABLE of a Maria table client/mysql.cc: Removed Oracle copyright from stdout, as Oracle doesn't have copyright to all code in this file. Ignore --comments at start of command line. This allows one to more easily run mysqltest tests trough the command line. mysql-test/suite/maria/r/optimize.result: Added test for LP#603026 mysql-test/suite/maria/t/optimize.test: Added test for LP#603026 sql/net_serv.cc: Removed DBUG_ASSERT(), as this code can happen during testing. storage/maria/ma_check.c: Fixed bug: LP#603026 RQG: pagecache_read: Assertion `pageno < ((1ULL) << 40)' on OPTIMIZE TABLE of a Maria table The problem was duplicated memory usage with long packed keys. --- client/mysql.cc | 11 +- mysql-test/suite/maria/r/optimize.result | 8 ++ mysql-test/suite/maria/t/optimize.test | 162 +++++++++++++++++++++++ sql/net_serv.cc | 1 - storage/maria/ma_check.c | 6 +- 5 files changed, 181 insertions(+), 7 deletions(-) create mode 100644 mysql-test/suite/maria/r/optimize.result create mode 100644 mysql-test/suite/maria/t/optimize.test diff --git a/client/mysql.cc b/client/mysql.cc index 3fb865817ef..45d363bc98c 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -1,5 +1,6 @@ -/* Copyright (C) 2000-2009 MySQL AB & Monty Program Ab +/* Copyright (C) 2000-2009 MySQL AB Copyright 2000, 2010, Oracle and/or its affiliates. All rights reserved. + Copyright 2000-2010 Monty Program Ab This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,7 +16,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #define COPYRIGHT_NOTICE "\ -Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.\n\ This software comes with ABSOLUTELY NO WARRANTY. This is free software,\n\ and you are welcome to modify and redistribute it under the GPL v2 license\n" @@ -2212,9 +2212,12 @@ static bool add_line(String &buffer,char *line,char *in_string, the line -- which would occur only because of the user sending newline -- which is itself whitespace and should also match. + We also ignore lines starting with '--', even if there + isn't a whitespace after. (This makes it easier to run + mysql-test-run cases through the client) */ - (my_isspace(charset_info,pos[2]) || - !pos[2]))))) + ((my_isspace(charset_info,pos[2]) || !pos[2]) || + (buffer.is_empty() && out == line)))))) { // Flush previously accepted characters if (out != line) diff --git a/mysql-test/suite/maria/r/optimize.result b/mysql-test/suite/maria/r/optimize.result new file mode 100644 index 00000000000..9cce55d6199 --- /dev/null +++ b/mysql-test/suite/maria/r/optimize.result @@ -0,0 +1,8 @@ +drop table if exists t1; +check table t1; +Table Op Msg_type Msg_text +test.t1 check status OK +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +drop table t1; diff --git a/mysql-test/suite/maria/t/optimize.test b/mysql-test/suite/maria/t/optimize.test new file mode 100644 index 00000000000..9f38a68edeb --- /dev/null +++ b/mysql-test/suite/maria/t/optimize.test @@ -0,0 +1,162 @@ +--source include/have_maria.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +# +# Test for LP#603026: RQG: pagecache_read: Assertion `pageno < ((1ULL) << 40)' on OPTIMIZE TABLE of a Maria table +# + +--disable_query_log +set autocommit=1; +--disable_warnings +CREATE TABLE t1 ( `col_varchar_1024_utf8_not_null_key` varchar(1024) CHARACTER SET utf8 not null, `col_varchar_1024_utf8_key` varchar(1024) CHARACTER SET utf8, `col_varchar_1024_utf8_not_null` varchar(1024) CHARACTER SET utf8 not null, `col_varchar_1024_utf8` varchar(1024) CHARACTER SET utf8, pk varchar(1024) not null, `col_varchar_1024_latin1` varchar(1024) CHARACTER SET latin1, `col_varchar_1024_latin1_not_null_key` varchar(1024) CHARACTER SET latin1 not null, `col_varchar_1024_latin1_not_null` varchar(1024) CHARACTER SET latin1 not null, `col_varchar_1024_latin1_key` varchar(1024) CHARACTER SET latin1, /*Indices*/ key (`col_varchar_1024_utf8_not_null_key` ), key (`col_varchar_1024_utf8_key` ), primary key (pk), key (`col_varchar_1024_latin1_not_null_key` ), key (`col_varchar_1024_latin1_key` )) ENGINE=maria; +--enable_warnings +INSERT /*! IGNORE */ INTO t1 VALUES ('dbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzb', 'wdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwby', 'something', 'pwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfa', 1, 'dpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjr', 'can', 'hdpwdbhfatqokbosjofmpdxvhq', 'rhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxw') , ('urhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxci', 'turhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidl', 'to', 'rturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftka', 2, 'grturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmh', 'ygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvh', 'rygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxwmabsoaiqscbnfwvhwdjgrhlfusfplamodraqbpgtdgviqngjtlykclmdokwpttsicss', 'vrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizw') , ('c', 'wvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbld', 'had', 'twvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxw', 3, 'htwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjd', 'q', 'z', 'phtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfi') , ('vphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapn', 'jvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjv', 'ejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgq', 'vejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqyt', 4, 't', 'why', 'your', 'cvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxrey') , ('v', 'rcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambx', 'frcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilx', 'p', 5, 'kfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxwmabsoaiqscbnfwvhwdjgrhlfusfplamodr', 'i', 'ikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmy', 'jikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmu'); +INSERT /*! IGNORE */ INTO t1 VALUES ('wjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcq', 'uwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnng', 'zuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajy', 'i', 6, 'u', 'q', 'd', 'izuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkq') , ('bizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdub', 'd', 'lbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxwmabsoaiqscbn', 'llbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfz', 7, 'bllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutf', 'rbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmf', 'really', 'yrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnngh') , ('tyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwp', 'xtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmsw', 'kxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgkne', 'mkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjv', 8, 'zmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgx', 'ezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxwmabsoaiqscbnfwvhwdjgrhlfusfplamodraqbpgtdgviqngjtlykclm', 'no', 'eezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczs') , ('m', 'keezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfep', 'tkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqh', 'ztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxwmabsoaiqscbnfwvhwdjgrhlf', 9, 'n', 'hey', 'hztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxw', 'shztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveamb') , ('bshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvf', 'on', 'look', 'I', 10, 'xbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxz', 'lxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjr', 'what', 'ilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnrolj'); +INSERT /*! IGNORE */ INTO t1 VALUES ('he', 'hilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkj', 'khilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecf', 'o', 11, 'i', 'okhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygr', 'hokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpd', 'khokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveamb') , ('kkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphuni', 'about', 'ckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeq', 'sckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtb', 12, 'xsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwn', 'at', 'pxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpaj', 'kpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpx') , ('in', 'see', 'ikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyi', 'say', 13, 'you', 'x', 'wikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhit', 'why') , ('mean', 'a', 'now', 'm', 14, 'cwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqo', 'acwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaaht', 'racwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswv', 'hracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoa') , ('v', 'l', 'shracwikpxsckkhokhilx', 'gshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwyto', 15, 'fgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsv', 'say', 'nfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfu', 'onfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpaj'); +INSERT /*! IGNORE */ INTO t1 VALUES ('vonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcil', 'svonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccm', 'osvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmah', 'zosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrx', 16, 'f', 'from', 'azosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwp', 'that\'s') , ('h', 'tazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnest', 'my', 'dtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpol', 17, 'her', 'fdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfz', 'efdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxw', 'n') , ('t', 'x', 'sefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizw', 'hsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynve', 18, 'mhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqd', 'kmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswc', 'bkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxci', 'abkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztk') , ('uabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsyg', 'who', 'i', 'v', 19, 'xuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdk', 'xxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpvea', 'yxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywi', 'dyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbi') , ('adyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzknd', 'nadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphu', 'that', 'knadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitck', 20, 'lknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxq', 'go', 'mlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqp', 'qmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiar'); +INSERT /*! IGNORE */ INTO t1 VALUES ('tqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgt', 'y', 'ktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnp', 'oktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgj', 21, 'boktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmj', 'wboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucap', 'zwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfam', 'd') , ('i', 'kzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyyn', 'get', 'dkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqa', 22, 'fdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnuj', 'd', 'lfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnb', 'go') , ('z', 'clfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnes', 'qclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhq', 'not', 23, 'b', 'want', 'pqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlp', 'come') , ('c', 'ipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnh', 'x', 'are', 24, 'kipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlq', 'bkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejw', 'hbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwb', 'mhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdca') , ('t', 'zmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzss', 'this', 'u', 25, 'not', 'yeah', 'gzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitap', 'a'); +INSERT /*! IGNORE */ INTO t1 VALUES ('cmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfik', 'r', 'ecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjk', 'uecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemo', 111, 'fuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvf', 'zfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxd', 'vzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvd', 'ovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwku') , ('dovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpub', 'd', 'hdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbi', 'rhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwd', 112, 'rrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsx', 'say', 'mean', 'right') , ('she', 'out', 'drrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbki', 'back', 113, 'pdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgt', 'I', 'because', 'updrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwd') , ('qupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcow', 'oqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrf', 'eoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqz', 'x', 114, 'feoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctp', 'tfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezm', 'xtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloi', 'ixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoi') , ('fixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndc', 'afixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoup', 'yafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgr', 'going', 115, 'say', 'myafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttc', 'my', 'fmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkm'); +INSERT /*! IGNORE */ INTO t1 VALUES ('efmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoks', 'e', 'it', 'jefmyafixtfeoqupdrrhdovzfuecmgg', 116, 'h', 's', 'when', 'ujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinh') , ('don\'t', 'yujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckz', 'fyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjluf', 'sfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqy', 117, 'usfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbp', 'rusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsm', 'zrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaai', 'ezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpn') , ('d', 'iezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbny', 'be', 'p', 118, 'riezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlp', 'h', 'f', 'nriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhs') , ('inriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzd', 'oinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknad', 'that', 'loinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylgl', 119, 'uloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgb', 'what', 'x', 's') , ('buloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecm', 'q', 'didn\'t', 'was', 120, 'would', 'fbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinb', 'sfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvv', 'j'); +INSERT /*! IGNORE */ INTO t1 VALUES ('asfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgk', 'dasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmh', 'and', 't', 121, 'jdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbm', 'got', 'yjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbm', 'lyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwbok') , ('with', 'tlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsm', 'ztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxk', 'kztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudo', 122, 'lkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsry', 't', 'ktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzztt', 'gktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeq') , ('qgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftd', 'sqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednpt', 'in', 'see', 123, 'r', 'ssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjia', 'me', 'rssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolm') , ('irssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbk', 'c', 'jirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokup', 'yeah', 124, 'a', 'fjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajya', 'rfjir', 'qrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkr') , ('n', 'dqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpick', 'idqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxu', 'y', 125, 't', 'nidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavn', 'fnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajse', 'in'); +INSERT /*! IGNORE */ INTO t1 VALUES ('now', 'ffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednpt', 'nffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshrac', 'gnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzb', 126, 'ygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajs', 'lygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfeme', 'alygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokr', 'halygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdr') , ('i', 'some', 'phalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmh', 'could', 127, 'was', 'q', 'zphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtod', 'czphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwbok') , ('yczphalygnffnidqrfji', 'r', 'xyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzz', 'xxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgz', 128, 'had', 'zxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbw', 'k', 'g') , ('some', 'm', 'ozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemo', 'to', 129, 'mozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqsef', 'kmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvf', 'dkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwc', 'like') , ('you', 'idkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbki', 'xidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckk', 'why', 130, 'sxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjr', 'asxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlev', 'rasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfgi', 'prasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwda'); +INSERT /*! IGNORE */ INTO t1 VALUES ('aprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmj', 'laprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpi', 'xlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrq', 'n', 131, 'dxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlyky', 'qdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhx', 'vqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppy', 'm') , ('bvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqsef', 'cbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenh', 'd', 'lcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseo', 132, 'to', 'up', 'that', 'wlcbvqdxlaprasxi') , ('cwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmp', 'got', 'kcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumc', 'y', 133, 'her', 'from', 'he', 'rkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlp') , ('yrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmm', 'k', 'lyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashf', 'blyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthi', 134, 'hblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkq', 'going', 'bhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcr', 'lbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlg') , ('a', 'xlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosj', 'wxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofm', 'nwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxr', 135, 't', 'his', 'fnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnx', 'this'); +INSERT /*! IGNORE */ INTO t1 VALUES ('afnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoq', 's', 'r', 'i', 136, 'her', 'nafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgby', 'mnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjda', 'jmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjy') , ('there', 'cjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptud', 'hcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsyg', 'm', 137, 'xhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuse', 'jxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzt', 'jjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspun', 'gjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqcl') , ('mgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnz', 'pmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhf', 't', 'y', 138, 'that\'s', 'all', 'epmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdk', 'aepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznth') , ('aaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfe', 'jaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickht', 'djaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwby', 'g', 139, 'zdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodq', 'her', 'azdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqx', 'dazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpuca') , ('ldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarc', 'gldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfz', 'egldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnq', 'hegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmaskl', 140, 'with', 'good', 'whegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttc', 'kwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhk'); +INSERT /*! IGNORE */ INTO t1 VALUES ('it', 'qxcxsriduotqpzazkhrlmlyzuyvqxz', 'x', 'going', 151, 'tqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbz', 'u', 'a', 'j') , ('do', 'ctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfd', 'is', 'tctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqs', 152, 'ftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfg', 'f', 'he', 'vftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssq') , ('svftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhd', 'out', 'esvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpx', 'pesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnz', 153, 'lpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhin', 'blpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppj', 'ablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlkn', 'if') , ('fablpesvftctqxcxsriduotqpzazkhrlml', 'ffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdas', 'cffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqd', 'ncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveaht', 154, 'with', 'say', 'how', 'hncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeez') , ('e', 'ghncffablpesvftctqxcxsriduotqpzazkhrlmlyz', 'when', 'yghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoup', 155, 'gyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxi', 'qgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednp', 'v', 'q'); +INSERT /*! IGNORE */ INTO t1 VALUES ('oh', 'd', 'xqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmo', 'm', 156, 'zxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfov', 'gzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfe', 'ygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqx', 'oygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwi') , ('aoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzy', 'iaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhi', 'i', 'diaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfu', 157, 'ndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcd', 'sndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcc', 'really', 'j') , ('fsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmx', 'hey', 'can', 'tfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuq', 158, 'dtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjj', 'edtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoap', 'know', 'now') , ('r', 'have', 'cedtfsndi', 'ycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgq', 159, 'think', 'rycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwl', 'see', 's') , ('tell', 'I\'m', 'l', 'mrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzu', 160, 'out', 'i', 'cmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygn', 'had'); +INSERT /*! IGNORE */ INTO t1 VALUES ('pcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvv', 'lpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgpp', 'nlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupd', 'wnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseft', 161, 'xwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccf', 'g', 'qxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzw', 'xqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyaf') , ('h', 'ok', 'q', 'because', 162, 'oxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfb', 'moxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirs', 'think', 'cmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxu') , ('ncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryft', 'i', 'cncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthi', 'could', 163, 'zcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemeg', 'czcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpi', 'vczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddu', 'qvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvej') , ('t', 'z', 'p', 'zqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleiz', 164, 'and', 'nzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpza', 'knzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxc', 'nknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwg') , ('if', 'q', 'rnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtb', 'lrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmg', 165, 'from', 'flrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzf', 'jflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafi', 'mean'); +INSERT /*! IGNORE */ INTO t1 VALUES ('ljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbsh', 'mljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygz', 'wmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpub', 'lwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmx', 166, 'u', 'elwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluz', 'just', 'welwmljflrnknzqvczcn') , ('been', 'iwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqd', 'd', 'miwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselv', 167, 'y', 'nmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqj', 'b', 'cnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsnd') , ('ycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmaskl', 'a', 'who', 'yycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwby', 168, 'gyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegl', 'up', 'ggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhsk', 'zggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqv') , ('szggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhcz', 'zszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpc', 'nzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemew', 'l', 169, 'znzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpe', 'fznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsj', 'ufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvpht', 'she') , ('lufznzszggyycnmiwe', 'q', 'wlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmouppp', 'lwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjw', 170, 'ilwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwe', 'ailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfg', 'tailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqp', 'm'); +INSERT /*! IGNORE */ INTO t1 VALUES ('think', 'ztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpge', 'sztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtaz', 'from', 171, 'msztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftl', 'rmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncff', 'prmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywm', 'fprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhk') , ('bfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytncc', 'dbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvv', 'l', 'qdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpz', 172, 'on', 'zqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhe', 'they', 'k') , ('izqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdk', 'nizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeez', 'hnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryr', 'q', 173, 'mhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhs', 'go', 'could', 'bmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvf') , ('abmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtv', 'you', 'nabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovve', 'we', 174, 'okay', 'inabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzg', 'dinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgp', 'idinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlkn') , ('c', 'widinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashf', 'kwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazk', 'as', 175, 'because', 'mkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktde', 'zmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfy', 'x'); +INSERT /*! IGNORE */ INTO t1 VALUES ('lzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmn', 'glzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfg', 'vglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncff', 'mvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiief', 176, 'f', 'i', 'why', 'wmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmc') , ('t', 'gwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavntt', 'qgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeez', 'l', 177, 'z', 'the', 'iqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfs', 'piqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyv') , ('o', 'rpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzg', 'or', 'jrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseo', 178, 'jjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcnc', 'yjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxycz', 'they', 'l') , ('y', 'iyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhq', 'j', 'h', 179, 'y', 'one', 'at', 'o') , ('ciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozx', 'iciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmq', 'iiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffa', 'your', 180, 'do', 'could', 'giiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgz', 'agiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitc'); +INSERT /*! IGNORE */ INTO t1 VALUES ('uagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyu', 'wuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozx', 'zwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinri', 'pzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqe', 181, 'cpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihml', 's', 'mcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpc', 't') , ('kmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednpt', 'hkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikf', 'were', 'ehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhw', 182, 'eehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfn', 'jeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxq', 'y', 'g') , ('jjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfov', 'ojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdko', 'iojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbh', 'uiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmd', 183, 'kuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicb', 'akuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndi', 'uakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvon', 'uuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoq') , ('wuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzq', 'fwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjg', 'was', 'at', 184, 'lfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerr', 'g', 'c', 'dlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracw') , ('kdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsr', 'dkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepm', 'rdkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxh', 'ardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqr', 185, 'oardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxb', 'poardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrn', 'ipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxz', 'gipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxow'); +INSERT /*! IGNORE */ INTO t1 VALUES ('rgipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdb', 'ergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdb', 'mergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczm', 'vmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqer', 186, 'p', 'pvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmlec', 'this', 'q') , ('lpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppy', 'really', 'glpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskok', 'of', 187, 'with', 'i', 'kglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffni', 'h') , ('r', 'bkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzc', 'jbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyj', 'and', 188, 'wjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloi', 'pwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcb', 'from', 'bpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhs') , ('t', 'xbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcm', 'yxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmr', 'r', 189, 'time', 'ryx', 'who', 'j') , ('gryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtb', 'ogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjgh', 'uogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdk', 'c', 190, 'muogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdx', 'wmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacd', 'gwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseoux', 'pgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlyk'); +INSERT /*! IGNORE */ INTO t1 VALUES ('to', 'o', 'mpgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekweme', 'y', 191, 'empgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvpht', 'f', 'x', 'mempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrf') , ('e', 'and', 'imempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghnc', 'ximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftct', 192, 'j', 'say', 'sximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxl', 'psximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesq') , ('y', 'v', 'mpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtv', 'zmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxb', 193, 'd', 'like', 'come', 'fzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbga') , ('gfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirs', 'ogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptud', 'have', 'oogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcar', 194, 'koogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclf', 'ykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfy', 'lykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxb', 'xlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhniz') , ('rxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhs', 'at', 'lrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdy', 'plrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfci', 195, 'tplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginly', 'wtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwe', 'out', 'm'); +INSERT /*! IGNORE */ INTO t1 VALUES ('your', 'ok', 'r', 'to', 196, 'nwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgw', 'anwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlu', 'tanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwj', 'mtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyu') , ('umtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqx', 'a', 'will', 'yumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvp', 197, 'did', 'wyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyr', 'q', 'that\'s') , ('s', 'gwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbos', 'this', 'wgwyumtanwtplrxlykoogfzmpsximempgwmuogryxb', 198, 'rwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwo', 'nrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepm', 'jnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajse', 'pjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndi') , ('t', 'ypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryf', 'aypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqg', 'haypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxe', 199, 'didn\'t', 'with', 'qhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbul', 'j') , ('eqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgt', 'e', 'meqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciy', 'emeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxla', 200, 'yemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkg', 'y', 'xyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkip', 'just'); +INSERT /*! IGNORE */ INTO t1 VALUES ('jxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipq', 'wjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbic', 'bwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickh', 'vbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtw', 201, 'jvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlb', 'they', 'rjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrus', 'arjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxerm') , ('karjvbwjxyemeqhaypjnrwgwyu', 'tkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthi', 'utkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzg', 'jutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfb', 202, 'were', 'up', 'z', 'r') , ('jjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdja', 'rjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjd', 'jrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfw', 'pjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknady', 203, 'apjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwm', 'for', 'rapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbk', 'my') , ('erapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbto', 'uerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglaf', 'querapjrjjutkarjvbwjxyeme', 'who', 204, 'squerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwl', 'q', 'msquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlu', 'kmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkret') , ('a', 'tkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtan', 'etkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlk', 'uetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunl', 205, 'one', 'to', 'muetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxh', 'vmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlap'); +INSERT /*! IGNORE */ INTO t1 VALUES ('some', 'y', 'cvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwk', 'e', 206, 'qcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryf', 'pqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkret', 'cpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzztt', 'lcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmya') , ('klcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszg', 'your', 'will', 'bklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvm', 207, 'gbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqg', 'hgbklcpqcvmuetkmsquerapjrjjutka', 'nhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgj', 'd') , ('vnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgj', 'ovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhts', 'really', 'w', 208, 'wovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfue', 'dwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvpht', 'ldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhkln', 'bldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxe') , ('qbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmh', 'uqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdj', 'hey', 'puqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanw', 209, 'hpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatq', 'bhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfat', 'qbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsef', 'and') , ('e', 'l', 'cqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyyc', 'u', 210, 'do', 'scqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwluf', 'jscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxl', 'mjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiw'); +INSERT /*! IGNORE */ INTO t1 VALUES ('umjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyu', 'aumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfp', 'z', 'at', 211, 'laumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcj', 'then', 'zlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagii', 'hzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwd') , ('khzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodq', 'zkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqg', 'l', 'xzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjb', 212, 'yxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuec', 'myxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkr', 'there', 'didn\'t') , ('bmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqo', 'you\'re', 'sbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvf', 'dsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhr', 213, 'odsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbk', 'godsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsri', 'fgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkret', 'q') , ('know', 'i', 'a', 'efgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbul', 214, 'because', 'l', 'vefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxl', 'n') , ('or', 's', 'evefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcd', 's', 215, 'levefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptu', 'z', 'up', 'plevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdko'); +INSERT /*! IGNORE */ INTO t1 VALUES ('yes', 'k', 'r', 'with', 216, 'could', 'p', 'vplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiw', 'qvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwm') , ('jqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdk', 'mjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvq', 'a', 'tmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyy', 217, 'jtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjj', 'pjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjn', 'h', 'not') , ('opjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuab', 'jopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailw', 'from', 'you\'re', 218, 'vjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyh', 'wvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowl', 'iwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafn', 'biwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddu') , ('cbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnc', 'rcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvf', 'f', 'urcbiwvj', 219, 'n', 'curcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidq', 'gcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykf', 'igcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlap') , ('nigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtced', 'd', 'for', 'know', 220, 'znigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedt', 'or', 'v', 'f'); +INSERT /*! IGNORE */ INTO t1 VALUES ('eznigcurcb', 'a', 'keznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmp', 'ukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiy', 221, 'don\'t', 'mukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxi', 'pmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhp', 'he\'s') , ('lpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuec', 'klpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgw', 'oklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajs', 'for', 222, 'm', 'f', 'y', 'k') , ('u', 'voklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuse', 'her', 'bvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgw', 223, 'going', 'zbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhb', 'yzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxq', 'y') , ('syzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbk', 'ksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnk', 'hksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxq', 'dhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhm', 224, 'z', 'ndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvb', 'qndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwd', 'vqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyh') , ('lvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwheglda', 'well', 'b', 'mlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqac', 225, 'pmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozx', 'upmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinrie', 'gupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinri', 'rgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptu'); +INSERT /*! IGNORE */ INTO t1 VALUES ('can\'t', 'rrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnw', 'frrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfw', 'mean', 226, 'q', 'vfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftc', 'uvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkh', 'iuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrus') , ('qiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmn', 'rqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqo', 'yrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmox', 'oyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbl', 227, 'qoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkm', 'tqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkr', 'utqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbw', 'butqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesv') , ('ybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylgl', 'iybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvgl', 'viybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjx', 'b', 228, 'q', 'f', 'vviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndi', 'say') , ('cvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzl', 'wcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowl', 'or', 'h', 229, 'c', 'bwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffabl', 'nbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwbok', 'fnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafix') , ('no', 'all', 'rfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvpl', 'rrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptud', 230, 'jrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszg', 'my', 'say', 'h'); +INSERT /*! IGNORE */ INTO t1 VALUES ('w', 'lnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznz', 'j', 'plnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbf', 241, 'kplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgd', 'nkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssq', 'qnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskok', 'zqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbw') , ('vzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoar', 'mvzqnkpl', 'fmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpv', 'g', 242, 'hfmvzqnkplnldmpawbzosnvunqqpushgph', 'xhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlapra', 'uxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqv', 'huxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkrav') , ('r', 'ihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcy', 'go', 'his', 243, 'didn\'t', 'your', 'nihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnk', 'jnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyh') , ('ijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhk', 'hijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzck', 'xhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjk', 'oxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfp', 244, 'ooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgygh', 'uooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeq', 'there', 'be') , ('back', 'luooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknz', 'z', 'wluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffn', 245, 'can\'t', 'kwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevr', 'skwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqq', 'askwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdas'); +INSERT /*! IGNORE */ INTO t1 VALUES ('m', 'aaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscq', 'laaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghn', 'wlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfb', 246, 'mwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiin', 'this', 'rmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgesk', 's') , ('the', 'armwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnr', 'warmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwo', 'e', 247, 'jwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloi', 'vjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqx', 'cvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriez', 'r') , ('u', 'ccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveaht', 'o', 'o', 248, 'xccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipo', 'jxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzz', 'xjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfu', 'at') , ('jxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffni', 'I\'ll', 'y', 'xjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlyk', 249, 'k', 'p', 'q', 'sxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsx') , ('nsxjxjxccvjwa', 'knsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhd', 'pknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnr', 'rpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlc', 250, 'up', 'drpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnm', 'u', 'udrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfo'); +INSERT /*! IGNORE */ INTO t1 VALUES ('sudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyir', 'i', 'wsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsq', 'been', 251, 'kwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdp', 'jkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwn', 'cjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdm', 'i') , ('hcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwol', 'i', 'thcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogry', 'othcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluo', 252, 'gothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpus', 'are', 'tgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablp', 'otgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzm') , ('l', 'gotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqx', 'jgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkre', 'qjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgod', 253, 'were', 'gqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvq', 'fgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzx', 'a') , ('r', 'sfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyg', 'esfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhc', 'cesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjx', 254, 'dcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhd', 'have', 'mdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghn', 'd') , ('kmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbm', 'mkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihu', 'qmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeo', 'yeah', 255, 'gqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutq', 'lgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpu', 'algqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkm', 'ialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhp'); +INSERT /*! IGNORE */ INTO t1 VALUES ('rialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbm', 'jrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczp', 'jjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfm', 'fjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcv', 256, 'vfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqd', 'ivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnf', 'vivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmry', 'c') , ('lvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaask', 'mlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawb', 'hmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqg', 'here', 257, 'zhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldw', 'tzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqb', 'oh', 'ntzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinl') , ('intzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghn', 'not', 'her', 'qintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnk', 258, 'kqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyir', 'lkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrp', 'plkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhb', 'h') , ('kplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgar', 'kkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlau', 'ikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedc', 'oikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrj', 259, 'foikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjj', 'he\'s', 'jfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgygh', 'be') , ('qjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvd', 'oqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnm', 'can\'t', 'q', 260, 'foqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczm', 'mfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttc', 'zmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgp', 'mzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqn'); +INSERT /*! IGNORE */ INTO t1 VALUES ('what', 'cmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzz', 'ycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmp', 'y', 261, 'rycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcin', 'u', 'brycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxw', 'u') , ('qbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupd', 'rqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlyk', 'h', 'hrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuo', 262, 'some', 'w', 'h', 'well') , ('xhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwx', 'm', 'cxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsxime', 'acxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxl', 263, 'dacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznig', 'edacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhn', 'zedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdm', 'tzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrj') , ('ytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpick', 'nytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesf', 'xnytzedacxhrqbrycmzmfoqjfoikk', 'wxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbm', 264, 'rwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtp', 'lrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyem', 'l', 'hlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlv') , ('vhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznz', 'look', 'ovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlp', 'm', 265, 'come', 'o', 'zovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickht', 'u'); +INSERT /*! IGNORE */ INTO t1 VALUES ('nzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduot', 'there', 'hnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcb', 'shnzo', 266, 'lshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaae', 'xlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhml', 'axlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfh', 'h') , ('haxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmi', 'ohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnf', 'pohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyaf', 'zpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvu', 267, 'g', 'we', 'jzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpi', 'u') , ('mjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwi', 'jmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchz', 'ejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkm', 'iejmjzpohaxlshnzovhlrwxnytze', 268, 'eiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmy', 'xeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwu', 'be', 'e') , ('oxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkm', 'foxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfn', 'vfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmp', 'cvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvm', 269, 'acvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvc', 'kacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcd', 'ikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxj', 'bikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygz') , ('w', 'like', 'l', 'going', 270, 'x', 'qbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnb', 'eqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrr', 'keqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsn'); +INSERT /*! IGNORE */ INTO t1 VALUES ('something', 'rkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzam', 'irkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjda', 'wirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrh', 271, 'swirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhcz', 'wswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrq', 'bwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgn', 'zbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdko') , ('bzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagi', 'mbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkw', 'ymbzbwswirkeqbikacvfoxeie', 'wymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmc', 272, 'bwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwk', 'xbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunq', 'vxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcm', 'rvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuio') , ('jrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlc', 'wjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamf', 'vwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldaz', 'rvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjz', 273, 'srvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjir', 'see', 'wsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpil', 'g') , ('him', 'pwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerap', 'like', 'u', 274, 'apwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmn', 'don\'t', 'oh', 'oapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsnd') , ('hoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdk', 'dhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushg', 'qdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyi', 'xqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjr', 275, 'z', 'txqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhk', 'qtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtod', 'aqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyz'); +INSERT /*! IGNORE */ INTO t1 VALUES ('daqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoik', 'udaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkc', 'iudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushg', 'her', 276, 'biudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcar', 'k', 'lbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxd', 'what') , ('could', 'xlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciy', 'bxlbiudaqtxqdhoapwsrvwjrvx', 'I\'m', 277, 'zbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxa', 'ozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnc', 'kozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkw', 'z') , ('pkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablp', 'npkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzb', 'hnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzos', 'hhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqp', 278, 'ghhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagii', 'then', 'why', 'ughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwov') , ('well', 'b', 'r', 'tell', 279, 'u', 'from', 'jughhnpkozbxlbiuda', 'he\'s') , ('out', 'zjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbi', 'hzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvcz', 'ehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbi', 280, 'uehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjl', 'it\'s', 'wuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbw', 'ywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfo'); +INSERT /*! IGNORE */ INTO t1 VALUES ('was', 'wywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmn', 'I\'ll', 'my', 281, 'swywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbw', 'jswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbv', 'one', 'some') , ('mjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozx', 'nmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzq', 'gnmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelw', 'ignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjg', 282, 'pignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmo', 'vpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickh', 'ivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjri', 'fivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyem') , ('o', 'why', 'qfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbv', 'iqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnff', 283, 'i', 'm', 'liqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeeh', 'yliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloin') , ('nyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyr', 'xnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetk', 'uxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdj', 'quxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoi', 284, 'g', 'dquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgkt', 'a', 'you') , ('wdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajs', 'wwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsry', 'swwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsri', 'fswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmc', 285, 'yfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqu', 'who', 'b', 'k'); +INSERT /*! IGNORE */ INTO t1 VALUES ('gyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnyt', 'tgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkpln', 'y', 'xtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqd', 286, 'she', 'i', 'cxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogry', 'o') , ('ocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcv', 'o', 'qocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvp', 'look', 287, 'x', 'nqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoog', 'z', 'bnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsz') , ('bbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqd', 'if', 'time', 'ebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozb', 288, 'n', 'your', 'lebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsrid', 'but') , ('come', 'dlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkk', 'why', 'edlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaae', 289, 'nedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesv', 'hnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmx', 'ahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhml', 'b') , ('kahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinl', 'ikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpi', 'rikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghn', 'j', 290, 'prikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfe', 'c', 'dprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnf', 'rdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzcky'); +INSERT /*! IGNORE */ INTO t1 VALUES ('crdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbw', 'scrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvc', 'w', 'her', 291, 'hscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcp', 'khscrdprik', 'could', 'here') , ('fkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczp', 'will', 'ifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarj', 'aifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpoh', 292, 'oaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxb', 'l', 'toaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlv', 'utoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhbl') , ('lutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuak', 'glutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabm', 'qglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgk', 'k', 293, 'tqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphal', 'c', 'think', 'as') , ('dtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkk', 'ndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxs', 'qndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywue', 'but', 294, 'sqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbl', 'in', 'gsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedac', 'egsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbk') , ('gegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidk', 'yeah', 'there', 'your', 295, 'ngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzh', 'at', 'i', 'j'); +INSERT /*! IGNORE */ INTO t1 VALUES ('to', 'kngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapj', 'rkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrus', 'irkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanw', 296, 'firkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfj', 'bfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhay', 'dbfirkngegsqndtqglutoaifkhscrdprikah', 'g') , ('wdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlm', 'i', 'he', 'owdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjr', 297, 'aowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpaw', 't', 'go', 'raowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopj') , ('uraowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirss', 'buraowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailw', 'but', 'iburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarj', 298, 'something', 'yiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlb', 'ayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglp', 'out') , ('layiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqg', 'slayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoi', 'pslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbh', 'lpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrq', 299, 'xlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtg', 'sxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvvi', 'psxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyy', 'ypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcj') , ('vypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxl', 'yes', 'i', 'okay', 300, 'wvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnh', 'p', 'cwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjug', 's'); +INSERT /*! IGNORE */ INTO t1 VALUES ('hcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxw', 'rhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyc', 'urhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzaz', 'see', 301, 'a', 'xurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrf', 'x', 'pxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbw') , ('ypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviyb', 'xypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkoz', 'bxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdce', 'sbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggy', 302, 'know', 'msbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopj', 'f', 'rmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnh') , ('jrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbw', 'about', 'here', 'wjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqu', 303, 'uwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqd', 'q', 'puwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcp', 'mpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgj') , ('as', 'v', 'wmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgc', 'hey', 304, 'qwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmly', 'had', 'u', 'are') , ('oqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoa', 'doqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufz', 'y', 'q', 305, 'qdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxak', 'zqdoqwmpuw', 'I', 'm'); +INSERT /*! IGNORE */ INTO t1 VALUES ('dzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiu', 'udzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzaz', 'zudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshn', 'gzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpz', 306, 'qgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhc', 'c', 'zqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswi', 'to') , ('tzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgph', 'ctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpsl', 'octzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrp', 'in', 307, 'the', 'doctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukezn', 'xdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdas', 'ixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsud') , ('pixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklc', 'kpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedl', 'ykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiw', 'pykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvyp', 308, 'y', 'vpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempg', 'just', 'pvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbika') , ('zpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyv', 'who', 'azpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurc', 'qazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocx', 309, 'tqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymb', 'ltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgw', 'dltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxc', 'ddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmps') , ('hddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpc', 'rhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqp', 'jrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxl', 'ijrhddlt', 310, 'z', 'nijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrus', 'tnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdb', 'w'); +INSERT /*! IGNORE */ INTO t1 VALUES ('htnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxu', 'a', 'a', 'j', 311, 'thtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvo', 'xthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdces', 'rxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjsc', 'irxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxye') , ('firxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahn', 'pfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwy', 'had', 'v', 312, 'yes', 'opfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawb', 'gopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempg', 'what') , ('ggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuq', 'xggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiw', 'dxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftct', 'v', 313, 'tdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarq', 'f', 'e', 'ytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhbly') , ('mytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusf', 'zmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnkn', 'got', 'time', 314, 'pzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphaly', 'dpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvpleve', 'n', 'tdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbika') , ('otdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnp', 'say', 'sotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxei', 'dsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukezn', 315, 'e', 'zdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbk', 'lzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztl', 'z'); +INSERT /*! IGNORE */ INTO t1 VALUES ('ylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidi', 'iylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmp', 'oiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqu', 'yoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrd', 316, 'f', 'hey', 'qyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburao', 'rqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldm') , ('crqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbh', 'rcrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqp', 'ircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvokl', 'wircrqyoiylzdsotdpzmytdxggopf', 317, 'one', 'is', 'dwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogf', 'a') , ('edwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapws', 'b', 'nedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphaly', 'b', 318, 'w', 'because', 'hnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnf', 'lhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwu') , ('qlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljf', 'the', 'iqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmg', 'niqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrial', 319, 'p', 'mniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnkn', 's', 'bmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndia') , ('dbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwy', 'here', 'z', 'sdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikk', 320, 'asdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkw', 'pasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiici', 'right', 'vpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothc'); +INSERT /*! IGNORE */ INTO t1 VALUES ('cvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqgl', 'lcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusf', 'got', 'p', 321, 'j', 'if', 'vlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzm', 'pvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgw') , ('ok', 'are', 'him', 'vpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwsw', 322, 'hvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndi', 'b', 'thvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmly', 'h') , ('rthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpv', 'grthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdb', 'ogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiuda', 'who', 323, 'time', 'sogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfp', 'zsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgo', 'are') , ('her', 'szsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltq', 'e', 'qszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfo', 324, 'yqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcb', 'l', 'hyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhayp', 'x') , ('t', 'f', 'd', 'chyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfi', 325, 'qchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjk', 'u', 'jqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfji', 'l'); +INSERT /*! IGNORE */ INTO t1 VALUES ('because', 'pjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdc', 'xpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutq', 'txpjqchyqszsog', 326, 'y', 'htxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegl', 'q', 'l') , ('ohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotd', 'rohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhni', 'yrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukez', 'u', 327, 'ayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqoc', 'kayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwu', 'x', 'oh') , ('kkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjj', 'nkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgw', 'tnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdqux', 'qtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbw', 328, 'bqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjir', 'oh', 'mbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyi', 'umbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjx') , ('yumbqtnkkayro', 'tyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdh', 'n', 'come', 329, 'styumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpsla', 'oh', 'bstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnr', 'tbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhayp') , ('u', 'ctbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumj', 'why', 'got', 330, 'will', 'actbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqn', 'x', 'eactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdc'); +INSERT /*! IGNORE */ INTO t1 VALUES ('her', 'eeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngeg', 'leeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrv', 'yleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjria', 331, 'nyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwn', 'think', 'if', 'xnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdja') , ('going', 'xxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmry', 'pxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmc', 'wpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmca', 332, 'rwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhks', 'irwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnz', 'l', 'mirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyy') , ('in', 'qmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacx', 'pqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoo', 'upqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlviv', 333, 'vupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywue', 'mvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfp', 'y', 'fmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhni') , ('this', 'u', 'my', 'know', 334, 'wfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmyt', 'dwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayi', 'vdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdh', 'were') , ('nvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcur', 'znvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasx', 'eznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcx', 'beznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarm', 335, 'bbeznvdwfmvup', 'p', 'rbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkm', 'nrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznz'); +INSERT /*! IGNORE */ INTO t1 VALUES ('znrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvq', 'n', 'didn\'t', 'mznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwj', 336, 'ymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggy', 'kymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbry', 'can', 'ekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhay') , ('tekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxb', 'jtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosd', 'that', 'ljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrk', 337, 'or', 'sljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwirc', 'hsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoap', 'nhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjo') , ('back', 'anhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffabl', 'qanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdces', 'lqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumj', 338, 'f', 'clqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzm', 'gclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgq', 'egclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlb') , ('fegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzju', 'u', 'efegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqha', 'a', 339, 'you\'re', 'sefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjr', 'can', 'yeah') , ('you\'re', 'hsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpv', 'ghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqc', 'zghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignm', 340, 'tzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrms', 'with', 'j', 'right'); +INSERT /*! IGNORE */ INTO t1 VALUES ('ktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotd', 'sktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctq', 'the', 'xsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafn', 341, 'your', 'xxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwd', 'o', 'look') , ('xxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsot', 'xxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmn', 'lxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxu', 'vlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpz', 342, 'mvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjop', 'fmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyh', 'xfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmy', 'axfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoap') , ('haxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayibur', 'ehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaae', 'cehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbf', 'mcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuu', 343, 'xmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqi', 'like', 'xxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpy', 'sxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjr') , ('hsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirke', 'well', 'xhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgot', 'w', 344, 'kxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuag', 'm', 'they', 'ukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeie') , ('aukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjx', 'laukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswi', 'hlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikk', 'there', 345, 'hhlaukxhsx', 'd', 'mhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqv', 'dmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarm'); +INSERT /*! IGNORE */ INTO t1 VALUES ('qdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkar', 'at', 'h', 'cqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlyk', 346, 'n', 'k', 'e', 'zcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklc') , ('xzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbk', 'axzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiao', 'haxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznig', 'zhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycn', 347, 'at', 'with', 'hzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszgg', 'whzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwm') , ('twhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxny', 'her', 't', 'r', 348, 'ctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfpr', 'a', 'on', 'hctwhzhaxzcqdmhhlaukxhsxxmcehaxf') , ('oh', 'qhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltq', 'jqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapj', 'ljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvple', 349, 'r', 'mljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpoh', 'qmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhk', 'kqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkng') , ('be', 'hkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhi', 'hhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwluf', 'd', 350, 'lhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvp', 'think', 'r', 'qlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfo'); +INSERT /*! IGNORE */ INTO t1 VALUES ('eqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuet', 'reqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiw', 'didn\'t', 'ireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjr', 351, 'they', 'hireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfo', 'w', 'bhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqsz') , ('cbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpw', 'scbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiej', 'come', 'uscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozb', 352, 'wuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviy', 'fwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsog', 'this', 'dfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwn') , ('bdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbw', 'gbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxm', 'qgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwsw', 'so', 353, 'jqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmj', 'a', 'ejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximem', 'jejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpv') , ('of', 'd', 'with', 'just', 354, 'zjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxc', 'wzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfm', 'jwzjejqgbdfwuscbhire', 'wjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghnc') , ('the', 'zwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehz', 'will', 'vzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbh', 355, 'j', 'yvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswi', 'qyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymb', 'at'); +INSERT /*! IGNORE */ INTO t1 VALUES ('s', 'kqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocx', 'just', 'xkqyvzwjw', 356, 'who', 'zxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukez', 'bzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdh', 'me') , ('mbzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzov', 'ambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghse', 'her', 'oambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqm', 357, 'like', 'n', 'like', 'e') , ('qoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgp', 'kqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqg', 'x', 'him', 358, 'jkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqint', 'ljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgo', 'iljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztai', 'I\'m') , ('out', 'j', 'o', 'when', 359, 'time', 'don\'t', 'xiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmni', 'sxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcx') , ('o', 'mean', 'hsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypx', 'i', 360, 'were', 'ehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddl', 'hehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvd', 'mhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqs'); +INSERT /*! IGNORE */ INTO t1 VALUES ('irwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpas', 'really', 'it\'s', 'sirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzx', 381, 'were', 'and', 'nsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkw', 'jnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikk') , ('ejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurh', 'your', 'up', 'wejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjop', 382, 'lwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcff', 'z', 'x', 'tlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbry') , ('what', 'gtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirk', 'ugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrf', 'eugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymb', 383, 'deugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvme', 'bdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslay', 'yeah', 'bbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahn') , ('gbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarm', 'bgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnr', 'tbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlh', 'itbgbbdeugtlwejnsirwilkkojpktx', 384, 'pitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqin', 'tpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzd', 'not', 'htpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjr') , ('your', 'yhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzds', 'will', 'mean', 385, 'zyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaow', 'lzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqs', 'want', 'not'); +INSERT /*! IGNORE */ INTO t1 VALUES ('xlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintz', 'sxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijn', 'when', 'mean', 386, 'bsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoar', 'have', 'i', 'hbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabq') , ('ahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnk', 'hahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnro', 'p', 'we', 387, 'thahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqaz', 'here', 'bthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxei', 'kbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuio') , ('mkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpv', 'wmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjq', 'ewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctw', 'u', 388, 'g', 'mewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnij', 'smewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyi', 'if') , ('tsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacx', 'k', 'etsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzla', 'setsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoq', 389, 'f', 'dsetsmewmkbthahbsxlzyhtpitbgbb', 'p', 'jdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxy') , ('u', 'g', 'a', 'bjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdces', 390, 'ebjdsetsmewmkbthahbsxlzyhtpitbgbbdeu', 'yebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmd', 'kyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpk', 'qkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircr'); +INSERT /*! IGNORE */ INTO t1 VALUES ('y', 'so', 'back', 'do', 391, 'hqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjy', 'qhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerap', 'zqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutq', 'x') , ('rzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvu', 'crzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwc', 'were', 'kcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopj', 392, 'nkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieou', 'w', 'dnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqml', 'rdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjym') , ('prdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvi', 'uprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbkl', 'quprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfox', 'equprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgu', 393, 'pequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasd', 'qpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpy', 'yqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpab', 'o') , ('lyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqnd', 'so', 'didn\'t', 'mlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtym', 394, 'x', 'umlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwv', 's', 'vumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxil') , ('a', 'o', 'pvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmh', 'opvumlyqpequprdnkcrzqhqkyebjd', 395, 'his', 'on', 'yes', 'bopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscq'); +INSERT /*! IGNORE */ INTO t1 VALUES ('cbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhks', 'xcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgot', 'sxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukezn', 'csxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymz', 396, 'l', 'qcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjsc', 'kqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeie', 'get') , ('g', 'ekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpj', 'pekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpy', 'vpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtx', 397, 'avpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmheh', 'there', 'kavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthv', 'dkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyl') , ('it', 'zdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshn', 'they', 'kzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvple', 398, 'skzdkavpekqcsxcbopvumlyqpequprdnkcrz', 'cskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjyly', 'some', 'jcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpv') , ('e', 'vjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzed', 'xvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqd', 't', 399, 'fxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjx', 'really', 'vfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrq', 'd') , ('lvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkp', 'olvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesf', 'c', 'why', 400, 'n', 'solvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvple', 'mean', 'csolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmp'); +INSERT /*! IGNORE */ INTO t1 VALUES ('n', 'scsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyx', 'mscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwirc', 'I\'ll', 401, 'c', 'yeah', 's', 'u') , ('hmscsolvfxvjcs', 'xhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjds', 'jxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsl', 'when', 402, 'njxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqy', 'enjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgods', 'good', 'ok') , ('come', 'nenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhd', 'snenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbq', 'nsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequpr', 403, 'come', 'to', 'like', 'xnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjo') , ('zxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrj', 'wzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosn', 'some', 'awzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquer', 404, 'sawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpo', 'ysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijni', 'g', 'uysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumj') , ('buysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekym', 'fbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkka', 'm', 'nfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetk', 405, 'l', 'unfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahne', 'runfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgot', 'n'); +INSERT /*! IGNORE */ INTO t1 VALUES ('hrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcd', 'jhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxx', 'ajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlw', 'y', 406, 'want', 'x', 'bajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqag', 'she') , ('u', 'rbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgy', 'rrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsqu', 'grrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigc', 407, 's', 'so', 'xgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwd', 'kxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuet') , ('ykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignm', 'did', 'aykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpu', 'naykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiud', 408, 'p', 'is', 'vnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejn', 'uvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykp') , ('I', 'suvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnz', 'here', 'asuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmj', 409, 'pasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhc', 'ipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkq', 'bipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnro', 'ibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsx') , ('jibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiy', 'cjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvf', 'yeah', 'xcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdf', 410, 'it', 'sxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqaz', 'i', 'msxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsog'); +INSERT /*! IGNORE */ INTO t1 VALUES ('nmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxy', 'hnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlsh', 'khnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpoh', 'ckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqnd', 411, 'as', 'hckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegcl', 'my', 'yhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkpl') , ('jyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbo', 'cjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekq', 'ecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbty', 'gecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunq', 412, 'agecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgo', 'magecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxgg', 'cmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljq', 'just') , ('he', 'acmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytze', 'yacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmy', 'iyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyl', 413, 'u', 'xiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbm', 'b', 'zxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbs') , ('nzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqj', 'onzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbm', 'sonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjri', 'up', 414, 'bsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbu', 'dbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmp', 'do', 'tdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwy') , ('dtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpa', 'then', 'zdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfw', 'a', 415, 'qzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihu', 'r', 'iqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupm', 'p'); +INSERT /*! IGNORE */ INTO t1 VALUES ('some', 'niqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzq', 'yniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevef', 'all', 416, 'v', 'hyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaob', 'want', 'lhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyv') , ('right', 'jlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpu', 'yjlhyniqzdtdbsonzx', 'yyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxh', 417, 'dyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsl', 'j', 'I\'ll', 'n') , ('ndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyq', 'lndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglut', 'v', 'dlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukez', 418, 'ddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbst', 'lddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgo', 'vlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhl', 's') , ('m', 'gvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirx', 'wgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaif', 'hwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjr', 419, 'to', 'hhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtl', 'back', 'was') , ('m', 'x', 'lhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxy', 'a', 420, 'olhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyl', 'iolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbth', 'm', 'yeah'); +INSERT /*! IGNORE */ INTO t1 VALUES ('oiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpkn', 'qoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwusc', 'n', 'gqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjria', 421, 'something', 'can\'t', 'he\'s', 'egqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckh') , ('degqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcq', 'qdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsb', 'v', 'jqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwla', 422, 'you', 'v', 'kjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxh', 'jkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcb') , ('what', 'x', 'v', 'z', 423, 'pjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifd', 'dpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhl', 'pdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskw', 'qpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaas') , ('w', 'did', 'nqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhct', 'knqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqc', 424, 'aknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzd', 'h', 'caknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyf', 'from') , ('m', 'kcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeug', 'vkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgb', 'cvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiie', 425, 'with', 'back', 'dcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbth', 'fdcvkcaknqpdpjkjq'); +INSERT /*! IGNORE */ INTO t1 VALUES ('xfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfi', 'ixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpo', 'k', 'cixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbso', 426, 'lcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwi', 'xlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocx', 'zxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqaz', 'about') , ('are', 'xzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasm', 'p', 'about', 427, 'h', 'txzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxh', 'something', 'jtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkko') , ('ljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhij', 'vljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbry', 'yvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyu', 'l', 428, 'k', 'myvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiyl', 'why', 'umyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactb') , ('her', 'you\'re', 'be', 'u', 429, 'qumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdp', 'not', 'j', 'can\'t') , ('pqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxh', 'zpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpi', 'him', 'izpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykp', 430, 'h', 'lizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzd', 'plizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutq', 'dplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyao'); +INSERT /*! IGNORE */ INTO t1 VALUES ('zdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpe', 'u', 'kzdplizpqumyvljtxz', 'akzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddlt', 431, 'no', 'rakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpc', 'xrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpe', 'exrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxns') , ('fexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrq', 'zfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbn', 'bzfexrakzdplizpqumyvljtxzxlcixfdcvkcak', 'cbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxg', 432, 'i', 'say', 'dcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswi', 'udcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnk') , ('n', 'y', 'fudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfm', 'vfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffv', 433, 't', 'this', 'gvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycm', 'tgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxg') , ('ntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbw', 'nntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkk', 'b', 'anntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnro', 434, 'janntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdq', 'gjanntgvfudcbzfexra', 'w', 'sgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxh') , ('hsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpoha', 'h', 'nhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggop', 'unhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpek', 435, 'eunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwar', 'from', 's', 'zeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuv'); +INSERT /*! IGNORE */ INTO t1 VALUES ('x', 'g', 'l', 'tzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkng', 436, 'c', 'would', 'been', 'gtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxyp') , ('x', 'did', 'z', 'ngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhla', 437, 'kngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqgluto', 'rkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoio', 'srkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiud', 'hsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedw') , ('n', 'chsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsm', 'xchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfke', 'rxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedle', 438, 'lrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnv', 'in', 'klrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqt', 'because') , ('pklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxyp', 'k', 'w', 'fpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkk', 439, 'x', 'ffpklrxchsrkngtzeunhsgjanntgvfudc', 'lffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkpl', 'did') , ('k', 'elffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdt', 'selffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjl', 'aselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqag', 440, 'uaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupq', 'puaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrb', 'ppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvuml', 'yppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxy'); +INSERT /*! IGNORE */ INTO t1 VALUES ('in', 'it\'s', 'how', 'going', 441, 'a', 'xyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebb', 'be', 'i') , ('axyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpj', 'iaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxp', 'n', 'i', 442, 'wiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvl', 'p', 'lwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqago', 'elwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqde') , ('l', 'helwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudz', 'i', 'k', 443, 's', 'zhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunf', 'f', 'q') , ('fzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyq', 'i', 'afzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlr', 'we', 444, 'g', 'cafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyli', 'u', 'pucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsud') , ('gpucafzhelwiaxyppuaselffpklrx', 'dgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscs', 'ddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgoth', 'hddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqint', 445, 'mhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjw', 'kmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughh', 'q', 'nkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwu'); +INSERT /*! IGNORE */ INTO t1 VALUES ('g', 'pnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjc', 'dpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjugh', 'ndpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhi', 446, 'g', 'endpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqf', 'mendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvum', 'omendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszso') , ('u', 'gomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbh', 'sgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbg', 'a', 447, 'qsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxf', 'yqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjy', 'o', 'xyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhned') , ('lxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddln', 'zlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckh', 'q', 'wzlxyqsgomendpnkmhddgpucafzhelwiax', 448, 'h', 'dwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrm', 't', 'ydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotg') , ('we', 'mydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzov', 'but', 'ymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwl', 449, 'lymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzd', 'vlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhi', 'uvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhml', 'puvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkp') , ('wpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijni', 'cwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkoj', 'ccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkca', 'iccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexr', 450, 'niccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedac', 'fniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjib', 'for', 'xfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbo'); +INSERT /*! IGNORE */ INTO t1 VALUES ('pxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplk', 'qpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdo', 'bqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzy', 'nbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkj', 451, 'f', 'xnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzd', 'that\'s', 'his') , ('ixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakz', 'I', 'rixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvup', 'e', 452, 'back', 'f', 'orixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdb', 'forixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvw') , ('but', 'xforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvlj', 'ixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwu', 'vixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykx', 453, 'hvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzha', 'khvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvp', 'hkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytz', 'shkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmceh') , ('vshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntg', 'yvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxgg', 'that\'s', 'byvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeq', 454, 'yeah', 'k', 'hbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpign', 'yhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbezn') , ('tyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjds', 'rtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqj', 'zrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkm', 'czrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozb', 455, 'qczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyht', 'qqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqch', 'bqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdpli', 'really'); +INSERT /*! IGNORE */ INTO t1 VALUES ('obqqczrtyhbyvshkhvix', 's', 'all', 'hobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbs', 456, 'uhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvd', 'we', 'uuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzed', 'nuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmf') , ('so', 'lnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvyps', 'glnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcr', 'just', 457, 'pglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudr', 'z', 'cpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmag', 'can\'t') , ('ncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtx', 'l', 'h', 'qncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqd', 458, 'sqncpglnuuh', 'xsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzed', 'rxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtg', 'rrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlci') , ('mrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgja', 'amrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbaj', 'why', 'a', 459, 'pamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsud', 'on', 'apamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliq', 'lapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgb') , ('it', 'llapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnk', 'nllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwf', 'is', 460, 's', 'a', 'mnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznv', 'xmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxc'); +INSERT /*! IGNORE */ INTO t1 VALUES ('her', 'no', 'b', 'bxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwz', 461, 'lbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbik', 'llbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazp', 'b', 'o') , ('for', 'j', 'h', 'n', 462, 'nllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikac', 'snllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwf', 'dsnllbxmnlla', 'well') , ('sdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixfori', 'look', 'yes', 'dsdsnllbxmnllapamrrxsqn', 463, 'here', 'hdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjr', 'qhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzo', 'tqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxg') , ('c', 'i', 'atqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoc', 'uatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjs', 464, 's', 'puatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysa', 'i', 'that') , ('x', 'gpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxs', 'there', 'tgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwi', 465, 'mtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacma', 'omtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryy', 'r', 'oomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqaz'); +INSERT /*! IGNORE */ INTO t1 VALUES ('p', 'mean', 'could', 'boomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrb', 466, 'uboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfsw', 'yuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjx', 'oyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixfori', 'woyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpeq') , ('pwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprika', 'I\'m', 'how', 'gpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdm', 467, 'zgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopv', 'mean', 'well', 'zzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnk') , ('k', 'pzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsme', 'spzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxns', 'lspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkq', 468, 'r', 'hlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeug', 'get', 'of') , ('yhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhe', 'me', 'syhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyv', 'xsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgz', 469, 'been', 'jxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytz', 'mean', 'pjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbb') , ('rpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmceha', 'so', 'prpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapw', 'yprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxn', 470, 'kyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcji', 'dkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscs', 'wdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhc', 'his'); +INSERT /*! IGNORE */ INTO t1 VALUES ('p', 'fwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfn', 'sfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqk', 'c', 471, 'usfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdt', 'like', 'n', 'm') , ('xusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvk', 'all', 'u', 'sxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjr', 472, 'wsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcr', 'u', 'owsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwd', 'iowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacv') , ('miowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobo', 'tmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbg', 'vtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkr', 'rvtmiowsxusfwdkyprpjxsyhlspzzgpwoyu', 473, 'jrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjs', 'jjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboo', 'ijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdpli', 'or') , ('for', 'oijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsl', 'm', 'uoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifk', 474, 'euoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrk', 'beuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcv', 'vbeuoijjrvtmiowsxusfwdkyp', 'like') , ('r', 'rvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhla', 'crvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwej', 'it\'s', 475, 'yeah', 'that\'s', 'didn\'t', 'be'); +INSERT /*! IGNORE */ INTO t1 VALUES ('dcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyo', 'ddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyq', 'rddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlh', 'come', 476, 'nrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyht', 'cnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhe', 'hcnrdd', 'yes') , ('I\'m', 'hhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolh', 'j', 'go', 477, 'nhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdh', 't', 'mnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbth', 'yeah') , ('tmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdk', 'xtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdk', 'uxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqd', 'euxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbik', 478, 'want', 'seuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfiv', 'gseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpi', 'pgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhn') , ('be', 'ppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonz', 'uppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyao', 'cuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomend', 479, 'acuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcv', 'dacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxe', 'were', 'gdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrx') , ('hgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprp', 'qhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxskt', 'aqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfnic', 'maqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhn', 480, 'k', 'he', 'mmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbb', 'is'); +INSERT /*! IGNORE */ INTO t1 VALUES ('i', 'qmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhd', 'okay', 'b', 481, 'uqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzw', 'x', 'm', 'fuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxns') , ('me', 'cfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhdd', 'f', 's', 482, 'or', 'o', 'there', 'i') , ('xcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwj', 'txcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgv', 'a', 'mtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeug', 483, 'good', 'if', 'were', 'wmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieo') , ('pwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnm', 'npwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonz', 'bnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxx', 'mbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdp', 484, 'pmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenj', 'apmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvp', 'v', 'aapmbnpwmtxcfuqmmaqhgdacu') , ('waapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgy', 'rwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltq', 'wrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglut', 'ywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywueh', 485, 'you\'re', 'w', 'sywrwaap', 'b'); +INSERT /*! IGNORE */ INTO t1 VALUES ('g', 'dsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpsl', 'been', 'that', 486, 'ddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseux', 'qddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyum', 'l', 'lqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfni') , ('r', 'are', 'one', 'not', 487, 'v', 'wlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupq', 'f', 'dwlqddsywrwaapmbnpwmtxcfu') , ('adwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwusc', 'd', 'padwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeu', 'j', 488, 'tpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchs', 'w', 'were', 'jtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpi') , ('rjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeihe', 'xrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoij', 'f', 'tell', 489, 'jxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnms', 'q', 'yes', 'say') , ('ujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbb', 'l', 'vujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmag', 'm', 490, 'bvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoa', 'vbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdj', 'k', 'as'); +INSERT /*! IGNORE */ INTO t1 VALUES ('if', 'no', 'tvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqs', 'itvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbb', 491, 'in', 'sitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedle', 'fsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasm', 'ufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowd') , ('x', 'r', 't', 'tufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhk', 492, 'ntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqp', 'mntu', 'get', 'kmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsg') , ('tkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmt', 'q', 'some', 'etkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdp', 493, 'zetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoi', 'nzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgr', 'inzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbq', 'minzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniq') , ('qminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscs', 'rqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxyp', 'm', 'wrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegc', 494, 'r', 'y', 'gwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvz', 'rgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkc') , ('trgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsi', 'itrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymy', 'l', 'how', 495, 'citrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhslj', 'scitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobo', 'yeah', 'gscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddc'); +INSERT /*! IGNORE */ INTO t1 VALUES ('sgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhdd', 'u', 'o', 'isgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjq', 496, 'that\'s', 'going', 'sisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolh', 'isisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyl') , ('didn\'t', 'were', 'visisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoi', 'tvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahne', 497, 'ptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfsw', 'e', 'qptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpsla', 'kqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscs') , ('s', 'will', 'lkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdka', 'd', 498, 'alkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfi', 'you', 'd', 'valkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsx') , ('x', 'u', 'ovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjr', 'xovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhc', 499, 'sxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpj', 'rsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyq', 'be', 'drsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqp') , ('did', 'have', 'ldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehax', 'dldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfn', 500, 'zdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdj', 'd', 'u', 'czdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeac'); +INSERT /*! IGNORE */ INTO t1 VALUES ('z', 'had', 'aczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseu', 's', 501, 'naczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxh', 'okay', 'bnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymy', 'zbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmn') , ('out', 'azbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdq', 'about', 'going', 502, 'razbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrm', 'erazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzf', 'xerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejq', 'bxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqg') , ('u', 'hbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlx', 'had', 'mhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyo', 503, 'gmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfnicc', 'fgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrd', 'wfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqch', 'up') , ('uwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminz', 'muwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhne', 'xmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqz', 'b', 504, 'd', 'xxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsy', 'vxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoai', 'lvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeac') , ('tlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndt', 'x', 'gtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzg', 'ogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyp', 505, 'kogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkye', 'z', 'zkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckh', 'nzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlauk'); +INSERT /*! IGNORE */ INTO t1 VALUES ('a', 'hnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvt', 'my', 'nhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctw', 506, 'will', 'p', 'gnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjy', 'rgnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqan') , ('argnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqcz', 'i', 'can', 'jargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoei', 507, 'sjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxi', 'usjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtx', 'husjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdpli', 'f') , ('e', 'jhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniq', 'b', 'xjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbz', 508, 'nxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghs', 'lnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtx', 'glnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubk', 'okay') , ('e', 'oglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcr', 'boglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffv', 'i', 509, 'vboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjy', 'z', 'qvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxy', 'gqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvs') , ('sgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljq', 'wsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrs', 'i', 'for', 510, 'e', 'his', 'vwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcb', 'ivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqml'); +INSERT /*! IGNORE */ INTO t1 VALUES ('qivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejq', 'bqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeact', 'abqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefe', 'time', 511, 'something', 'l', 'that\'s', 'm') , ('uabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjt', 'to', 'get', 'auabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnm', 512, 'd', 'rauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqp', 'zrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdb', 'bzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitb') , ('cbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxu', 'some', 'e', 'could', 513, 'ncbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhh', 'will', 'right', 'j') , ('no', 'b', 'encbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhq', 'about', 514, 'mencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbth', 'omencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcs', 'lomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpuca', 'flomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrdd') , ('a', 'v', 'nflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixf', 'x', 515, 'good', 'or', 'what', 'nnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtg'); +INSERT /*! IGNORE */ INTO t1 VALUES ('n', 'qnnflomen', 'b', 'hey', 516, 'gqnnflomencbzrauabqivwsgqvboglnxjhusjargnhn', 'dgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbh', 'mdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpj', 'as') , ('e', 'hmdgqn', 'going', 'ghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrun', 517, 'k', 'kghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyl', 's', 'kkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeihe') , ('skkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhi', 'me', 'c', 'it\'s', 518, 'gskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvum', 'dgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqh', 'rdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwj', 'wrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuas') , ('ewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacupp', 'okay', 'mewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucaf', 'want', 519, 'c', 'ymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyp', 'y', 'gymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvu') , ('zgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvsh', 'rzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvl', 'you\'re', 'srzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmt', 520, 'fsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiie', 'zfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtz', 'tzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrz', 'xtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvt'); +INSERT /*! IGNORE */ INTO t1 VALUES ('ok', 'ixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsl', 'when', 'lixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvsh', 521, 'm', 'nlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqs', 'nnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbez', 'a') , ('ynnlixtzfsrzgymewrdgs', 'k', 'rynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuu', 'srynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgom', 522, 'ysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhl', 'v', 's', 'I\'ll') , ('c', 'c', 'g', 'nysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctz', 523, 'think', 'q', 'q', 'dnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcf') , ('ldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnk', 'at', 'oldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxt', 'uoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgsc', 524, 'zuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrx', 'wzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyle', 'kwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayroh', 'dkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjc') , ('was', 'mdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumy', 'nmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljteky', 'ynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbh', 525, 'yynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeun', 'xyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrb', 'hxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgb', 'uhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqd'); +INSERT /*! IGNORE */ INTO t1 VALUES ('auhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvp', 'hauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlauk', 'x', 'jhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetk', 526, 'pjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdp', 'your', 'didn\'t', 'mpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpq') , ('mmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkk', 'will', 'vmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkk', 'zvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljq', 527, 'lzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpc', 'ulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdq', 'all', 'v') , ('eulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyl', 'aeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeact', 'gaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvu', 'one', 528, 'ugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdp', 'fugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyubo', 'b', 'xfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkm') , ('wxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhi', 'ewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxm', 'is', 'pewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufs', 529, 'h', 'ypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrd', 'lypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxo', 'qlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqky') , ('don\'t', 'jqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasu', 'him', 'ajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhq', 530, 'fajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivw', 'zfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaself', 'm', 'dzfajqlypewxfugaeulzv'); +INSERT /*! IGNORE */ INTO t1 VALUES ('will', 'is', 'pdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhne', 'qpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgsci', 531, 'when', 'j', 't', 'not') , ('tqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsi', 'ktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnb', 'about', 'lktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqd', 532, 'because', 'i', 'jlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwz', 'ijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspz') , ('bijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnac', 'k', 'hbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifd', 'with', 533, 'nhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitb', 'qnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhel', 'iqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolv', 'ziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgyme') , ('sziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmv', 't', 'osziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzgh', 'n', 534, 'gosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjh', 'g', 'n', 'n') , ('mean', 'z', 'lgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhru', 'nlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsi', 535, 'hnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyh', 'is', 'ohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyraux', 'hohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprd'); +INSERT /*! IGNORE */ INTO t1 VALUES ('cgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhf', 'scgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxo', 'tell', 'b', 621, 'kscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuu', 'kkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulok', 'some', 'lkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaap') , ('slkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbc', 'sslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqy', 'jsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrg', 'r', 622, 'i', 'cjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqi', 'you', 'gcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendp') , ('igcjsslkkscgen', 'some', 'b', 'kigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvf', 623, 'nkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvb', 'v', 'mnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfim', 'ymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnayk') , ('iymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgoszi', 'viymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanv', 'had', 's', 624, 'eviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetk', 'oeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuys', 'on', 'yoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwz') , ('y', 'is', 'ryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfid', 'oryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzg', 625, 'boryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwia', 'gboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexra', 'say', 'cgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacm'); +INSERT /*! IGNORE */ INTO t1 VALUES ('tjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyh', 'f', 'itjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgq', 'i', 646, 'qitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnat', 'lqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynn', 'vlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyr', 'mean') , ('q', 'dvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvsh', 'zdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocya', 'czdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdlt', 647, 'eczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrj', 'yes', 'ceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvy', 'if') , ('s', 'like', 'oceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbz', 'g', 648, 'foceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapa', 's', 'ufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxal', 'w') , ('w', 'that', 'my', 'oufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjarg', 649, 'uoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzg', 'nuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmu', 'fnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnax', 'be') , ('kfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyx', 'zkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencb', 'come', 'do', 650, 'tzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencb', 'i', 'atzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxova', 'qatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrr'); +INSERT /*! IGNORE */ INTO t1 VALUES ('uqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujx', 'ruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpj', 'she', 'c', 651, 'don\'t', 'i', 'think', 'hruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapa') , ('b', 'hhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyyb', 'nhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapam', 'lnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajql', 652, 'blnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnll', 'zblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejam', 'bzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvuj', 'zbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkg') , ('me', 'o', 'well', 'vzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmh', 653, 'o', 'zovzbzblnhhruqatzk', 'zzovzbzblnhhruqatzkfnuoufocec', 'nzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulz') , ('snzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbyd', 'jsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqn', 'rjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpgln', 'z', 654, 'zrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhd', 'qzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhv', 'zqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpuf', 'jzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywg') , ('zjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwq', 'ezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbm', 'iezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiuj', 'her', 655, 'they', 'i', 'diezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyq', 'idiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzu'); +INSERT /*! IGNORE */ INTO t1 VALUES ('eidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxm', 'xeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqn', 'her', 'mxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgy', 656, 'one', 'd', 'xmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbna', 'yxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnu') , ('qyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsok', 'jqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtx', 'a', 'ejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddc', 657, 'vejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqr', 'dvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmd', 'that\'s', 'I\'ll') , ('x', 'jdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsy', 'zjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddg', 'jzjdvejqyxmxeidiezj', 658, 'c', 'ijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwph', 'hey', 'dijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnn') , ('cdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeu', 'qcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyq', 'aqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncp', 'taqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlct', 659, 'itaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnksh', 'xitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkq', 'nxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnu', 'onxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlype') , ('conxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvl', 'lconxitaqcdijzjdvejqyxmx', 'vlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgk', 'hvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorb', 660, 'ihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrz', 'xihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvbogl', 'y', 'the'); +INSERT /*! IGNORE */ INTO t1 VALUES ('did', 'been', 's', 'uxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgsc', 661, 'suxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgbor', 'psuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboom', 'ipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulel', 'is') , ('eipsuxihvlconxitaqcdijzjdvej', 'zeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsn', 'czeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrb', 'v', 662, 'or', 'g', 'mczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfn', 'didn\'t') , ('b', 'kmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgen', 'jkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqiv', 'right', 663, 'tjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfnicc', 'ftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacu', 'dftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqc', 'jdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpa') , ('q', 'ojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhb', 'this', 'qojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasv', 664, 'd', 'eqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyeche', 'b', 'r') , ('qeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhau', 'look', 'jqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapy', 'e', 665, 'o', 'ijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydut', 'g', 'nijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzbl'); +INSERT /*! IGNORE */ INTO t1 VALUES ('i', 'u', 'it', 'tnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmn', 666, 'etnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdj', 'there', 'see', 'h') , ('fetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuw', 'ufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyag', 'wufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligng', 'xwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlv', 667, 'from', 'vxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdu', 'svxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxu', 'asvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktq') , ('h', 'when', 'oasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgsk', 'uoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywy', 668, 'g', 'suoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxy', 'lsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynn', 'llsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechef') , ('mllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfn', 'tmllsuoasvxwu', 'when', 'jtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyub', 669, 'who', 'xjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnj', 'something', 'bxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhx') , ('who', 'jbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszc', 'ejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvuj', 'ok', 670, 'xejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaac', 'f', 'd', 'tell'); +INSERT /*! IGNORE */ INTO t1 VALUES ('zxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgse', 'xzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforix', 'fxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixt', 'pfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutj', 671, 'ypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyx', 'I\'m', 'k', 'it') , ('for', 'n', 'oypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbec', 'ooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboo', 672, 'nooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusja', 'f', 'unooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgk', 'can') , ('x', 'dunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxu', 'tdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhlig', 'can\'t', 673, 'u', 'ltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwge', 'yltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg', 'oyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoal') , ('y', 'be', 'we', 'soyltdunooypfxzxejbxjtmllsuo', 674, 'a', 'qsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqcz', 'can', 'bqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhh') , ('nbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauh', 'some', 'hnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqdds', 'rhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsm', 675, 'trhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbz', 'ztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxera', 'mztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgbo', 'pmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzbln'); +INSERT /*! IGNORE */ INTO t1 VALUES ('cpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoij', 'gcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcor', 'who', 's', 676, 'tgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirky', 'atgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpa', 'vatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscit', 'h') , ('uvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrg', 'buvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiez', 'no', 'sbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjss', 677, 'ssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefg', 'mssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgda', 'hmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjh', 'when') , ('phmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrg', 'z', 'jphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgs', 'right', 678, 'o', 'know', 'xjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbz', 'exjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzx') , ('t', 'w', 'wexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrq', 'xwexjphmssbuvatgcpmztrhnbqsoyltdunoo', 679, 'kxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgp', 'jkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxov', 'njkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgda', 'jnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqm') , ('okay', 'right', 'rjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldny', 'xrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoce', 680, 'uxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxera', 't', 'xuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmm', 'rxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlk'); +INSERT /*! IGNORE */ INTO t1 VALUES ('frxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsds', 'cfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrs', 'dcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgo', 'hdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnh', 681, 'ehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzbl', 'v', 'fehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojd', 'you\'re') , ('ufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyn', 'tell', 'have', 'rufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspz', 682, 'wrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmi', 'swrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsab', 'bswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvbo', 'up') , ('be', 'ebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusja', 'd', 'cebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfu', 683, 'pcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjd', 'ok', 'will', 'out') , ('cpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhl', 'ok', 'icpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejq', 'kicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqes', 684, 'ikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwv', 'iikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqa', 'biikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfg', 'his') , ('mbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhh', 'nmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwl', 'rnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg', 'can', 685, 'brnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqd', 'gbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqe', 'y', 'g'); +INSERT /*! IGNORE */ INTO t1 VALUES ('wgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnz', 'e', 'bewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefg', 't', 686, 'some', 'dbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzv', 'bdbewgbrnmbiikicpcebswru', 'nbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrd') , ('bnbdbewgbrnmbiikicpcebswrufehdcfrxuxr', 'mbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuo', 'is', 'v', 687, 'ymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgos', 'gymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmma', 'ngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxus', 'cngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetni') , ('ucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhus', 'k', 'j', 'd', 688, 'rucngymbnbdbewgbrnmbiikicpcebswrufehdcfr', 'lrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqdds', 'n', 'llrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbij') , ('k', 'rllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvuj', 't', 'u', 689, 'yrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledzi', 'ayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszc', 'gayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutj', 'dgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqk') , ('ndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbyd', 'wndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxo', 'is', 'rwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrd', 690, 'g', 'xrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefg', 'c', 'jxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyor'); +INSERT /*! IGNORE */ INTO t1 VALUES ('djxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmr', 'zdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdi', 'uzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadic', 'out', 691, 'kuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwp', 'got', 'x', 'vkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmm') , ('g', 'h', 'ivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmx', 'livkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgos', 692, 'rlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbn', 'rrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmh', 'krrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjk', 'bkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyr') , ('ok', 'hbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoevi', 'no', 'think', 693, 'a', 'g', 'ahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmss', 'jahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqdd') , ('up', 'e', 'y', 'y', 694, 'kjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysx', 'akjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssb', 'fakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugk', 'lfakjahbkrrlivkuzdjxrwndgayrllruc') , ('get', 'qlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgb', 'dqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyi', 'q', 695, 'edqlfakjahbkrrlivkuzdjxrwndgay', 'hedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkn', 'that', 'uhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdg'); +INSERT /*! IGNORE */ INTO t1 VALUES ('nuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanv', 'znuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdj', 'lznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredco', 'all', 696, 'ylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwn', 'u', 'rylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjx', 'brylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnz') , ('t', 'really', 'nbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsq', 'hnbrylznuhedqlfakj', 697, 'uhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgm', 'can\'t', 'would', 'puhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjs') , ('epuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnhe', 'like', 'u', 'want', 698, 'depuhnbrylznuhedq', 'are', 'vdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqe', 'had') , ('j', 'a', 'gvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjg', 'that', 699, 'mgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargn', 'rmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxz', 'prmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdffl', 'sprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhn') , ('c', 'rsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywt', 'zrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrj', 'azrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftn', 700, 'fazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaea', 'h', 'gfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujg', 'bgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrl'); +INSERT /*! IGNORE */ INTO t1 VALUES ('vbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntn', 'e', 'zvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogt', 'o', 701, 'a', 'lzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwn', 'olzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbii', 'something') , ('h', 'it\'s', 'dolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfaj', 'pdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphm', 702, 'u', 'f', 'hpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzf', 'ohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqso') , ('t', 'cohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodom', 'acohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqi', 'k', 703, 'racohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxal', 'aracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxe', 'because', 'can\'t') , ('varacohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmic', 'one', 'ovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhau', 'fovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylb', 704, 'd', 'bfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzr', 'dbfovaracohpdo', 'gdbfovaraco') , ('ygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcnde', 'lygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxan', 'the', 'elygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqpt', 705, 'up', 'celygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufocecz', 'good', 'mcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysx'); +INSERT /*! IGNORE */ INTO t1 VALUES ('c', 'emcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxd', 'e', 'wemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkx', 706, 'uwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrra', 'zuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjar', 'w', 'vzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfs') , ('bvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqs', 'nbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg', 'no', 'lnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrj', 707, 'glnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpd', 'c', 'as', 't') , ('s', 'r', 'cglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgoszi', 'some', 708, 's', 'mcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgb', 'me', 'vmcglnbvzuwemcelygdbfovaracohpdolz') , ('vvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptv', 'q', 'evvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkm', 'jevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftj', 709, 'ajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziw', 'x', 'cajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwum', 'going') , ('jcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvde', 'about', 'vjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlype', 'zvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqsk', 710, 'xzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptv', 'axzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslk', 'yaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvb', 'myaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhn'); +INSERT /*! IGNORE */ INTO t1 VALUES ('t', 'n', 'k', 'umyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkq', 711, 'wumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivku', 'me', 'y', 'nwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyi') , ('pnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqs', 'time', 'dpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnh', 'v', 712, 'odpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrb', 'codpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszcc', 'bcodpnwumyaxzvjcajevvmcglnb', 'q') , ('jbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysr', 'good', 'c', 'p', 713, 'fjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomenc', 'want', 'y', 'him') , ('v', 'o', 'tfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvbo', 'dtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyy', 714, 'udtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtml', 'yudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxa', 's', 'cyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdij') , ('t', 'v', 'y', 'jcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryo', 715, 'f', 'r', 'e', 'wjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunv'); +INSERT /*! IGNORE */ INTO t1 VALUES ('or', 'hwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlkt', 'k', 'mhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqy', 716, 'wmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllh', 't', 'ywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdlt', 'd') , ('vywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcg', 'something', 'lvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoylt', 'hlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuw', 717, 'so', 'all', 'ahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsj', 'sahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlh') , ('q', 'bsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlg', 'hey', 'ybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntn', 718, 'bybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoc', 'mbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagz', 'kmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibx', 'jkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatz') , ('ujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdv', 'mean', 'pujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqso', 'qpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokh', 719, 'rqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfs', 'arqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvb', 'a', 'that\'s') , ('a', 'narqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgbo', 'see', 'oh', 720, 'gnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdc', 'but', 'w', 'the'); +INSERT /*! IGNORE */ INTO t1 VALUES ('egnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmred', 'negnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhli', 'nnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmp', 't', 721, 'fnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgr', 'xfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqta', 'exfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqo', 'texfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfuga') , ('h', 'xtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfa', 'f', 'uxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaraco', 722, 'nuxtexfnn', 'qnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzx', 'jqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxz', 'how') , ('get', 'v', 'hjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijz', 'nhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvl', 723, 'z', 'snhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhb', 'usnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkv', 'v') , ('qusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxb', 'lqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucn', 'mlqusnhjqnuxtexfnnegn', 'lmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomg', 724, 'then', 'plmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmes', 'pplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcaje', 'w') , ('xpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltd', 'axpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfh', 'paxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskeja', 'all', 725, 'spaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdv', 'cspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwnd', 'ccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvq', 'i'); +INSERT /*! IGNORE */ INTO t1 VALUES ('j', 'u', 'zccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzo', 's', 726, 'h', 'nzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafa', 'right', 'nnzccspaxpplmlq') , ('f', 'u', 'on', 'xnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnb', 727, 'yxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydu', 'd', 'byxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgs', 'pbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzd') , ('hpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwj', 'jhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkr', 'g', 'wjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaraco', 728, 'pwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyi', 'm', 'I\'ll', 'fpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiej') , ('a', 'go', 'bfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwlj', 'u', 729, 'nbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxt', 'v', 'r', 'o') , ('x', 'enbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpv', 'uenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrb', 'suenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazr', 730, 'all', 'n', 'd', 'be'); +INSERT /*! IGNORE */ INTO t1 VALUES ('why', 'gsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracoh', 'he\'s', 'n', 731, 'ogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufocec', 'x', 'b', 'xogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg') , ('jxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgo', 'you', 'hjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixt', 'thjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbec', 732, 'mthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledz', 'dmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnar', 'zdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnfl', 'uzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmd') , ('y', 'a', 'd', 'j', 733, 'fuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylb', 'with', 'ufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgb', 'eufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdb') , ('oeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzr', 'n', 'eoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiu', 'feoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhl', 734, 'cfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtd', 'o', 'i', 'icfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvm') , ('k', 'x', 'for', 'iicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysx', 735, 'eiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlc', 'm', 'neiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrh', 'for'); +INSERT /*! IGNORE */ INTO t1 VALUES ('his', 'tneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdf', 'h', 'f', 736, 'is', 'm', 'dtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvyw', 'time') , ('ndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkn', 'lndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnw', 'elndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjn', 'g', 737, 'selndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmb', 'like', 'cselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredco', 'like') , ('dcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejq', 'odcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyy', 'up', 'when', 738, 'eodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfw', 'aeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnki', 'that\'s', 'oaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbyb') , ('h', 'k', 'n', 'doaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecau', 739, 'd', 'adoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgos', 'vadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtule', 'nvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufed') , ('znvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcaje', 'a', 'n', 'xznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvl', 740, 'do', 's', 'kxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfck', 'bkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnb'); +INSERT /*! IGNORE */ INTO t1 VALUES ('gbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaraco', 'bgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryo', 'ibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqt', 'ok', 741, 'yibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymb', 'as', 'will', 'I\'m') , ('p', 'it\'s', 'xyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmh', 'him', 742, 'gxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqz', 'qgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqes', 'w', 'hqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbr') , ('mean', 'vhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdffl', 'j', 'can\'t', 743, 'yvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqx', 'have', 'v', 'xyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvi') , ('or', 'sxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspax', 'csxyvhqgxyibgbkxznvadoaeodcselndtnei', 'can', 744, 'ucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfc', 'lucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvll', 'ylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrr', 'zylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnij') , ('pzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemi', 'mpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg', 'a', 'for', 745, 'smpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoe', 'hsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdj', 'qhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmn', 'bqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcely'); +INSERT /*! IGNORE */ INTO t1 VALUES ('qbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegna', 'sqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeul', 'ksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexj', 'm', 746, 'l', 'hksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedql', 'zhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnz', 'l') , ('jzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlco', 'mjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufe', 'x', 'hmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxej', 747, 'e', 'f', 'but', 'dhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedw') , ('x', 'rdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfx', 's', 'brdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgbor', 748, 'b', 'ibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhr', 'look', 'eibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconx') , ('feibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczh', 'a', 'f', 'oh', 749, 'u', 'ufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznu', 'to', 'that') , ('j', 'mufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetn', 'do', 'kmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnh', 750, 'akmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmi', 'c', 'qakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlg', 'iqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndc'); +INSERT /*! IGNORE */ INTO t1 VALUES ('hiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkks', 'shiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedql', 'tshiqakmufei', 'a', 751, 'o', 'wtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyya', 'x', 'hwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgf') , ('y', 'lhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoevi', 'l', 'clhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviy', 752, 'pclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnhe', 'cpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnux', 'you\'re', 'b') , ('ucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemce', 'wucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpuj', 'iwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcg', 'o', 753, 'diwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdb', 'adiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszq', 'something', 'wadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlq') , ('ok', 'lwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocy', 'd', 'zlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczh', 754, 'czlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoa', 'bczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtaf', 'o', 'bbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltd') , ('were', 'bbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcse', 'fbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntn', 'efbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmth', 755, 'd', 'yeah', 'oefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpi', 'ooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxw'); +INSERT /*! IGNORE */ INTO t1 VALUES ('eooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflc', 'deooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwph', 'zdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspa', 'bzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngym', 756, 'hbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfa', 'ihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemi', 'fihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdep', 'rfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhed') , ('f', 'hrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufei', 'o', 'on', 757, 'shrfihbzdeooefbbbczlwadiwucpclhwtshiqa', 'ushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwu', 'qushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmll', 'hqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqg') , ('were', 'hhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmesllt', 'to', 'n', 758, 'u', 'shhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmu', 'f', 'zshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpi') , ('qzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamw', 'hqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllruc', 'rhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhm', 'grhqzshhqushrfih', 759, 'bgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwq', 'xbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzy', 'hxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcel', 'hhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvi') , ('are', 'hhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebsw', 'lhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmic', 'tlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrl', 760, 'back', 'htlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmre', 'y', 'rhtlhhhxbgrhqzshhqushrfihb'); +INSERT /*! IGNORE */ INTO t1 VALUES ('xrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvj', 'jxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmcz', 'f', 't', 761, 'xjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqp', 'wxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfi', 'i', 'x') , ('uwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndg', 'suwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiez', 'h', 'a', 762, 'r', 'z', 'fsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaok', 'xfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwge') , ('uxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqn', 'that', 'j', 'muxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdlt', 763, 'umuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtb', 'wumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnar', 'd', 'kwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufet') , ('b', 'xkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtuleluf', 'hxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszq', 'shxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunoo', 764, 'jshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntn', 'sjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnh', 'vsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadi', 'as') , ('come', 'jvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsm', 'ljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlco', 'look', 765, 'what', 'nljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqql', 'lnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbm', 'xlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbiz'); +INSERT /*! IGNORE */ INTO t1 VALUES ('I', 'dxlnljvsjshxkwumuxfsuwxjxr', 'tdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxod', 'mtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetni', 766, 'qmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqak', 'can', 'cqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvl', 'dcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnksht') , ('kdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmby', 'dkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcseln', 'wdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxns', 'dwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkf', 767, 'rdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsr', 'qrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxor', 'xqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrb', 'o') , ('m', 'like', 'jxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxita', 'have', 768, 'hjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkks', 'phjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarq', 'd', 's') , ('on', 'dphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdug', 'adphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbr', 'yadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxz', 769, 'gyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxo', 'tgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejb', 'ytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqy', 'gytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqy') , ('got', 'jgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsu', 'they', 'vjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrj', 770, 'p', 'ivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxd', 'and', 'qivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadi'); +INSERT /*! IGNORE */ INTO t1 VALUES ('was', 'z', 'bqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdol', 'ubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicl', 771, 'yubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumya', 'tyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmlls', 'utyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizb', 'rutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbye') , ('jrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoa', 'wjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzov', 'go', 'j', 772, 'swjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhlig', 'dswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphms', 'don\'t', 'k') , ('mean', 'a', 'rdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqb', 'vrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligng', 773, 'kvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsu', 'tkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshts', 'but', 'jtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhr') , ('mjtkvrdswjrutyubqivjgytgyadphjxqrdwdkd', 'fmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbr', 'do', 'pfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgr', 774, 'opfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzov', 'so', 'popfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarq', 'your') , ('hpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecau', 'g', 'zhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibx', 'mzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsj', 775, 'wmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdw', 'v', 'lwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrr', 'ylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexf'); +INSERT /*! IGNORE */ INTO t1 VALUES ('h', 'rylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicg', 'l', 'trylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjz', 776, 'back', 'etrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfn', 'xetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylu', 'bxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhn') , ('u', 'it', 'r', 'sbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtm', 777, 'lsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjsh', 'mlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljm', 'i', 'imlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztr') , ('eimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuv', 'veimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtml', 'zveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwd', 'jzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivj', 778, 'going', 'c', 'ajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcx', 'uajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxns') , ('auajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgv', 'mauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuo', 'lmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhf', 'rlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsm', 779, 'vrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnat', 'kvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnki', 'z', 'ukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuen') , ('mukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcy', 'cmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjg', 'acmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdffl', 'see', 780, 'vacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfim', 'oh', 'vvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzb', 'pvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeip'); +INSERT /*! IGNORE */ INTO t1 VALUES ('rpvvacmu', 'mrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjt', 'time', 'lmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbms', 781, 'what', 'dlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovara', 'hdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvado', 'or') , ('thdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprm', 'rthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecau', 'just', 'arthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpce', 782, 'darthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjx', 'udarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfgl', 'd', 'yudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqy') , ('zyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoy', 'mzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqi', 'vmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdf', 'but', 783, 'jvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfak', 'hjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdt', 'ghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwx', 'p') , ('k', 'm', 'a', 'fghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqt', 784, 'rfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgy', 'rrfghjvmzyudart', 'h', 'krrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdv') , ('ykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjb', 'wykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoevi', 'd', 'was', 785, 'd', 'owykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimo', 'fowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhh', 'xfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbx'); +INSERT /*! IGNORE */ INTO t1 VALUES ('uxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbf', 't', 'kuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyyb', 'ok', 786, 'wkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulel', 'vwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnij', 'zvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqu', 'z') , ('dzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhh', 'l', 'g', 'w', 787, 'hdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgc', 'm', 'x', 'g') , ('chdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevv', 'tchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnhe', 'gtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxita', 'zgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksq', 788, 'I', 'bzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgo', 'kbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsy', 'how') , ('I\'m', 'mkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwum', 'amkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxy', 'were', 789, 'oamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiik', 'goamkbzgtchdzvwkuxfowykrrfgh', 'cgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqsk', 'g') , ('vcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfova', 'y', 'just', 'dvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznu', 790, 'fdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqesz', 'q', 'nfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufe', 'anfdvcgoamkb'); +INSERT /*! IGNORE */ INTO t1 VALUES ('r', 'ianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxor', 'what', 'jianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbv', 791, 'how', 'y', 'ijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpo', 'iijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruq') , ('yiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswr', 'iyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqev', 'riyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltduno', 'nriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvde', 792, 'cnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrli', 'bcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgos', 'one', 'rbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikic') , ('srbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgb', 'v', 'usrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcn', 'wusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrm', 793, 'u', 'bwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbd', 'hey', 'ybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhq') , ('can\'t', 'pybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqso', 'zpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmth', 'jzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwum', 794, 'ijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumy', 's', 'can', 'will') , ('fijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyech', 'n', 'efijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgx', 's', 795, 'p', 'c', 'that\'s', 'you'); +INSERT /*! IGNORE */ INTO t1 VALUES ('tefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmh', 'htefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvy', 'zhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrs', 'bzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzd', 796, 'his', 'lbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdm', 'one', 'albzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdve') , ('walbzhtefijzpybwusrbcnri', 'swalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgk', 'zswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghj', 'u', 797, 'f', 'qzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgv', 'all', 'v') , ('kqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjs', 'u', 'mkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqi', 'zmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdk', 798, 'zzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqus', 'jzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiiki', 'wjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwu', 'n') , ('owjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqy', 'yowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg', 'why', 'x', 799, 'pyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqx', 'npyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwu', 'go', 'nnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlk') , ('znnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqi', 'uznnpyowjzzmkqzswalbzhtefijzpybwusrb', 'iuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtd', 'x', 800, 'qiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpc', 'h', 'aqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmu', 'taqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllr'); +INSERT /*! IGNORE */ INTO t1 VALUES ('ptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexj', 'jptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcs', 'sjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayr', 'fsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfd', 801, 'bfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszw', 'ibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylw', 'hibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfn', 'he\'s') , ('ehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndg', 'yehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetryl', 'wyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokz', 'fwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhed', 802, 'h', 'f', 'efwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnl', 'p') , ('eefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetry', 'meefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnso', 'b', 'c', 803, 'f', 'imeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxm', 'fimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxj', 'qfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvw') , ('tell', 'vqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselnd', 'jvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvj', 'djvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxe', 804, 'rdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohp', 'of', 'jrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsb', 'ujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijian') , ('at', 'kujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrg', 'j', 'i', 805, 'fkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwa', 'it\'s', 'mfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxaln', 'r'); +INSERT /*! IGNORE */ INTO t1 VALUES ('gmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuo', 'rgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbu', 'crgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftj', 'tcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiik', 806, 'ntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbry', 'zntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfih', 'from', 'u') , ('wzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqc', 'his', 'twzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpc', 'w', 807, 'wtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkb', 'something', 'ywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmu', 'mean') , ('oywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiw', 'v', 'poywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmc', 'for', 808, 'mpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnat', 'one', 'xmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijz', 'my') , ('will', 'sxmpoywtwzntcrgmfkujrdjvqfimeefwyeh', 'd', 'isxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqp', 809, 'here', 'i', 'visxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdb', 'qvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjq') , ('vqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuo', 'lvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpz', 'flvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzvei', 'qflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeid', 810, 'xqflvq', 'his', 'axqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeu', 'taxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyud'); +INSERT /*! IGNORE */ INTO t1 VALUES ('jtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxf', 'cjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqy', 'I\'ll', 'dcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpc', 811, 'kdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllruc', 'pkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxy', 'mpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxzn', 'impkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkm') , ('uimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznv', 'tell', 'tuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfov', 'i', 812, 'they', 'was', 'ctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkm', 'xctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrf') , ('txctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxppl', 'e', 'rtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoevi', 'w', 813, 'irtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeef', 'a', 'firtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumux', 'h') , ('r', 'j', 'sfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodom', 'what', 814, 'have', 's', 'fsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxf', 'z') , ('sfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkig', 'f', 's', 'w', 815, 'msfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexj', 'wmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicf', 'twmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnz', 'itwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxi'); +INSERT /*! IGNORE */ INTO t1 VALUES ('nitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooyp', 'cnitwmsfsfirtxct', 'i', 'y', 816, 'going', 'vcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmt', 'nvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwlj', 's') , ('knvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpuj', 'e', 'wknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywg', 'your', 817, 'twknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxet', 'he\'s', 'like', 'd') , ('got', 'd', 'btwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzz', 'mbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvis', 818, 'her', 'at', 'r', 'm') , ('smbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbco', 'really', 'gsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdft', 'f', 819, 'bgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtd', 'm', 'mbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqs', 'zmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooef') , ('oh', 'yzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxo', 'pyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufeh', 'just', 820, 'ipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelyg', 'bipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrr', 'fbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnu', 'on'); +INSERT /*! IGNORE */ INTO t1 VALUES ('I\'m', 'd', 'like', 'efbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxt', 821, 'how', 'pefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebsw', 'vpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmz', 'evpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrj') , ('yevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplml', 'uyevpefbipyzmbgsmbtwknv', 'u', 'he\'s', 822, 'euyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuh', 'neuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftj', 'fneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcn', 'sfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfime') , ('ksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpm', 'nksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdo', 'cnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrliv', 'ccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcn', 823, 'hccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlq', 'phccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspax', 'tphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumy', 'ltphccnksfneuyevpefbipyzmbgsmbt') , ('l', 'cltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnat', 'your', 'n', 824, 'i', 'acltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvw', 'pacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdun', 'w') , ('me', 'h', 'g', 'jpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxq', 825, 'k', 'e', 'ejpacltphccnksfneuyevp', 'if'); +INSERT /*! IGNORE */ INTO t1 VALUES ('j', 'is', 'up', 'to', 826, 'w', 'vejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnij', 'ivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgc', 'u') , ('tivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnne', 'ftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfr', 'then', 'uftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxt', 827, 'v', 'v', 'as', 'cuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjph') , ('s', 'rcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcgl', 'prcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalns', 'w', 828, 'oprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxzn', 'don\'t', 'I\'ll', 'yoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimee') , ('a', 'uyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcsel', 'cuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqsla', 'it', 829, 'oh', 'ncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhj', 'p', 'as') , ('oncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscge', 'loncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcni', 'jloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqh', 'cjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswa', 830, 'zcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbye', 'y', 'would', 'kzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygd'); +INSERT /*! IGNORE */ INTO t1 VALUES ('okzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzde', 'n', 'tokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodp', 'so', 831, 'ntokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoa', 'that', 'ontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftj', 'k') , ('i', 'gontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvd', 'agontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqr', 'dagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfim', 832, 'odagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvac', 'fodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwy', 'got', 'why') , ('from', 'lfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxf', 'klfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpb', 'oklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufei', 833, 'get', 'coklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzj', 'bcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvy', 'xbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgs') , ('f', 'mxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhe', 'amxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxita', 'bamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqe', 834, 'ibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnn', 'to', 'libamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwuc', 'b') , ('clibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmp', 'jclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphm', 'ljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvva', 'could', 835, 'vljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufo', 'at', 'rvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeu', 'orvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwt'); +INSERT /*! IGNORE */ INTO t1 VALUES ('norvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewg', 'vnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeq', 'fvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtaf', 'lfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxv', 836, 'r', 'olfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxj', 'golfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftj', 'ok') , ('rgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpe', 'drgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylu', 'adrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrs', 'oadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruq', 837, 'ioadrgolfvnorvl', 'oioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqz', 'f', 'v') , ('xoioad', 'zxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfaz', 'f', 'ozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqs', 838, 'hozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwu', 'shozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspa', 'q', 'xshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdv') , ('dxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbk', 'ydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjv', 'v', 'fydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcf', 839, 'gfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlm', 'just', 'bgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetryl', 'c') , ('him', 'a', 'e', 'k', 840, 'if', 'fbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejam', 'y', 'dfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujr'); +INSERT /*! IGNORE */ INTO t1 VALUES ('ndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneu', 'all', 't', 'qndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgb', 841, 'can\'t', 'eqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmss', 'was', 'beqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnb') , ('c', 'hbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimee', 'u', 'ghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvr', 842, 'kghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknv', 'is', 'y', 'ykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefb') , ('could', 'wykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswa', 'xwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypf', 'exwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuh', 843, 'qexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfp', 'jqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxb', 'kjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksf', 'ykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqsl') , ('sykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfow', 'i', 'me', 'osykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoylt', 844, 'out', 'dosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmcze', 'tdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtc', 'ytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgt') , ('we', 'rytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzv', 'got', 'can\'t', 845, 'and', 'arytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjt', 'get', 'g'); +INSERT /*! IGNORE */ INTO t1 VALUES ('kbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadi', 'gkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdu', 'o', 'dgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfd', 866, 'qdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllruc', 'jqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywm', 'ojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpef', 'something') , ('xojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyi', 'bxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfi', 'nbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhx', 'wnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvj', 867, 'yeah', 'nwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnar', 'tnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsux', 'jtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsj') , ('vjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxux', 'mvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrl', 'x', 'bmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiez', 868, 'mbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmll', 'hmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlq', 'whmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxj', 'a') , ('t', 'v', 'say', 'a', 869, 'ewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoi', 'of', 'fewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczl', 'kfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdv') , ('I\'m', 'had', 'don\'t', 'dkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogr', 870, 'o', 'at', 'udkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufe', 'okay'); +INSERT /*! IGNORE */ INTO t1 VALUES ('yudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjg', 'oyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiq', 'that', 'a', 871, 'would', 'boyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowy', 'sboyudkfewhmbmvjtnwnbxojqdg', 's') , ('usboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmb', 'susboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwkn', 'ususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnn', 'kususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexw', 872, 'ikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpu', 'yikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfj', 'nyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmz', 'lnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxpar') , ('b', 'c', 'hlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmb', 'j', 873, 'g', 'mean', 'vhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufe', 'vvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnij') , ('pvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrll', 'back', 'tpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxs', 'him', 874, 'ttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuz', 'sttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhn', 'ysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbe', 'wysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqe') , ('jwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuf', 'cjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakm', 'i', 'your', 875, 'just', 'ccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnn', 'c', 'dccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowj'); +INSERT /*! IGNORE */ INTO t1 VALUES ('there', 'vdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdz', 'jvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcr', 'that\'s', 876, 'fjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybw', 'cfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubq', 'zcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadi', 'i') , ('wzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfn', 'had', 'i', 'his', 877, 'that', 'gwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzay', 'is', 'vgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiic') , ('qvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqd', 'wqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxln', 'k', 'bwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewg', 878, 'it\'s', 'a', 'zbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicp', 'f') , ('I', 'izbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooy', 'sizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwd', 'osizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcq', 879, 'some', 'when', 'sosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgf', 'nsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjl') , ('knsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmb', 'jknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahl', 'in', 'ujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudar', 880, 'rujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuh', 'my', 'srujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmv', 'esrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkm'); +INSERT /*! IGNORE */ INTO t1 VALUES ('t', 'pesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdh', 'tpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnk', 'otpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbg', 881, 'aotpesrujknsosizbw', 'he', 'eaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpo', 'd') , ('jeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcf', 'me', 'wjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeo', 'swjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtex', 882, 'zswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdl', 'ozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhp', 'gozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpef', 'q') , ('ggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwt', 'qggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamk', 'sqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybs', 'time', 883, 'wsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeq', 'ewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijian', 'zewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnb', 'to') , ('she', 'who', 'm', 'going', 884, 'nzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvq', 'bnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacm', 'l', 'mean') , ('tbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdby', 'htbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadi', 'ahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznv', 'pahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjs', 885, 'what', 'n', 'npahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjru', 'fnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykr'); +INSERT /*! IGNORE */ INTO t1 VALUES ('dfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfod', 'hdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuw', 'ghdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogs', 'ughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsa', 886, 'hughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyi', 'j', 'lhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswru', 'plhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxpar') , ('i', 'yplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmj', 'e', 'h', 887, 'I\'m', 'wyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobe', 'don\'t', 'ewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrv') , ('yewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsx', 'are', 'q', 'v', 888, 'syewyplhughd', 'ysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgf', 'tysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavb', 'my') , ('but', 'xtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqz', 'the', 'sxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxt', 889, 'xsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotk', 'bxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojq', 'o', 'up') , ('pbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzy', 'ypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymb', 'f', 'dypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxn', 890, 'z', 'sdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjn', 'qsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtnei', 'uqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphcc'); +INSERT /*! IGNORE */ INTO t1 VALUES ('duqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlm', 'dduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbk', 'hdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiw', 'whdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjq', 891, 'owhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmuk', 'a', 'she', 'at') , ('s', 'bowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrj', 'because', 'ok', 892, 's', 'd', 'qbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvh', 'pqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipy') , ('kpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovar', 'mkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqh', 'e', 'w', 893, 'fmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdb', 'rfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpop', 'something', 'm') , ('srfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfnii', 'n', 'me', 'ssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeu', 894, 'nssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnze', 'so', 'i', 'w') , ('don\'t', 'w', 'knssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzsw', 'right', 895, 'dknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexf', 'fdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetryl', 'b', 'nfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvz'); +INSERT /*! IGNORE */ INTO t1 VALUES ('anfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjq', 'tanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgv', 'c', 'wtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfb', 896, 'f', 'm', 'for', 'w') , ('up', 'swtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbc', 'z', 'jswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmr', 897, 'ujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtnei', 'tujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttp', 'otujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjz', 'j') , ('okay', 'totujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhln', 'btotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozx', 'fbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnk', 898, 'kfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthd', 'kkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvi', 'akkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogs', 'j') , ('kakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvj', 'fkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmg', 'rfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbco', 'nrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyv', 899, 'jnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswje', 'k', 'xjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeoo', 'axjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjq') , ('hey', 'maxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjg', 'amaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikus', 'vamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrliv', 900, 'y', 'jvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusr', 'ijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadr', 'm'); +INSERT /*! IGNORE */ INTO t1 VALUES ('c', 'hijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcni', 'yes', 'k', 901, 'ghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjw', 'nghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbip', 'o', 'vnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygd') , ('k', 'pvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdon', 'oh', 'vpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxsho', 902, 'dvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxty', 'zdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcel', 'azdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnn', 'kazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsb') , ('k', 'out', 'k', 'jkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtch', 903, 'fjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsd', 'say', 'lfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwu', 'mlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljcli') , ('zmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzc', 'all', 'you', 'gzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvyw', 904, 'agzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljv', 'xagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftiv', 'oxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeoo', 'boxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeib') , ('uboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjlon', 'fuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudar', 'ifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswje', 'k', 905, 'jifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwkn', 'I\'m', 'bjifubox', 'v'); +INSERT /*! IGNORE */ INTO t1 VALUES ('hezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnr', 'what', 'bhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtn', 'c', 946, 'w', 'd', 'i', 'wbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjsh') , ('q', 'had', 'jwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctu', 'njwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghb', 947, 'rnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqu', 'yrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbi', 'zyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiw', 'czyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriy') , ('cczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijia', 'u', 'ucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwk', 'uucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyo', 948, 'ouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphcc', 'iouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdozn', 'me', 'he\'s') , ('diouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcosk', 'it', 'now', 'n', 949, 'l', 'what', 'tdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfs', 'v') , ('vtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxe', 'pvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpv', 's', 'fpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbf', 950, 'at', 'kfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakm', 'really', 'about'); +INSERT /*! IGNORE */ INTO t1 VALUES ('lkfpvtdiouucczyrnjwbhezsureyaebufctbj', 'plkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcx', 'yes', 'vplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiiji', 951, 'cvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkf', 'qcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrl', 'lqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlm', 'c') , ('o', 'x', 'nlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfi', 'dnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmz', 952, 'will', 'z', 'a', 'odnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvam') , ('what', 'j', 'n', 'p', 953, 'podnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbw', 'ypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsd', 'xypodnlqcvplkfpvt', 'fxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtd') , ('qfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxsh', 'go', 'c', 'tqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdo', 954, 'want', 'd', 'this', 'ntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqz') , ('lntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfn', 'go', 'jlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaeb', 'w', 955, 'something', 'here', 'tjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudk', 'ytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeoo'); +INSERT /*! IGNORE */ INTO t1 VALUES ('I\'ll', 'yytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyva', 'him', 'uyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdd', 956, 'huyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvr', 'ihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxf', 'gihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuy', 'did') , ('lgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifubo', 'been', 'clg', 'c', 957, 'iclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteije', 'riclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlw', 'sriclgihuyytjlntqfxyp', 'asriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjk') , ('his', 'wasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqe', 'wwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhln', 'wwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdo', 958, 'wwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiw', 'ywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysy', 'l', 'wywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbia') , ('owywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsm', 'rowy', 'n', 'lrowywwwwasriclgihuyytjlntq', 959, 'elrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxpary', 'felrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqus', 'jfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpop', 'tjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdr') , ('gtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfime', 'mgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtax', 'ymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcu', 'with', 960, 'l', 'mymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkw', 'I', 'imymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhp'); +INSERT /*! IGNORE */ INTO t1 VALUES ('you', 'a', 'i', 'if', 961, 'rimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolf', 'zrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydn', 'ezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjta', 'iezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfptei') , ('l', 'hiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvor', 'ihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmp', 'I\'ll', 962, 'lihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxty', 'that', 'm', 'jlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwb') , ('look', 'vjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfak', 'f', 'tvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwir', 963, 'd', 'utvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsu', 'q', 'all') , ('iutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduq', 'because', 'xiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqex', 'zxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxag', 964, 'ozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdj', 'so', 'k', 'come') , ('wozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcr', 'kwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyae', 'p', 'ykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbco', 965, 'kykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriy', 's', 'dkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkaz', 'edkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphj'); +INSERT /*! IGNORE */ INTO t1 VALUES ('nedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveim', 'you\'re', 'fnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziaui', 'me', 966, 'ofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotuj', 'g', 'sofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfzi', 'msofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubq') , ('gmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtx', 'bgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurz', 'that', 'q', 967, 'h', 'rbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvd', 'you\'re', 'say') , ('prbgms', 'tell', 'uprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdf', 'wuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbw', 968, 'hwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaaf', 'I\'ll', 'thwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxd', 'for') , ('some', 'uthwuprbgmsofnedkykwozxiutvjlihie', 'vuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggoz', 'vvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfime', 969, 'the', 'hvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbg', 's', 'ahvvuthwuprbgmsofnedkykwoz') , ('nahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpi', 'tnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoq', 'qtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrp', 'kqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzv', 970, 'zkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkd', 'n', 'azkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgur', 'fazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcx'); +INSERT /*! IGNORE */ INTO t1 VALUES ('hfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlma', 'lhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgyt', 'glhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjw', 'lglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiou', 971, 'flglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcn', 'dflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxk', 'rdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalb', 'prdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzh') , ('nprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqi', 'ynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlm', 's', 'lynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfg', 972, 'there', 'ylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeef', 'p', 'h') , ('iylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveiml', 'h', 'e', 'u', 973, 'we', 'riylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvp', 'h', 'nriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlq') , ('me', 'ynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkaz', 'kynriylynprdflglhfazkqtnahvvuthwuprbgms', 'now', 974, 'pkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtl', 'apkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususbo', 'c', 'tapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjf') , ('etapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjr', 'oetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitw', 'eoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrl', 'reoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwo', 975, 'lreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfd', 'out', 'then', 'that'); +INSERT /*! IGNORE */ INTO t1 VALUES ('flreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetr', 'aflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvde', 'oaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykgh', 'z', 976, 'xoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkw', 'see', 'r', 'uxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnze') , ('g', 'yeah', 'huxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzv', 'j', 977, 'her', 'chuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewh', 'see', 'y') , ('k', 'kchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvc', 'jkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrim', 'did', 978, 'bjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbm', 'it\'s', 'wbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozs', 'nwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxyc') , ('fnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahv', 'my', 'ifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuo', 'vifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvp', 979, 'oh', 'had', 'evifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxh', 'uevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufc') , ('g', 'nuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtch', 'ynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijei', 'but', 980, 'oynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkak', 'eoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzsw', 'y', 'oeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkux'); +INSERT /*! IGNORE */ INTO t1 VALUES ('doeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrf', 'adoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmz', 'madoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivj', 'come', 981, 'hmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuim', 'ahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauial', 'f', 'look') , ('q', 'tahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacl', 'okay', 'ntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduq', 982, 'gntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpt', 'zgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyu', 'kzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczy', 'in') , ('okzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecico', 'wokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxn', 'mwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpef', 'you\'re', 983, 'xmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmj', 'mean', 'y', 't') , ('lxmwokzgntahmadoeoynuevifnwb', 'olxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdsp', 'you\'re', 'he\'s', 984, 'were', 'about', 'volxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlq', 'zvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzy') , ('v', 'bzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcn', 'ibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsa', 'eibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbi', 985, 'ieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowy', 'some', 'hieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbm', 'fhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenm'); +INSERT /*! IGNORE */ INTO t1 VALUES ('her', 'don\'t', 'all', 'mfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmz', 986, 'm', 'ymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtn', 'g', 'zymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcn') , ('nzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmr', 'a', 'pnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpaclt', 'w', 987, 'don\'t', 'upnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpe', 'eupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfyd', 'w') , ('leupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncu', 'vleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrl', 'x', 'ivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeao', 988, 'g', 'sivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucc', 'you\'re', 'nsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufc') , ('znsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqc', 'c', 'oznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfoda', 'hoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbc', 989, 'uhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujk', 'cuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfzi', 'bcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamk', 'dbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparyt') , ('adbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsd', 'uadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkuj', 'huadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbec', 'hhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyy', 990, 'uhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoe', 'iuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvt', 'qiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqex', 'eqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjw'); +INSERT /*! IGNORE */ INTO t1 VALUES ('keqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyi', 'f', 'jkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwo', 'xjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyop', 991, 'pxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofne', 'f', 'f', 'dpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdio') , ('xdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzc', 's', 'got', 'on', 992, 'bxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtef', 'xbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfp', 'p', 'x') , ('xxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwas', 'exxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzp', 'vexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowh', 'gvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialk', 993, 'ugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsx', 'pugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgyc', 'kpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyy', 'her') , ('d', 'ikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckz', 'who', 'bikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialk', 994, 'abikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaot', 'were', 'wabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznb', 'y') , ('vwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxh', 'to', 'qvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphcc', 'xqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjp', 995, 'jxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxc', 'o', 'xjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbj', 'rxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqic'); +INSERT /*! IGNORE */ INTO t1 VALUES ('urxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoz', 'curxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzew', 'acurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamax', 'with', 996, 'was', 'uacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlm', 'duacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiut', 'nduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokz') , ('had', 'gnduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfck', 'ognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvn', 'oognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctu', 997, 'toognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshoz', 'ytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyopr', 'bytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpef', 'jbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokz') , ('ujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutv', 'dujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuev', 'are', 'i', 998, 'bdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcos', 'y', 'w', 'b') , ('ybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriyl', 'go', 'zybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahl', 'ok', 999, 'fzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczy', 'l', 'bfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwus', 'nbfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxct') , ('nnbfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnr', 'ynnbfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiu', 'b', 'o', 1000, 'fynnbfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbia', 'f', 'r', 'ifynnbfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyew'); +--enable_query_log + +check table t1; +OPTIMIZE TABLE t1; +drop table t1; diff --git a/sql/net_serv.cc b/sql/net_serv.cc index 5df98662fe7..49199ccb6e4 100644 --- a/sql/net_serv.cc +++ b/sql/net_serv.cc @@ -920,7 +920,6 @@ my_real_read(NET *net, size_t *complen) (int) net->buff[net->where_b + 3], (uint) (uchar) net->pkt_nr); fflush(stderr); - DBUG_ASSERT(0); #endif } len= packet_error; diff --git a/storage/maria/ma_check.c b/storage/maria/ma_check.c index 4f93bf812a3..69b1566a2bb 100644 --- a/storage/maria/ma_check.c +++ b/storage/maria/ma_check.c @@ -3102,13 +3102,15 @@ static int sort_one_index(HA_CHECK *param, MARIA_HA *info, new_page_pos=param->new_file_pos; param->new_file_pos+=keyinfo->block_length; key.keyinfo= keyinfo; - key.data= info->lastkey_buff; - if (!(buff= (uchar*) my_alloca((uint) keyinfo->block_length))) + if (!(buff= (uchar*) my_alloca((uint) keyinfo->block_length + + keyinfo->maxlength))) { _ma_check_print_error(param,"Not enough memory for key block"); DBUG_RETURN(-1); } + key.data= buff + keyinfo->block_length; + if (_ma_fetch_keypage(&page, info, keyinfo, pagepos, PAGECACHE_LOCK_LEFT_UNLOCKED, DFLT_INIT_HITS, buff, 0)) From 24c08f5279ff350495d7334dcecd470a3c88cefb Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Fri, 16 Jul 2010 16:43:46 +0300 Subject: [PATCH 298/461] Fixed wrong error message from federatedx (which could lead to assert in DBUG code) mysql-test/suite/federated/federated_server.result: Update to new error message mysql-test/suite/federated/federated_server.test: Update to new error message storage/federatedx/ha_federatedx.cc: Return real error code, not 0, as in some cases before. --- mysql-test/suite/federated/federated_server.result | 2 +- mysql-test/suite/federated/federated_server.test | 2 +- storage/federatedx/ha_federatedx.cc | 9 +++------ 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/mysql-test/suite/federated/federated_server.result b/mysql-test/suite/federated/federated_server.result index 9c6a062f530..753b9286287 100644 --- a/mysql-test/suite/federated/federated_server.result +++ b/mysql-test/suite/federated/federated_server.result @@ -213,7 +213,7 @@ id name alter server s1 options (database 'db_bogus'); flush tables; select * from federated.t1; -ERROR HY000: There was a problem processing the query on the foreign data source. Data source error: : 1044 : Access denied for user 'test_fed'@'localhost' to databa +ERROR 42000: Got error: 1044 : Access denied for user 'test_fed'@'localhost' to database 'db_bogus' drop server if exists 's1'; ERROR 42000: Access denied; you need the SUPER privilege for this operation create server 's1' foreign data wrapper 'mysql' options diff --git a/mysql-test/suite/federated/federated_server.test b/mysql-test/suite/federated/federated_server.test index 65674abff63..d03c2d26014 100644 --- a/mysql-test/suite/federated/federated_server.test +++ b/mysql-test/suite/federated/federated_server.test @@ -239,7 +239,7 @@ alter server s1 options (database 'db_bogus'); connection master; flush tables; ---error ER_QUERY_ON_FOREIGN_DATA_SOURCE +--error ER_DBACCESS_DENIED_ERROR select * from federated.t1; connection conn_select; diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc index 57bfb1148bf..435530e8caa 100644 --- a/storage/federatedx/ha_federatedx.cc +++ b/storage/federatedx/ha_federatedx.cc @@ -2995,7 +2995,6 @@ int ha_federatedx::rnd_pos(uchar *buf, uchar *pos) int ha_federatedx::info(uint flag) { - char error_buffer[FEDERATEDX_QUERY_BUFFER_SIZE]; uint error_code; federatedx_io *tmp_io= 0, **iop= 0; DBUG_ENTER("ha_federatedx::info"); @@ -3037,12 +3036,10 @@ int ha_federatedx::info(uint flag) error: if (iop && *iop) { - my_sprintf(error_buffer, (error_buffer, ": %d : %s", - (*iop)->error_code(), (*iop)->error_str())); - my_error(error_code, MYF(0), error_buffer); + my_printf_error((*iop)->error_code(), "Got error: %d : %s", MYF(0), + (*iop)->error_code(), (*iop)->error_str()); } - else - if (remote_error_number != -1 /* error already reported */) + else if (remote_error_number != -1 /* error already reported */) { error_code= remote_error_number; my_error(error_code, MYF(0), ER(error_code)); From dcaef2424e56f714068411baa52f3b488210b5b0 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 16 Jul 2010 16:56:33 +0300 Subject: [PATCH 299/461] Addendum to bug #53814 : test results updates --- .../suite/funcs_1/r/is_columns_innodb.result | 12 ++-- .../suite/funcs_1/r/is_columns_is.result | 68 +++++++++---------- .../suite/funcs_1/r/is_columns_memory.result | 12 ++-- .../suite/funcs_1/r/is_columns_myisam.result | 12 ++-- .../suite/funcs_1/r/is_columns_mysql.result | 12 ++-- 5 files changed, 58 insertions(+), 58 deletions(-) diff --git a/mysql-test/suite/funcs_1/r/is_columns_innodb.result b/mysql-test/suite/funcs_1/r/is_columns_innodb.result index 73a74e4d7a2..61079b06666 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_innodb.result +++ b/mysql-test/suite/funcs_1/r/is_columns_innodb.result @@ -450,9 +450,9 @@ NULL test tb1 f27 27 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zero NULL test tb1 f28 28 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references NULL test tb1 f29 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references NULL test tb1 f3 3 NULL YES char 0 0 NULL NULL latin1 latin1_swedish_ci char(0) select,insert,update,references -NULL test tb1 f30 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references -NULL test tb1 f31 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references -NULL test tb1 f32 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb1 f30 30 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references +NULL test tb1 f31 31 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb1 f32 32 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references NULL test tb1 f33 33 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references NULL test tb1 f34 34 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references NULL test tb1 f35 35 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references @@ -565,9 +565,9 @@ NULL test tb3 f143 26 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned s NULL test tb3 f144 27 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references NULL test tb3 f145 28 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references NULL test tb3 f146 29 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references -NULL test tb3 f147 30 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references -NULL test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references -NULL test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb3 f147 30 999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references +NULL test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references NULL test tb3 f150 33 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references NULL test tb3 f151 34 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references NULL test tb3 f152 35 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references diff --git a/mysql-test/suite/funcs_1/r/is_columns_is.result b/mysql-test/suite/funcs_1/r/is_columns_is.result index ccb94c63d46..0bed3753165 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_is.result +++ b/mysql-test/suite/funcs_1/r/is_columns_is.result @@ -15,8 +15,8 @@ NULL information_schema COLLATIONS IS_DEFAULT 4 NO varchar 3 9 NULL NULL utf8 u NULL information_schema COLLATIONS SORTLEN 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3) select NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select -NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema COLUMNS CHARACTER_SET_NAME 13 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select NULL information_schema COLUMNS COLLATION_NAME 14 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select NULL information_schema COLUMNS COLUMN_COMMENT 19 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select @@ -27,9 +27,9 @@ NULL information_schema COLUMNS COLUMN_TYPE 15 NULL NO longtext 4294967295 42949 NULL information_schema COLUMNS DATA_TYPE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema COLUMNS EXTRA 17 NO varchar 27 81 NULL NULL utf8 utf8_general_ci varchar(27) select NULL information_schema COLUMNS IS_NULLABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select -NULL information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema COLUMNS ORDINAL_POSITION 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema COLUMNS ORDINAL_POSITION 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema COLUMNS PRIVILEGES 18 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select NULL information_schema COLUMNS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select NULL information_schema COLUMNS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select @@ -71,14 +71,14 @@ NULL information_schema EVENTS SQL_MODE 12 NO varchar 8192 24576 NULL NULL utf8 NULL information_schema EVENTS STARTS 13 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select NULL information_schema EVENTS STATUS 15 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select NULL information_schema EVENTS TIME_ZONE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema FILES AUTOEXTEND_SIZE 19 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema FILES AVG_ROW_LENGTH 28 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema FILES CHECKSUM 36 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema FILES AUTOEXTEND_SIZE 19 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema FILES AVG_ROW_LENGTH 28 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema FILES CHECKSUM 36 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema FILES CHECK_TIME 35 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select NULL information_schema FILES CREATE_TIME 33 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select NULL information_schema FILES CREATION_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select -NULL information_schema FILES DATA_FREE 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema FILES DATA_LENGTH 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema FILES DATA_FREE 32 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema FILES DATA_LENGTH 29 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema FILES DELETED_ROWS 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select NULL information_schema FILES ENGINE 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema FILES EXTENT_SIZE 16 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select @@ -88,27 +88,27 @@ NULL information_schema FILES FILE_NAME 2 NULL YES varchar 64 192 NULL NULL utf8 NULL information_schema FILES FILE_TYPE 3 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select NULL information_schema FILES FREE_EXTENTS 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select NULL information_schema FILES FULLTEXT_KEYS 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema FILES INDEX_LENGTH 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema FILES INITIAL_SIZE 17 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema FILES INDEX_LENGTH 31 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema FILES INITIAL_SIZE 17 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema FILES LAST_ACCESS_TIME 22 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select NULL information_schema FILES LAST_UPDATE_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select NULL information_schema FILES LOGFILE_GROUP_NAME 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema FILES LOGFILE_GROUP_NUMBER 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select -NULL information_schema FILES MAXIMUM_SIZE 18 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema FILES MAX_DATA_LENGTH 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema FILES MAXIMUM_SIZE 18 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema FILES MAX_DATA_LENGTH 30 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema FILES RECOVER_TIME 23 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select NULL information_schema FILES ROW_FORMAT 26 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select NULL information_schema FILES STATUS 37 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select NULL information_schema FILES TABLESPACE_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema FILES TABLE_CATALOG 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema FILES TABLE_NAME 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema FILES TABLE_ROWS 27 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema FILES TABLE_ROWS 27 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema FILES TABLE_SCHEMA 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema FILES TOTAL_EXTENTS 15 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select NULL information_schema FILES TRANSACTION_COUNTER 24 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select NULL information_schema FILES UPDATE_COUNT 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select NULL information_schema FILES UPDATE_TIME 34 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select -NULL information_schema FILES VERSION 25 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema FILES VERSION 25 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema GLOBAL_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select NULL information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select @@ -125,29 +125,29 @@ NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES var NULL information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select NULL information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema PARTITIONS AVG_ROW_LENGTH 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema PARTITIONS AVG_ROW_LENGTH 14 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema PARTITIONS CHECK_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select NULL information_schema PARTITIONS CREATE_TIME 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select -NULL information_schema PARTITIONS DATA_FREE 18 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema PARTITIONS DATA_LENGTH 15 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema PARTITIONS INDEX_LENGTH 17 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema PARTITIONS MAX_DATA_LENGTH 16 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema PARTITIONS DATA_FREE 18 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema PARTITIONS DATA_LENGTH 15 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema PARTITIONS INDEX_LENGTH 17 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema PARTITIONS MAX_DATA_LENGTH 16 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema PARTITIONS NODEGROUP 24 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select NULL information_schema PARTITIONS PARTITION_COMMENT 23 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select NULL information_schema PARTITIONS PARTITION_DESCRIPTION 12 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select NULL information_schema PARTITIONS PARTITION_EXPRESSION 10 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select NULL information_schema PARTITIONS PARTITION_METHOD 8 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select NULL information_schema PARTITIONS PARTITION_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema PARTITIONS SUBPARTITION_EXPRESSION 11 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select NULL information_schema PARTITIONS SUBPARTITION_METHOD 9 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select NULL information_schema PARTITIONS SUBPARTITION_NAME 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION 7 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION 7 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema PARTITIONS TABLESPACE_NAME 25 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema PARTITIONS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select NULL information_schema PARTITIONS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema PARTITIONS TABLE_ROWS 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema PARTITIONS TABLE_ROWS 13 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema PARTITIONS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema PARTITIONS UPDATE_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select NULL information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select @@ -231,27 +231,27 @@ NULL information_schema STATISTICS SUB_PART 11 NULL YES bigint NULL NULL 19 0 NU NULL information_schema STATISTICS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select NULL information_schema STATISTICS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema STATISTICS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema TABLES CHECK_TIME 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select NULL information_schema TABLES CREATE_OPTIONS 20 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select NULL information_schema TABLES CREATE_TIME 15 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select -NULL information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema TABLES ENGINE 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select +NULL information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select NULL information_schema TABLES TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select NULL information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select NULL information_schema TABLES TABLE_COMMENT 21 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select NULL information_schema TABLES TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema TABLES TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema TABLES TABLE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema TABLES UPDATE_TIME 16 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select -NULL information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select diff --git a/mysql-test/suite/funcs_1/r/is_columns_memory.result b/mysql-test/suite/funcs_1/r/is_columns_memory.result index 513d7bdfac6..60dea25e0e3 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_memory.result +++ b/mysql-test/suite/funcs_1/r/is_columns_memory.result @@ -437,9 +437,9 @@ NULL test tb1 f27 19 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zero NULL test tb1 f28 20 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references NULL test tb1 f29 21 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references NULL test tb1 f3 3 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references -NULL test tb1 f30 22 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references -NULL test tb1 f31 23 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references -NULL test tb1 f32 24 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb1 f30 22 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references +NULL test tb1 f31 23 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb1 f32 24 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references NULL test tb1 f33 25 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references NULL test tb1 f34 26 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references NULL test tb1 f35 27 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references @@ -540,9 +540,9 @@ NULL test tb3 f143 20 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned s NULL test tb3 f144 21 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references NULL test tb3 f145 22 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references NULL test tb3 f146 23 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references -NULL test tb3 f147 24 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references -NULL test tb3 f148 25 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references -NULL test tb3 f149 26 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb3 f147 24 999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references +NULL test tb3 f148 25 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb3 f149 26 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references NULL test tb3 f150 27 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references NULL test tb3 f151 28 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references NULL test tb3 f152 29 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references diff --git a/mysql-test/suite/funcs_1/r/is_columns_myisam.result b/mysql-test/suite/funcs_1/r/is_columns_myisam.result index a95ca4f0ebf..6d0a44d2223 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_myisam.result +++ b/mysql-test/suite/funcs_1/r/is_columns_myisam.result @@ -479,9 +479,9 @@ NULL test tb1 f27 27 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zero NULL test tb1 f28 28 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references NULL test tb1 f29 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references NULL test tb1 f3 3 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references -NULL test tb1 f30 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references -NULL test tb1 f31 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references -NULL test tb1 f32 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb1 f30 30 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references +NULL test tb1 f31 31 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb1 f32 32 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references NULL test tb1 f33 33 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references NULL test tb1 f34 34 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references NULL test tb1 f35 35 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references @@ -602,9 +602,9 @@ NULL test tb3 f143 26 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned s NULL test tb3 f144 27 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references NULL test tb3 f145 28 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references NULL test tb3 f146 29 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references -NULL test tb3 f147 30 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references -NULL test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references -NULL test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb3 f147 30 999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references +NULL test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references +NULL test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references NULL test tb3 f150 33 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references NULL test tb3 f151 34 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references NULL test tb3 f152 35 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql.result b/mysql-test/suite/funcs_1/r/is_columns_mysql.result index 98eeacdb74c..2b285d7cc56 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_mysql.result +++ b/mysql-test/suite/funcs_1/r/is_columns_mysql.result @@ -97,13 +97,13 @@ NULL mysql host Select_priv 3 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum( NULL mysql host Show_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NULL mysql host Trigger_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references NULL mysql host Update_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references -NULL mysql ndb_binlog_index deletes 6 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references -NULL mysql ndb_binlog_index epoch 3 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned PRI select,insert,update,references +NULL mysql ndb_binlog_index deletes 6 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references +NULL mysql ndb_binlog_index epoch 3 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned PRI select,insert,update,references NULL mysql ndb_binlog_index File 2 NULL NO varchar 255 255 NULL NULL latin1 latin1_swedish_ci varchar(255) select,insert,update,references -NULL mysql ndb_binlog_index inserts 4 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references -NULL mysql ndb_binlog_index Position 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references -NULL mysql ndb_binlog_index schemaops 7 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references -NULL mysql ndb_binlog_index updates 5 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references +NULL mysql ndb_binlog_index inserts 4 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references +NULL mysql ndb_binlog_index Position 1 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references +NULL mysql ndb_binlog_index schemaops 7 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references +NULL mysql ndb_binlog_index updates 5 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references NULL mysql plugin dl 2 NO char 128 384 NULL NULL utf8 utf8_bin char(128) select,insert,update,references NULL mysql plugin name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references NULL mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references From 92f3fc92f3310cb19d48f69ab6f5d23789a90570 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 16 Jul 2010 14:33:35 -0300 Subject: [PATCH 300/461] Bug#48327: Some crashes specific to FreeBSD ("embedded") Bug#47139: Test "merge" crashes in "embedded" run Backport patch for Bug#47139 --- storage/myisam/mi_dynrec.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/storage/myisam/mi_dynrec.c b/storage/myisam/mi_dynrec.c index 09152f8d013..4153f55aa3c 100644 --- a/storage/myisam/mi_dynrec.c +++ b/storage/myisam/mi_dynrec.c @@ -66,9 +66,12 @@ static int _mi_cmp_buffer(File file, const uchar *buff, my_off_t filepos, my_bool mi_dynmap_file(MI_INFO *info, my_off_t size) { DBUG_ENTER("mi_dynmap_file"); - if (size > (my_off_t) (~((size_t) 0))) + if (size == 0 || size > (my_off_t) (~((size_t) 0))) { - DBUG_PRINT("warning", ("File is too large for mmap")); + if (size) + DBUG_PRINT("warning", ("File is too large for mmap")); + else + DBUG_PRINT("warning", ("Do not mmap zero-length")); DBUG_RETURN(1); } /* From e9166ca1527fb2f450584712056d081daf36517f Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Sat, 17 Jul 2010 01:41:44 +0300 Subject: [PATCH 301/461] Fix for LP#588251: doStartTableScan() result not checked. The issue was that we didn't always check result of ha_rnd_init() which caused a problem for handlers that returned an error in this code. - Changed prototype of ha_rnd_init() to ensure that we get a compile warning if result is not checked. - Added ha_rnd_init_with_error() that prints error on failure. - Checked all usage of ha_rnd_init() and ensure we generate an error message on failures. - Changed init_read_record() to return 1 on failure. sql/create_options.cc: Fixed wrong printf sql/event_db_repository.cc: Check result from init_read_record() sql/events.cc: Check result from init_read_record() sql/filesort.cc: Check result from ha_rnd_init() sql/ha_partition.cc: Check result from ha_rnd_init() sql/ha_partition.h: Fixed compiler warning sql/handler.cc: Added ha_rnd_init_with_error() Check result from ha_rnd_init() sql/handler.h: Added ha_rnd_init_with_error() Changed prototype of ha_rnd_init() to ensure that we get a compile warning if result is not checked sql/item_subselect.cc: Check result from ha_rnd_init() sql/log.cc: Check result from ha_rnd_init() sql/log_event.cc: Check result from ha_rnd_init() sql/log_event_old.cc: Check result from ha_rnd_init() sql/mysql_priv.h: init_read_record() now returns error code on failure sql/opt_range.cc: Check result from ha_rnd_init() sql/records.cc: init_read_record() now returns error code on failure Check result from ha_rnd_init() sql/sql_acl.cc: Check result from init_read_record() sql/sql_cursor.cc: Print error if ha_rnd_init() fails sql/sql_delete.cc: Check result from init_read_record() sql/sql_help.cc: Check result from init_read_record() sql/sql_plugin.cc: Check result from init_read_record() sql/sql_select.cc: Check result from ha_rnd_init() Print error if ha_rnd_init() fails. sql/sql_servers.cc: Check result from init_read_record() sql/sql_table.cc: Check result from init_read_record() sql/sql_udf.cc: Check result from init_read_record() sql/sql_update.cc: Check result from init_read_record() storage/example/ha_example.cc: Don't return error on rnd_init() storage/ibmdb2i/ha_ibmdb2i.cc: Removed not relevant comment --- sql/create_options.cc | 4 ++-- sql/event_db_repository.cc | 10 +++++--- sql/events.cc | 7 +++++- sql/filesort.cc | 3 ++- sql/ha_partition.cc | 2 +- sql/ha_partition.h | 2 +- sql/handler.cc | 20 +++++++++++++--- sql/handler.h | 3 ++- sql/item_subselect.cc | 3 ++- sql/log.cc | 4 ++-- sql/log_event.cc | 20 ++++++++++------ sql/log_event_old.cc | 25 ++++++++++++-------- sql/mysql_priv.h | 2 +- sql/opt_range.cc | 7 +++--- sql/records.cc | 14 ++++++++---- sql/sql_acl.cc | 16 +++++++++---- sql/sql_cursor.cc | 2 +- sql/sql_delete.cc | 14 ++++++++++-- sql/sql_help.cc | 29 +++++++++++++++-------- sql/sql_plugin.cc | 7 +++++- sql/sql_select.cc | 18 ++++++++++----- sql/sql_servers.cc | 5 ++-- sql/sql_table.cc | 3 ++- sql/sql_udf.cc | 8 ++++++- sql/sql_update.cc | 43 ++++++++++++++++++++++++++++------- storage/example/ha_example.cc | 2 +- storage/ibmdb2i/ha_ibmdb2i.cc | 4 +--- 27 files changed, 196 insertions(+), 81 deletions(-) diff --git a/sql/create_options.cc b/sql/create_options.cc index c7ede1b2331..6d682853ae6 100644 --- a/sql/create_options.cc +++ b/sql/create_options.cc @@ -583,9 +583,9 @@ my_bool engine_table_options_frm_read(const uchar *buff, uint length, } if (buff < buff_end) - sql_print_warning("Table %`s was created in a later MariaDB version - " + sql_print_warning("Table '%s' was created in a later MariaDB version - " "unknown table attributes were ignored", - share->table_name); + share->table_name.str); DBUG_RETURN(buff > buff_end); } diff --git a/sql/event_db_repository.cc b/sql/event_db_repository.cc index 82f9d354888..1349f6b5cba 100644 --- a/sql/event_db_repository.cc +++ b/sql/event_db_repository.cc @@ -474,7 +474,8 @@ Event_db_repository::table_scan_all_for_i_s(THD *thd, TABLE *schema_table, READ_RECORD read_record_info; DBUG_ENTER("Event_db_repository::table_scan_all_for_i_s"); - init_read_record(&read_record_info, thd, event_table, NULL, 1, 0, FALSE); + if (init_read_record(&read_record_info, thd, event_table, NULL, 1, 0, FALSE)) + DBUG_RETURN(TRUE); /* rr_sequential, in read_record(), returns 137==HA_ERR_END_OF_FILE, @@ -960,7 +961,9 @@ Event_db_repository::drop_events_by_field(THD *thd, DBUG_VOID_RETURN; /* only enabled events are in memory, so we go now and delete the rest */ - init_read_record(&read_record_info, thd, table, NULL, 1, 0, FALSE); + if (init_read_record(&read_record_info, thd, table, NULL, 1, 0, FALSE)) + goto end; + while (!ret && !(read_record_info.read_record(&read_record_info)) ) { char *et_field= get_field(thd->mem_root, table->field[field]); @@ -982,8 +985,9 @@ Event_db_repository::drop_events_by_field(THD *thd, } } end_read_record(&read_record_info); - close_thread_tables(thd); +end: + close_thread_tables(thd); DBUG_VOID_RETURN; } diff --git a/sql/events.cc b/sql/events.cc index 0f3fc8eee4a..8bb7406b615 100644 --- a/sql/events.cc +++ b/sql/events.cc @@ -1214,7 +1214,12 @@ Events::load_events_from_db(THD *thd) DBUG_RETURN(TRUE); } - init_read_record(&read_record_info, thd, table, NULL, 0, 1, FALSE); + if (init_read_record(&read_record_info, thd, table, NULL, 0, 1, FALSE)) + { + close_thread_tables(thd); + DBUG_RETURN(TRUE); + } + while (!(read_record_info.read_record(&read_record_info))) { Event_queue_element *et; diff --git a/sql/filesort.cc b/sql/filesort.cc index 270f0f1ac37..257e721041a 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -537,7 +537,8 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select, if (! indexfile && ! quick_select) { next_pos=(uchar*) 0; /* Find records in sequence */ - file->ha_rnd_init(1); + if (file->ha_rnd_init_with_error(1)) + DBUG_RETURN(HA_POS_ERROR); file->extra_opt(HA_EXTRA_CACHE, current_thd->variables.read_buff_size); } diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 1b430275d59..9026a901671 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -1661,7 +1661,7 @@ int ha_partition::copy_partitions(ulonglong * const copied, uint32 new_part; late_extra_cache(reorg_part); - if ((result= file->ha_rnd_init(1))) + if ((result= file->ha_rnd_init_with_error(1))) goto error; while (TRUE) { diff --git a/sql/ha_partition.h b/sql/ha_partition.h index 7fc33b46b16..e1339abc081 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -1129,7 +1129,7 @@ public: virtual handlerton *partition_ht() const { handlerton *h= m_file[0]->ht; - for (int i=1; i < m_tot_parts; i++) + for (uint i=1; i < m_tot_parts; i++) DBUG_ASSERT(h == m_file[i]->ht); return h; } diff --git a/sql/handler.cc b/sql/handler.cc index b8714009c4e..2b931b6f5c1 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -2114,6 +2114,18 @@ int handler::ha_open(TABLE *table_arg, const char *name, int mode, } +/* Initialize handler for random reading, with error handling */ + +int handler::ha_rnd_init_with_error(bool scan) +{ + int error; + if (!(error= ha_rnd_init(scan))) + return 0; + table->file->print_error(error, MYF(0)); + return error; +} + + /** Read first row (only) from a table. @@ -2133,9 +2145,11 @@ int handler::read_first_row(uchar * buf, uint primary_key) if (stats.deleted < 10 || primary_key >= MAX_KEY || !(index_flags(primary_key, 0, 0) & HA_READ_ORDER)) { - (void) ha_rnd_init(1); - while ((error= ha_rnd_next(buf)) == HA_ERR_RECORD_DELETED) ; - (void) ha_rnd_end(); + if ((!(error= ha_rnd_init(1)))) + { + while ((error= ha_rnd_next(buf)) == HA_ERR_RECORD_DELETED) ; + (void) ha_rnd_end(); + } } else { diff --git a/sql/handler.h b/sql/handler.h index 5f94e9adbb0..502b962a851 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1327,7 +1327,7 @@ public: } /* This is called after index_init() if we need to do a index scan */ virtual int prepare_index_scan() { return 0; } - int ha_rnd_init(bool scan) + int ha_rnd_init(bool scan) __attribute__ ((warn_unused_result)) { int result; DBUG_ENTER("ha_rnd_init"); @@ -1342,6 +1342,7 @@ public: inited=NONE; DBUG_RETURN(rnd_end()); } + int ha_rnd_init_with_error(bool scan) __attribute__ ((warn_unused_result)); int ha_reset(); /* Tell handler (not storage engine) this is start of a new statement */ void ha_start_of_new_statement() diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 000d4591a27..82bb02f362e 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -2070,7 +2070,8 @@ int subselect_uniquesubquery_engine::scan_table() if (table->file->inited) table->file->ha_index_end(); - table->file->ha_rnd_init(1); + if (table->file->ha_rnd_init_with_error(1)) + DBUG_RETURN(1); table->file->extra_opt(HA_EXTRA_CACHE, current_thd->variables.read_buff_size); table->null_row= 0; diff --git a/sql/log.cc b/sql/log.cc index 59e466f42b6..6094836c031 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -412,7 +412,7 @@ bool Log_to_csv_event_handler:: need_close= TRUE; if (table->file->extra(HA_EXTRA_MARK_AS_LOG_TABLE) || - table->file->ha_rnd_init(0)) + table->file->ha_rnd_init_with_error(0)) goto err; need_rnd_end= TRUE; @@ -563,7 +563,7 @@ bool Log_to_csv_event_handler:: need_close= TRUE; if (table->file->extra(HA_EXTRA_MARK_AS_LOG_TABLE) || - table->file->ha_rnd_init(0)) + table->file->ha_rnd_init_with_error(0)) goto err; need_rnd_end= TRUE; diff --git a/sql/log_event.cc b/sql/log_event.cc index 06fcdf5003c..568e6cbf815 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -8920,10 +8920,10 @@ record_compare_exit: /** Locate the current row in event's table. - The current row is pointed by @c m_curr_row. Member @c m_width tells how many - columns are there in the row (this can be differnet from the number of columns - in the table). It is assumed that event's table is already open and pointed - by @c m_table. + The current row is pointed by @c m_curr_row. Member @c m_width tells + how many columns are there in the row (this can be differnet from + the number of columns in the table). It is assumed that event's + table is already open and pointed by @c m_table. If a corresponding record is found in the table it is stored in @c m_table->record[0]. Note that when record is located based on a primary @@ -9139,11 +9139,10 @@ int Rows_log_event::find_row(const Relay_log_info *rli) int restart_count= 0; // Number of times scanning has restarted from top /* We don't have a key: search the table using rnd_next() */ - if ((error= table->file->ha_rnd_init(1))) + if ((error= table->file->ha_rnd_init_with_error(1))) { DBUG_PRINT("info",("error initializing table scan" " (ha_rnd_init returns %d)",error)); - table->file->print_error(error, MYF(0)); goto err; } @@ -9168,7 +9167,14 @@ int Rows_log_event::find_row(const Relay_log_info *rli) case HA_ERR_END_OF_FILE: if (++restart_count < 2) - table->file->ha_rnd_init(1); + { + int error2; + if ((error2= table->file->ha_rnd_init_with_error(1))) + { + error= error2; + goto err; + } + } break; default: diff --git a/sql/log_event_old.cc b/sql/log_event_old.cc index cf358bd757d..96fcff66d19 100644 --- a/sql/log_event_old.cc +++ b/sql/log_event_old.cc @@ -816,7 +816,7 @@ static int find_and_fetch_row(TABLE *table, uchar *key) int error; /* We don't have a key: search the table using rnd_next() */ - if ((error= table->file->ha_rnd_init(1))) + if ((error= table->file->ha_rnd_init_with_error(1))) return error; /* Continue until we find the right record or have made a full loop */ @@ -840,15 +840,19 @@ static int find_and_fetch_row(TABLE *table, uchar *key) goto restart_rnd_next; case HA_ERR_END_OF_FILE: - if (++restart_count < 2) - table->file->ha_rnd_init(1); - break; + if (++restart_count < 2) + { + int error2; + if ((error2= table->file->ha_rnd_init_with_error(1))) + DBUG_RETURN(error2); + } + break; default: - table->file->print_error(error, MYF(0)); + table->file->print_error(error, MYF(0)); DBUG_PRINT("info", ("Record not found")); table->file->ha_rnd_end(); - DBUG_RETURN(error); + DBUG_RETURN(error); } } while (restart_count < 2 && record_compare(table)); @@ -2461,11 +2465,10 @@ int Old_rows_log_event::find_row(const Relay_log_info *rli) int restart_count= 0; // Number of times scanning has restarted from top /* We don't have a key: search the table using rnd_next() */ - if ((error= table->file->ha_rnd_init(1))) + if ((error= table->file->ha_rnd_init_with_error(1))) { DBUG_PRINT("info",("error initializing table scan" " (ha_rnd_init returns %d)",error)); - table->file->print_error(error, MYF(0)); DBUG_RETURN(error); } @@ -2485,7 +2488,11 @@ int Old_rows_log_event::find_row(const Relay_log_info *rli) case HA_ERR_END_OF_FILE: if (++restart_count < 2) - table->file->ha_rnd_init(1); + { + int error2; + if ((error2= table->file->ha_rnd_init_with_error(1))) + DBUG_RETURN(error2); + } break; default: diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 299222e4c95..cbaa5fad5b9 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -2303,7 +2303,7 @@ longlong get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg, int test_if_number(char *str,int *res,bool allow_wildcards); void change_byte(uchar *,uint,char,char); -void init_read_record(READ_RECORD *info, THD *thd, TABLE *reg_form, +bool init_read_record(READ_RECORD *info, THD *thd, TABLE *reg_form, SQL_SELECT *select, int use_record_cache, bool print_errors, bool disable_rr_cache); void init_read_record_idx(READ_RECORD *info, THD *thd, TABLE *table, diff --git a/sql/opt_range.cc b/sql/opt_range.cc index d13a2e6a0af..ad404a100e3 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -1431,7 +1431,7 @@ int QUICK_ROR_INTERSECT_SELECT::init_ror_merged_scan(bool reuse_handler) quick->record= head->record[0]; } - if (need_to_fetch_row && head->file->ha_rnd_init(1)) + if (need_to_fetch_row && head->file->ha_rnd_init_with_error(1)) { DBUG_PRINT("error", ("ROR index_merge rnd_init call failed")); DBUG_RETURN(1); @@ -1602,7 +1602,7 @@ int QUICK_ROR_UNION_SELECT::reset() queue_insert(&queue, (uchar*)quick); } - if (head->file->ha_rnd_init(1)) + if (head->file->ha_rnd_init_with_error(1)) { DBUG_PRINT("error", ("ROR index_merge rnd_init call failed")); DBUG_RETURN(1); @@ -8199,7 +8199,8 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_and_merge() index_merge currently doesn't support "using index" at all */ head->disable_keyread(); - init_read_record(&read_record, thd, head, (SQL_SELECT*) 0, 1 , 1, TRUE); + if (init_read_record(&read_record, thd, head, (SQL_SELECT*) 0, 1 , 1, TRUE)) + result= 1; DBUG_RETURN(result); err: diff --git a/sql/records.cc b/sql/records.cc index e2a1ea9b4af..3342c7db685 100644 --- a/sql/records.cc +++ b/sql/records.cc @@ -157,7 +157,8 @@ void init_read_record_idx(READ_RECORD *info, THD *thd, TABLE *table, This is the most basic access method of a table using rnd_init, rnd_next and rnd_end. No indexes are used. */ -void init_read_record(READ_RECORD *info,THD *thd, TABLE *table, + +bool init_read_record(READ_RECORD *info,THD *thd, TABLE *table, SQL_SELECT *select, int use_record_cache, bool print_error, bool disable_rr_cache) @@ -205,7 +206,8 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table, reinit_io_cache(info->io_cache,READ_CACHE,0L,0,0); info->ref_pos=table->file->ref; if (!table->file->inited) - table->file->ha_rnd_init(0); + if (table->file->ha_rnd_init_with_error(0)) + DBUG_RETURN(1); /* table->sort.addon_field is checked because if we use addon fields, @@ -242,7 +244,8 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table, else if (table->sort.record_pointers) { DBUG_PRINT("info",("using record_pointers")); - table->file->ha_rnd_init(0); + if (table->file->ha_rnd_init_with_error(0)) + DBUG_RETURN(1); info->cache_pos=table->sort.record_pointers; info->cache_end=info->cache_pos+ table->sort.found_records*info->ref_length; @@ -253,7 +256,8 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table, { DBUG_PRINT("info",("using rr_sequential")); info->read_record=rr_sequential; - table->file->ha_rnd_init(1); + if (table->file->ha_rnd_init_with_error(1)) + DBUG_RETURN(1); /* We can use record cache if we don't update dynamic length tables */ if (!table->no_cache && (use_record_cache > 0 || @@ -271,7 +275,7 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table, !table->file->pushed_cond) table->file->cond_push(select->cond); - DBUG_VOID_RETURN; + DBUG_RETURN(0); } /* init_read_record */ diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index db20782037e..3f4400b4687 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -477,8 +477,10 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables) acl_cache->clear(1); // Clear locked hostname cache init_sql_alloc(&mem, ACL_ALLOC_BLOCK_SIZE, 0); - init_read_record(&read_record_info,thd,table= tables[0].table,NULL,1,0, - FALSE); + if (init_read_record(&read_record_info,thd,table= tables[0].table,NULL,1,0, + FALSE)) + goto end; + table->use_all_columns(); VOID(my_init_dynamic_array(&acl_hosts,sizeof(ACL_HOST),20,50)); while (!(read_record_info.read_record(&read_record_info))) @@ -527,7 +529,10 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables) end_read_record(&read_record_info); freeze_size(&acl_hosts); - init_read_record(&read_record_info,thd,table=tables[1].table,NULL,1,0,FALSE); + if (init_read_record(&read_record_info,thd,table=tables[1].table,NULL,1,0, + FALSE)) + goto end; + table->use_all_columns(); VOID(my_init_dynamic_array(&acl_users,sizeof(ACL_USER),50,100)); password_length= table->field[2]->field_length / @@ -748,7 +753,10 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables) end_read_record(&read_record_info); freeze_size(&acl_users); - init_read_record(&read_record_info,thd,table=tables[2].table,NULL,1,0,FALSE); + if (init_read_record(&read_record_info,thd,table=tables[2].table,NULL,1,0, + FALSE)) + goto end; + table->use_all_columns(); VOID(my_init_dynamic_array(&acl_dbs,sizeof(ACL_DB),50,100)); while (!(read_record_info.read_record(&read_record_info))) diff --git a/sql/sql_cursor.cc b/sql/sql_cursor.cc index 71c28f425d4..e9ef5ef0cf3 100644 --- a/sql/sql_cursor.cc +++ b/sql/sql_cursor.cc @@ -608,7 +608,7 @@ int Materialized_cursor::open(JOIN *join __attribute__((unused))) thd->set_n_backup_active_arena(this, &backup_arena); /* Create a list of fields and start sequential scan */ rc= result->prepare(item_list, &fake_unit); - if (!rc && !(rc= table->file->ha_rnd_init(TRUE))) + if (!rc && !(rc= table->file->ha_rnd_init_with_error(TRUE))) is_rnd_inited= 1; thd->restore_active_arena(this, &backup_arena); diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index eb05077f17a..8fba48f54cc 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -266,7 +266,14 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, DBUG_RETURN(TRUE); } if (usable_index==MAX_KEY) - init_read_record(&info, thd, table, select, 1, 1, FALSE); + { + if (init_read_record(&info, thd, table, select, 1, 1, FALSE)) + { + delete select; + free_underlaid_joins(thd, select_lex); + DBUG_RETURN(TRUE); + } + } else init_read_record_idx(&info, thd, table, 1, usable_index); @@ -944,7 +951,10 @@ int multi_delete::do_table_deletes(TABLE *table, bool ignore) READ_RECORD info; ha_rows last_deleted= deleted; DBUG_ENTER("do_deletes_for_table"); - init_read_record(&info, thd, table, NULL, 0, 1, FALSE); + + if (init_read_record(&info, thd, table, NULL, 0, 1, FALSE)) + DBUG_RETURN(1); + /* Ignore any rows not found in reference tables as they may already have been deleted by foreign key handling diff --git a/sql/sql_help.cc b/sql/sql_help.cc index 5658a3578ab..916557a46c4 100644 --- a/sql/sql_help.cc +++ b/sql/sql_help.cc @@ -182,11 +182,14 @@ int search_topics(THD *thd, TABLE *topics, struct st_find_field *find_fields, SQL_SELECT *select, List *names, String *name, String *description, String *example) { - DBUG_ENTER("search_topics"); int count= 0; - READ_RECORD read_record_info; - init_read_record(&read_record_info, thd, topics, select, 1, 0, FALSE); + DBUG_ENTER("search_topics"); + + /* Should never happen. As this is part of help, we can ignore this */ + if (init_read_record(&read_record_info, thd, topics, select, 1, 0, FALSE)) + DBUG_RETURN(0); + while (!read_record_info.read_record(&read_record_info)) { if (!select->cond->val_int()) // Doesn't match like @@ -222,11 +225,13 @@ int search_topics(THD *thd, TABLE *topics, struct st_find_field *find_fields, int search_keyword(THD *thd, TABLE *keywords, struct st_find_field *find_fields, SQL_SELECT *select, int *key_id) { - DBUG_ENTER("search_keyword"); int count= 0; - READ_RECORD read_record_info; - init_read_record(&read_record_info, thd, keywords, select, 1, 0, FALSE); + DBUG_ENTER("search_keyword"); + /* Should never happen. As this is part of help, we can ignore this */ + if (init_read_record(&read_record_info, thd, keywords, select, 1, 0, FALSE)) + DBUG_RETURN(0); + while (!read_record_info.read_record(&read_record_info) && count<2) { if (!select->cond->val_int()) // Dosn't match like @@ -347,10 +352,11 @@ int search_categories(THD *thd, TABLE *categories, Field *pcat_id= find_fields[help_category_help_category_id].field; int count= 0; READ_RECORD read_record_info; - DBUG_ENTER("search_categories"); - init_read_record(&read_record_info, thd, categories, select,1,0,FALSE); + /* Should never happen. As this is part of help, we can ignore this */ + if (init_read_record(&read_record_info, thd, categories, select,1,0,FALSE)) + DBUG_RETURN(0); while (!read_record_info.read_record(&read_record_info)) { if (select && !select->cond->val_int()) @@ -381,10 +387,13 @@ int search_categories(THD *thd, TABLE *categories, void get_all_items_for_category(THD *thd, TABLE *items, Field *pfname, SQL_SELECT *select, List *res) { + READ_RECORD read_record_info; DBUG_ENTER("get_all_items_for_category"); - READ_RECORD read_record_info; - init_read_record(&read_record_info, thd, items, select,1,0,FALSE); + /* Should never happen. As this is part of help, we can ignore this */ + if (init_read_record(&read_record_info, thd, items, select,1,0,FALSE)) + DBUG_VOID_RETURN; + while (!read_record_info.read_record(&read_record_info)) { if (!select->cond->val_int()) diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index 71c735fee66..7c5bbf60b53 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -1621,7 +1621,12 @@ static void plugin_load(MEM_ROOT *tmp_root, int *argc, char **argv) goto end; } table= tables.table; - init_read_record(&read_record_info, new_thd, table, NULL, 1, 0, FALSE); + if (init_read_record(&read_record_info, new_thd, table, NULL, 1, 0, FALSE)) + { + sql_print_error("Could not initialize init_read_record; Plugins not " + "loaded"); + goto end; + } table->use_all_columns(); /* there're no other threads running yet, so we don't need a mutex. diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 8df5e4f697f..024edf01e42 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -11069,7 +11069,8 @@ create_internal_tmp_table_from_heap2(THD *thd, TABLE *table, if (table->file->indexes_are_disabled()) new_table.file->ha_disable_indexes(HA_KEY_SWITCH_ALL); table->file->ha_index_or_rnd_end(); - table->file->ha_rnd_init(1); + if (table->file->ha_rnd_init_with_error(1)) + DBUG_RETURN(1); if (table->no_rows) { new_table.file->extra(HA_EXTRA_NO_ROWS); @@ -12322,7 +12323,7 @@ int rr_sequential(READ_RECORD *info); int init_read_record_seq(JOIN_TAB *tab) { tab->read_record.read_record= rr_sequential; - if (tab->read_record.file->ha_rnd_init(1)) + if (tab->read_record.file->ha_rnd_init_with_error(1)) return 1; return (*tab->read_record.read_record)(&tab->read_record); } @@ -12342,8 +12343,9 @@ join_init_read_record(JOIN_TAB *tab) { if (tab->select && tab->select->quick && tab->select->quick->reset()) return 1; - init_read_record(&tab->read_record, tab->join->thd, tab->table, - tab->select,1,1, FALSE); + if (init_read_record(&tab->read_record, tab->join->thd, tab->table, + tab->select,1,1, FALSE)) + return 1; return (*tab->read_record.read_record)(&tab->read_record); } @@ -14264,7 +14266,9 @@ static int remove_dup_with_compare(THD *thd, TABLE *table, Field **first_field, org_record=(char*) (record=table->record[0])+offset; new_record=(char*) table->record[1]+offset; - file->ha_rnd_init(1); + if (file->ha_rnd_init_with_error(1)) + DBUG_RETURN(1); + error= file->ha_rnd_next(record); for (;;) { @@ -14393,7 +14397,9 @@ static int remove_dup_with_hash_index(THD *thd, TABLE *table, DBUG_RETURN(1); } - file->ha_rnd_init(1); + if ((error= file->ha_rnd_init(1))) + goto err; + key_pos=key_buffer; for (;;) { diff --git a/sql/sql_servers.cc b/sql/sql_servers.cc index b88320ed2bf..ba4dbaacbb9 100644 --- a/sql/sql_servers.cc +++ b/sql/sql_servers.cc @@ -182,8 +182,9 @@ static bool servers_load(THD *thd, TABLE_LIST *tables) free_root(&mem, MYF(0)); init_alloc_root(&mem, ACL_ALLOC_BLOCK_SIZE, 0); - init_read_record(&read_record_info,thd,table=tables[0].table,NULL,1,0, - FALSE); + if (init_read_record(&read_record_info,thd,table=tables[0].table,NULL,1,0, + FALSE)) + DBUG_RETURN(1); while (!(read_record_info.read_record(&read_record_info))) { /* return_val is already TRUE, so no need to set */ diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 624aab93e33..3ad574a7978 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -7877,7 +7877,8 @@ copy_data_between_tables(TABLE *from,TABLE *to, /* Tell handler that we have values for all columns in the to table */ to->use_all_columns(); to->mark_virtual_columns_for_write(); - init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1, 1, FALSE); + if (init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1, 1, FALSE)) + goto err; errpos= 4; if (ignore) to->file->extra(HA_EXTRA_IGNORE_DUP_KEY); diff --git a/sql/sql_udf.cc b/sql/sql_udf.cc index b18f0c28bdf..7aa7571d5ee 100644 --- a/sql/sql_udf.cc +++ b/sql/sql_udf.cc @@ -152,7 +152,13 @@ void udf_init() } table= tables.table; - init_read_record(&read_record_info, new_thd, table, NULL,1,0,FALSE); + if (init_read_record(&read_record_info, new_thd, table, NULL,1,0,FALSE)) + { + sql_print_error("Could not initialize init_read_record; udf's not " + "loaded"); + goto end; + } + table->use_all_columns(); while (!(error= read_record_info.read_record(&read_record_info))) { diff --git a/sql/sql_update.cc b/sql/sql_update.cc index e260310206a..61e93e7c5b1 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -459,7 +459,10 @@ int mysql_update(THD *thd, */ if (used_index == MAX_KEY || (select && select->quick)) - init_read_record(&info, thd, table, select, 0, 1, FALSE); + { + if (init_read_record(&info, thd, table, select, 0, 1, FALSE)) + goto err; + } else init_read_record_idx(&info, thd, table, 1, used_index); @@ -527,7 +530,8 @@ int mysql_update(THD *thd, if (select && select->quick && select->quick->reset()) goto err; table->file->try_semi_consistent_read(1); - init_read_record(&info, thd, table, select, 0, 1, FALSE); + if (init_read_record(&info, thd, table, select, 0, 1, FALSE)) + goto err; updated= found= 0; /* @@ -1954,7 +1958,7 @@ int multi_update::do_updates() TABLE_LIST *cur_table; int local_error= 0; ha_rows org_updated; - TABLE *table, *tmp_table; + TABLE *table, *tmp_table, *err_table; List_iterator_fast check_opt_it(unupdated_check_opt_tables); DBUG_ENTER("multi_update::do_updates"); @@ -1972,14 +1976,21 @@ int multi_update::do_updates() org_updated= updated; tmp_table= tmp_tables[cur_table->shared]; tmp_table->file->extra(HA_EXTRA_CACHE); // Change to read cache - (void) table->file->ha_rnd_init(0); + if ((local_error= table->file->ha_rnd_init(0))) + { + err_table= table; + goto err; + } table->file->extra(HA_EXTRA_NO_CACHE); check_opt_it.rewind(); while(TABLE *tbl= check_opt_it++) { - if (tbl->file->ha_rnd_init(1)) + if ((local_error= tbl->file->ha_rnd_init(1))) + { + err_table= tbl; goto err; + } tbl->file->extra(HA_EXTRA_CACHE); } @@ -1997,8 +2008,11 @@ int multi_update::do_updates() } copy_field_end=copy_field_ptr; - if ((local_error = tmp_table->file->ha_rnd_init(1))) + if ((local_error= tmp_table->file->ha_rnd_init(1))) + { + err_table= tmp_table; goto err; + } can_compare_record= (!(table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ) || @@ -2008,13 +2022,17 @@ int multi_update::do_updates() for (;;) { if (thd->killed && trans_safe) - goto err; + { + thd->fatal_error(); + goto err2; + } if ((local_error= tmp_table->file->ha_rnd_next(tmp_table->record[0]))) { if (local_error == HA_ERR_END_OF_FILE) break; if (local_error == HA_ERR_RECORD_DELETED) continue; // May happen on dup key + err_table= tmp_table; goto err; } @@ -2027,7 +2045,10 @@ int multi_update::do_updates() if ((local_error= tbl->file->ha_rnd_pos(tbl->record[0], (uchar*) tmp_table->field[field_num]->ptr))) + { + err_table= tbl; goto err; + } field_num++; } while ((tbl= check_opt_it++)); @@ -2054,7 +2075,10 @@ int multi_update::do_updates() if (error == VIEW_CHECK_SKIP) continue; else if (error == VIEW_CHECK_ERROR) - goto err; + { + thd->fatal_error(); + goto err2; + } } if ((local_error=table->file->ha_update_row(table->record[1], table->record[0])) && @@ -2062,7 +2086,10 @@ int multi_update::do_updates() { if (!ignore || table->file->is_fatal_error(local_error, HA_CHECK_DUP_KEY)) + { + err_table= table; goto err; + } } if (local_error != HA_ERR_RECORD_IS_THE_SAME) updated++; diff --git a/storage/example/ha_example.cc b/storage/example/ha_example.cc index 5059c729ae9..6b9725dfde4 100644 --- a/storage/example/ha_example.cc +++ b/storage/example/ha_example.cc @@ -588,7 +588,7 @@ int ha_example::index_last(uchar *buf) int ha_example::rnd_init(bool scan) { DBUG_ENTER("ha_example::rnd_init"); - DBUG_RETURN(HA_ERR_WRONG_COMMAND); + DBUG_RETURN(0); } int ha_example::rnd_end() diff --git a/storage/ibmdb2i/ha_ibmdb2i.cc b/storage/ibmdb2i/ha_ibmdb2i.cc index c007cbaf3e3..f77927421d2 100644 --- a/storage/ibmdb2i/ha_ibmdb2i.cc +++ b/storage/ibmdb2i/ha_ibmdb2i.cc @@ -1158,9 +1158,7 @@ int ha_ibmdb2i::rnd_init(bool scan) rrnAssocHandle= 0; - DBUG_RETURN(0); // MySQL sometimes does not check the return code, causing - // an assert in ha_rnd_end later on if we return a non-zero - // value here. + DBUG_RETURN(0); } int ha_ibmdb2i::rnd_end() From 452860dfdead7f47b0312598db95ea09201e9d4e Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Sat, 17 Jul 2010 11:16:16 -0700 Subject: [PATCH 302/461] Fixed bug #604503. If the expression for a virtual column of table contained datetime comparison then the execution of the second query that used this virtual column caused a crash. It happened because the execution of the first query that used this virtual column inserted a cached item into the expression tree. The cached tree was allocated in the statement memory while the expression tree was allocated in the table memory. Now the cached items that are inserted into expressions for virtual columns with datetime comparisons are always allocated in the same mem_root as the expressions for virtual columns. So now the inserted cached items are valid for any queries that use these virtual columns. --- mysql-test/suite/vcol/r/vcol_misc.result | 25 +++++++++++++++++ mysql-test/suite/vcol/t/vcol_misc.test | 22 +++++++++++++++ sql/field.h | 11 +------- sql/filesort.cc | 4 +-- sql/item_cmpfunc.cc | 16 ++++++++++- sql/mysql_priv.h | 2 +- sql/records.cc | 4 +-- sql/sql_base.cc | 8 +++--- sql/sql_class.cc | 2 ++ sql/sql_class.h | 21 +++++++++++++++ sql/sql_delete.cc | 2 +- sql/sql_handler.cc | 2 +- sql/sql_select.cc | 8 +++--- sql/sql_table.cc | 4 +-- sql/sql_update.cc | 4 +-- sql/table.cc | 34 +++++++++++++++--------- sql/table.h | 9 +++++++ 17 files changed, 136 insertions(+), 42 deletions(-) diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result index fe41e7e65f3..3c461a2e308 100644 --- a/mysql-test/suite/vcol/r/vcol_misc.result +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -45,3 +45,28 @@ C 1 1 DROP TABLE t1; +CREATE TABLE t1 ( +a datetime NOT NULL DEFAULT '2000-01-01', +v boolean AS (a < '2001-01-01') +); +INSERT INTO t1(a) VALUES ('2002-02-15'); +INSERT INTO t1(a) VALUES ('2000-10-15'); +SELECT a, v FROM t1; +a v +2002-02-15 00:00:00 0 +2000-10-15 00:00:00 1 +SELECT a, v FROM t1; +a v +2002-02-15 00:00:00 0 +2000-10-15 00:00:00 1 +CREATE TABLE t2 ( +a datetime NOT NULL DEFAULT '2000-01-01', +v boolean AS (a < '2001-01-01') PERSISTENT +); +INSERT INTO t2(a) VALUES ('2002-02-15'); +INSERT INTO t2(a) VALUES ('2000-10-15'); +SELECT * FROM t2; +a v +2002-02-15 00:00:00 0 +2000-10-15 00:00:00 1 +DROP TABLE t1, t2; diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index 2ed08a69fa2..20ae15dcd9c 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -43,5 +43,27 @@ SELECT 1 AS C FROM t1 ORDER BY v; DROP TABLE t1; +# +# Bug#604503: Virtual column expression with datetime comparison +# +CREATE TABLE t1 ( + a datetime NOT NULL DEFAULT '2000-01-01', + v boolean AS (a < '2001-01-01') +); +INSERT INTO t1(a) VALUES ('2002-02-15'); +INSERT INTO t1(a) VALUES ('2000-10-15'); +SELECT a, v FROM t1; +SELECT a, v FROM t1; + +CREATE TABLE t2 ( + a datetime NOT NULL DEFAULT '2000-01-01', + v boolean AS (a < '2001-01-01') PERSISTENT +); +INSERT INTO t2(a) VALUES ('2002-02-15'); +INSERT INTO t2(a) VALUES ('2000-10-15'); + +SELECT * FROM t2; + +DROP TABLE t1, t2; diff --git a/sql/field.h b/sql/field.h index 9b31cbc7b70..53cfb982e32 100644 --- a/sql/field.h +++ b/sql/field.h @@ -73,20 +73,11 @@ public: Item *expr_item; /* Text representation of the defining expression */ LEX_STRING expr_str; - /* - The list of items created when the defining expression for the virtual - column is being parsed and validated. These items are freed in the closefrm - function when the table containing this virtual column is removed from - the TABLE cache. - TODO. Items for all different virtual columns of a table should be put into - one list attached to the TABLE structure. - */ - Item *item_free_list; Virtual_column_info() : field_type((enum enum_field_types)MYSQL_TYPE_VIRTUAL), stored_in_db(FALSE), in_partitioning_expr(FALSE), - expr_item(NULL), item_free_list(NULL) + expr_item(NULL) { expr_str.str= NULL; expr_str.length= 0; diff --git a/sql/filesort.cc b/sql/filesort.cc index 270f0f1ac37..0997eeca4d7 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -568,7 +568,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select, if ((error= select->quick->get_next())) break; if (!error) - update_virtual_fields(sort_form); + update_virtual_fields(thd, sort_form); file->position(sort_form->record[0]); DBUG_EXECUTE_IF("debug_filesort", dbug_print_record(sort_form, TRUE);); } @@ -587,7 +587,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select, { error=file->ha_rnd_next(sort_form->record[0]); if (!error) - update_virtual_fields(sort_form); + update_virtual_fields(thd, sort_form); if (!flag) { my_store_ptr(ref_pos,ref_length,record); // Position to row diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 01eb1ca506a..43958b31212 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -825,7 +825,6 @@ Arg_comparator::can_compare_as_dates(Item *a, Item *b, ulonglong *const_value) return cmp_type; } - /* Retrieves correct TIME value from the given item. @@ -876,7 +875,12 @@ get_time_value(THD *thd, Item ***item_arg, Item **cache_arg, if (item->const_item() && cache_arg && (item->type() != Item::FUNC_ITEM || ((Item_func*)item)->functype() != Item_func::GUSERVAR_FUNC)) { + Query_arena backup; + Query_arena *save_arena= thd->switch_to_arena_for_cached_items(&backup); Item_cache_int *cache= new Item_cache_int(); + if (save_arena) + thd->set_query_arena(save_arena); + /* Mark the cache as non-const to prevent re-caching. */ cache->set_used_tables(1); cache->store_longlong(item, value); @@ -912,7 +916,12 @@ int Arg_comparator::set_cmp_func(Item_result_field *owner_arg, cache_converted_constant can't be used here because it can't correctly convert a DATETIME value from string to int representation. */ + Query_arena backup; + Query_arena *save_arena= thd->switch_to_arena_for_cached_items(&backup); Item_cache_int *cache= new Item_cache_int(); + if (save_arena) + thd->set_query_arena(save_arena); + /* Mark the cache as non-const to prevent re-caching. */ cache->set_used_tables(1); if (!(*a)->is_datetime()) @@ -1142,7 +1151,12 @@ get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg, if (item->const_item() && cache_arg && (item->type() != Item::FUNC_ITEM || ((Item_func*)item)->functype() != Item_func::GUSERVAR_FUNC)) { + Query_arena backup; + Query_arena *save_arena= thd->switch_to_arena_for_cached_items(&backup); Item_cache_int *cache= new Item_cache_int(MYSQL_TYPE_DATETIME); + if (save_arena) + thd->set_query_arena(save_arena); + /* Mark the cache as non-const to prevent re-caching. */ cache->set_used_tables(1); cache->store_longlong(item, value); diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 299222e4c95..4eb7f651ec6 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1365,7 +1365,7 @@ find_field_in_table(THD *thd, TABLE *table, const char *name, uint length, bool allow_rowid, uint *cached_field_index_ptr); Field * find_field_in_table_sef(TABLE *table, const char *name); -int update_virtual_fields(TABLE *table, bool ignore_stored= FALSE); +int update_virtual_fields(THD *thd, TABLE *table, bool ignore_stored= FALSE); #endif /* MYSQL_SERVER */ diff --git a/sql/records.cc b/sql/records.cc index e2a1ea9b4af..b4552a3c450 100644 --- a/sql/records.cc +++ b/sql/records.cc @@ -327,7 +327,7 @@ static int rr_quick(READ_RECORD *info) break; } } - update_virtual_fields(info->table); + update_virtual_fields(info->thd, info->table); return tmp; } @@ -396,7 +396,7 @@ int rr_sequential(READ_RECORD *info) } } if (!tmp) - update_virtual_fields(info->table); + update_virtual_fields(info->thd, info->table); return tmp; } diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 8baff521c02..e4c7df6131e 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -8252,7 +8252,7 @@ fill_record(THD * thd, List &fields, List &values, prev_table= table; if (table->vfield) { - if (update_virtual_fields(table, TRUE)) + if (update_virtual_fields(thd, table, TRUE)) { goto err; } @@ -8320,7 +8320,7 @@ fill_record_n_invoke_before_triggers(THD *thd, List &fields, if (item_field && item_field->field && (table= item_field->field->table) && table->vfield) - result= update_virtual_fields(table, TRUE); + result= update_virtual_fields(thd, table, TRUE); } } return result; @@ -8411,7 +8411,7 @@ fill_record(THD *thd, Field **ptr, List &values, bool ignore_errors) prev_table= table; if (table->vfield) { - if (update_virtual_fields(table, TRUE)) + if (update_virtual_fields(thd, table, TRUE)) { goto err; } @@ -8471,7 +8471,7 @@ fill_record_n_invoke_before_triggers(THD *thd, Field **ptr, { TABLE *table= (*ptr)->table; if (table->vfield) - result= update_virtual_fields(table, TRUE); + result= update_virtual_fields(thd, table, TRUE); } return result; diff --git a/sql/sql_class.cc b/sql/sql_class.cc index bae42ad85bd..a6d783bf6f4 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -802,6 +802,8 @@ THD::THD() thr_lock_owner_init(&main_lock_id, &lock_info); m_internal_handler= NULL; + + arena_for_cached_items= 0; } diff --git a/sql/sql_class.h b/sql/sql_class.h index e9129983240..3680e28246e 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -2379,6 +2379,27 @@ public: Protected with LOCK_thd_data mutex. */ void set_query(char *query_arg, uint32 query_length_arg); + +private: + /* + This reference points to the table arena when the expression + for a virtual column is being evaluated + */ + Query_arena *arena_for_cached_items; + +public: + void reset_arena_for_cached_items(Query_arena *new_arena) + { + arena_for_cached_items= new_arena; + } + Query_arena *switch_to_arena_for_cached_items(Query_arena *backup) + { + if (!arena_for_cached_items) + return 0; + set_n_backup_active_arena(arena_for_cached_items, backup); + return backup; + } + private: /** The current internal error handler for this thread, or NULL. */ Internal_error_handler *m_internal_handler; diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index eb05077f17a..8a016295eaa 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -304,7 +304,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, while (!(error=info.read_record(&info)) && !thd->killed && ! thd->is_error()) { - update_virtual_fields(table); + update_virtual_fields(thd, table); // thd->is_error() is tested to disallow delete row on error if (!select || select->skip_record(thd) > 0) { diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index 2f3ce99ab9c..61f29886da8 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -664,7 +664,7 @@ retry: goto ok; } /* Generate values for virtual fields */ - update_virtual_fields(table); + update_virtual_fields(thd, table); if (cond && !cond->val_int()) continue; if (num_rows >= offset_limit_cnt) diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 8df5e4f697f..9912fa9a4e2 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -11628,7 +11628,7 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab, } DBUG_PRINT("info", ("select cond 0x%lx", (ulong)select_cond)); - update_virtual_fields(join_tab->table); + update_virtual_fields(join->thd, join_tab->table); if (select_cond) { @@ -11850,7 +11850,7 @@ flush_cached_records(JOIN *join,JOIN_TAB *join_tab,bool skip_last) int err= 0; SQL_SELECT *select=join_tab->select; if (rc == NESTED_LOOP_OK) - update_virtual_fields(join_tab->table); + update_virtual_fields(join->thd, join_tab->table); if (rc == NESTED_LOOP_OK && (!join_tab->cache.select || (err= join_tab->cache.select->skip_record(join->thd)) != 0 )) @@ -12038,7 +12038,7 @@ join_read_system(JOIN_TAB *tab) empty_record(table); // Make empty record return -1; } - update_virtual_fields(table); + update_virtual_fields(tab->join->thd, table); store_record(table,record[1]); } else if (!table->status) // Only happens with left join @@ -12087,7 +12087,7 @@ join_read_const(JOIN_TAB *tab) return report_error(table, error); return -1; } - update_virtual_fields(table); + update_virtual_fields(tab->join->thd, table); store_record(table,record[1]); } else if (!(table->status & ~STATUS_NULL_ROW)) // Only happens with left join diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 624aab93e33..1d1233786ed 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -7891,7 +7891,7 @@ copy_data_between_tables(TABLE *from,TABLE *to, error= 1; break; } - update_virtual_fields(from); + update_virtual_fields(thd, from); thd->row_count++; /* Return error if source table isn't empty. */ if (error_if_not_empty) @@ -7912,7 +7912,7 @@ copy_data_between_tables(TABLE *from,TABLE *to, copy_ptr->do_copy(copy_ptr); } prev_insert_id= to->file->next_insert_id; - update_virtual_fields(to, TRUE); + update_virtual_fields(thd, to, TRUE); if (thd->is_error()) { error= 1; diff --git a/sql/sql_update.cc b/sql/sql_update.cc index e260310206a..4e2b1411f32 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -469,7 +469,7 @@ int mysql_update(THD *thd, while (!(error=info.read_record(&info)) && !thd->killed && !thd->is_error()) { - update_virtual_fields(table); + update_virtual_fields(thd, table); if (!select || select->skip_record(thd) > 0) { if (table->file->was_semi_consistent_read()) @@ -576,7 +576,7 @@ int mysql_update(THD *thd, while (!(error=info.read_record(&info)) && !thd->killed) { - update_virtual_fields(table); + update_virtual_fields(thd, table); if (!select || select->skip_record(thd) > 0) { if (table->file->was_semi_consistent_read()) diff --git a/sql/table.cc b/sql/table.cc index 451515c1262..334596e28b2 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1928,10 +1928,8 @@ end: parses it, building an item object for it. The pointer to this item is placed into in field->vcol_info.expr_item. After this the function performs semantic analysis of the item by calling the the function fix_vcol_expr. - Since the defining expression is part of the table definition the item - for it is created in table->memroot within a separate Query_arena. - The free_list of this arena is saved in field->vcol_info.item_free_list - to be freed when the table defition is removed from the TABLE_SHARE cache. + Since the defining expression is part of the table definition the item for + it is created in table->memroot within the special arena TABLE::expr_arena. @note Before passing 'vcol_expr" to the parser the function embraces it in @@ -1988,9 +1986,18 @@ bool unpack_vcol_info_from_frm(THD *thd, */ Query_arena *backup_stmt_arena_ptr= thd->stmt_arena; Query_arena backup_arena; - Query_arena vcol_arena(&table->mem_root, Query_arena::INITIALIZED); - thd->set_n_backup_active_arena(&vcol_arena, &backup_arena); - thd->stmt_arena= &vcol_arena; + Query_arena *vcol_arena= table->expr_arena; + if (!vcol_arena) + { + Query_arena expr_arena(&table->mem_root, Query_arena::INITIALIZED); + if (!(vcol_arena= (Query_arena *) alloc_root(&table->mem_root, + sizeof(Query_arena)))) + goto err; + *vcol_arena= expr_arena; + table->expr_arena= vcol_arena; + } + thd->set_n_backup_active_arena(vcol_arena, &backup_arena); + thd->stmt_arena= vcol_arena; thd->lex->parse_vcol_expr= TRUE; old_character_set_client= thd->variables.character_set_client; @@ -2012,7 +2019,6 @@ bool unpack_vcol_info_from_frm(THD *thd, field->vcol_info= 0; goto err; } - field->vcol_info->item_free_list= thd->free_list; goto end; err: @@ -2021,7 +2027,8 @@ err: thd->free_items(); end: thd->stmt_arena= backup_stmt_arena_ptr; - thd->restore_active_arena(&vcol_arena, &backup_arena); + if (vcol_arena) + thd->restore_active_arena(vcol_arena, &backup_arena); thd->variables.character_set_client= old_character_set_client; DBUG_RETURN(rc); @@ -2444,12 +2451,12 @@ int closefrm(register TABLE *table, bool free_share) } my_free((char*) table->alias, MYF(MY_ALLOW_ZERO_PTR)); table->alias= 0; + if (table->expr_arena) + table->expr_arena->free_items(); if (table->field) { for (Field **ptr=table->field ; *ptr ; ptr++) { - if ((*ptr)->vcol_info) - free_items((*ptr)->vcol_info->item_free_list); delete *ptr; } table->field= 0; @@ -5416,6 +5423,7 @@ size_t max_row_length(TABLE *table, const uchar *data) /* @brief Compute values for virtual columns used in query + @param thd Thread handle @param table The TABLE object @param for_write Requests to compute only fields needed for write @@ -5432,7 +5440,7 @@ size_t max_row_length(TABLE *table, const uchar *data) >0 Error occurred when storing a virtual field value */ -int update_virtual_fields(TABLE *table, bool for_write) +int update_virtual_fields(THD *thd, TABLE *table, bool for_write) { DBUG_ENTER("update_virtual_fields"); Field **vfield_ptr, *vfield; @@ -5440,6 +5448,7 @@ int update_virtual_fields(TABLE *table, bool for_write) if (!table || !table->vfield) DBUG_RETURN(0); + thd->reset_arena_for_cached_items(table->expr_arena); /* Iterate over virtual fields in the table */ for (vfield_ptr= table->vfield; *vfield_ptr; vfield_ptr++) { @@ -5458,6 +5467,7 @@ int update_virtual_fields(TABLE *table, bool for_write) DBUG_PRINT("info", ("field '%s' - skipped", vfield->field_name)); } } + thd->reset_arena_for_cached_items(0); DBUG_RETURN(0); } diff --git a/sql/table.h b/sql/table.h index 1424414ade8..f968a3ee173 100644 --- a/sql/table.h +++ b/sql/table.h @@ -27,6 +27,7 @@ class st_select_lex; class partition_info; class COND_EQUAL; class Security_context; +class Query_arena; /*************************************************************************/ @@ -869,6 +870,14 @@ struct st_table { MEM_ROOT mem_root; GRANT_INFO grant; FILESORT_INFO sort; + /* + The arena which the items for expressions from the table definition + are associated with. + Currently only the items of the expressions for virtual columns are + associated with this arena. + TODO: To attach the partitioning expressions to this arena. + */ + Query_arena *expr_arena; #ifdef WITH_PARTITION_STORAGE_ENGINE partition_info *part_info; /* Partition related information */ bool no_partitions_used; /* If true, all partitions have been pruned away */ From 85e5ce0ba06b6a79e4bd7521ab0e44c1e63a3e77 Mon Sep 17 00:00:00 2001 From: Jon Olav Hauglid Date: Mon, 19 Jul 2010 11:03:52 +0200 Subject: [PATCH 303/461] Bug #54734 assert in Diagnostics_area::set_ok_status This assert checks that the server does not try to send OK to the client if there has been some error during processing. This is done to make sure that the error is in fact sent to the client. The problem was that view errors during processing of WHERE conditions in UPDATE statements where not detected by the update code. It therefore tried to send OK to the client, triggering the assert. The bug was only noticeable in debug builds. This patch fixes the problem by making sure that the update code checks for errors during condition processing and acts accordingly. --- mysql-test/r/update.result | 14 ++++++++++++++ mysql-test/t/update.test | 20 ++++++++++++++++++++ sql/filesort.cc | 4 +++- sql/opt_range.h | 6 +++++- sql/sql_delete.cc | 3 ++- sql/sql_select.cc | 32 ++++++++++++-------------------- sql/sql_update.cc | 12 ++++++++++-- 7 files changed, 66 insertions(+), 25 deletions(-) diff --git a/mysql-test/r/update.result b/mysql-test/r/update.result index 006eaba4e69..63baf639487 100644 --- a/mysql-test/r/update.result +++ b/mysql-test/r/update.result @@ -527,3 +527,17 @@ ERROR HY000: You are using safe update mode and you tried to update a table with SET SESSION sql_safe_updates = DEFAULT; DROP TABLE t1; DROP VIEW v1; +# +# Bug#54734 assert in Diagnostics_area::set_ok_status +# +DROP TABLE IF EXISTS t1, not_exists; +DROP FUNCTION IF EXISTS f1; +DROP VIEW IF EXISTS v1; +CREATE TABLE t1 (PRIMARY KEY(pk)) AS SELECT 1 AS pk; +CREATE FUNCTION f1() RETURNS INTEGER RETURN (SELECT 1 FROM not_exists); +CREATE VIEW v1 AS SELECT pk FROM t1 WHERE f1() = 13; +UPDATE v1 SET pk = 7 WHERE pk > 0; +ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them +DROP VIEW v1; +DROP FUNCTION f1; +DROP TABLE t1; diff --git a/mysql-test/t/update.test b/mysql-test/t/update.test index f6708828a6b..c515f8873d8 100644 --- a/mysql-test/t/update.test +++ b/mysql-test/t/update.test @@ -483,3 +483,23 @@ UPDATE IGNORE v1 SET a = 1; SET SESSION sql_safe_updates = DEFAULT; DROP TABLE t1; DROP VIEW v1; + +--echo # +--echo # Bug#54734 assert in Diagnostics_area::set_ok_status +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1, not_exists; +DROP FUNCTION IF EXISTS f1; +DROP VIEW IF EXISTS v1; +--enable_warnings + +CREATE TABLE t1 (PRIMARY KEY(pk)) AS SELECT 1 AS pk; +CREATE FUNCTION f1() RETURNS INTEGER RETURN (SELECT 1 FROM not_exists); +CREATE VIEW v1 AS SELECT pk FROM t1 WHERE f1() = 13; +--error ER_VIEW_INVALID +UPDATE v1 SET pk = 7 WHERE pk > 0; + +DROP VIEW v1; +DROP FUNCTION f1; +DROP TABLE t1; diff --git a/sql/filesort.cc b/sql/filesort.cc index 7b584b39516..021cbdd2aad 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -514,6 +514,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select, volatile THD::killed_state *killed= &thd->killed; handler *file; MY_BITMAP *save_read_set, *save_write_set; + bool skip_record; DBUG_ENTER("find_all_keys"); DBUG_PRINT("info",("using: %s", (select ? select->quick ? "ranges" : "where": @@ -606,7 +607,8 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select, } if (error == 0) param->examined_rows++; - if (error == 0 && (!select || select->skip_record() == 0)) + if (!error && (!select || + (!select->skip_record(thd, &skip_record) && !skip_record))) { if (idx == param->keys) { diff --git a/sql/opt_range.h b/sql/opt_range.h index edae1e4114a..c6e488cf14c 100644 --- a/sql/opt_range.h +++ b/sql/opt_range.h @@ -788,7 +788,11 @@ class SQL_SELECT :public Sql_alloc { tmp.set_all(); return test_quick_select(thd, tmp, 0, limit, force_quick_range) < 0; } - inline bool skip_record() { return cond ? cond->val_int() == 0 : 0; } + inline bool skip_record(THD *thd, bool *skip_record) + { + *skip_record= cond ? cond->val_int() == FALSE : FALSE; + return thd->is_error(); + } int test_quick_select(THD *thd, key_map keys, table_map prev_tables, ha_rows limit, bool force_quick_range); }; diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index eb0fd4b5332..6a87eb4e572 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -51,6 +51,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, THD::killed_state killed_status= THD::NOT_KILLED; DBUG_ENTER("mysql_delete"); bool save_binlog_row_based; + bool skip_record; THD::enum_binlog_query_type query_type= thd->lex->sql_command == SQLCOM_TRUNCATE ? @@ -307,7 +308,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, { thd->examined_row_count++; // thd->is_error() is tested to disallow delete row on error - if (!(select && select->skip_record())&& ! thd->is_error() ) + if (!select || (!select->skip_record(thd, &skip_record) && !skip_record)) { if (triggers_applicable && diff --git a/sql/sql_select.cc b/sql/sql_select.cc index fe391b50bb9..2fc287bbe66 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -11657,38 +11657,30 @@ flush_cached_records(JOIN *join,JOIN_TAB *join_tab,bool skip_last) SQL_SELECT *select=join_tab->select; if (rc == NESTED_LOOP_OK) { - bool consider_record= !join_tab->cache.select || - !join_tab->cache.select->skip_record(); - - /* - Check for error: skip_record() can execute code by calling - Item_subselect::val_*. We need to check for errors (if any) - after such call. - */ - if (join->thd->is_error()) + bool skip_record= FALSE; + if (join_tab->cache.select && + join_tab->cache.select->skip_record(join->thd, &skip_record)) { reset_cache_write(&join_tab->cache); return NESTED_LOOP_ERROR; } - if (consider_record) + if (!skip_record) { uint i; reset_cache_read(&join_tab->cache); for (i=(join_tab->cache.records- (skip_last ? 1 : 0)) ; i-- > 0 ;) { read_cached_record(join_tab); - if (!select || !select->skip_record()) + skip_record= FALSE; + if (select && select->skip_record(join->thd, &skip_record)) { - /* - Check for error: skip_record() can execute code by calling - Item_subselect::val_*. We need to check for errors (if any) - after such call. - */ - if (join->thd->is_error()) - rc= NESTED_LOOP_ERROR; - else - rc= (join_tab->next_select)(join,join_tab+1,0); + reset_cache_write(&join_tab->cache); + return NESTED_LOOP_ERROR; + } + if (!skip_record) + { + rc= (join_tab->next_select)(join,join_tab+1,0); if (rc != NESTED_LOOP_OK && rc != NESTED_LOOP_NO_MORE_ROWS) { reset_cache_write(&join_tab->cache); diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 3cdbb97b90b..17fac877fbc 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -473,7 +473,14 @@ int mysql_update(THD *thd, while (!(error=info.read_record(&info)) && !thd->killed) { thd->examined_row_count++; - if (!(select && select->skip_record())) + bool skip_record= FALSE; + if (select && select->skip_record(thd, &skip_record)) + { + error= 1; + table->file->unlock_row(); + break; + } + if (!skip_record) { if (table->file->was_semi_consistent_read()) continue; /* repeat the read of the same row if it still exists */ @@ -580,7 +587,8 @@ int mysql_update(THD *thd, while (!(error=info.read_record(&info)) && !thd->killed) { thd->examined_row_count++; - if (!(select && select->skip_record())) + bool skip_record; + if (!select || (!select->skip_record(thd, &skip_record) && !skip_record)) { if (table->file->was_semi_consistent_read()) continue; /* repeat the read of the same row if it still exists */ From d79e6c2e4594dc506d4d30cdc53545321b475ada Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Mon, 19 Jul 2010 17:47:17 +0300 Subject: [PATCH 304/461] fix tree names --- .bzr-mysql/default.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.bzr-mysql/default.conf b/.bzr-mysql/default.conf index 77df77c6021..f044f8e62da 100644 --- a/.bzr-mysql/default.conf +++ b/.bzr-mysql/default.conf @@ -1,4 +1,4 @@ [MYSQL] -post_commit_to = "dbg_mysql_security@sun.com" -post_push_to = "dbg_mysql_security@sun.com" -tree_name = "mysql-5.1-security" +post_commit_to = "commits@lists.mysql.com" +post_push_to = "commits@lists.mysql.com" +tree_name = "mysql-5.1" From ad18f1d6a2b7f4f0358f3b372529dcc19f9e90b3 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Mon, 19 Jul 2010 21:08:06 +0300 Subject: [PATCH 305/461] Changed usage statistics to use 64 bit ints instead of 32 for all relevant variables. Fixes LP#583314 user_statistics - INT overflow mysql-test/r/status_user.result: Update test results sql/sql_show.cc: Changed usage statistics to use 64 bit ints instead of 32 for all relevant variables. --- mysql-test/r/status_user.result | 88 ++++++++++++++++----------------- sql/sql_show.cc | 88 ++++++++++++++++----------------- 2 files changed, 88 insertions(+), 88 deletions(-) diff --git a/mysql-test/r/status_user.result b/mysql-test/r/status_user.result index a39f0819c58..636eeabfffc 100644 --- a/mysql-test/r/status_user.result +++ b/mysql-test/r/status_user.result @@ -3,66 +3,66 @@ select variable_value from information_schema.global_status where variable_name= show columns from information_schema.client_statistics; Field Type Null Key Default Extra CLIENT varchar(64) NO -TOTAL_CONNECTIONS int(21) NO 0 -CONCURRENT_CONNECTIONS int(21) NO 0 -CONNECTED_TIME int(21) NO 0 +TOTAL_CONNECTIONS bigint(21) NO 0 +CONCURRENT_CONNECTIONS bigint(21) NO 0 +CONNECTED_TIME bigint(21) NO 0 BUSY_TIME double NO 0 CPU_TIME double NO 0 -BYTES_RECEIVED int(21) NO 0 -BYTES_SENT int(21) NO 0 -BINLOG_BYTES_WRITTEN int(21) NO 0 -ROWS_READ int(21) NO 0 -ROWS_SENT int(21) NO 0 -ROWS_DELETED int(21) NO 0 -ROWS_INSERTED int(21) NO 0 -ROWS_UPDATED int(21) NO 0 -SELECT_COMMANDS int(21) NO 0 -UPDATE_COMMANDS int(21) NO 0 -OTHER_COMMANDS int(21) NO 0 -COMMIT_TRANSACTIONS int(21) NO 0 -ROLLBACK_TRANSACTIONS int(21) NO 0 -DENIED_CONNECTIONS int(21) NO 0 -LOST_CONNECTIONS int(21) NO 0 -ACCESS_DENIED int(21) NO 0 -EMPTY_QUERIES int(21) NO 0 +BYTES_RECEIVED bigint(21) NO 0 +BYTES_SENT bigint(21) NO 0 +BINLOG_BYTES_WRITTEN bigint(21) NO 0 +ROWS_READ bigint(21) NO 0 +ROWS_SENT bigint(21) NO 0 +ROWS_DELETED bigint(21) NO 0 +ROWS_INSERTED bigint(21) NO 0 +ROWS_UPDATED bigint(21) NO 0 +SELECT_COMMANDS bigint(21) NO 0 +UPDATE_COMMANDS bigint(21) NO 0 +OTHER_COMMANDS bigint(21) NO 0 +COMMIT_TRANSACTIONS bigint(21) NO 0 +ROLLBACK_TRANSACTIONS bigint(21) NO 0 +DENIED_CONNECTIONS bigint(21) NO 0 +LOST_CONNECTIONS bigint(21) NO 0 +ACCESS_DENIED bigint(21) NO 0 +EMPTY_QUERIES bigint(21) NO 0 show columns from information_schema.user_statistics; Field Type Null Key Default Extra USER varchar(48) NO -TOTAL_CONNECTIONS int(21) NO 0 -CONCURRENT_CONNECTIONS int(21) NO 0 -CONNECTED_TIME int(21) NO 0 +TOTAL_CONNECTIONS int(11) NO 0 +CONCURRENT_CONNECTIONS int(11) NO 0 +CONNECTED_TIME int(11) NO 0 BUSY_TIME double NO 0 CPU_TIME double NO 0 -BYTES_RECEIVED int(21) NO 0 -BYTES_SENT int(21) NO 0 -BINLOG_BYTES_WRITTEN int(21) NO 0 -ROWS_READ int(21) NO 0 -ROWS_SENT int(21) NO 0 -ROWS_DELETED int(21) NO 0 -ROWS_INSERTED int(21) NO 0 -ROWS_UPDATED int(21) NO 0 -SELECT_COMMANDS int(21) NO 0 -UPDATE_COMMANDS int(21) NO 0 -OTHER_COMMANDS int(21) NO 0 -COMMIT_TRANSACTIONS int(21) NO 0 -ROLLBACK_TRANSACTIONS int(21) NO 0 -DENIED_CONNECTIONS int(21) NO 0 -LOST_CONNECTIONS int(21) NO 0 -ACCESS_DENIED int(21) NO 0 -EMPTY_QUERIES int(21) NO 0 +BYTES_RECEIVED bigint(21) NO 0 +BYTES_SENT bigint(21) NO 0 +BINLOG_BYTES_WRITTEN bigint(21) NO 0 +ROWS_READ bigint(21) NO 0 +ROWS_SENT bigint(21) NO 0 +ROWS_DELETED bigint(21) NO 0 +ROWS_INSERTED bigint(21) NO 0 +ROWS_UPDATED bigint(21) NO 0 +SELECT_COMMANDS bigint(21) NO 0 +UPDATE_COMMANDS bigint(21) NO 0 +OTHER_COMMANDS bigint(21) NO 0 +COMMIT_TRANSACTIONS bigint(21) NO 0 +ROLLBACK_TRANSACTIONS bigint(21) NO 0 +DENIED_CONNECTIONS bigint(21) NO 0 +LOST_CONNECTIONS bigint(21) NO 0 +ACCESS_DENIED bigint(21) NO 0 +EMPTY_QUERIES bigint(21) NO 0 show columns from information_schema.index_statistics; Field Type Null Key Default Extra TABLE_SCHEMA varchar(192) NO TABLE_NAME varchar(192) NO INDEX_NAME varchar(192) NO -ROWS_READ int(21) NO 0 +ROWS_READ bigint(21) NO 0 show columns from information_schema.table_statistics; Field Type Null Key Default Extra TABLE_SCHEMA varchar(192) NO TABLE_NAME varchar(192) NO -ROWS_READ int(21) NO 0 -ROWS_CHANGED int(21) NO 0 -ROWS_CHANGED_X_INDEXES int(21) NO 0 +ROWS_READ bigint(21) NO 0 +ROWS_CHANGED bigint(21) NO 0 +ROWS_CHANGED_X_INDEXES bigint(21) NO 0 set @save_general_log=@@global.general_log; set @@global.general_log=0; set @@global.userstat=1; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 4ed5a6dfc13..b4c88d7f659 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -5992,56 +5992,56 @@ struct schema_table_ref ST_FIELD_INFO user_stats_fields_info[]= { {"USER", USERNAME_LENGTH, MYSQL_TYPE_STRING, 0, 0, "User", SKIP_OPEN_TABLE}, - {"TOTAL_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Total_connections",SKIP_OPEN_TABLE}, - {"CONCURRENT_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Concurrent_connections",SKIP_OPEN_TABLE}, - {"CONNECTED_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Connected_time",SKIP_OPEN_TABLE}, + {"TOTAL_CONNECTIONS", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Total_connections",SKIP_OPEN_TABLE}, + {"CONCURRENT_CONNECTIONS", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Concurrent_connections",SKIP_OPEN_TABLE}, + {"CONNECTED_TIME", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Connected_time",SKIP_OPEN_TABLE}, {"BUSY_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_DOUBLE, 0, 0, "Busy_time",SKIP_OPEN_TABLE}, {"CPU_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_DOUBLE, 0, 0, "Cpu_time",SKIP_OPEN_TABLE}, - {"BYTES_RECEIVED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Bytes_received",SKIP_OPEN_TABLE}, - {"BYTES_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Bytes_sent",SKIP_OPEN_TABLE}, - {"BINLOG_BYTES_WRITTEN", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Binlog_bytes_written",SKIP_OPEN_TABLE}, - {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE}, - {"ROWS_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_sent",SKIP_OPEN_TABLE}, - {"ROWS_DELETED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_deleted",SKIP_OPEN_TABLE}, - {"ROWS_INSERTED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_inserted",SKIP_OPEN_TABLE}, - {"ROWS_UPDATED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_updated",SKIP_OPEN_TABLE}, - {"SELECT_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Select_commands",SKIP_OPEN_TABLE}, - {"UPDATE_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Update_commands",SKIP_OPEN_TABLE}, - {"OTHER_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Other_commands",SKIP_OPEN_TABLE}, - {"COMMIT_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Commit_transactions",SKIP_OPEN_TABLE}, - {"ROLLBACK_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rollback_transactions",SKIP_OPEN_TABLE}, - {"DENIED_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Denied_connections",SKIP_OPEN_TABLE}, - {"LOST_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Lost_connections",SKIP_OPEN_TABLE}, - {"ACCESS_DENIED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Access_denied",SKIP_OPEN_TABLE}, - {"EMPTY_QUERIES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Empty_queries",SKIP_OPEN_TABLE}, + {"BYTES_RECEIVED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Bytes_received",SKIP_OPEN_TABLE}, + {"BYTES_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Bytes_sent",SKIP_OPEN_TABLE}, + {"BINLOG_BYTES_WRITTEN", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Binlog_bytes_written",SKIP_OPEN_TABLE}, + {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE}, + {"ROWS_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_sent",SKIP_OPEN_TABLE}, + {"ROWS_DELETED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_deleted",SKIP_OPEN_TABLE}, + {"ROWS_INSERTED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_inserted",SKIP_OPEN_TABLE}, + {"ROWS_UPDATED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_updated",SKIP_OPEN_TABLE}, + {"SELECT_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Select_commands",SKIP_OPEN_TABLE}, + {"UPDATE_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Update_commands",SKIP_OPEN_TABLE}, + {"OTHER_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Other_commands",SKIP_OPEN_TABLE}, + {"COMMIT_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Commit_transactions",SKIP_OPEN_TABLE}, + {"ROLLBACK_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rollback_transactions",SKIP_OPEN_TABLE}, + {"DENIED_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Denied_connections",SKIP_OPEN_TABLE}, + {"LOST_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Lost_connections",SKIP_OPEN_TABLE}, + {"ACCESS_DENIED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Access_denied",SKIP_OPEN_TABLE}, + {"EMPTY_QUERIES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Empty_queries",SKIP_OPEN_TABLE}, {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, 0} }; ST_FIELD_INFO client_stats_fields_info[]= { {"CLIENT", LIST_PROCESS_HOST_LEN, MYSQL_TYPE_STRING, 0, 0, "Client",SKIP_OPEN_TABLE}, - {"TOTAL_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Total_connections",SKIP_OPEN_TABLE}, - {"CONCURRENT_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Concurrent_connections",SKIP_OPEN_TABLE}, - {"CONNECTED_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Connected_time",SKIP_OPEN_TABLE}, + {"TOTAL_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Total_connections",SKIP_OPEN_TABLE}, + {"CONCURRENT_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Concurrent_connections",SKIP_OPEN_TABLE}, + {"CONNECTED_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Connected_time",SKIP_OPEN_TABLE}, {"BUSY_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_DOUBLE, 0, 0, "Busy_time",SKIP_OPEN_TABLE}, {"CPU_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_DOUBLE, 0, 0, "Cpu_time",SKIP_OPEN_TABLE}, - {"BYTES_RECEIVED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Bytes_received",SKIP_OPEN_TABLE}, - {"BYTES_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Bytes_sent",SKIP_OPEN_TABLE}, - {"BINLOG_BYTES_WRITTEN", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Binlog_bytes_written",SKIP_OPEN_TABLE}, - {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE}, - {"ROWS_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_sent",SKIP_OPEN_TABLE}, - {"ROWS_DELETED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_deleted",SKIP_OPEN_TABLE}, - {"ROWS_INSERTED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_inserted",SKIP_OPEN_TABLE}, - {"ROWS_UPDATED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_updated",SKIP_OPEN_TABLE}, - {"SELECT_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Select_commands",SKIP_OPEN_TABLE}, - {"UPDATE_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Update_commands",SKIP_OPEN_TABLE}, - {"OTHER_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Other_commands",SKIP_OPEN_TABLE}, - {"COMMIT_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Commit_transactions",SKIP_OPEN_TABLE}, - {"ROLLBACK_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rollback_transactions",SKIP_OPEN_TABLE}, - {"DENIED_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Denied_connections",SKIP_OPEN_TABLE}, - {"LOST_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Lost_connections",SKIP_OPEN_TABLE}, - {"ACCESS_DENIED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Access_denied",SKIP_OPEN_TABLE}, - {"EMPTY_QUERIES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Empty_queries",SKIP_OPEN_TABLE}, + {"BYTES_RECEIVED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Bytes_received",SKIP_OPEN_TABLE}, + {"BYTES_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Bytes_sent",SKIP_OPEN_TABLE}, + {"BINLOG_BYTES_WRITTEN", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Binlog_bytes_written",SKIP_OPEN_TABLE}, + {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE}, + {"ROWS_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_sent",SKIP_OPEN_TABLE}, + {"ROWS_DELETED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_deleted",SKIP_OPEN_TABLE}, + {"ROWS_INSERTED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_inserted",SKIP_OPEN_TABLE}, + {"ROWS_UPDATED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_updated",SKIP_OPEN_TABLE}, + {"SELECT_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Select_commands",SKIP_OPEN_TABLE}, + {"UPDATE_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Update_commands",SKIP_OPEN_TABLE}, + {"OTHER_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Other_commands",SKIP_OPEN_TABLE}, + {"COMMIT_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Commit_transactions",SKIP_OPEN_TABLE}, + {"ROLLBACK_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rollback_transactions",SKIP_OPEN_TABLE}, + {"DENIED_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Denied_connections",SKIP_OPEN_TABLE}, + {"LOST_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Lost_connections",SKIP_OPEN_TABLE}, + {"ACCESS_DENIED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Access_denied",SKIP_OPEN_TABLE}, + {"EMPTY_QUERIES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Empty_queries",SKIP_OPEN_TABLE}, {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, 0} }; @@ -6050,9 +6050,9 @@ ST_FIELD_INFO table_stats_fields_info[]= { {"TABLE_SCHEMA", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Table_schema",SKIP_OPEN_TABLE}, {"TABLE_NAME", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Table_name",SKIP_OPEN_TABLE}, - {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE}, - {"ROWS_CHANGED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_changed",SKIP_OPEN_TABLE}, - {"ROWS_CHANGED_X_INDEXES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_changed_x_#indexes",SKIP_OPEN_TABLE}, + {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE}, + {"ROWS_CHANGED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_changed",SKIP_OPEN_TABLE}, + {"ROWS_CHANGED_X_INDEXES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_changed_x_#indexes",SKIP_OPEN_TABLE}, {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, 0} }; @@ -6061,7 +6061,7 @@ ST_FIELD_INFO index_stats_fields_info[]= {"TABLE_SCHEMA", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Table_schema",SKIP_OPEN_TABLE}, {"TABLE_NAME", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Table_name",SKIP_OPEN_TABLE}, {"INDEX_NAME", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Index_name",SKIP_OPEN_TABLE}, - {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE}, + {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE}, {0, 0, MYSQL_TYPE_STRING, 0, 0, 0,0} }; From a35b48632363dbc13edf4ca6d694a630909cf92e Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Mon, 19 Jul 2010 21:53:28 +0300 Subject: [PATCH 306/461] Fixed compiler and valgrind warnings mysql-test/valgrind.supp: Added suppression for memory leak in dlsym() on work-amd64 plugin/auth/auth_socket.c: Fixed compiler warning (wrong macro usage) storage/example/ha_example.cc: Fixed compiler warnings storage/sphinx/ha_sphinx.cc: Fixed compiler warnings --- mysql-test/valgrind.supp | 9 +++++++++ plugin/auth/auth_socket.c | 2 +- sql/sql_acl.cc | 2 ++ storage/example/ha_example.cc | 5 ++++- storage/sphinx/ha_sphinx.cc | 34 +++++++++++++++++----------------- 5 files changed, 33 insertions(+), 19 deletions(-) diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp index 0abe78bc140..8ba27c44567 100644 --- a/mysql-test/valgrind.supp +++ b/mysql-test/valgrind.supp @@ -539,6 +539,15 @@ fun:_Unwind_ForcedUnwind } +{ + dlsym memory loss from plugin + Memcheck:Leak + fun:malloc + fun:_dl_signal_error + fun:_dl_signal_error + fun:_dl_lookup_symbol_x +} + # # Reading wrong addresses on SuSe Linux 10.3 32 bit # diff --git a/plugin/auth/auth_socket.c b/plugin/auth/auth_socket.c index 6694816dd22..cc406dac331 100644 --- a/plugin/auth/auth_socket.c +++ b/plugin/auth/auth_socket.c @@ -115,5 +115,5 @@ maria_declare_plugin(socket_auth) "1.0", MariaDB_PLUGIN_MATURITY_BETA } -mysql_declare_plugin_end; +maria_declare_plugin_end; diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 3f4400b4687..811ec614f1d 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -162,7 +162,9 @@ static LEX_STRING old_password_plugin_name= { LEX_STRING *default_auth_plugin_name= &native_password_plugin_name; static plugin_ref native_password_plugin; +#ifndef EMBEDDED_LIBRARY static plugin_ref old_password_plugin; +#endif /* Classes */ diff --git a/storage/example/ha_example.cc b/storage/example/ha_example.cc index 6b9725dfde4..5ad6a45a744 100644 --- a/storage/example/ha_example.cc +++ b/storage/example/ha_example.cc @@ -367,8 +367,10 @@ int ha_example::open(const char *name, int mode, uint test_if_locked) DBUG_RETURN(1); thr_lock_data_init(&share->lock,&lock,NULL); +#ifndef DBUG_OFF example_table_options_struct *options= (example_table_options_struct *)table->s->option_struct; +#endif DBUG_ASSERT(options); DBUG_PRINT("info", ("strparam: '%-.64s' ullparam: %llu enumparam: %u "\ @@ -896,6 +898,7 @@ ha_rows ha_example::records_in_range(uint inx, key_range *min_key, int ha_example::create(const char *name, TABLE *table_arg, HA_CREATE_INFO *create_info) { +#ifndef DBUG_OFF example_table_options_struct *options= (example_table_options_struct *)table_arg->s->option_struct; DBUG_ENTER("ha_example::create"); @@ -918,10 +921,10 @@ int ha_example::create(const char *name, TABLE *table_arg, (field_options->compex_param_to_parse_it_in_engine ? field_options->compex_param_to_parse_it_in_engine : ""))); - } DBUG_RETURN(0); +#endif } diff --git a/storage/sphinx/ha_sphinx.cc b/storage/sphinx/ha_sphinx.cc index 057cec29d2d..c66c1344138 100644 --- a/storage/sphinx/ha_sphinx.cc +++ b/storage/sphinx/ha_sphinx.cc @@ -972,8 +972,8 @@ static bool ParseUrl ( CSphSEShare * share, TABLE * table, bool bCreate ) } char * sScheme = NULL; - char * sHost = SPHINXSE_DEFAULT_HOST; - char * sIndex = SPHINXSE_DEFAULT_INDEX; + char * sHost = (char*) SPHINXSE_DEFAULT_HOST; + char * sIndex = (char*) SPHINXSE_DEFAULT_INDEX; int iPort = SPHINXSE_DEFAULT_PORT; bool bOk = true; @@ -993,12 +993,12 @@ static bool ParseUrl ( CSphSEShare * share, TABLE * table, bool bCreate ) // unix-domain socket iPort = 0; if (!( sIndex = strrchr ( sHost, ':' ) )) - sIndex = SPHINXSE_DEFAULT_INDEX; + sIndex = (char*) SPHINXSE_DEFAULT_INDEX; else { *sIndex++ = '\0'; if ( !*sIndex ) - sIndex = SPHINXSE_DEFAULT_INDEX; + sIndex = (char*) SPHINXSE_DEFAULT_INDEX; } bOk = true; break; @@ -1018,11 +1018,11 @@ static bool ParseUrl ( CSphSEShare * share, TABLE * table, bool bCreate ) if ( sIndex ) *sIndex++ = '\0'; else - sIndex = SPHINXSE_DEFAULT_INDEX; + sIndex = (char*) SPHINXSE_DEFAULT_INDEX; iPort = atoi(sPort); if ( !iPort ) - iPort = SPHINXSE_DEFAULT_PORT; + iPort = SPHINXSE_DEFAULT_PORT; } } else { @@ -1030,7 +1030,7 @@ static bool ParseUrl ( CSphSEShare * share, TABLE * table, bool bCreate ) if ( sIndex ) *sIndex++ = '\0'; else - sIndex = SPHINXSE_DEFAULT_INDEX; + sIndex = (char*) SPHINXSE_DEFAULT_INDEX; } bOk = true; @@ -1150,37 +1150,37 @@ static handler * sphinx_create_handler ( handlerton * hton, TABLE_SHARE * table, CSphSEQuery::CSphSEQuery ( const char * sQuery, int iLength, const char * sIndex ) : m_sHost ( "" ) , m_iPort ( 0 ) - , m_sIndex ( sIndex ? sIndex : "*" ) + , m_sIndex ( sIndex ? sIndex : (char*) "*" ) , m_iOffset ( 0 ) , m_iLimit ( 20 ) , m_bQuery ( false ) - , m_sQuery ( "" ) + , m_sQuery ( (char*) "" ) , m_pWeights ( NULL ) , m_iWeights ( 0 ) , m_eMode ( SPH_MATCH_ALL ) , m_eRanker ( SPH_RANK_PROXIMITY_BM25 ) , m_eSort ( SPH_SORT_RELEVANCE ) - , m_sSortBy ( "" ) + , m_sSortBy ( (char*) "" ) , m_iMaxMatches ( 1000 ) , m_iMaxQueryTime ( 0 ) , m_iMinID ( 0 ) , m_iMaxID ( 0 ) , m_iFilters ( 0 ) , m_eGroupFunc ( SPH_GROUPBY_DAY ) - , m_sGroupBy ( "" ) - , m_sGroupSortBy ( "@group desc" ) + , m_sGroupBy ( (char*) "" ) + , m_sGroupSortBy ( (char*) "@group desc" ) , m_iCutoff ( 0 ) , m_iRetryCount ( 0 ) , m_iRetryDelay ( 0 ) - , m_sGroupDistinct ( "" ) + , m_sGroupDistinct ( (char*) "" ) , m_iIndexWeights ( 0 ) , m_iFieldWeights ( 0 ) , m_bGeoAnchor ( false ) - , m_sGeoLatAttr ( "" ) - , m_sGeoLongAttr ( "" ) + , m_sGeoLatAttr ( (char*) "" ) + , m_sGeoLongAttr ( (char*) "" ) , m_fGeoLatitude ( 0.0f ) , m_fGeoLongitude ( 0.0f ) - , m_sComment ( "" ) + , m_sComment ( (char*) "" ) , m_pBuf ( NULL ) , m_pCur ( NULL ) @@ -1622,7 +1622,7 @@ bool CSphSEQuery::ParseField ( char * sField ) { "float", SPH_ATTR_FLOAT }, { "bigint", SPH_ATTR_BIGINT } }; - for ( int i=0; i Date: Mon, 19 Jul 2010 22:41:24 -0700 Subject: [PATCH 307/461] Fixed bug #607566. For queries with order by clauses that employed filesort usage of virtual column references in select lists could trigger assertion failures. It happened because a wrong vcol_set bitmap was used for filesort. It turned out that filesort required its own vcol_set bitmap. Made management of the vcol_set bitmaps similar to the management of the read_set and write_set bitmaps. --- mysql-test/suite/vcol/r/vcol_misc.result | 10 ++++++++++ mysql-test/suite/vcol/t/vcol_misc.test | 15 +++++++++++++++ sql/field.cc | 2 +- sql/filesort.cc | 8 +++++--- sql/sql_insert.cc | 9 ++++++--- sql/sql_select.cc | 8 ++++---- sql/table.cc | 14 +++++++------- sql/table.h | 24 +++++++++++++++++++++--- 8 files changed, 69 insertions(+), 21 deletions(-) diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result index 8ee9f5a9f67..a0a036f1900 100644 --- a/mysql-test/suite/vcol/r/vcol_misc.result +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -87,3 +87,13 @@ a v 2002-02-15 00:00:00 0 2000-10-15 00:00:00 1 DROP TABLE t1, t2; +CREATE TABLE t1 ( +a char(255), b char(255), c char(255), d char(255), +v char(255) AS (CONCAT(c,d) ) VIRTUAL +); +INSERT INTO t1(a,b,c,d) VALUES ('w','x','y','z'), ('W','X','Y','Z'); +SELECT v FROM t1 ORDER BY CONCAT(a,b); +v +yz +YZ +DROP TABLE t1; diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index 87a870181b0..214b3dce612 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -87,3 +87,18 @@ INSERT INTO t2(a) VALUES ('2000-10-15'); SELECT * FROM t2; DROP TABLE t1, t2; + +# +# Bug#607566: Virtual column in the select list of SELECT with ORDER BY +# + +CREATE TABLE t1 ( + a char(255), b char(255), c char(255), d char(255), + v char(255) AS (CONCAT(c,d) ) VIRTUAL +); + +INSERT INTO t1(a,b,c,d) VALUES ('w','x','y','z'), ('W','X','Y','Z'); + +SELECT v FROM t1 ORDER BY CONCAT(a,b); + +DROP TABLE t1; diff --git a/sql/field.cc b/sql/field.cc index 671e05f6647..f621dab7539 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -57,7 +57,7 @@ const char field_separator=','; ((ulong) ((LL(1) << min(arg, 4) * 8) - LL(1))) #define ASSERT_COLUMN_MARKED_FOR_READ DBUG_ASSERT(!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))) -#define ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED DBUG_ASSERT(!table || (!table->write_set || bitmap_is_set(table->write_set, field_index) || bitmap_is_set(&table->vcol_set, field_index))) +#define ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED DBUG_ASSERT(!table || (!table->write_set || bitmap_is_set(table->write_set, field_index) || bitmap_is_set(table->vcol_set, field_index))) /* Rules for merging different types of fields in UNION diff --git a/sql/filesort.cc b/sql/filesort.cc index 73cc0e4d593..3f2e2e55046 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -515,7 +515,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select, THD *thd= current_thd; volatile THD::killed_state *killed= &thd->killed; handler *file; - MY_BITMAP *save_read_set, *save_write_set; + MY_BITMAP *save_read_set, *save_write_set, *save_vcol_set; DBUG_ENTER("find_all_keys"); DBUG_PRINT("info",("using: %s", (select ? select->quick ? "ranges" : "where": @@ -552,6 +552,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select, /* Remember original bitmaps */ save_read_set= sort_form->read_set; save_write_set= sort_form->write_set; + save_vcol_set= sort_form->vcol_set; /* Set up temporary column read map for columns used by sort */ bitmap_clear_all(&sort_form->tmp_set); /* Temporary set for register_used_fields and register_field_in_read_map */ @@ -560,7 +561,8 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select, if (select && select->cond) select->cond->walk(&Item::register_field_in_read_map, 1, (uchar*) sort_form); - sort_form->column_bitmaps_set(&sort_form->tmp_set, &sort_form->tmp_set); + sort_form->column_bitmaps_set(&sort_form->tmp_set, &sort_form->tmp_set, + &sort_form->tmp_set); for (;;) { @@ -643,7 +645,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select, DBUG_RETURN(HA_POS_ERROR); /* Signal we should use orignal column read and write maps */ - sort_form->column_bitmaps_set(save_read_set, save_write_set); + sort_form->column_bitmaps_set(save_read_set, save_write_set, save_vcol_set); DBUG_PRINT("test",("error: %d indexpos: %d",error,indexpos)); if (error != HA_ERR_END_OF_FILE) diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 4ce13374d03..44dc7308292 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2109,7 +2109,7 @@ TABLE *Delayed_insert::get_local_table(THD* client_thd) copy= (TABLE*) client_thd->alloc(sizeof(*copy)+ (share->fields+1)*sizeof(Field**)+ share->reclength + - share->column_bitmap_size*2); + share->column_bitmap_size*3); if (!copy) goto error; @@ -2119,7 +2119,7 @@ TABLE *Delayed_insert::get_local_table(THD* client_thd) /* Assign the pointers for the field pointers array and the record. */ field= copy->field= (Field**) (copy + 1); bitmap= (uchar*) (field + share->fields + 1); - copy->record[0]= (bitmap + share->column_bitmap_size * 2); + copy->record[0]= (bitmap + share->column_bitmap_size*3); memcpy((char*) copy->record[0], (char*) table->record[0], share->reclength); /* Make a copy of all fields. @@ -2161,10 +2161,13 @@ TABLE *Delayed_insert::get_local_table(THD* client_thd) copy->def_read_set.bitmap= (my_bitmap_map*) bitmap; copy->def_write_set.bitmap= ((my_bitmap_map*) (bitmap + share->column_bitmap_size)); + copy->def_vcol_set.bitmap= ((my_bitmap_map*) + (bitmap + 2*share->column_bitmap_size)); copy->tmp_set.bitmap= 0; // To catch errors - bzero((char*) bitmap, share->column_bitmap_size*2); + bzero((char*) bitmap, share->column_bitmap_size*3); copy->read_set= ©->def_read_set; copy->write_set= ©->def_write_set; + copy->vcol_set= ©->def_vcol_set; DBUG_RETURN(copy); diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 2a67259f91d..ef2efc62a3b 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -5513,7 +5513,7 @@ static void calc_used_field_length(THD *thd, JOIN_TAB *join_tab) { uint null_fields,blobs,fields,rec_length; Field **f_ptr,*field; - MY_BITMAP *read_set= join_tab->table->read_set;; + MY_BITMAP *read_set= join_tab->table->read_set; null_fields= blobs= fields= rec_length=0; for (f_ptr=join_tab->table->field ; (field= *f_ptr) ; f_ptr++) @@ -9877,11 +9877,11 @@ void setup_tmp_table_column_bitmaps(TABLE *table, uchar *bitmaps) uint field_count= table->s->fields; bitmap_init(&table->def_read_set, (my_bitmap_map*) bitmaps, field_count, FALSE); - bitmap_init(&table->tmp_set, + bitmap_init(&table->def_vcol_set, (my_bitmap_map*) (bitmaps+ bitmap_buffer_size(field_count)), field_count, FALSE); - bitmap_init(&table->vcol_set, - (my_bitmap_map*) (bitmaps+ 2+bitmap_buffer_size(field_count)), + bitmap_init(&table->tmp_set, + (my_bitmap_map*) (bitmaps+ 2*bitmap_buffer_size(field_count)), field_count, FALSE); /* write_set and all_set are copies of read_set */ diff --git a/sql/table.cc b/sql/table.cc index af515090ee4..7db7e510ea0 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -2343,9 +2343,9 @@ partititon_err: (my_bitmap_map*) bitmaps, share->fields, FALSE); bitmap_init(&outparam->def_write_set, (my_bitmap_map*) (bitmaps+bitmap_size), share->fields, FALSE); - bitmap_init(&outparam->tmp_set, + bitmap_init(&outparam->def_vcol_set, (my_bitmap_map*) (bitmaps+bitmap_size*2), share->fields, FALSE); - bitmap_init(&outparam->vcol_set, + bitmap_init(&outparam->tmp_set, (my_bitmap_map*) (bitmaps+bitmap_size*3), share->fields, FALSE); outparam->default_column_bitmaps(); @@ -4809,10 +4809,10 @@ void st_table::clear_column_bitmaps() Reset column read/write usage. It's identical to: bitmap_clear_all(&table->def_read_set); bitmap_clear_all(&table->def_write_set); + bitmap_clear_all(&table->def_vcol_set); */ - bzero((char*) def_read_set.bitmap, s->column_bitmap_size*2); - bzero((char*) def_read_set.bitmap, s->column_bitmap_size*4); - column_bitmaps_set(&def_read_set, &def_write_set); + bzero((char*) def_read_set.bitmap, s->column_bitmap_size*3); + column_bitmaps_set(&def_read_set, &def_write_set, &def_vcol_set); } @@ -5085,7 +5085,7 @@ bool st_table::mark_virtual_col(Field *field) { bool res; DBUG_ASSERT(field->vcol_info); - if (!(res= bitmap_fast_test_and_set(&vcol_set, field->field_index))) + if (!(res= bitmap_fast_test_and_set(vcol_set, field->field_index))) { Item *vcol_item= field->vcol_info->expr_item; DBUG_ASSERT(vcol_item); @@ -5464,7 +5464,7 @@ int update_virtual_fields(THD *thd, TABLE *table, bool for_write) vfield= (*vfield_ptr); DBUG_ASSERT(vfield->vcol_info && vfield->vcol_info->expr_item); /* Only update those fields that are marked in the vcol_set bitmap */ - if (bitmap_is_set(&table->vcol_set, vfield->field_index) && + if (bitmap_is_set(table->vcol_set, vfield->field_index) && (for_write || !vfield->stored_in_db)) { /* Compute the actual value of the virtual fields */ diff --git a/sql/table.h b/sql/table.h index fa791fa6939..d2fe7ba3261 100644 --- a/sql/table.h +++ b/sql/table.h @@ -719,9 +719,8 @@ struct st_table { const char *alias; /* alias or table name */ uchar *null_flags; my_bitmap_map *bitmap_init_value; - MY_BITMAP def_read_set, def_write_set, tmp_set; /* containers */ - MY_BITMAP vcol_set; /* set of used virtual columns */ - MY_BITMAP *read_set, *write_set; /* Active column sets */ + MY_BITMAP def_read_set, def_write_set, def_vcol_set, tmp_set; + MY_BITMAP *read_set, *write_set, *vcol_set; /* Active column sets */ /* The ID of the query that opened and is using this table. Has different meanings depending on the table type. @@ -904,12 +903,30 @@ struct st_table { if (file) file->column_bitmaps_signal(); } + inline void column_bitmaps_set(MY_BITMAP *read_set_arg, + MY_BITMAP *write_set_arg, + MY_BITMAP *vcol_set_arg) + { + read_set= read_set_arg; + write_set= write_set_arg; + vcol_set= vcol_set_arg; + if (file) + file->column_bitmaps_signal(); + } inline void column_bitmaps_set_no_signal(MY_BITMAP *read_set_arg, MY_BITMAP *write_set_arg) { read_set= read_set_arg; write_set= write_set_arg; } + inline void column_bitmaps_set_no_signal(MY_BITMAP *read_set_arg, + MY_BITMAP *write_set_arg, + MY_BITMAP *vcol_set_arg) + { + read_set= read_set_arg; + write_set= write_set_arg; + vcol_set= vcol_set_arg; + } inline void use_all_columns() { column_bitmaps_set(&s->all_set, &s->all_set); @@ -918,6 +935,7 @@ struct st_table { { read_set= &def_read_set; write_set= &def_write_set; + vcol_set= &def_vcol_set; } /* Is table open or should be treated as such by name-locking? */ inline bool is_name_opened() { return db_stat || open_placeholder; } From 689a96fcce55221101b8c9b613104c0b96edfb6b Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Tue, 20 Jul 2010 17:27:13 +0200 Subject: [PATCH 308/461] BUG#55322: SHOW BINLOG EVENTS increases @@SESSION.MAX_ALLOWED_PACKET Problem: when SHOW BINLOG EVENTS was issued, it increased the value of @@session.max_allowed_packet. This allowed a non-root user to increase the amount of memory used by her thread arbitrarily. Thus, it removes the bound on the amount of system resources used by a client, so it presents a security risk (DoS attack). Fix: it is correct to increase the value of @@session.max_allowed_packet while executing SHOW BINLOG EVENTS (see BUG 30435). However, the increase should only be temporary. Thus, the fix is to restore the value when SHOW BINLOG EVENTS ends. The value of @@session.max_allowed_packet is also increased in mysql_binlog_send (i.e., the binlog dump thread). It is not clear if this can cause any trouble, since normally the client that issues COM_BINLOG_DUMP will not issue any other commands that would be affected by the increased value of @@session.max_allowed_packet. However, we restore the value just in case. mysql-test/suite/rpl/r/rpl_packet.result: update result file mysql-test/suite/rpl/t/rpl_packet.test: Add test that verifies that @@session.max_allowed_packet does not change when issuing SHOW BINLOG EVENTS. Make previous sub-test clean up. Add comments listing the bugs in this test case. sql/sql_repl.cc: Restore the old value of thd->variables.max_allowed_packet at the end of mysql_binlog_send and mysql_show_binlog_events. --- mysql-test/suite/rpl/r/rpl_packet.result | 8 +++++ mysql-test/suite/rpl/t/rpl_packet.test | 39 +++++++++++++++++++++++- sql/sql_repl.cc | 5 +++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/rpl/r/rpl_packet.result b/mysql-test/suite/rpl/r/rpl_packet.result index 0a9495751fe..1ec9259a1fb 100644 --- a/mysql-test/suite/rpl/r/rpl_packet.result +++ b/mysql-test/suite/rpl/r/rpl_packet.result @@ -49,6 +49,14 @@ Slave_IO_Running = No (expect No) SELECT "Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master'" AS Last_IO_Error; Last_IO_Error Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master' +STOP SLAVE; +RESET SLAVE; +RESET MASTER; +SET @max_allowed_packet_0= @@session.max_allowed_packet; +SHOW BINLOG EVENTS; +SET @max_allowed_packet_1= @@session.max_allowed_packet; +SHOW BINLOG EVENTS; +SET @max_allowed_packet_2= @@session.max_allowed_packet; ==== clean up ==== DROP TABLE t1; SET @@global.max_allowed_packet= 1024; diff --git a/mysql-test/suite/rpl/t/rpl_packet.test b/mysql-test/suite/rpl/t/rpl_packet.test index bfc144c759b..08a533e22ca 100644 --- a/mysql-test/suite/rpl/t/rpl_packet.test +++ b/mysql-test/suite/rpl/t/rpl_packet.test @@ -1,7 +1,12 @@ +# ==== Purpose ==== # # Check replication protocol packet size handling -# Bug#19402 SQL close to the size of the max_allowed_packet fails on slave # +# ==== Related bugs ==== +# Bug#19402 SQL close to the size of the max_allowed_packet fails on slave +# BUG#23755: Replicated event larger that max_allowed_packet infinitely re-transmits +# BUG#42914: No LAST_IO_ERROR for max_allowed_packet errors +# BUG#55322: SHOW BINLOG EVENTS increases @@SESSION.MAX_ALLOWED_PACKET # max-out size db name source include/master-slave.inc; @@ -119,6 +124,38 @@ let $slave_io_running= query_get_value(SHOW SLAVE STATUS, Slave_IO_Running, 1); let $last_io_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Error, 1); eval SELECT "$last_io_error" AS Last_IO_Error; +# Remove the bad binlog and clear error status on slave. +STOP SLAVE; +RESET SLAVE; +--connection master +RESET MASTER; + + +# +# BUG#55322: SHOW BINLOG EVENTS increases @@SESSION.MAX_ALLOWED_PACKET +# +# In BUG#55322, @@session.max_allowed_packet increased each time SHOW +# BINLOG EVENTS was issued. To verify that this bug is fixed, we +# execute SHOW BINLOG EVENTS twice and check that max_allowed_packet +# never changes. We turn off the result log because we don't care +# about the contents of the binlog. + +--disable_result_log +SET @max_allowed_packet_0= @@session.max_allowed_packet; +SHOW BINLOG EVENTS; +SET @max_allowed_packet_1= @@session.max_allowed_packet; +SHOW BINLOG EVENTS; +SET @max_allowed_packet_2= @@session.max_allowed_packet; +--enable_result_log +if (`SELECT NOT(@max_allowed_packet_0 = @max_allowed_packet_1 AND @max_allowed_packet_1 = @max_allowed_packet_2)`) +{ + --echo ERROR: max_allowed_packet changed after executing SHOW BINLOG EVENTS + --source include/show_rpl_debug_info.inc + SELECT @max_allowed_packet_0, @max_allowed_packet_1, @max_allowed_packet_2; + --die @max_allowed_packet changed after executing SHOW BINLOG EVENTS +} + + --echo ==== clean up ==== connection master; DROP TABLE t1; diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index c220f609c09..dcbc982b4aa 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -357,6 +357,7 @@ void mysql_binlog_send(THD* thd, char* log_ident, my_off_t pos, #ifndef DBUG_OFF int left_events = max_binlog_dump_events; #endif + int old_max_allowed_packet= thd->variables.max_allowed_packet; DBUG_ENTER("mysql_binlog_send"); DBUG_PRINT("enter",("log_ident: '%s' pos: %ld", log_ident, (long) pos)); @@ -762,6 +763,7 @@ end: pthread_mutex_lock(&LOCK_thread_count); thd->current_linfo = 0; pthread_mutex_unlock(&LOCK_thread_count); + thd->variables.max_allowed_packet= old_max_allowed_packet; DBUG_VOID_RETURN; err: @@ -779,6 +781,7 @@ err: pthread_mutex_unlock(&LOCK_thread_count); if (file >= 0) (void) my_close(file, MYF(MY_WME)); + thd->variables.max_allowed_packet= old_max_allowed_packet; my_message(my_errno, errmsg, MYF(0)); DBUG_VOID_RETURN; @@ -1422,6 +1425,7 @@ bool mysql_show_binlog_events(THD* thd) bool ret = TRUE; IO_CACHE log; File file = -1; + int old_max_allowed_packet= thd->variables.max_allowed_packet; DBUG_ENTER("mysql_show_binlog_events"); Log_event::init_show_field_list(&field_list); @@ -1560,6 +1564,7 @@ err: pthread_mutex_lock(&LOCK_thread_count); thd->current_linfo = 0; pthread_mutex_unlock(&LOCK_thread_count); + thd->variables.max_allowed_packet= old_max_allowed_packet; DBUG_RETURN(ret); } From b0035c76d46caf25d6b52f4e1552c1e83f7f0911 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Tue, 20 Jul 2010 14:36:15 -0300 Subject: [PATCH 309/461] Bug#54453: Failing assertion: trx->active_trans when renaming a table with active trx Essentially, the problem is that InnoDB does a implicit commit when a cursor (table handler) is unlocked/closed, creating a dissonance between the transaction state within the server layer and the storage engine layer. Theoretically, a statement transaction can encompass several table instances in a similar manner to a multiple statement transaction, hence it does not make sense to limit a statement transaction to the lifetime of the table instances (cursors) used within it. Since this particular instance of the problem is only triggerable on 5.1 and is masked on 5.5 due 2PC being skipped (assertion is in the prepare phase of a 2PC), the solution (which is less risky) is to explicitly end the transaction before the cached table is unlock on rename table. The patch is to be null merged into trunk. mysql-test/include/commit.inc: Fix counters, the binlog engine does not get involved anymore. mysql-test/suite/innodb_plugin/r/innodb_bug54453.result: Add test case result for Bug#54453 mysql-test/suite/innodb_plugin/t/innodb_bug54453.test: Add test case for Bug#54453 sql/sql_table.cc: End transaction as otherwise InnoDB will end it behind our backs. --- mysql-test/include/commit.inc | 4 ++-- mysql-test/r/commit_1innodb.result | 4 ++-- .../suite/innodb_plugin/r/innodb_bug54453.result | 9 +++++++++ .../suite/innodb_plugin/t/innodb_bug54453.test | 15 +++++++++++++++ sql/sql_table.cc | 8 ++++++++ 5 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug54453.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug54453.test diff --git a/mysql-test/include/commit.inc b/mysql-test/include/commit.inc index d91ba8291fd..d412eae8364 100644 --- a/mysql-test/include/commit.inc +++ b/mysql-test/include/commit.inc @@ -725,9 +725,9 @@ call p_verify_status_increment(4, 4, 4, 4); alter table t3 add column (b int); call p_verify_status_increment(2, 0, 2, 0); alter table t3 rename t4; -call p_verify_status_increment(2, 2, 2, 2); +call p_verify_status_increment(1, 0, 1, 0); rename table t4 to t3; -call p_verify_status_increment(2, 2, 2, 2); +call p_verify_status_increment(1, 0, 1, 0); truncate table t3; call p_verify_status_increment(4, 4, 4, 4); create view v1 as select * from t2; diff --git a/mysql-test/r/commit_1innodb.result b/mysql-test/r/commit_1innodb.result index 51c4ac3002c..1f0b2c8019b 100644 --- a/mysql-test/r/commit_1innodb.result +++ b/mysql-test/r/commit_1innodb.result @@ -841,11 +841,11 @@ call p_verify_status_increment(2, 0, 2, 0); SUCCESS alter table t3 rename t4; -call p_verify_status_increment(2, 2, 2, 2); +call p_verify_status_increment(1, 0, 1, 0); SUCCESS rename table t4 to t3; -call p_verify_status_increment(2, 2, 2, 2); +call p_verify_status_increment(1, 0, 1, 0); SUCCESS truncate table t3; diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug54453.result b/mysql-test/suite/innodb_plugin/r/innodb_bug54453.result new file mode 100644 index 00000000000..e623989a9d4 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug54453.result @@ -0,0 +1,9 @@ +# +# Bug#54453: Failing assertion: trx->active_trans when renaming a table with active trx +# +DROP TABLE IF EXISTS bug54453; +CREATE TABLE bug54453(a INT) ENGINE=InnoDB; +ALTER TABLE bug54453 RENAME TO bug54453_2; +SELECT * FROM bug54453_2; +a +DROP TABLE bug54453_2; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug54453.test b/mysql-test/suite/innodb_plugin/t/innodb_bug54453.test new file mode 100644 index 00000000000..486695d326d --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug54453.test @@ -0,0 +1,15 @@ +--source include/have_innodb_plugin.inc +--source include/have_log_bin.inc + +--echo # +--echo # Bug#54453: Failing assertion: trx->active_trans when renaming a table with active trx +--echo # + +--disable_warnings +DROP TABLE IF EXISTS bug54453; +--enable_warnings + +CREATE TABLE bug54453(a INT) ENGINE=InnoDB; +ALTER TABLE bug54453 RENAME TO bug54453_2; +SELECT * FROM bug54453_2; +DROP TABLE bug54453_2; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 50045ec6d90..47b91fcca0e 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -6848,6 +6848,14 @@ view_err: if (!error && (new_name != table_name || new_db != db)) { thd_proc_info(thd, "rename"); + + /* + Workaround InnoDB ending the transaction when the table instance + is unlocked/closed (close_cached_table below), otherwise the trx + state will differ between the server and storage engine layers. + */ + ha_autocommit_or_rollback(thd, 0); + /* Then do a 'simple' rename of the table. First we need to close all instances of 'source' table. From c36fee08f6fa7974324438572a260101335cb4b4 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Tue, 20 Jul 2010 14:44:29 -0300 Subject: [PATCH 310/461] Bug#52514: mysql 5.1 do_abi_check does not compile w/ gcc4.5 due to GCC preprocessor change The problem is that newer GCC versions treats missing headers as fatal errors. The solution is to use a guard macro to prevent the inclusion of system headers when checking the ABI with the C Preprocessor. Reference: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15638 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44836 Makefile.am: Define guard macro. configure.in: Remove workaround. include/mysql.h: Guard the header inclusion. include/mysql.h.pp: Header is not included anymore. --- Makefile.am | 2 +- configure.in | 11 +---------- include/mysql.h | 2 ++ include/mysql.h.pp | 1 - 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/Makefile.am b/Makefile.am index 7953b81fb7b..4ce753ad8aa 100644 --- a/Makefile.am +++ b/Makefile.am @@ -314,7 +314,7 @@ abi_check_all: $(TEST_PREPROCESSOR_HEADER) do_abi_check: set -ex; \ for file in $(abi_headers); do \ - @CC@ -E -nostdinc -dI \ + @CC@ -E -nostdinc -dI -DMYSQL_ABI_CHECK \ -I$(top_srcdir)/include \ -I$(top_srcdir)/include/mysql \ -I$(top_srcdir)/sql \ diff --git a/configure.in b/configure.in index 0264c351b07..8dcdecf8ea2 100644 --- a/configure.in +++ b/configure.in @@ -444,16 +444,7 @@ if test "$GCC" != "yes" || expr "$CC" : ".*icc.*" then ABI_CHECK="" else - # Workaround GCC >= 4.5 - See Bug#52514 - case `$CC -dumpversion` in - [[4-9]].[[5-9]]*) - AC_MSG_WARN([ABI check disabled (GCC >= 4.5)]) - ABI_CHECK="" - ;; - *) - ABI_CHECK="abi_check" - ;; - esac + ABI_CHECK="abi_check" fi AC_SUBST(ABI_CHECK) diff --git a/include/mysql.h b/include/mysql.h index d114afb6c93..dcf3e167e6a 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -44,7 +44,9 @@ extern "C" { #endif #ifndef _global_h /* If not standard header */ +#ifndef MYSQL_ABI_CHECK #include +#endif #ifdef __LCC__ #include /* For windows */ #endif diff --git a/include/mysql.h.pp b/include/mysql.h.pp index 633cde41130..0a397863022 100644 --- a/include/mysql.h.pp +++ b/include/mysql.h.pp @@ -1,4 +1,3 @@ -#include typedef char my_bool; typedef int my_socket; #include "mysql_version.h" From 9a5fa17fd3c4885262e31bf14cf495d02e5f6b27 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Tue, 20 Jul 2010 15:07:36 -0300 Subject: [PATCH 311/461] Bug#45288: pb2 returns a lot of compilation warnings on linux Fix warnings flagged by the new warning option -Wunused-but-set-variable that was added to GCC 4.6 and that is enabled by -Wunused and -Wall. The option causes a warning whenever a local variable is assigned to but is later unused. It also warns about meaningless pointer dereferences. client/mysql.cc: Meaningless pointer dereferences. client/mysql_upgrade.c: Check whether reading from the file succeeded. extra/comp_err.c: Unused. extra/yassl/src/yassl_imp.cpp: Skip instead of reading data that is discarded. include/my_pthread.h: Variable is only used in debug builds. include/mysys_err.h: Add new error messages. mysys/errors.c: Add new error message for permission related functions. mysys/mf_iocache.c: Variable is only checked under THREAD. mysys/my_copy.c: Raise a error if chmod or chown fails. mysys/my_redel.c: Raise a error if chmod or chown fails. regex/engine.c: Use a equivalent variable for the assert. server-tools/instance-manager/instance_options.cc: Unused. sql/field.cc: Unused. sql/item.cc: Unused. sql/log.cc: Do not ignore the return value of freopen: only set buffer if reopening succeeds. Adjust doxygen comment to the right function. Pass message lenght to log function. sql/mysqld.cc: Do not ignore the return value of freopen: only set buffer if reopening succeeds. sql/partition_info.cc: Unused. sql/slave.cc: No need to set pointer to the address of '\0'. sql/spatial.cc: Unused. Left for historical purposes. sql/sql_acl.cc: Unused. sql/sql_base.cc: Pointers are always set to the same variables. sql/sql_parse.cc: End statement if reading fails. Store the buffer after it has actually been updated. sql/sql_repl.cc: No need to set pointer to the address of '\0'. sql/sql_show.cc: Put variable under the same ifdef block. sql/udf_example.c: Set null pointer flag appropriately. storage/csv/ha_tina.cc: Meaningless dereferences. storage/example/ha_example.cc: Return the error since it's available. storage/myisam/mi_locking.c: Remove unused and dead code. --- client/mysql.cc | 4 +- client/mysql_upgrade.c | 5 +- extra/comp_err.c | 2 - extra/yassl/src/yassl_imp.cpp | 24 ++---- include/my_pthread.h | 5 +- include/mysys_err.h | 4 +- mysys/errors.c | 6 +- mysys/mf_iocache.c | 11 ++- mysys/my_copy.c | 20 ++++- mysys/my_redel.c | 24 ++++-- regex/engine.c | 17 ++--- .../instance-manager/instance_options.cc | 3 - sql/field.cc | 2 - sql/item.cc | 7 +- sql/log.cc | 73 ++++++++++--------- sql/mysqld.cc | 7 +- sql/partition_info.cc | 2 - sql/slave.cc | 7 +- sql/spatial.cc | 3 +- sql/sql_acl.cc | 2 - sql/sql_base.cc | 14 +--- sql/sql_load.cc | 13 ++-- sql/sql_parse.cc | 17 +++-- sql/sql_repl.cc | 7 +- sql/sql_show.cc | 4 +- sql/sql_table.cc | 2 - sql/table.cc | 3 +- sql/udf_example.c | 2 +- storage/csv/ha_tina.cc | 12 +-- storage/example/ha_example.cc | 2 +- storage/myisam/mi_locking.c | 14 +--- storage/myisam/rt_split.c | 3 - storage/myisammrg/myrg_open.c | 5 -- strings/decimal.c | 3 +- 34 files changed, 155 insertions(+), 174 deletions(-) diff --git a/client/mysql.cc b/client/mysql.cc index edcc72b60bf..5b90f318629 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -3639,7 +3639,7 @@ xmlencode_print(const char *src, uint length) tee_fputs("NULL", PAGER); else { - for (const char *p = src; length; *p++, length--) + for (const char *p = src; length; p++, length--) { const char *t; if ((t = array_value(xmlmeta, *p))) @@ -4726,7 +4726,7 @@ static const char* construct_prompt() struct tm *t = localtime(&lclock); /* parse thru the settings for the prompt */ - for (char *c = current_prompt; *c ; *c++) + for (char *c = current_prompt; *c ; c++) { if (*c != PROMPT_CHAR) processed_prompt.append(*c); diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c index 0b8b43775ed..3122cc25731 100644 --- a/client/mysql_upgrade.c +++ b/client/mysql_upgrade.c @@ -595,7 +595,10 @@ static int upgrade_already_done(void) my_fclose(in, MYF(0)); - return (strncmp(buf, MYSQL_SERVER_VERSION, + if (!res) + return 0; /* Could not read from file => not sure */ + + return (strncmp(res, MYSQL_SERVER_VERSION, sizeof(MYSQL_SERVER_VERSION)-1)==0); } diff --git a/extra/comp_err.c b/extra/comp_err.c index c02c7ca3d2a..7e0b47a7dc7 100644 --- a/extra/comp_err.c +++ b/extra/comp_err.c @@ -831,7 +831,6 @@ static struct message *parse_message_string(struct message *new_message, static struct errors *parse_error_string(char *str, int er_count) { struct errors *new_error; - char *start; DBUG_ENTER("parse_error_string"); DBUG_PRINT("enter", ("str: %s", str)); @@ -842,7 +841,6 @@ static struct errors *parse_error_string(char *str, int er_count) DBUG_RETURN(0); /* OOM: Fatal error */ /* getting the error name */ - start= str; str= skip_delimiters(str); if (!(new_error->er_name= get_word(&str))) diff --git a/extra/yassl/src/yassl_imp.cpp b/extra/yassl/src/yassl_imp.cpp index f079df8c7ce..86799f961ae 100644 --- a/extra/yassl/src/yassl_imp.cpp +++ b/extra/yassl/src/yassl_imp.cpp @@ -884,21 +884,19 @@ void Alert::Process(input_buffer& input, SSL& ssl) else hmac(ssl, verify, data, aSz, alert, true); - // read mac and fill + // read mac and skip fill int digestSz = ssl.getCrypto().get_digest().get_digestSize(); opaque mac[SHA_LEN]; input.read(mac, digestSz); if (ssl.getSecurity().get_parms().cipher_type_ == block) { int ivExtra = 0; - opaque fill; if (ssl.isTLSv1_1()) ivExtra = ssl.getCrypto().get_cipher().get_blockSize(); int padSz = ssl.getSecurity().get_parms().encrypt_size_ - ivExtra - aSz - digestSz; - for (int i = 0; i < padSz; i++) - fill = input[AUTO]; + input.set_current(input.get_current() + padSz); } // verify @@ -981,17 +979,17 @@ output_buffer& operator<<(output_buffer& output, const Data& data) void Data::Process(input_buffer& input, SSL& ssl) { int msgSz = ssl.getSecurity().get_parms().encrypt_size_; - int pad = 0, padByte = 0; + int pad = 0, padSz = 0; int ivExtra = 0; if (ssl.getSecurity().get_parms().cipher_type_ == block) { if (ssl.isTLSv1_1()) // IV ivExtra = ssl.getCrypto().get_cipher().get_blockSize(); pad = *(input.get_buffer() + input.get_current() + msgSz -ivExtra - 1); - padByte = 1; + padSz = 1; } int digestSz = ssl.getCrypto().get_digest().get_digestSize(); - int dataSz = msgSz - ivExtra - digestSz - pad - padByte; + int dataSz = msgSz - ivExtra - digestSz - pad - padSz; opaque verify[SHA_LEN]; const byte* rawData = input.get_buffer() + input.get_current(); @@ -1020,14 +1018,10 @@ void Data::Process(input_buffer& input, SSL& ssl) hmac(ssl, verify, rawData, dataSz, application_data, true); } - // read mac and fill + // read mac and skip fill opaque mac[SHA_LEN]; - opaque fill; input.read(mac, digestSz); - for (int i = 0; i < pad; i++) - fill = input[AUTO]; - if (padByte) - fill = input[AUTO]; + input.set_current(input.get_current() + pad + padSz); // verify if (dataSz) { @@ -2073,11 +2067,9 @@ void Finished::Process(input_buffer& input, SSL& ssl) if (ssl.isTLSv1_1()) ivExtra = ssl.getCrypto().get_cipher().get_blockSize(); - opaque fill; int padSz = ssl.getSecurity().get_parms().encrypt_size_ - ivExtra - HANDSHAKE_HEADER - finishedSz - digestSz; - for (int i = 0; i < padSz; i++) - fill = input[AUTO]; + input.set_current(input.get_current() + padSz); // verify mac if (memcmp(mac, verifyMAC, digestSz)) { diff --git a/include/my_pthread.h b/include/my_pthread.h index eff6a677192..fec7c972a7b 100644 --- a/include/my_pthread.h +++ b/include/my_pthread.h @@ -269,13 +269,14 @@ int sigwait(sigset_t *setp, int *sigp); /* Use our implemention */ we want to make sure that no such flags are set. */ #if defined(HAVE_SIGACTION) && !defined(my_sigset) -#define my_sigset(A,B) do { struct sigaction l_s; sigset_t l_set; int l_rc; \ +#define my_sigset(A,B) do { struct sigaction l_s; sigset_t l_set; \ + IF_DBUG(int l_rc); \ DBUG_ASSERT((A) != 0); \ sigemptyset(&l_set); \ l_s.sa_handler = (B); \ l_s.sa_mask = l_set; \ l_s.sa_flags = 0; \ - l_rc= sigaction((A), &l_s, (struct sigaction *) NULL);\ + IF_DBUG(l_rc=) sigaction((A), &l_s, NULL); \ DBUG_ASSERT(l_rc == 0); \ } while (0) #elif defined(HAVE_SIGSET) && !defined(my_sigset) diff --git a/include/mysys_err.h b/include/mysys_err.h index 09e77248c17..6294b37f773 100644 --- a/include/mysys_err.h +++ b/include/mysys_err.h @@ -62,7 +62,9 @@ extern const char * NEAR globerrs[]; /* my_error_messages is here */ #define EE_UNKNOWN_COLLATION 28 #define EE_FILENOTFOUND 29 #define EE_FILE_NOT_CLOSED 30 -#define EE_ERROR_LAST 30 /* Copy last error nr */ +#define EE_CHANGE_OWNERSHIP 31 +#define EE_CHANGE_PERMISSIONS 32 +#define EE_ERROR_LAST 32 /* Copy last error nr */ /* Add error numbers before EE_ERROR_LAST and change it accordingly. */ /* exit codes for all MySQL programs */ diff --git a/mysys/errors.c b/mysys/errors.c index 8d3303cac9f..a5ad4a956ab 100644 --- a/mysys/errors.c +++ b/mysys/errors.c @@ -49,7 +49,9 @@ const char * NEAR globerrs[GLOBERRS]= "Can't sync file '%s' to disk (Errcode: %d)", "Collation '%s' is not a compiled collation and is not specified in the '%s' file", "File '%s' not found (Errcode: %d)", - "File '%s' (fileno: %d) was not closed" + "File '%s' (fileno: %d) was not closed", + "Can't change ownership of the file '%s' (Errcode: %d)", + "Can't change permissions of the file '%s' (Errcode: %d)", }; void init_glob_errs(void) @@ -90,6 +92,8 @@ void init_glob_errs() EE(EE_UNKNOWN_COLLATION)= "Collation '%s' is not a compiled collation and is not specified in the %s file"; EE(EE_FILENOTFOUND) = "File '%s' not found (Errcode: %d)"; EE(EE_FILE_NOT_CLOSED) = "File '%s' (fileno: %d) was not closed"; + EE(EE_CHANGE_OWNERSHIP) = "Can't change ownership of the file '%s' (Errcode: %d)"; + EE(EE_CHANGE_PERMISSIONS) = "Can't change permissions of the file '%s' (Errcode: %d)"; } #endif diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c index 1a47982b221..e9b947b04a6 100644 --- a/mysys/mf_iocache.c +++ b/mysys/mf_iocache.c @@ -1701,16 +1701,19 @@ int my_block_write(register IO_CACHE *info, const uchar *Buffer, size_t Count, #endif -int my_b_flush_io_cache(IO_CACHE *info, int need_append_buffer_lock) +int my_b_flush_io_cache(IO_CACHE *info, + int need_append_buffer_lock __attribute__((unused))) { size_t length; - my_bool append_cache; my_off_t pos_in_file; + my_bool append_cache= (info->type == SEQ_READ_APPEND); DBUG_ENTER("my_b_flush_io_cache"); DBUG_PRINT("enter", ("cache: 0x%lx", (long) info)); - if (!(append_cache = (info->type == SEQ_READ_APPEND))) - need_append_buffer_lock=0; +#ifdef THREAD + if (!append_cache) + need_append_buffer_lock= 0; +#endif if (info->type == WRITE_CACHE || append_cache) { diff --git a/mysys/my_copy.c b/mysys/my_copy.c index 418e2b6f8a2..d0c1fc29229 100644 --- a/mysys/my_copy.c +++ b/mysys/my_copy.c @@ -16,6 +16,7 @@ #include "mysys_priv.h" #include /* for stat */ #include +#include "mysys_err.h" #if defined(HAVE_UTIME_H) #include #elif defined(HAVE_SYS_UTIME_H) @@ -56,7 +57,6 @@ int my_copy(const char *from, const char *to, myf MyFlags) File from_file,to_file; uchar buff[IO_SIZE]; MY_STAT stat_buff,new_stat_buff; - int res; DBUG_ENTER("my_copy"); DBUG_PRINT("my",("from %s to %s MyFlags %d", from, to, MyFlags)); @@ -102,9 +102,23 @@ int my_copy(const char *from, const char *to, myf MyFlags) if (MyFlags & MY_HOLD_ORIGINAL_MODES && !new_file_stat) DBUG_RETURN(0); /* File copyed but not stat */ - res= chmod(to, stat_buff.st_mode & 07777); /* Copy modes */ + /* Copy modes */ + if (chmod(to, stat_buff.st_mode & 07777)) + { + my_errno= errno; + if (MyFlags & (MY_FAE+MY_WME)) + my_error(EE_CHANGE_PERMISSIONS, MYF(ME_BELL+ME_WAITTANG), from, errno); + goto err; + } #if !defined(__WIN__) && !defined(__NETWARE__) - res= chown(to, stat_buff.st_uid,stat_buff.st_gid); /* Copy ownership */ + /* Copy ownership */ + if (chown(to, stat_buff.st_uid,stat_buff.st_gid)) + { + my_errno= errno; + if (MyFlags & (MY_FAE+MY_WME)) + my_error(EE_CHANGE_OWNERSHIP, MYF(ME_BELL+ME_WAITTANG), from, errno); + goto err; + } #endif #if !defined(VMS) && !defined(__ZTC__) if (MyFlags & MY_COPYTIME) diff --git a/mysys/my_redel.c b/mysys/my_redel.c index 6521253f949..4013c5c8323 100644 --- a/mysys/my_redel.c +++ b/mysys/my_redel.c @@ -76,11 +76,8 @@ end: int my_copystat(const char *from, const char *to, int MyFlags) { struct stat statbuf; -#if !defined(__WIN__) && !defined(__NETWARE__) - int res; -#endif - if (stat((char*) from, &statbuf)) + if (stat(from, &statbuf)) { my_errno=errno; if (MyFlags & (MY_FAE+MY_WME)) @@ -89,7 +86,15 @@ int my_copystat(const char *from, const char *to, int MyFlags) } if ((statbuf.st_mode & S_IFMT) != S_IFREG) return 1; - VOID(chmod(to, statbuf.st_mode & 07777)); /* Copy modes */ + + /* Copy modes */ + if (chmod(to, statbuf.st_mode & 07777)) + { + my_errno= errno; + if (MyFlags & (MY_FAE+MY_WME)) + my_error(EE_CHANGE_PERMISSIONS, MYF(ME_BELL+ME_WAITTANG), from, errno); + return -1; + } #if !defined(__WIN__) && !defined(__NETWARE__) if (statbuf.st_nlink > 1 && MyFlags & MY_LINK_WARNING) @@ -97,7 +102,14 @@ int my_copystat(const char *from, const char *to, int MyFlags) if (MyFlags & MY_LINK_WARNING) my_error(EE_LINK_WARNING,MYF(ME_BELL+ME_WAITTANG),from,statbuf.st_nlink); } - res= chown(to, statbuf.st_uid, statbuf.st_gid); /* Copy ownership */ + /* Copy ownership */ + if (chown(to, statbuf.st_uid, statbuf.st_gid)) + { + my_errno= errno; + if (MyFlags & (MY_FAE+MY_WME)) + my_error(EE_CHANGE_OWNERSHIP, MYF(ME_BELL+ME_WAITTANG), from, errno); + return -1; + } #endif /* !__WIN__ && !__NETWARE__ */ #ifndef VMS diff --git a/regex/engine.c b/regex/engine.c index 1968ca61a96..be08adf8601 100644 --- a/regex/engine.c +++ b/regex/engine.c @@ -256,7 +256,6 @@ sopno stopst; register char *ssp; /* start of string matched by subsubRE */ register char *sep; /* end of string matched by subsubRE */ register char *oldssp; /* previous ssp */ - register char *dp; /* used in debug mode to check asserts */ AT("diss", start, stop, startst, stopst); sp = start; @@ -314,11 +313,9 @@ sopno stopst; ssub = ss + 1; esub = es - 1; /* did innards match? */ - if (slow(charset, m, sp, rest, ssub, esub) != NULL) { - dp = dissect(charset, m, sp, rest, ssub, esub); - assert(dp == rest); - } else /* no */ - assert(sp == rest); + if (slow(charset, m, sp, rest, ssub, esub) != NULL) + sp = dissect(charset, m, sp, rest, ssub, esub); + assert(sp == rest); sp = rest; break; case OPLUS_: @@ -353,8 +350,8 @@ sopno stopst; } assert(sep == rest); /* must exhaust substring */ assert(slow(charset, m, ssp, sep, ssub, esub) == rest); - dp = dissect(charset, m, ssp, sep, ssub, esub); - assert(dp == sep); + sp = dissect(charset, m, ssp, sep, ssub, esub); + assert(sp == sep); sp = rest; break; case OCH_: @@ -388,8 +385,8 @@ sopno stopst; else assert(OP(m->g->strip[esub]) == O_CH); } - dp = dissect(charset, m, sp, rest, ssub, esub); - assert(dp == rest); + sp = dissect(charset, m, sp, rest, ssub, esub); + assert(sp == rest); sp = rest; break; case O_PLUS: diff --git a/server-tools/instance-manager/instance_options.cc b/server-tools/instance-manager/instance_options.cc index 8b96d6f0f96..725089e2f42 100644 --- a/server-tools/instance-manager/instance_options.cc +++ b/server-tools/instance-manager/instance_options.cc @@ -303,7 +303,6 @@ bool Instance_options::fill_log_options() enum { MAX_LOG_OPTION_LENGTH= 256 }; char datadir[MAX_LOG_OPTION_LENGTH]; char hostname[MAX_LOG_OPTION_LENGTH]; - uint hostname_length; struct log_files_st { const char *name; @@ -335,8 +334,6 @@ bool Instance_options::fill_log_options() strmov(hostname, "mysql"); hostname[MAX_LOG_OPTION_LENGTH - 1]= 0; /* Safety */ - hostname_length= strlen(hostname); - for (log_files= logs_st; log_files->name; log_files++) { diff --git a/sql/field.cc b/sql/field.cc index c648b53e139..c887a5f1c9b 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5541,7 +5541,6 @@ int Field_date::store(const char *from, uint len,CHARSET_INFO *cs) int Field_date::store(double nr) { longlong tmp; - int error= 0; if (nr >= 19000000000000.0 && nr <= 99991231235959.0) nr=floor(nr/1000000.0); // Timestamp to date if (nr < 0.0 || nr > 99991231.0) @@ -5550,7 +5549,6 @@ int Field_date::store(double nr) set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, nr, MYSQL_TIMESTAMP_DATE); - error= 1; } else tmp= (longlong) rint(nr); diff --git a/sql/item.cc b/sql/item.cc index db2c4c0974b..66c5314c16e 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -255,11 +255,10 @@ my_decimal *Item::val_decimal_from_int(my_decimal *decimal_value) my_decimal *Item::val_decimal_from_string(my_decimal *decimal_value) { String *res; - char *end_ptr; - if (!(res= val_str(&str_value))) - return 0; // NULL or EOM - end_ptr= (char*) res->ptr()+ res->length(); + if (!(res= val_str(&str_value))) + return NULL; + if (str2my_decimal(E_DEC_FATAL_ERROR & ~E_DEC_BAD_NUM, res->ptr(), res->length(), res->charset(), decimal_value) & E_DEC_BAD_NUM) diff --git a/sql/log.cc b/sql/log.cc index d8d5f6fa418..614a07e6b63 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -5050,6 +5050,22 @@ void sql_perror(const char *message) } +/* + Unfortunately, there seems to be no good way + to restore the original streams upon failure. +*/ +static bool redirect_std_streams(const char *file) +{ + if (freopen(file, "a+", stdout) && freopen(file, "a+", stderr)) + { + setbuf(stderr, NULL); + return FALSE; + } + + return TRUE; +} + + bool flush_error_log() { bool result=0; @@ -5077,11 +5093,7 @@ bool flush_error_log() setbuf(stderr, NULL); (void) my_delete(err_renamed, MYF(0)); my_rename(log_error_file,err_renamed,MYF(0)); - if (freopen(log_error_file,"a+",stdout)) - { - freopen(log_error_file,"a+",stderr); - setbuf(stderr, NULL); - } + redirect_std_streams(log_error_file); if ((fd = my_open(err_temp, O_RDONLY, MYF(0))) >= 0) { @@ -5096,13 +5108,7 @@ bool flush_error_log() result= 1; #else my_rename(log_error_file,err_renamed,MYF(0)); - if (freopen(log_error_file,"a+",stdout)) - { - FILE *reopen; - reopen= freopen(log_error_file,"a+",stderr); - setbuf(stderr, NULL); - } - else + if (redirect_std_streams(log_error_file)) result= 1; #endif VOID(pthread_mutex_unlock(&LOCK_error_log)); @@ -5153,25 +5159,9 @@ static void print_buffer_to_nt_eventlog(enum loglevel level, char *buff, #endif /* __NT__ */ -/** - Prints a printf style message to the error log and, under NT, to the - Windows event log. - - This function prints the message into a buffer and then sends that buffer - to other functions to write that message to other logging sources. - - @param event_type Type of event to write (Error, Warning, or Info) - @param format Printf style format of message - @param args va_list list of arguments for the message - - @returns - The function always returns 0. The return value is present in the - signature to be compatible with other logging routines, which could - return an error (e.g. logging to the log tables) -*/ - #ifndef EMBEDDED_LIBRARY -static void print_buffer_to_file(enum loglevel level, const char *buffer) +static void print_buffer_to_file(enum loglevel level, const char *buffer, + size_t length) { time_t skr; struct tm tm_tmp; @@ -5185,7 +5175,7 @@ static void print_buffer_to_file(enum loglevel level, const char *buffer) localtime_r(&skr, &tm_tmp); start=&tm_tmp; - fprintf(stderr, "%02d%02d%02d %2d:%02d:%02d [%s] %s\n", + fprintf(stderr, "%02d%02d%02d %2d:%02d:%02d [%s] %.*s\n", start->tm_year % 100, start->tm_mon+1, start->tm_mday, @@ -5194,7 +5184,7 @@ static void print_buffer_to_file(enum loglevel level, const char *buffer) start->tm_sec, (level == ERROR_LEVEL ? "ERROR" : level == WARNING_LEVEL ? "Warning" : "Note"), - buffer); + (int) length, buffer); fflush(stderr); @@ -5202,7 +5192,22 @@ static void print_buffer_to_file(enum loglevel level, const char *buffer) DBUG_VOID_RETURN; } +/** + Prints a printf style message to the error log and, under NT, to the + Windows event log. + This function prints the message into a buffer and then sends that buffer + to other functions to write that message to other logging sources. + + @param level The level of the msg significance + @param format Printf style format of message + @param args va_list list of arguments for the message + + @returns + The function always returns 0. The return value is present in the + signature to be compatible with other logging routines, which could + return an error (e.g. logging to the log tables) +*/ int vprint_msg_to_log(enum loglevel level, const char *format, va_list args) { char buff[1024]; @@ -5210,7 +5215,7 @@ int vprint_msg_to_log(enum loglevel level, const char *format, va_list args) DBUG_ENTER("vprint_msg_to_log"); length= my_vsnprintf(buff, sizeof(buff), format, args); - print_buffer_to_file(level, buff); + print_buffer_to_file(level, buff, length); #ifdef __NT__ print_buffer_to_nt_eventlog(level, buff, length, sizeof(buff)); @@ -5218,7 +5223,7 @@ int vprint_msg_to_log(enum loglevel level, const char *format, va_list args) DBUG_RETURN(0); } -#endif /*EMBEDDED_LIBRARY*/ +#endif /* EMBEDDED_LIBRARY */ void sql_print_error(const char *format, ...) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 99f16b36dfa..fda64e5a1ea 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -3783,7 +3783,6 @@ static void end_ssl() static int init_server_components() { - FILE* reopen; DBUG_ENTER("init_server_components"); /* We need to call each of these following functions to ensure that @@ -3826,8 +3825,8 @@ static int init_server_components() if (freopen(log_error_file, "a+", stdout)) #endif { - reopen= freopen(log_error_file, "a+", stderr); - setbuf(stderr, NULL); + if (freopen(log_error_file, "a+", stderr)) + setbuf(stderr, NULL); } } } @@ -8222,7 +8221,7 @@ mysqld_get_one_option(int optid, *val= 0; val+= 2; while (*val && my_isspace(mysqld_charset, *val)) - *val++; + val++; if (!*val) { sql_print_error("Bad syntax in replicate-rewrite-db - empty TO db!\n"); diff --git a/sql/partition_info.cc b/sql/partition_info.cc index d85888e295c..f37151ea51d 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -1206,13 +1206,11 @@ bool partition_info::set_up_charset_field_preps() i= 0; while ((field= *(ptr++))) { - CHARSET_INFO *cs; uchar *field_buf; LINT_INIT(field_buf); if (!field_is_partition_charset(field)) continue; - cs= ((Field_str*)field)->charset(); size= field->pack_length(); if (!(field_buf= (uchar*) sql_calloc(size))) goto error; diff --git a/sql/slave.cc b/sql/slave.cc index 795bc481071..f1e0962e7e8 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -3035,11 +3035,8 @@ log '%s' at position %s, relay log '%s' position: %s", RPL_LOG_NAME, pthread_mutex_lock(&rli->data_lock); if (rli->slave_skip_counter) { - char *pos; - pos= strmake(saved_log_name, rli->group_relay_log_name, FN_REFLEN - 1); - pos= '\0'; - pos= strmake(saved_master_log_name, rli->group_master_log_name, FN_REFLEN - 1); - pos= '\0'; + strmake(saved_log_name, rli->group_relay_log_name, FN_REFLEN - 1); + strmake(saved_master_log_name, rli->group_master_log_name, FN_REFLEN - 1); saved_log_pos= rli->group_relay_log_pos; saved_master_log_pos= rli->group_master_log_pos; saved_skip= rli->slave_skip_counter; diff --git a/sql/spatial.cc b/sql/spatial.cc index 11df6c00dc5..2305a8eb97d 100644 --- a/sql/spatial.cc +++ b/sql/spatial.cc @@ -159,11 +159,10 @@ Geometry *Geometry::construct(Geometry_buffer *buffer, { uint32 geom_type; Geometry *result; - char byte_order; if (data_len < SRID_SIZE + WKB_HEADER_SIZE) // < 4 + (1 + 4) return NULL; - byte_order= data[SRID_SIZE]; + /* + 1 to skip the byte order (stored in position SRID_SIZE). */ geom_type= uint4korr(data + SRID_SIZE + 1); if (!(result= create_by_typeid(buffer, (int) geom_type))) return NULL; diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 90eef872115..b507b70d1fb 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -5701,7 +5701,6 @@ bool mysql_create_user(THD *thd, List &list) { int result; String wrong_users; - ulong sql_mode; LEX_USER *user_name, *tmp_user_name; List_iterator user_list(list); TABLE_LIST tables[GRANT_TABLES]; @@ -5748,7 +5747,6 @@ bool mysql_create_user(THD *thd, List &list) } some_users_created= TRUE; - sql_mode= thd->variables.sql_mode; if (replace_user_table(thd, tables[0].table, *user_name, 0, 0, 1, 0)) { append_user(&wrong_users, user_name); diff --git a/sql/sql_base.cc b/sql/sql_base.cc index d2392bdd9b1..c38526a6d0b 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -5674,7 +5674,7 @@ static void update_field_dependencies(THD *thd, Field *field, TABLE *table) DBUG_ENTER("update_field_dependencies"); if (thd->mark_used_columns != MARK_COLUMNS_NONE) { - MY_BITMAP *current_bitmap, *other_bitmap; + MY_BITMAP *bitmap; /* We always want to register the used keys, as the column bitmap may have @@ -5685,15 +5685,9 @@ static void update_field_dependencies(THD *thd, Field *field, TABLE *table) table->merge_keys.merge(field->part_of_key); if (thd->mark_used_columns == MARK_COLUMNS_READ) - { - current_bitmap= table->read_set; - other_bitmap= table->write_set; - } + bitmap= table->read_set; else - { - current_bitmap= table->write_set; - other_bitmap= table->read_set; - } + bitmap= table->write_set; /* The test-and-set mechanism in the bitmap is not reliable during @@ -5702,7 +5696,7 @@ static void update_field_dependencies(THD *thd, Field *field, TABLE *table) only those columns that are used in the SET clause. I.e they are being set here. See multi_update::prepare() */ - if (bitmap_fast_test_and_set(current_bitmap, field->field_index)) + if (bitmap_fast_test_and_set(bitmap, field->field_index)) { if (thd->mark_used_columns == MARK_COLUMNS_WRITE) { diff --git a/sql/sql_load.cc b/sql/sql_load.cc index ee7481234a4..a4cf46b35e8 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -128,6 +128,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, bool is_fifo=0; #ifndef EMBEDDED_LIBRARY LOAD_FILE_INFO lf_info; + THD::killed_state killed_status; #endif char *db = table_list->db; // This is never null /* @@ -138,7 +139,6 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, char *tdb= thd->db ? thd->db : db; // Result is never null ulong skip_lines= ex->skip_lines; bool transactional_table; - THD::killed_state killed_status= THD::NOT_KILLED; DBUG_ENTER("mysql_load"); #ifdef EMBEDDED_LIBRARY @@ -455,7 +455,11 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, error=1; thd->killed= THD::KILL_QUERY; };); - killed_status= (error == 0)? THD::NOT_KILLED : thd->killed; + +#ifndef EMBEDDED_LIBRARY + killed_status= (error == 0) ? THD::NOT_KILLED : thd->killed; +#endif + /* We must invalidate the table in query cache before binlog writing and ha_autocommit_... @@ -708,12 +712,9 @@ read_fixed_length(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, List_iterator_fast it(fields_vars); Item_field *sql_field; TABLE *table= table_list->table; - ulonglong id; bool err; DBUG_ENTER("read_fixed_length"); - id= 0; - while (!read_info.read_fixed_length()) { if (thd->killed) @@ -839,12 +840,10 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, Item *item; TABLE *table= table_list->table; uint enclosed_length; - ulonglong id; bool err; DBUG_ENTER("read_sep_field"); enclosed_length=enclosed.length(); - id= 0; for (;;it.rewind()) { diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 1f3d29ffec0..134517e5bf7 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -465,6 +465,12 @@ static void handle_bootstrap_impl(THD *thd) } buff= (char*) thd->net.buff; res= fgets(buff + length, thd->net.max_packet - length, file); + if (!res && !feof(file)) + { + net_end_statement(thd); + bootstrap_error= 1; + break; + } length+= (ulong) strlen(buff + length); /* purecov: end */ } @@ -1535,7 +1541,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, { STATUS_VAR current_global_status_var; ulong uptime; - uint length; + uint length __attribute__((unused)); ulonglong queries_per_second1000; char buff[250]; uint buff_len= sizeof(buff); @@ -1548,7 +1554,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, else queries_per_second1000= thd->query_id * LL(1000) / uptime; - length= my_snprintf((char*) buff, buff_len - 1, + length= my_snprintf(buff, buff_len - 1, "Uptime: %lu Threads: %d Questions: %lu " "Slow queries: %lu Opens: %lu Flush tables: %lu " "Open tables: %u Queries per second avg: %u.%u", @@ -1560,10 +1566,6 @@ bool dispatch_command(enum enum_server_command command, THD *thd, cached_open_tables(), (uint) (queries_per_second1000 / 1000), (uint) (queries_per_second1000 % 1000)); -#ifdef EMBEDDED_LIBRARY - /* Store the buffer in permanent memory */ - my_ok(thd, 0, 0, buff); -#endif #ifdef SAFEMALLOC if (sf_malloc_cur_memory) // Using SAFEMALLOC { @@ -1578,6 +1580,9 @@ bool dispatch_command(enum enum_server_command command, THD *thd, VOID(my_net_write(net, (uchar*) buff, length)); VOID(net_flush(net)); thd->main_da.disable_status(); +#else + /* Store the buffer in permanent memory */ + my_ok(thd, 0, 0, buff); #endif break; } diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index f6045e4704e..d7dd3eb63f2 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -1168,12 +1168,9 @@ bool change_master(THD* thd, Master_info* mi) /* Before processing the command, save the previous state. */ - char *pos; - pos= strmake(saved_host, mi->host, HOSTNAME_LENGTH); - pos= '\0'; + strmake(saved_host, mi->host, HOSTNAME_LENGTH); saved_port= mi->port; - pos= strmake(saved_log_name, mi->master_log_name, FN_REFLEN - 1); - pos= '\0'; + strmake(saved_log_name, mi->master_log_name, FN_REFLEN - 1); saved_log_pos= mi->master_log_pos; /* diff --git a/sql/sql_show.cc b/sql/sql_show.cc index d0e76e501e2..eb5d3a1965d 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -3868,7 +3868,6 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables, uint flags=field->flags; char tmp[MAX_FIELD_WIDTH]; String type(tmp,sizeof(tmp), system_charset_info); - char *end; int decimals, field_length; if (wild && wild[0] && @@ -3889,7 +3888,7 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables, field->field_name) & COL_ACLS; if (!tables->schema_table && !col_access) continue; - end= tmp; + char *end= tmp; for (uint bitnr=0; col_access ; col_access>>=1,bitnr++) { if (col_access & 1) @@ -4015,7 +4014,6 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables, table->field[15]->store((const char*) pos, strlen((const char*) pos), cs); - end= tmp; if (field->unireg_check == Field::NEXT_NUMBER) table->field[16]->store(STRING_WITH_LEN("auto_increment"), cs); if (show_table->timestamp_field == field && diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 47b91fcca0e..f765e5c5cae 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -6507,7 +6507,6 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, uint index_add_count= 0; uint *index_add_buffer= NULL; uint candidate_key_count= 0; - bool committed= 0; bool no_pk; DBUG_ENTER("mysql_alter_table"); @@ -7380,7 +7379,6 @@ view_err: DBUG_PRINT("info", ("Committing before unlocking table")); if (ha_autocommit_or_rollback(thd, 0) || end_active_trans(thd)) goto err1; - committed= 1; } /*end of if (! new_table) for add/drop index*/ diff --git a/sql/table.cc b/sql/table.cc index dde3654dab1..e989ab039a0 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -534,7 +534,7 @@ int open_table_def(THD *thd, TABLE_SHARE *share, uint db_flags) int error, table_type; bool error_given; File file; - uchar head[288], *disk_buff; + uchar head[288]; char path[FN_REFLEN]; MEM_ROOT **root_ptr, *old_root; DBUG_ENTER("open_table_def"); @@ -543,7 +543,6 @@ int open_table_def(THD *thd, TABLE_SHARE *share, uint db_flags) error= 1; error_given= 0; - disk_buff= NULL; strxmov(path, share->normalized_path.str, reg_ext, NullS); if ((file= my_open(path, O_RDONLY | O_SHARE, MYF(0))) < 0) diff --git a/sql/udf_example.c b/sql/udf_example.c index 637293209e0..468118b44ef 100644 --- a/sql/udf_example.c +++ b/sql/udf_example.c @@ -1067,7 +1067,7 @@ char *myfunc_argument_name(UDF_INIT *initid __attribute__((unused)), { if (!args->attributes[0]) { - null_value= 0; + *null_value= 1; return 0; } (*length)--; /* space for ending \0 (for debugging purposes) */ diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc index e3bc7f55dd2..5a3399b2401 100644 --- a/storage/csv/ha_tina.cc +++ b/storage/csv/ha_tina.cc @@ -468,7 +468,7 @@ int ha_tina::encode_quote(uchar *buf) const char *ptr; const char *end_ptr; const bool was_null= (*field)->is_null(); - + /* assistance for backwards compatibility in production builds. note: this will not work for ENUM columns. @@ -480,7 +480,7 @@ int ha_tina::encode_quote(uchar *buf) } (*field)->val_str(&attribute,&attribute); - + if (was_null) (*field)->set_null(); @@ -491,34 +491,30 @@ int ha_tina::encode_quote(uchar *buf) buffer.append('"'); - while (ptr < end_ptr) + for (; ptr < end_ptr; ptr++) { if (*ptr == '"') { buffer.append('\\'); buffer.append('"'); - *ptr++; } else if (*ptr == '\r') { buffer.append('\\'); buffer.append('r'); - *ptr++; } else if (*ptr == '\\') { buffer.append('\\'); buffer.append('\\'); - *ptr++; } else if (*ptr == '\n') { buffer.append('\\'); buffer.append('n'); - *ptr++; } else - buffer.append(*ptr++); + buffer.append(*ptr); } buffer.append('"'); } diff --git a/storage/example/ha_example.cc b/storage/example/ha_example.cc index 604722c3c8c..2a4fe538c85 100644 --- a/storage/example/ha_example.cc +++ b/storage/example/ha_example.cc @@ -153,7 +153,7 @@ static int example_done_func(void *p) hash_free(&example_open_tables); pthread_mutex_destroy(&example_mutex); - DBUG_RETURN(0); + DBUG_RETURN(error); } diff --git a/storage/myisam/mi_locking.c b/storage/myisam/mi_locking.c index 342efff4842..589b9cf89b7 100644 --- a/storage/myisam/mi_locking.c +++ b/storage/myisam/mi_locking.c @@ -29,7 +29,6 @@ int mi_lock_database(MI_INFO *info, int lock_type) int error; uint count; MYISAM_SHARE *share=info->s; - uint flag; DBUG_ENTER("mi_lock_database"); DBUG_PRINT("enter",("lock_type: %d old lock %d r_locks: %u w_locks: %u " "global_changed: %d open_count: %u name: '%s'", @@ -48,7 +47,7 @@ int mi_lock_database(MI_INFO *info, int lock_type) DBUG_RETURN(0); } - flag=error=0; + error= 0; pthread_mutex_lock(&share->intern_lock); if (share->kfile >= 0) /* May only be false on windows */ { @@ -120,14 +119,12 @@ int mi_lock_database(MI_INFO *info, int lock_type) { if (share->r_locks) { /* Only read locks left */ - flag=1; if (my_lock(share->kfile,F_RDLCK,0L,F_TO_EOF, MYF(MY_WME | MY_SEEK_NOT_DONE)) && !error) error=my_errno; } else if (!share->w_locks) { /* No more locks */ - flag=1; if (my_lock(share->kfile,F_UNLCK,0L,F_TO_EOF, MYF(MY_WME | MY_SEEK_NOT_DONE)) && !error) error=my_errno; @@ -148,7 +145,6 @@ int mi_lock_database(MI_INFO *info, int lock_type) */ if (share->w_locks == 1) { - flag=1; if (my_lock(share->kfile,lock_type,0L,F_TO_EOF, MYF(MY_SEEK_NOT_DONE))) { @@ -163,7 +159,6 @@ int mi_lock_database(MI_INFO *info, int lock_type) } if (!share->r_locks && !share->w_locks) { - flag=1; if (my_lock(share->kfile,lock_type,0L,F_TO_EOF, info->lock_wait | MY_SEEK_NOT_DONE)) { @@ -188,7 +183,6 @@ int mi_lock_database(MI_INFO *info, int lock_type) { /* Change READONLY to RW */ if (share->r_locks == 1) { - flag=1; if (my_lock(share->kfile,lock_type,0L,F_TO_EOF, MYF(info->lock_wait | MY_SEEK_NOT_DONE))) { @@ -205,7 +199,6 @@ int mi_lock_database(MI_INFO *info, int lock_type) { if (!share->w_locks) { - flag=1; if (my_lock(share->kfile,lock_type,0L,F_TO_EOF, info->lock_wait | MY_SEEK_NOT_DONE)) { @@ -252,11 +245,6 @@ int mi_lock_database(MI_INFO *info, int lock_type) } #endif pthread_mutex_unlock(&share->intern_lock); -#if defined(FULL_LOG) || defined(_lint) - lock_type|=(int) (flag << 8); /* Set bit to set if real lock */ - myisam_log_command(MI_LOG_LOCK,info,(uchar*) &lock_type,sizeof(lock_type), - error); -#endif DBUG_RETURN(error); } /* mi_lock_database */ diff --git a/storage/myisam/rt_split.c b/storage/myisam/rt_split.c index 88cf643faf9..03d22de68fa 100644 --- a/storage/myisam/rt_split.c +++ b/storage/myisam/rt_split.c @@ -255,7 +255,6 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key, SplitStruct *stop; double *coord_buf; double *next_coord; - double *old_coord; int n_dim; uchar *source_cur, *cur1, *cur2; uchar *new_page= info->buff; @@ -293,8 +292,6 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key, rtree_d_mbr(keyinfo->seg, key, key_length, cur->coords); cur->key = key; - old_coord = next_coord; - if (split_rtree_node(task, max_keys + 1, mi_getint(page) + full_length + 2, full_length, rt_PAGE_MIN_SIZE(keyinfo->block_length), diff --git a/storage/myisammrg/myrg_open.c b/storage/myisammrg/myrg_open.c index 5fcbe0c3297..18f8aa8d2c0 100644 --- a/storage/myisammrg/myrg_open.c +++ b/storage/myisammrg/myrg_open.c @@ -227,9 +227,7 @@ MYRG_INFO *myrg_parent_open(const char *parent_name, int save_errno; int insert_method; uint length; - uint dir_length; uint child_count; - size_t name_buff_length; File fd; IO_CACHE file_cache; char parent_name_buff[FN_REFLEN * 2]; @@ -299,7 +297,6 @@ MYRG_INFO *myrg_parent_open(const char *parent_name, } /* Call callback for each child. */ - dir_length= dirname_part(parent_name_buff, parent_name, &name_buff_length); my_b_seek(&file_cache, 0); while ((length= my_b_gets(&file_cache, child_name_buff, FN_REFLEN - 1))) { @@ -379,7 +376,6 @@ int myrg_attach_children(MYRG_INFO *m_info, int handle_locking, { ulonglong file_offset; MI_INFO *myisam; - int rc; int errpos; int save_errno; uint idx; @@ -398,7 +394,6 @@ int myrg_attach_children(MYRG_INFO *m_info, int handle_locking, here and in ha_myisammrg::store_lock() forces consistent data. */ pthread_mutex_lock(&m_info->mutex); - rc= 1; errpos= 0; file_offset= 0; min_keys= 0; diff --git a/strings/decimal.c b/strings/decimal.c index 4403fc9fd6b..bda296ce832 100644 --- a/strings/decimal.c +++ b/strings/decimal.c @@ -1934,8 +1934,7 @@ static int do_sub(decimal_t *from1, decimal_t *from2, decimal_t *to) int decimal_intg(decimal_t *from) { int res; - dec1 *tmp_res; - tmp_res= remove_leading_zeroes(from, &res); + remove_leading_zeroes(from, &res); return res; } From b6e05df365b7dce82c22c498114bb1797da0d2a3 Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Tue, 20 Jul 2010 12:38:46 -0700 Subject: [PATCH 312/461] Fixed bug #607168. The command CREATE TABLE AS SELECT erroneously preserved the virtual properties of the virtual fields from the select list. --- mysql-test/suite/vcol/r/vcol_misc.result | 8 ++++++++ mysql-test/suite/vcol/t/vcol_misc.test | 10 ++++++++++ sql/sql_select.cc | 2 ++ 3 files changed, 20 insertions(+) diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result index 8ee9f5a9f67..1171f41d7a4 100644 --- a/mysql-test/suite/vcol/r/vcol_misc.result +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -87,3 +87,11 @@ a v 2002-02-15 00:00:00 0 2000-10-15 00:00:00 1 DROP TABLE t1, t2; +CREATE TABLE t1 (f1 INTEGER, v1 INTEGER AS (f1) VIRTUAL); +CREATE TABLE t2 AS SELECT v1 FROM t1; +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `v1` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1,t2; diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index 87a870181b0..360ed19d578 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -87,3 +87,13 @@ INSERT INTO t2(a) VALUES ('2000-10-15'); SELECT * FROM t2; DROP TABLE t1, t2; + +# +# Bug#607168: CREATE TABLE AS SELECT that returns virtual columns +# + +CREATE TABLE t1 (f1 INTEGER, v1 INTEGER AS (f1) VIRTUAL); +CREATE TABLE t2 AS SELECT v1 FROM t1; +SHOW CREATE TABLE t2; + +DROP TABLE t1,t2; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 2a67259f91d..4bbcf63750a 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -9564,6 +9564,8 @@ Field *create_tmp_field_from_field(THD *thd, Field *org_field, table->s->db_create_options|= HA_OPTION_PACK_RECORD; else if (org_field->type() == FIELD_TYPE_DOUBLE) ((Field_double *) new_field)->not_fixed= TRUE; + new_field->vcol_info= 0; + new_field->stored_in_db= TRUE; } return new_field; } From ba9d750bca12dfc82b0ea2b8f7f0f80ed104bb7d Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 21 Jul 2010 02:07:45 +0300 Subject: [PATCH 313/461] Fix for LP#588599, mysqlbug#45377: ARCHIVE tables aren't discoverable after OPTIMIZE Fix based on code from Stewart Smith storage/archive/ha_archive.cc: Ensure that the frm definition is stored in optimized tables. --- storage/archive/ha_archive.cc | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc index e3151d35e23..97d9f071b1f 100644 --- a/storage/archive/ha_archive.cc +++ b/storage/archive/ha_archive.cc @@ -1290,10 +1290,11 @@ int ha_archive::repair(THD* thd, HA_CHECK_OPT* check_opt) */ int ha_archive::optimize(THD* thd, HA_CHECK_OPT* check_opt) { - DBUG_ENTER("ha_archive::optimize"); int rc= 0; azio_stream writer; char writer_filename[FN_REFLEN]; + char* frm_string; + DBUG_ENTER("ha_archive::optimize"); init_archive_reader(); @@ -1304,12 +1305,28 @@ int ha_archive::optimize(THD* thd, HA_CHECK_OPT* check_opt) share->archive_write_open= FALSE; } + if (!(frm_string= (char*) malloc(archive.frm_length))) + return ENOMEM; + + azread_frm(&archive, frm_string); + /* Lets create a file to contain the new data */ fn_format(writer_filename, share->table_name, "", ARN, MY_REPLACE_EXT | MY_UNPACK_FILENAME); if (!(azopen(&writer, writer_filename, O_CREAT|O_RDWR|O_BINARY))) - DBUG_RETURN(HA_ERR_CRASHED_ON_USAGE); + { + free(frm_string); + DBUG_RETURN(HA_ERR_CRASHED_ON_USAGE); + } + + rc= azwrite_frm(&writer, frm_string, archive.frm_length); + free(frm_string); + if (rc) + { + rc= HA_ERR_CRASHED_ON_USAGE; + goto error; + } /* An extended rebuild is a lot more effort. We open up each row and re-record it. @@ -1387,7 +1404,6 @@ int ha_archive::optimize(THD* thd, HA_CHECK_OPT* check_opt) // make the file we just wrote be our data file rc = my_rename(writer_filename,share->data_file_name,MYF(0)); - DBUG_RETURN(rc); error: DBUG_PRINT("ha_archive", ("Failed to recover, error was %d", rc)); From a7bc7ebd8a0e41fc482fbcb3494aa1ee23319ff4 Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Tue, 20 Jul 2010 21:59:47 -0700 Subject: [PATCH 314/461] Fixed bug #607177. Due to an invalid check for NULL of the second argument of the Item_func_round items performed in the code of Item_func_round::real_op the function ROUND sometimes could return wrong results. --- mysql-test/suite/vcol/r/vcol_misc.result | 20 ++++++++++++++++++++ mysql-test/suite/vcol/t/vcol_misc.test | 16 ++++++++++++++++ sql/item_func.cc | 10 ++++++---- 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result index 8ee9f5a9f67..2896157b813 100644 --- a/mysql-test/suite/vcol/r/vcol_misc.result +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -87,3 +87,23 @@ a v 2002-02-15 00:00:00 0 2000-10-15 00:00:00 1 DROP TABLE t1, t2; +CREATE TABLE t1 (p int, a double NOT NULL, v double AS (ROUND(a,p)) VIRTUAL); +INSERT INTO t1 VALUES (0,1,0); +Warnings: +Warning 1645 The value specified for computed column 'v' in table 't1' ignored +INSERT INTO t1 VALUES (NULL,0,0); +Warnings: +Warning 1645 The value specified for computed column 'v' in table 't1' ignored +SELECT a, p, v, ROUND(a,p), ROUND(a,p+NULL) FROM t1; +a p v ROUND(a,p) ROUND(a,p+NULL) +1 0 1 1 NULL +0 NULL NULL NULL NULL +DROP TABLE t1; +CREATE TABLE t1 (p int, a double NOT NULL); +INSERT INTO t1(p,a) VALUES (0,1); +INSERT INTO t1(p,a) VALUES (NULL,0); +SELECT a, p, ROUND(a,p), ROUND(a,p+NULL) FROM t1; +a p ROUND(a,p) ROUND(a,p+NULL) +1 0 1 NULL +0 NULL NULL NULL +DROP TABLE t1; diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index 87a870181b0..bd527a61fbc 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -87,3 +87,19 @@ INSERT INTO t2(a) VALUES ('2000-10-15'); SELECT * FROM t2; DROP TABLE t1, t2; + +# +# Bug#607177: ROUND function in the expression for a virtual function +# + +CREATE TABLE t1 (p int, a double NOT NULL, v double AS (ROUND(a,p)) VIRTUAL); +INSERT INTO t1 VALUES (0,1,0); +INSERT INTO t1 VALUES (NULL,0,0); +SELECT a, p, v, ROUND(a,p), ROUND(a,p+NULL) FROM t1; +DROP TABLE t1; + +CREATE TABLE t1 (p int, a double NOT NULL); +INSERT INTO t1(p,a) VALUES (0,1); +INSERT INTO t1(p,a) VALUES (NULL,0); +SELECT a, p, ROUND(a,p), ROUND(a,p+NULL) FROM t1; +DROP TABLE t1; diff --git a/sql/item_func.cc b/sql/item_func.cc index 653c29cec48..3cb9d4724b9 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -2040,10 +2040,12 @@ double Item_func_round::real_op() { double value= args[0]->val_real(); - if (!(null_value= args[0]->null_value || args[1]->null_value)) - return my_double_round(value, args[1]->val_int(), args[1]->unsigned_flag, - truncate); - + if (!(null_value= args[0]->null_value)) + { + longlong dec= args[1]->val_int(); + if (!(null_value= args[1]->null_value)) + return my_double_round(value, dec, args[1]->unsigned_flag, truncate); + } return 0.0; } From bd41af86ebc53510760504b980f073be4438f6e9 Mon Sep 17 00:00:00 2001 From: Dmitry Shulga Date: Wed, 21 Jul 2010 14:56:43 +0700 Subject: [PATCH 315/461] Fixed bug #42496 - the server could crash on a debug assert after a failure to write into a closed socket sql/protocol.cc: Protocol::flush modified: set thd->main_da.can_overwrite_status= TRUE before call to net_flush() in order to prevent crash on assert in case of socket write failure, reset it to FALSE when net_flush() returned; Protocol::send_fields modified: return from method with error if call to my_net_write(), proto.write() or write_eof_packet() failed. sql/sql_cache.cc: Query_cache::send_result_to_client modified: call to thd->main_da.disable_status() only if write to socket was successful. sql/sql_cursor.cc: Materialized_cursor::fetch modified: leave method if call to result->send_data() failed. sql/sql_prepare.cc: send_prep_stmt() modified: call to thd->main_da.disable_status() only if thd->protocol_text.send_fields() completed successfully. --- sql/protocol.cc | 15 +++++++++++---- sql/sql_cache.cc | 3 ++- sql/sql_cursor.cc | 7 ++++++- sql/sql_prepare.cc | 7 +++++-- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/sql/protocol.cc b/sql/protocol.cc index dc53e029647..dfb78462f13 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -534,7 +534,11 @@ void Protocol::end_partial_result_set(THD *thd_arg) bool Protocol::flush() { #ifndef EMBEDDED_LIBRARY - return net_flush(&thd->net); + bool error; + thd->main_da.can_overwrite_status= TRUE; + error= net_flush(&thd->net); + thd->main_da.can_overwrite_status= FALSE; + return error; #else return 0; #endif @@ -574,7 +578,8 @@ bool Protocol::send_fields(List *list, uint flags) if (flags & SEND_NUM_ROWS) { // Packet with number of elements uchar *pos= net_store_length(buff, list->elements); - (void) my_net_write(&thd->net, buff, (size_t) (pos-buff)); + if (my_net_write(&thd->net, buff, (size_t) (pos-buff))) + DBUG_RETURN(1); } #ifndef DBUG_OFF @@ -698,7 +703,7 @@ bool Protocol::send_fields(List *list, uint flags) if (flags & SEND_DEFAULTS) item->send(&prot, &tmp); // Send default value if (prot.write()) - break; /* purecov: inspected */ + DBUG_RETURN(1); #ifndef DBUG_OFF field_types[count++]= field.type; #endif @@ -711,7 +716,9 @@ bool Protocol::send_fields(List *list, uint flags) to show that there is no cursor. Send no warning information, as it will be sent at statement end. */ - write_eof_packet(thd, &thd->net, thd->server_status, thd->total_warn_count); + if (write_eof_packet(thd, &thd->net, thd->server_status, + thd->total_warn_count)) + DBUG_RETURN(1); } DBUG_RETURN(prepare_for_send(list)); diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index f862cbed4f1..fcf4edbdc22 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -1653,7 +1653,8 @@ def_week_frmt: %lu, in_trans: %d, autocommit: %d", thd->limit_found_rows = query->found_rows(); thd->status_var.last_query_cost= 0.0; - thd->main_da.disable_status(); + if (!thd->main_da.is_set()) + thd->main_da.disable_status(); BLOCK_UNLOCK_RD(query_block); DBUG_RETURN(1); // Result sent to client diff --git a/sql/sql_cursor.cc b/sql/sql_cursor.cc index 6f61dc40f66..d7d029d28d4 100644 --- a/sql/sql_cursor.cc +++ b/sql/sql_cursor.cc @@ -658,7 +658,12 @@ void Materialized_cursor::fetch(ulong num_rows) if ((res= table->file->rnd_next(table->record[0]))) break; /* Send data only if the read was successful. */ - result->send_data(item_list); + /* + If network write failed (i.e. due to a closed socked), + the error has already been set. Just return. + */ + if (result->send_data(item_list)) + return; } switch (res) { diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 041d9f7c30b..bd152866deb 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -263,8 +263,11 @@ static bool send_prep_stmt(Prepared_statement *stmt, uint columns) &stmt->lex->param_list, Protocol::SEND_EOF); } - /* Flag that a response has already been sent */ - thd->main_da.disable_status(); + + if (!error) + /* Flag that a response has already been sent */ + thd->main_da.disable_status(); + DBUG_RETURN(error); } #else From e24abd9091ce28a27f27073ab70aed94851362bc Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Wed, 21 Jul 2010 18:05:57 +0300 Subject: [PATCH 316/461] Addendum #4 to bug #53095 SHOW DATABASES LIKE ... was not converting to lowercase on comparison as the documentation is suggesting. Fixed it to behave similarly to SHOW TABLES LIKE ... and updated the failing on MacOSX lowercase_table2 test case. --- mysql-test/r/lowercase_table2.result | 3 ++- sql/sql_show.cc | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/lowercase_table2.result b/mysql-test/r/lowercase_table2.result index 51c2ac0faf5..c9a46b70fab 100644 --- a/mysql-test/r/lowercase_table2.result +++ b/mysql-test/r/lowercase_table2.result @@ -56,6 +56,7 @@ CREATE DATABASE `TEST_$1`; SHOW DATABASES LIKE "TEST%"; Database (TEST%) TEST_$1 +test DROP DATABASE `test_$1`; CREATE TABLE T1 (a int) engine=innodb; INSERT INTO T1 VALUES (1); @@ -171,6 +172,6 @@ create table myUC (i int); select TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLES where TABLE_SCHEMA ='mysqltest_LC2'; TABLE_SCHEMA TABLE_NAME -mysqltest_LC2 myUC +mysqltest_lc2 myUC use test; drop database mysqltest_LC2; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index eb5d3a1965d..616bced8f4a 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -521,8 +521,19 @@ find_files(THD *thd, List *files, const char *db, continue; file_name_len= filename_to_tablename(file->name, uname, sizeof(uname)); - if (wild && wild_compare(uname, wild, 0)) - continue; + if (wild) + { + if (lower_case_table_names) + { + if (my_wildcmp(files_charset_info, + uname, uname + file_name_len, + wild, wild + wild_length, + wild_prefix, wild_one,wild_many)) + continue; + } + else if (wild_compare(uname, wild, 0)) + continue; + } if (!(file_name= thd->make_lex_string(file_name, uname, file_name_len, TRUE))) { From e9a52f962f2d89fe1938145105bcb35f970a2414 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Jul 2010 11:15:15 -0500 Subject: [PATCH 317/461] Bug#49542 - Do as the comment suggests and downgrade directory errors from find_file() to a warning unless they happen during a SHOW command. --- sql/sql_show.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sql/sql_show.cc b/sql/sql_show.cc index eb5d3a1965d..c979d44dc1c 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1,4 +1,4 @@ -/* Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc. +/* Copyright 2000, 2010 Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -9,9 +9,9 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* Function with list databases, tables or fields */ @@ -2986,7 +2986,7 @@ make_table_name_list(THD *thd, List *table_names, LEX *lex, */ if (res == FIND_FILES_DIR) { - if (lex->sql_command != SQLCOM_SELECT) + if (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) return 1; thd->clear_error(); return 2; From 1837dcfee747b697bce2023d94a8daff6e393039 Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Fri, 23 Jul 2010 15:52:54 +0400 Subject: [PATCH 318/461] Bug #54476: crash when group_concat and 'with rollup' in prepared statements Using GROUP_CONCAT() together with the WITH ROLLUP modifier could crash the server. The reason was a combination of several facts: 1. The Item_func_group_concat class stores pointers to ORDER objects representing the columns in the ORDER BY clause of GROUP_CONCAT(). 2. find_order_in_list() called from Item_func_group_concat::setup() modifies the ORDER objects so that their 'item' member points to the arguments list allocated in the Item_func_group_concat constructor. 3. In some cases (e.g. in JOIN::rollup_make_fields) a copy of the original Item_func_group_concat object could be created by using the Item_func_group_concat::Item_func_group_concat(THD *thd, Item_func_group_concat *item) copy constructor. The latter essentially creates a shallow copy of the source object. Memory for the arguments array is allocated on thd->mem_root, but the pointers for arguments and ORDER are copied verbatim. What happens in the test case is that when executing the query for the first time, after a copy of the original Item_func_group_concat object has been created by JOIN::rollup_make_fields(), find_order_in_list() is called for this new object. It then resolves ORDER BY by modifying the ORDER objects so that they point to elements of the arguments array which is local to the cloned object. When thd->mem_root is freed upon completing the execution, pointers in the ORDER objects become invalid. Those ORDER objects, however, are also shared with the original Item_func_group_concat object which is preserved between executions of a prepared statement. So the first call to find_order_in_list() for the original object on the second execution tries to dereference an invalid pointer. The solution is to create copies of the ORDER objects when copying Item_func_group_concat to not leave any stale pointers in other instances with different lifecycles. mysql-test/r/func_gconcat.result: Test case for bug #54476. mysql-test/t/func_gconcat.test: Test case for bug #54476. sql/item_sum.cc: Copy the ORDER objects pointed to by the elements of the 'order' array in the copy constructor of Item_func_group_concat. sql/table.h: Removed the unused 'item_copy' member of the ORDER class. --- mysql-test/r/func_gconcat.result | 21 ++++++++++++++++++++- mysql-test/t/func_gconcat.test | 16 +++++++++++++++- sql/item_sum.cc | 19 ++++++++++++++++++- sql/table.h | 1 - 4 files changed, 53 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/func_gconcat.result b/mysql-test/r/func_gconcat.result index 766f3b6bfaa..ae48eb1e0ff 100644 --- a/mysql-test/r/func_gconcat.result +++ b/mysql-test/r/func_gconcat.result @@ -995,6 +995,7 @@ SELECT 1 FROM 1 1 DROP TABLE t1; +End of 5.0 tests # # Bug #52397: another crash with explain extended and group_concat # @@ -1010,4 +1011,22 @@ id select_type table type possible_keys key key_len ref rows filtered Extra Warnings: Note 1003 select 1 AS `1` from (select group_concat(`test`.`t1`.`a` order by `test`.`t1`.`a` ASC separator ',') AS `GROUP_CONCAT(t1.a ORDER BY t1.a ASC)` from `test`.`t1` `t2` join `test`.`t1` group by `test`.`t1`.`a`) `d` DROP TABLE t1; -End of 5.0 tests +# +# Bug #54476: crash when group_concat and 'with rollup' in prepared statements +# +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1), (2); +PREPARE stmt FROM "SELECT GROUP_CONCAT(t1.a ORDER BY t1.a) FROM t1 JOIN t1 t2 GROUP BY t1.a WITH ROLLUP"; +EXECUTE stmt; +GROUP_CONCAT(t1.a ORDER BY t1.a) +1,1 +2,2 +1,1,2,2 +EXECUTE stmt; +GROUP_CONCAT(t1.a ORDER BY t1.a) +1,1 +2,2 +1,1,2,2 +DEALLOCATE PREPARE stmt; +DROP TABLE t1; +End of 5.1 tests diff --git a/mysql-test/t/func_gconcat.test b/mysql-test/t/func_gconcat.test index e832ea316eb..926c1f92855 100644 --- a/mysql-test/t/func_gconcat.test +++ b/mysql-test/t/func_gconcat.test @@ -708,6 +708,7 @@ SELECT 1 FROM DROP TABLE t1; +--echo End of 5.0 tests --echo # --echo # Bug #52397: another crash with explain extended and group_concat @@ -719,5 +720,18 @@ EXPLAIN EXTENDED SELECT 1 FROM t1 t2, t1 GROUP BY t1.a) AS d; DROP TABLE t1; +--echo # +--echo # Bug #54476: crash when group_concat and 'with rollup' in prepared statements +--echo # ---echo End of 5.0 tests +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1), (2); + +PREPARE stmt FROM "SELECT GROUP_CONCAT(t1.a ORDER BY t1.a) FROM t1 JOIN t1 t2 GROUP BY t1.a WITH ROLLUP"; +EXECUTE stmt; +EXECUTE stmt; + +DEALLOCATE PREPARE stmt; +DROP TABLE t1; + +--echo End of 5.1 tests diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 228e36fc9f9..1048bd3d6ff 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -3034,7 +3034,6 @@ Item_func_group_concat::Item_func_group_concat(THD *thd, tree(item->tree), unique_filter(item->unique_filter), table(item->table), - order(item->order), context(item->context), arg_count_order(item->arg_count_order), arg_count_field(item->arg_count_field), @@ -3047,6 +3046,24 @@ Item_func_group_concat::Item_func_group_concat(THD *thd, { quick_group= item->quick_group; result.set_charset(collation.collation); + + /* + Since the ORDER structures pointed to by the elements of the 'order' array + may be modified in find_order_in_list() called from + Item_func_group_concat::setup(), create a copy of those structures so that + such modifications done in this object would not have any effect on the + object being copied. + */ + ORDER *tmp; + if (!(order= (ORDER **) thd->alloc(sizeof(ORDER *) * arg_count_order + + sizeof(ORDER) * arg_count_order))) + return; + tmp= (ORDER *)(order + arg_count_order); + for (uint i= 0; i < arg_count_order; i++, tmp++) + { + memcpy(tmp, item->order[i], sizeof(ORDER)); + order[i]= tmp; + } } diff --git a/sql/table.h b/sql/table.h index 3ef3c5e0cb2..9088b3b6965 100644 --- a/sql/table.h +++ b/sql/table.h @@ -55,7 +55,6 @@ typedef struct st_order { struct st_order *next; Item **item; /* Point at item in select fields */ Item *item_ptr; /* Storage for initial item */ - Item **item_copy; /* For SPs; the original item ptr */ int counter; /* position in SELECT list, correct only if counter_used is true*/ bool asc; /* true if ascending */ From 6c4335b4cdb5207e7fbc5bff60d0488af4897be7 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Fri, 23 Jul 2010 19:32:38 +0300 Subject: [PATCH 319/461] Increment InnoDB Plugin version to 1.0.11. InnoDB Plugin 1.0.10 has been released with MySQL 5.1.49. --- storage/innodb_plugin/include/univ.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/innodb_plugin/include/univ.i b/storage/innodb_plugin/include/univ.i index b8e595161b9..aa56c18e44e 100644 --- a/storage/innodb_plugin/include/univ.i +++ b/storage/innodb_plugin/include/univ.i @@ -46,7 +46,7 @@ Created 1/20/1994 Heikki Tuuri #define INNODB_VERSION_MAJOR 1 #define INNODB_VERSION_MINOR 0 -#define INNODB_VERSION_BUGFIX 10 +#define INNODB_VERSION_BUGFIX 11 /* The following is the InnoDB version as shown in SELECT plugin_version FROM information_schema.plugins; From 1cad7ebf8d40e17d28203a96945a378359bfc562 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Fri, 23 Jul 2010 22:02:38 +0200 Subject: [PATCH 320/461] old_password_plugin is used even in embedded builds --- sql/sql_acl.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 811ec614f1d..be093b8738e 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -162,7 +162,7 @@ static LEX_STRING old_password_plugin_name= { LEX_STRING *default_auth_plugin_name= &native_password_plugin_name; static plugin_ref native_password_plugin; -#ifndef EMBEDDED_LIBRARY +#ifndef NO_EMBEDDED_ACCESS_CHECKS static plugin_ref old_password_plugin; #endif From 069a068c90d8fa6ccb8028f3f2cd42c238b04699 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Fri, 23 Jul 2010 22:37:21 +0200 Subject: [PATCH 321/461] restore the unintentinally broken ABI --- include/maria.h | 2 +- sql/ha_ndbcluster.cc | 2 +- sql/ha_ndbcluster.h | 2 +- sql/ha_partition.cc | 7 +++---- sql/ha_partition.h | 2 +- sql/handler.h | 7 +++---- sql/log_event.cc | 2 +- sql/log_event_old.cc | 4 ++-- sql/sql_insert.cc | 6 +++--- sql/sql_load.cc | 2 +- sql/sql_table.cc | 2 +- storage/archive/ha_archive.cc | 2 +- storage/archive/ha_archive.h | 2 +- storage/federated/ha_federated.cc | 7 +++++-- storage/federated/ha_federated.h | 4 ++-- storage/federatedx/ha_federatedx.cc | 8 ++++++-- storage/federatedx/ha_federatedx.h | 4 ++-- storage/maria/ha_maria.cc | 6 +++--- storage/maria/ha_maria.h | 2 +- storage/maria/ma_write.c | 4 ++-- storage/myisam/ha_myisam.cc | 4 ++-- storage/myisam/ha_myisam.h | 2 +- 22 files changed, 44 insertions(+), 39 deletions(-) diff --git a/include/maria.h b/include/maria.h index c961b7d1672..106aa61ddbb 100644 --- a/include/maria.h +++ b/include/maria.h @@ -452,7 +452,7 @@ my_bool maria_test_if_sort_rep(MARIA_HA *info, ha_rows rows, ulonglong key_map, int maria_init_bulk_insert(MARIA_HA *info, ulong cache_size, ha_rows rows); void maria_flush_bulk_insert(MARIA_HA *info, uint inx); -void maria_end_bulk_insert(MARIA_HA *info, my_bool table_will_be_deleted); +void maria_end_bulk_insert(MARIA_HA *info); int maria_assign_to_pagecache(MARIA_HA *info, ulonglong key_map, PAGECACHE *key_cache); void maria_change_pagecache(PAGECACHE *old_key_cache, diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 68faef750c7..ceb60d127cf 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -4232,7 +4232,7 @@ void ha_ndbcluster::start_bulk_insert(ha_rows rows) /** End of an insert. */ -int ha_ndbcluster::end_bulk_insert(bool abort) +int ha_ndbcluster::end_bulk_insert() { int error= 0; DBUG_ENTER("end_bulk_insert"); diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index f3651ebeca9..a17323d3fd6 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -322,7 +322,7 @@ class ha_ndbcluster: public handler double scan_time(); ha_rows records_in_range(uint inx, key_range *min_key, key_range *max_key); void start_bulk_insert(ha_rows rows); - int end_bulk_insert(bool abort); + int end_bulk_insert(); static Thd_ndb* seize_thd_ndb(); static void release_thd_ndb(Thd_ndb* thd_ndb); diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 2f16d730296..9b2279a93d9 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -3413,18 +3413,17 @@ ha_rows ha_partition::guess_bulk_insert_rows() SYNOPSIS end_bulk_insert() - abort 1 if table will be deleted (error condition) RETURN VALUE >0 Error code 0 Success Note: end_bulk_insert can be called without start_bulk_insert - being called, see bug¤44108. + being called, see bug#44108. */ -int ha_partition::end_bulk_insert(bool abort) +int ha_partition::end_bulk_insert() { int error= 0; uint i; @@ -3437,7 +3436,7 @@ int ha_partition::end_bulk_insert(bool abort) { int tmp; if (bitmap_is_set(&m_bulk_insert_started, i) && - (tmp= m_file[i]->ha_end_bulk_insert(abort))) + (tmp= m_file[i]->ha_end_bulk_insert())) error= tmp; } bitmap_clear_all(&m_bulk_insert_started); diff --git a/sql/ha_partition.h b/sql/ha_partition.h index f37587f2b71..9f6d9e0a5ba 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -364,7 +364,7 @@ public: virtual int delete_row(const uchar * buf); virtual int delete_all_rows(void); virtual void start_bulk_insert(ha_rows rows); - virtual int end_bulk_insert(bool); + virtual int end_bulk_insert(); private: ha_rows guess_bulk_insert_rows(); void start_part_bulk_insert(THD *thd, uint part_id); diff --git a/sql/handler.h b/sql/handler.h index 2077353959c..58aa07c06d7 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1249,10 +1249,10 @@ public: estimation_rows_to_insert= rows; start_bulk_insert(rows); } - int ha_end_bulk_insert(bool abort) + int ha_end_bulk_insert() { estimation_rows_to_insert= 0; - return end_bulk_insert(abort); + return end_bulk_insert(); } int ha_bulk_update_row(const uchar *old_data, uchar *new_data, uint *dup_key_found); @@ -1796,7 +1796,6 @@ protected: private: /* Private helpers */ inline void mark_trx_read_write(); -private: /* Low-level primitives for storage engines. These should be overridden by the storage engine class. To call these methods, use @@ -1879,7 +1878,7 @@ private: virtual int repair(THD* thd, HA_CHECK_OPT* check_opt) { return HA_ADMIN_NOT_IMPLEMENTED; } virtual void start_bulk_insert(ha_rows rows) {} - virtual int end_bulk_insert(bool abort) { return 0; } + virtual int end_bulk_insert() { return 0; } virtual int index_read(uchar * buf, const uchar * key, uint key_len, enum ha_rkey_function find_flag) { return HA_ERR_WRONG_COMMAND; } diff --git a/sql/log_event.cc b/sql/log_event.cc index 7d8bedd6c79..536915d2c45 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -8416,7 +8416,7 @@ Write_rows_log_event::do_after_row_operations(const Slave_reporting_capability * ultimately. Still todo: fix */ } - if ((local_error= m_table->file->ha_end_bulk_insert(0))) + if ((local_error= m_table->file->ha_end_bulk_insert())) { m_table->file->print_error(local_error, MYF(0)); } diff --git a/sql/log_event_old.cc b/sql/log_event_old.cc index 87225ce55eb..433d8d29001 100644 --- a/sql/log_event_old.cc +++ b/sql/log_event_old.cc @@ -943,7 +943,7 @@ int Write_rows_log_event_old::do_after_row_operations(TABLE *table, int error) fires bug#27077 todo: explain or fix */ - if ((local_error= table->file->ha_end_bulk_insert(0))) + if ((local_error= table->file->ha_end_bulk_insert())) { table->file->print_error(local_error, MYF(0)); } @@ -2636,7 +2636,7 @@ Write_rows_log_event_old::do_after_row_operations(const Slave_reporting_capabili fires bug#27077 todo: explain or fix */ - if ((local_error= m_table->file->ha_end_bulk_insert(0))) + if ((local_error= m_table->file->ha_end_bulk_insert())) { m_table->file->print_error(local_error, MYF(0)); } diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 3836b259396..100bda421b2 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -887,7 +887,7 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list, auto_inc values from the delayed_insert thread as they share TABLE. */ table->file->ha_release_auto_increment(); - if (using_bulk_insert && table->file->ha_end_bulk_insert(0) && !error) + if (using_bulk_insert && table->file->ha_end_bulk_insert() && !error) { table->file->print_error(my_errno,MYF(0)); error=1; @@ -3277,7 +3277,7 @@ bool select_insert::send_eof() DBUG_PRINT("enter", ("trans_table=%d, table_type='%s'", trans_table, table->file->table_type())); - error= (!thd->prelocked_mode) ? table->file->ha_end_bulk_insert(0) : 0; + error= (!thd->prelocked_mode) ? table->file->ha_end_bulk_insert() : 0; table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY); table->file->extra(HA_EXTRA_WRITE_CANNOT_REPLACE); @@ -3360,7 +3360,7 @@ void select_insert::abort() { before. */ if (!thd->prelocked_mode) - table->file->ha_end_bulk_insert(0); + table->file->ha_end_bulk_insert(); /* If at least one row has been inserted/modified and will stay in diff --git a/sql/sql_load.cc b/sql/sql_load.cc index 7399b442573..e5ef7bed5e0 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -432,7 +432,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, error= read_sep_field(thd, info, table_list, fields_vars, set_fields, set_values, read_info, *enclosed, skip_lines, ignore); - if (!thd->prelocked_mode && table->file->ha_end_bulk_insert(0) && !error) + if (!thd->prelocked_mode && table->file->ha_end_bulk_insert() && !error) { table->file->print_error(my_errno, MYF(0)); error= 1; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 85fc7ee724d..15cc162f6ab 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -7881,7 +7881,7 @@ err: if (error > 0) to->file->extra(HA_EXTRA_PREPARE_FOR_DROP); - if (errpos >= 3 && to->file->ha_end_bulk_insert(error > 1) && error <= 0) + if (errpos >= 3 && to->file->ha_end_bulk_insert() && error <= 0) { to->file->print_error(my_errno,MYF(0)); error= 1; diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc index fd0993c9914..988337ec50e 100644 --- a/storage/archive/ha_archive.cc +++ b/storage/archive/ha_archive.cc @@ -1539,7 +1539,7 @@ void ha_archive::start_bulk_insert(ha_rows rows) Other side of start_bulk_insert, is end_bulk_insert. Here we turn off the bulk insert flag, and set the share dirty so that the next select will call sync for us. */ -int ha_archive::end_bulk_insert(bool table_will_be_deleted) +int ha_archive::end_bulk_insert() { DBUG_ENTER("ha_archive::end_bulk_insert"); bulk_insert= FALSE; diff --git a/storage/archive/ha_archive.h b/storage/archive/ha_archive.h index 22f8302982d..ab630ed22fd 100644 --- a/storage/archive/ha_archive.h +++ b/storage/archive/ha_archive.h @@ -134,7 +134,7 @@ public: int optimize(THD* thd, HA_CHECK_OPT* check_opt); int repair(THD* thd, HA_CHECK_OPT* check_opt); void start_bulk_insert(ha_rows rows); - int end_bulk_insert(bool table_will_be_deleted); + int end_bulk_insert(); enum row_type get_row_type() const { return ROW_TYPE_COMPRESSED; diff --git a/storage/federated/ha_federated.cc b/storage/federated/ha_federated.cc index 4330d9bdd30..619393289a9 100644 --- a/storage/federated/ha_federated.cc +++ b/storage/federated/ha_federated.cc @@ -1983,12 +1983,12 @@ void ha_federated::start_bulk_insert(ha_rows rows) @retval != 0 Error occured at remote server. Also sets my_errno. */ -int ha_federated::end_bulk_insert(bool abort) +int ha_federated::end_bulk_insert() { int error= 0; DBUG_ENTER("ha_federated::end_bulk_insert"); - if (!abort && bulk_insert.str && bulk_insert.length) + if (!table_will_be_deleted && bulk_insert.str && bulk_insert.length) { if (real_query(bulk_insert.str, bulk_insert.length)) error= stash_remote_error(); @@ -2905,6 +2905,8 @@ int ha_federated::extra(ha_extra_function operation) case HA_EXTRA_INSERT_WITH_UPDATE: insert_dup_update= TRUE; break; + case HA_EXTRA_PREPARE_FOR_DROP: + table_will_be_deleted = TRUE; default: /* do nothing */ DBUG_PRINT("info",("unhandled operation: %d", (uint) operation)); @@ -3305,6 +3307,7 @@ int ha_federated::external_lock(THD *thd, int lock_type) } } #endif /* XXX_SUPERCEDED_BY_WL2952 */ + table_will_be_deleted = FALSE; DBUG_RETURN(error); } diff --git a/storage/federated/ha_federated.h b/storage/federated/ha_federated.h index ab31e3c1680..142e0e95e2b 100644 --- a/storage/federated/ha_federated.h +++ b/storage/federated/ha_federated.h @@ -88,7 +88,7 @@ class ha_federated: public handler Array of all stored results we get during a query execution. */ DYNAMIC_ARRAY results; - bool position_called; + bool position_called, table_will_be_deleted; uint fetch_num; // stores the fetch num MYSQL_ROW_OFFSET current_position; // Current position used by ::position() int remote_error_number; @@ -210,7 +210,7 @@ public: int close(void); // required void start_bulk_insert(ha_rows rows); - int end_bulk_insert(bool abort); + int end_bulk_insert(); int write_row(uchar *buf); int update_row(const uchar *old_data, uchar *new_data); int delete_row(const uchar *buf); diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc index 435530e8caa..a88c60efb74 100644 --- a/storage/federatedx/ha_federatedx.cc +++ b/storage/federatedx/ha_federatedx.cc @@ -2143,12 +2143,12 @@ void ha_federatedx::start_bulk_insert(ha_rows rows) @retval != 0 Error occured at remote server. Also sets my_errno. */ -int ha_federatedx::end_bulk_insert(bool abort) +int ha_federatedx::end_bulk_insert() { int error= 0; DBUG_ENTER("ha_federatedx::end_bulk_insert"); - if (bulk_insert.str && bulk_insert.length && !abort) + if (bulk_insert.str && bulk_insert.length && !table_will_be_deleted) { if ((error= txn->acquire(share, FALSE, &io))) DBUG_RETURN(error); @@ -3082,6 +3082,9 @@ int ha_federatedx::extra(ha_extra_function operation) case HA_EXTRA_INSERT_WITH_UPDATE: insert_dup_update= TRUE; break; + case HA_EXTRA_PREPARE_FOR_DROP: + table_will_be_deleted = TRUE; + break; default: /* do nothing */ DBUG_PRINT("info",("unhandled operation: %d", (uint) operation)); @@ -3391,6 +3394,7 @@ int ha_federatedx::external_lock(MYSQL_THD thd, int lock_type) txn->release(&io); else { + table_will_be_deleted = FALSE; txn= get_txn(thd); if (!(error= txn->acquire(share, lock_type == F_RDLCK, &io)) && (lock_type == F_WRLCK || !io->is_autocommit())) diff --git a/storage/federatedx/ha_federatedx.h b/storage/federatedx/ha_federatedx.h index 0fa9df25895..2fd3c559321 100644 --- a/storage/federatedx/ha_federatedx.h +++ b/storage/federatedx/ha_federatedx.h @@ -259,7 +259,7 @@ class ha_federatedx: public handler int remote_error_number; char remote_error_buf[FEDERATEDX_QUERY_BUFFER_SIZE]; bool ignore_duplicates, replace_duplicates; - bool insert_dup_update; + bool insert_dup_update, table_will_be_deleted; DYNAMIC_STRING bulk_insert; private: @@ -379,7 +379,7 @@ public: int close(void); // required void start_bulk_insert(ha_rows rows); - int end_bulk_insert(bool abort); + int end_bulk_insert(); int write_row(uchar *buf); int update_row(const uchar *old_data, uchar *new_data); int delete_row(const uchar *buf); diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc index e919dbbc3cc..5140ad17d74 100644 --- a/storage/maria/ha_maria.cc +++ b/storage/maria/ha_maria.cc @@ -1944,14 +1944,14 @@ void ha_maria::start_bulk_insert(ha_rows rows) != 0 Error */ -int ha_maria::end_bulk_insert(bool table_will_be_deleted) +int ha_maria::end_bulk_insert() { int err; DBUG_ENTER("ha_maria::end_bulk_insert"); - maria_end_bulk_insert(file, table_will_be_deleted); + maria_end_bulk_insert(file); if ((err= maria_extra(file, HA_EXTRA_NO_CACHE, 0))) goto end; - if (can_enable_indexes && !table_will_be_deleted) + if (can_enable_indexes && !file->s->deleting) err= enable_indexes(HA_KEY_SWITCH_NONUNIQ_SAVE); end: if (bulk_insert_single_undo != BULK_INSERT_NONE) diff --git a/storage/maria/ha_maria.h b/storage/maria/ha_maria.h index ab4012ca38c..c0f2041fddb 100644 --- a/storage/maria/ha_maria.h +++ b/storage/maria/ha_maria.h @@ -123,7 +123,7 @@ public: int enable_indexes(uint mode); int indexes_are_disabled(void); void start_bulk_insert(ha_rows rows); - int end_bulk_insert(bool abort); + int end_bulk_insert(); ha_rows records_in_range(uint inx, key_range * min_key, key_range * max_key); void update_create_info(HA_CREATE_INFO * create_info); int create(const char *name, TABLE * form, HA_CREATE_INFO * create_info); diff --git a/storage/maria/ma_write.c b/storage/maria/ma_write.c index 3b9ca46899f..5e3ccdfaed1 100644 --- a/storage/maria/ma_write.c +++ b/storage/maria/ma_write.c @@ -1755,7 +1755,7 @@ void maria_flush_bulk_insert(MARIA_HA *info, uint inx) } } -void maria_end_bulk_insert(MARIA_HA *info, my_bool abort) +void maria_end_bulk_insert(MARIA_HA *info) { DBUG_ENTER("maria_end_bulk_insert"); if (info->bulk_insert) @@ -1765,7 +1765,7 @@ void maria_end_bulk_insert(MARIA_HA *info, my_bool abort) { if (is_tree_inited(&info->bulk_insert[i])) { - if (abort) + if (info->s->deleting) reset_free_element(&info->bulk_insert[i]); delete_tree(&info->bulk_insert[i]); } diff --git a/storage/myisam/ha_myisam.cc b/storage/myisam/ha_myisam.cc index 9597f848616..5f807be2374 100644 --- a/storage/myisam/ha_myisam.cc +++ b/storage/myisam/ha_myisam.cc @@ -1591,11 +1591,11 @@ void ha_myisam::start_bulk_insert(ha_rows rows) != 0 Error */ -int ha_myisam::end_bulk_insert(bool abort) +int ha_myisam::end_bulk_insert() { mi_end_bulk_insert(file); int err=mi_extra(file, HA_EXTRA_NO_CACHE, 0); - if (!err && !abort) + if (!err && !file->s->deleting) { if (can_enable_indexes) { diff --git a/storage/myisam/ha_myisam.h b/storage/myisam/ha_myisam.h index 1b7e948b928..b7d15a6e8b7 100644 --- a/storage/myisam/ha_myisam.h +++ b/storage/myisam/ha_myisam.h @@ -108,7 +108,7 @@ class ha_myisam: public handler int enable_indexes(uint mode); int indexes_are_disabled(void); void start_bulk_insert(ha_rows rows); - int end_bulk_insert(bool abort); + int end_bulk_insert(); ha_rows records_in_range(uint inx, key_range *min_key, key_range *max_key); void update_create_info(HA_CREATE_INFO *create_info); int create(const char *name, TABLE *form, HA_CREATE_INFO *create_info); From e57a9d6fe035df7d200b90c518256b68b6a9fc49 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Mon, 26 Jul 2010 09:06:18 +0400 Subject: [PATCH 322/461] Bug#45012 my_like_range_cp932 generates invalid string Problem: The functions my_like_range_xxx() returned badly formed maximum strings for Asian character sets, which made problems for storage engines. Fix: - Removed a number my_like_range_xxx() implementations, which were in fact dumplicate code pieces. - Using generic my_like_range_mb() instead. - Setting max_sort_char member properly for Asian character sets - Adding unittest/strings/strings-t.c, to test that my_like_range_xxx() return well-formed min and max strings. Notes: - No additional tests in mysql/t/ available. Old tests cover the affected code well enough. --- configure.in | 3 +- strings/ctype-big5.c | 86 +------------------------- strings/ctype-cp932.c | 76 +---------------------- strings/ctype-euc_kr.c | 4 +- strings/ctype-eucjpms.c | 4 +- strings/ctype-gb2312.c | 4 +- strings/ctype-gbk.c | 86 +------------------------- strings/ctype-mb.c | 22 +++++-- strings/ctype-sjis.c | 85 +------------------------- strings/ctype-ujis.c | 4 +- unittest/Makefile.am | 4 +- unittest/strings/Makefile.am | 27 +++++++++ unittest/strings/strings-t.c | 114 +++++++++++++++++++++++++++++++++++ 13 files changed, 181 insertions(+), 338 deletions(-) create mode 100644 unittest/strings/Makefile.am create mode 100644 unittest/strings/strings-t.c diff --git a/configure.in b/configure.in index 0af6a92fcc9..efd291f953c 100644 --- a/configure.in +++ b/configure.in @@ -2880,7 +2880,8 @@ fi AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile dnl unittest/Makefile unittest/mytap/Makefile unittest/mytap/t/Makefile dnl - unittest/mysys/Makefile unittest/examples/Makefile dnl + unittest/mysys/Makefile unittest/strings/Makefile dnl + unittest/examples/Makefile dnl strings/Makefile regex/Makefile storage/Makefile dnl man/Makefile BUILD/Makefile vio/Makefile dnl libmysql/Makefile libmysql_r/Makefile client/Makefile dnl diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c index 3da307b82fc..2cb40c266d2 100644 --- a/strings/ctype-big5.c +++ b/strings/ctype-big5.c @@ -377,86 +377,6 @@ static int my_strxfrm_big5(uchar *dest, const uchar *src, int len) #endif -/* -** Calculate min_str and max_str that ranges a LIKE string. -** Arguments: -** ptr Pointer to LIKE string. -** ptr_length Length of LIKE string. -** escape Escape character in LIKE. (Normally '\'). -** All escape characters should be removed from min_str and max_str -** res_length Length of min_str and max_str. -** min_str Smallest case sensitive string that ranges LIKE. -** Should be space padded to res_length. -** max_str Largest case sensitive string that ranges LIKE. -** Normally padded with the biggest character sort value. -** -** The function should return 0 if ok and 1 if the LIKE string can't be -** optimized ! -*/ - -#define max_sort_char ((char) 255) - -static my_bool my_like_range_big5(CHARSET_INFO *cs __attribute__((unused)), - const char *ptr,size_t ptr_length, - pbool escape, pbool w_one, pbool w_many, - size_t res_length, - char *min_str, char *max_str, - size_t *min_length, size_t *max_length) -{ - const char *end= ptr + ptr_length; - char *min_org=min_str; - char *min_end=min_str+res_length; - size_t charlen= res_length / cs->mbmaxlen; - - for (; ptr != end && min_str != min_end && charlen > 0; ptr++, charlen--) - { - if (ptr+1 != end && isbig5code(ptr[0],ptr[1])) - { - *min_str++= *max_str++ = *ptr++; - *min_str++= *max_str++ = *ptr; - continue; - } - if (*ptr == escape && ptr+1 != end) - { - ptr++; /* Skip escape */ - if (isbig5code(ptr[0], ptr[1])) - *min_str++= *max_str++ = *ptr++; - if (min_str < min_end) - *min_str++= *max_str++= *ptr; - continue; - } - if (*ptr == w_one) /* '_' in SQL */ - { - *min_str++='\0'; /* This should be min char */ - *max_str++=max_sort_char; - continue; - } - if (*ptr == w_many) /* '%' in SQL */ - { - /* - Calculate length of keys: - 'a\0\0... is the smallest possible string when we have space expand - a\ff\ff... is the biggest possible string - */ - *min_length= ((cs->state & MY_CS_BINSORT) ? (size_t) (min_str - min_org) : - res_length); - *max_length= res_length; - do { - *min_str++ = 0; - *max_str++ = max_sort_char; - } while (min_str != min_end); - return 0; - } - *min_str++= *max_str++ = *ptr; - } - - *min_length= *max_length= (size_t) (min_str-min_org); - while (min_str != min_end) - *min_str++= *max_str++= ' '; - return 0; -} - - static uint ismbchar_big5(CHARSET_INFO *cs __attribute__((unused)), const char* p, const char *e) { @@ -6338,7 +6258,7 @@ static MY_COLLATION_HANDLER my_collation_big5_chinese_ci_handler = my_strnncollsp_big5, my_strnxfrm_big5, my_strnxfrmlen_simple, - my_like_range_big5, + my_like_range_mb, my_wildcmp_mb, my_strcasecmp_mb, my_instr_mb, @@ -6402,7 +6322,7 @@ CHARSET_INFO my_charset_big5_chinese_ci= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xF9D5, /* max_sort_char */ ' ', /* pad char */ 1, /* escape_with_backslash_is_dangerous */ &my_charset_big5_handler, @@ -6435,7 +6355,7 @@ CHARSET_INFO my_charset_big5_bin= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xF9FE, /* max_sort_char */ ' ', /* pad char */ 1, /* escape_with_backslash_is_dangerous */ &my_charset_big5_handler, diff --git a/strings/ctype-cp932.c b/strings/ctype-cp932.c index 07191c436b7..238c6f61baa 100644 --- a/strings/ctype-cp932.c +++ b/strings/ctype-cp932.c @@ -306,76 +306,6 @@ static size_t my_strnxfrm_cp932(CHARSET_INFO *cs __attribute__((unused)), } -/* -** Calculate min_str and max_str that ranges a LIKE string. -** Arguments: -** ptr Pointer to LIKE string. -** ptr_length Length of LIKE string. -** escape Escape character in LIKE. (Normally '\'). -** All escape characters should be removed from min_str and max_str -** res_length Length of min_str and max_str. -** min_str Smallest case sensitive string that ranges LIKE. -** Should be space padded to res_length. -** max_str Largest case sensitive string that ranges LIKE. -** Normally padded with the biggest character sort value. -** -** The function should return 0 if ok and 1 if the LIKE string can't be -** optimized ! -*/ - -#define max_sort_char ((char) 255) - -static my_bool my_like_range_cp932(CHARSET_INFO *cs __attribute__((unused)), - const char *ptr,size_t ptr_length, - pbool escape, pbool w_one, pbool w_many, - size_t res_length, - char *min_str,char *max_str, - size_t *min_length, size_t *max_length) -{ - const char *end=ptr+ptr_length; - char *min_org=min_str; - char *min_end=min_str+res_length; - - while (ptr < end && min_str < min_end) { - if (ismbchar_cp932(cs, ptr, end)) { - *min_str++ = *max_str++ = *ptr++; - if (min_str < min_end) - *min_str++ = *max_str++ = *ptr++; - continue; - } - if (*ptr == escape && ptr+1 < end) { - ptr++; /* Skip escape */ - if (ismbchar_cp932(cs, ptr, end)) - *min_str++ = *max_str++ = *ptr++; - if (min_str < min_end) - *min_str++ = *max_str++ = *ptr++; - continue; - } - if (*ptr == w_one) { /* '_' in SQL */ - *min_str++ = '\0'; /* This should be min char */ - *max_str++ = max_sort_char; - ptr++; - continue; - } - if (*ptr == w_many) - { /* '%' in SQL */ - *min_length = (size_t)(min_str - min_org); - *max_length = res_length; - do - { - *min_str++= 0; - *max_str++= max_sort_char; - } while (min_str < min_end); - return 0; - } - *min_str++ = *max_str++ = *ptr++; - } - *min_length = *max_length = (size_t) (min_str - min_org); - while (min_str < min_end) - *min_str++ = *max_str++ = ' '; /* Because if key compression */ - return 0; -} - /* page 0 0x00A1-0x00DF */ static uint16 tab_cp932_uni0[]={ 0xFF61,0xFF62,0xFF63,0xFF64,0xFF65,0xFF66,0xFF67,0xFF68, @@ -5467,7 +5397,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strnncollsp_cp932, my_strnxfrm_cp932, my_strnxfrmlen_simple, - my_like_range_cp932, + my_like_range_mb, my_wildcmp_mb, /* wildcmp */ my_strcasecmp_8bit, my_instr_mb, @@ -5533,7 +5463,7 @@ CHARSET_INFO my_charset_cp932_japanese_ci= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFCFC, /* max_sort_char */ ' ', /* pad char */ 1, /* escape_with_backslash_is_dangerous */ &my_charset_handler, @@ -5565,7 +5495,7 @@ CHARSET_INFO my_charset_cp932_bin= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFCFC, /* max_sort_char */ ' ', /* pad char */ 1, /* escape_with_backslash_is_dangerous */ &my_charset_handler, diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c index fc0af7e35d5..ee957304716 100644 --- a/strings/ctype-euc_kr.c +++ b/strings/ctype-euc_kr.c @@ -8762,7 +8762,7 @@ CHARSET_INFO my_charset_euckr_korean_ci= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFEFE, /* max_sort_char */ ' ', /* pad char */ 0, /* escape_with_backslash_is_dangerous */ &my_charset_handler, @@ -8795,7 +8795,7 @@ CHARSET_INFO my_charset_euckr_bin= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFEFE, /* max_sort_char */ ' ', /* pad char */ 0, /* escape_with_backslash_is_dangerous */ &my_charset_handler, diff --git a/strings/ctype-eucjpms.c b/strings/ctype-eucjpms.c index b8b04dfca6b..615981b4d27 100644 --- a/strings/ctype-eucjpms.c +++ b/strings/ctype-eucjpms.c @@ -8710,7 +8710,7 @@ CHARSET_INFO my_charset_eucjpms_japanese_ci= 1, /* mbminlen */ 3, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFEFE, /* max_sort_char */ ' ', /* pad_char */ 0, /* escape_with_backslash_is_dangerous */ &my_charset_handler, @@ -8743,7 +8743,7 @@ CHARSET_INFO my_charset_eucjpms_bin= 1, /* mbminlen */ 3, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFEFE, /* max_sort_char */ ' ', /* pad_char */ 0, /* escape_with_backslash_is_dangerous */ &my_charset_handler, diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c index 0267f35ff5c..84f67dbbc2e 100644 --- a/strings/ctype-gb2312.c +++ b/strings/ctype-gb2312.c @@ -5790,7 +5790,7 @@ CHARSET_INFO my_charset_gb2312_chinese_ci= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xF7FE, /* max_sort_char */ ' ', /* pad char */ 0, /* escape_with_backslash_is_dangerous */ &my_charset_handler, @@ -5822,7 +5822,7 @@ CHARSET_INFO my_charset_gb2312_bin= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xF7FE, /* max_sort_char */ ' ', /* pad char */ 0, /* escape_with_backslash_is_dangerous */ &my_charset_handler, diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c index 7b8bb85652b..89607823d34 100644 --- a/strings/ctype-gbk.c +++ b/strings/ctype-gbk.c @@ -2690,86 +2690,6 @@ static size_t my_strnxfrm_gbk(CHARSET_INFO *cs __attribute__((unused)), } -/* -** Calculate min_str and max_str that ranges a LIKE string. -** Arguments: -** ptr Pointer to LIKE string. -** ptr_length Length of LIKE string. -** escape Escape character in LIKE. (Normally '\'). -** All escape characters should be removed from min_str and max_str -** res_length Length of min_str and max_str. -** min_str Smallest case sensitive string that ranges LIKE. -** Should be space padded to res_length. -** max_str Largest case sensitive string that ranges LIKE. -** Normally padded with the biggest character sort value. -** -** The function should return 0 if ok and 1 if the LIKE string can't be -** optimized ! -*/ - -#define max_sort_char ((uchar) 255) - -static my_bool my_like_range_gbk(CHARSET_INFO *cs __attribute__((unused)), - const char *ptr,size_t ptr_length, - pbool escape, pbool w_one, pbool w_many, - size_t res_length, - char *min_str,char *max_str, - size_t *min_length,size_t *max_length) -{ - const char *end= ptr + ptr_length; - char *min_org=min_str; - char *min_end=min_str+res_length; - size_t charlen= res_length / cs->mbmaxlen; - - for (; ptr != end && min_str != min_end && charlen > 0; ptr++, charlen--) - { - if (ptr+1 != end && isgbkcode(ptr[0],ptr[1])) - { - *min_str++= *max_str++ = *ptr++; - *min_str++= *max_str++ = *ptr; - continue; - } - if (*ptr == escape && ptr+1 != end) - { - ptr++; /* Skip escape */ - if (isgbkcode(ptr[0], ptr[1])) - *min_str++= *max_str++ = *ptr; - if (min_str < min_end) - *min_str++= *max_str++= *ptr; - continue; - } - if (*ptr == w_one) /* '_' in SQL */ - { - *min_str++='\0'; /* This should be min char */ - *max_str++=max_sort_char; - continue; - } - if (*ptr == w_many) /* '%' in SQL */ - { - /* - Calculate length of keys: - 'a\0\0... is the smallest possible string when we have space expand - a\ff\ff... is the biggest possible string - */ - *min_length= ((cs->state & MY_CS_BINSORT) ? (size_t) (min_str - min_org) : - res_length); - *max_length= res_length; - do { - *min_str++= 0; - *max_str++= max_sort_char; - } while (min_str != min_end); - return 0; - } - *min_str++= *max_str++ = *ptr; - } - - *min_length= *max_length = (size_t) (min_str - min_org); - while (min_str != min_end) - *min_str++= *max_str++= ' '; /* Because if key compression */ - return 0; -} - - static uint ismbchar_gbk(CHARSET_INFO *cs __attribute__((unused)), const char* p, const char *e) { @@ -9983,7 +9903,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strnncollsp_gbk, my_strnxfrm_gbk, my_strnxfrmlen_simple, - my_like_range_gbk, + my_like_range_mb, my_wildcmp_mb, my_strcasecmp_mb, my_instr_mb, @@ -10048,7 +9968,7 @@ CHARSET_INFO my_charset_gbk_chinese_ci= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xA967, /* max_sort_char */ ' ', /* pad char */ 1, /* escape_with_backslash_is_dangerous */ &my_charset_handler, @@ -10080,7 +10000,7 @@ CHARSET_INFO my_charset_gbk_bin= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFEFE, /* max_sort_char */ ' ', /* pad char */ 1, /* escape_with_backslash_is_dangerous */ &my_charset_handler, diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c index 903811e2ab9..e3788fc4dff 100644 --- a/strings/ctype-mb.c +++ b/strings/ctype-mb.c @@ -498,7 +498,9 @@ static void my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)), DESCRIPTION Write max key: - for non-Unicode character sets: - just set to 255. + just bfill using max_sort_char if max_sort_char is one byte. + In case when max_sort_char is two bytes, fill with double-byte pairs + and optionally pad with a single space character. - for Unicode character set (utf-8): create a buffer with multibyte representation of the max_sort_char character, and copy it into max_str in a loop. @@ -510,12 +512,20 @@ static void pad_max_char(CHARSET_INFO *cs, char *str, char *end) if (!(cs->state & MY_CS_UNICODE)) { - bfill(str, end - str, 255); - return; + if (cs->max_sort_char <= 255) + { + bfill(str, end - str, cs->max_sort_char); + return; + } + buf[0]= cs->max_sort_char >> 8; + buf[1]= cs->max_sort_char & 0xFF; + buflen= 2; + } + else + { + buflen= cs->cset->wc_mb(cs, cs->max_sort_char, (uchar*) buf, + (uchar*) buf + sizeof(buf)); } - - buflen= cs->cset->wc_mb(cs, cs->max_sort_char, (uchar*) buf, - (uchar*) buf + sizeof(buf)); DBUG_ASSERT(buflen > 0); do diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c index ac426e0d7b5..3f479ffc102 100644 --- a/strings/ctype-sjis.c +++ b/strings/ctype-sjis.c @@ -304,85 +304,6 @@ static size_t my_strnxfrm_sjis(CHARSET_INFO *cs __attribute__((unused)), } -/* -** Calculate min_str and max_str that ranges a LIKE string. -** Arguments: -** ptr Pointer to LIKE string. -** ptr_length Length of LIKE string. -** escape Escape character in LIKE. (Normally '\'). -** All escape characters should be removed from min_str and max_str -** res_length Length of min_str and max_str. -** min_str Smallest case sensitive string that ranges LIKE. -** Should be space padded to res_length. -** max_str Largest case sensitive string that ranges LIKE. -** Normally padded with the biggest character sort value. -** -** The function should return 0 if ok and 1 if the LIKE string can't be -** optimized ! -*/ - -#define max_sort_char ((char) 255) - -static my_bool my_like_range_sjis(CHARSET_INFO *cs __attribute__((unused)), - const char *ptr,size_t ptr_length, - pbool escape, pbool w_one, pbool w_many, - size_t res_length, - char *min_str,char *max_str, - size_t *min_length,size_t *max_length) -{ - const char *end= ptr + ptr_length; - char *min_org=min_str; - char *min_end=min_str+res_length; - size_t charlen= res_length / cs->mbmaxlen; - - for ( ; ptr < end && min_str < min_end && charlen > 0 ; charlen--) - { - if (ismbchar_sjis(cs, ptr, end)) { - *min_str++ = *max_str++ = *ptr++; - if (min_str < min_end) - *min_str++ = *max_str++ = *ptr++; - continue; - } - if (*ptr == escape && ptr+1 < end) { - ptr++; /* Skip escape */ - if (ismbchar_sjis(cs, ptr, end)) - *min_str++ = *max_str++ = *ptr++; - if (min_str < min_end) - *min_str++ = *max_str++ = *ptr++; - continue; - } - if (*ptr == w_one) { /* '_' in SQL */ - *min_str++ = '\0'; /* This should be min char */ - *max_str++ = max_sort_char; - ptr++; - continue; - } - if (*ptr == w_many) - { /* '%' in SQL */ - /* - Calculate length of keys: - 'a\0\0... is the smallest possible string when we have space expand - a\ff\ff... is the biggest possible string - */ - *min_length= ((cs->state & MY_CS_BINSORT) ? (size_t) (min_str - min_org) : - res_length); - *max_length= res_length; - do - { - *min_str++= 0; - *max_str++= max_sort_char; - } while (min_str < min_end); - return 0; - } - *min_str++ = *max_str++ = *ptr++; - } - - *min_length= *max_length= (size_t) (min_str - min_org); - while (min_str != min_end) - *min_str++= *max_str++= ' '; /* Because if key compression */ - return 0; -} - /* page 0 0x00A1-0x00DF */ static uint16 tab_sjis_uni0[]={ 0xFF61,0xFF62,0xFF63,0xFF64,0xFF65,0xFF66,0xFF67,0xFF68, @@ -4628,7 +4549,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler = my_strnncollsp_sjis, my_strnxfrm_sjis, my_strnxfrmlen_simple, - my_like_range_sjis, + my_like_range_mb, my_wildcmp_mb, /* wildcmp */ my_strcasecmp_8bit, my_instr_mb, @@ -4694,7 +4615,7 @@ CHARSET_INFO my_charset_sjis_japanese_ci= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFCFC, /* max_sort_char */ ' ', /* pad char */ 1, /* escape_with_backslash_is_dangerous */ &my_charset_handler, @@ -4726,7 +4647,7 @@ CHARSET_INFO my_charset_sjis_bin= 1, /* mbminlen */ 2, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFCFC, /* max_sort_char */ ' ', /* pad char */ 1, /* escape_with_backslash_is_dangerous */ &my_charset_handler, diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c index 1a872a92595..4474bd0cf96 100644 --- a/strings/ctype-ujis.c +++ b/strings/ctype-ujis.c @@ -8567,7 +8567,7 @@ CHARSET_INFO my_charset_ujis_japanese_ci= 1, /* mbminlen */ 3, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFEFE, /* max_sort_char */ ' ', /* pad char */ 0, /* escape_with_backslash_is_dangerous */ &my_charset_handler, @@ -8600,7 +8600,7 @@ CHARSET_INFO my_charset_ujis_bin= 1, /* mbminlen */ 3, /* mbmaxlen */ 0, /* min_sort_char */ - 255, /* max_sort_char */ + 0xFEFE, /* max_sort_char */ ' ', /* pad char */ 0, /* escape_with_backslash_is_dangerous */ &my_charset_handler, diff --git a/unittest/Makefile.am b/unittest/Makefile.am index 65fa615fb98..889e029f6ef 100644 --- a/unittest/Makefile.am +++ b/unittest/Makefile.am @@ -13,12 +13,12 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -SUBDIRS = mytap . mysys examples +SUBDIRS = mytap . mysys examples strings EXTRA_DIST = unit.pl CLEANFILES = unit -unittests = mytap mysys @mysql_se_unittest_dirs@ @mysql_pg_unittest_dirs@ +unittests = mytap mysys strings @mysql_se_unittest_dirs@ @mysql_pg_unittest_dirs@ test: perl unit.pl run $(unittests) diff --git a/unittest/strings/Makefile.am b/unittest/strings/Makefile.am new file mode 100644 index 00000000000..5b18d89f58e --- /dev/null +++ b/unittest/strings/Makefile.am @@ -0,0 +1,27 @@ +# Copyright 2000, 2010, Oracle and/or its affiliates. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +AM_CPPFLAGS = @ZLIB_INCLUDES@ -I$(top_builddir)/include +AM_CPPFLAGS += -I$(top_srcdir)/include -I$(top_srcdir)/unittest/mytap + +LDADD = $(top_builddir)/unittest/mytap/libmytap.a \ + $(top_builddir)/mysys/libmysys.a \ + $(top_builddir)/dbug/libdbug.a \ + $(top_builddir)/strings/libmystrings.a + +noinst_PROGRAMS = strings-t + +# Don't update the files from bitkeeper +%::SCCS/s.% diff --git a/unittest/strings/strings-t.c b/unittest/strings/strings-t.c new file mode 100644 index 00000000000..2d246cfa17f --- /dev/null +++ b/unittest/strings/strings-t.c @@ -0,0 +1,114 @@ +/* Copyright 2000, 2010, Oracle and/or its affiliates. All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + +#include +#include +#include + + +/* + Test that like_range() returns well-formed results. +*/ +static int +test_like_range_for_charset(CHARSET_INFO *cs, const char *src, size_t src_len) +{ + char min_str[32], max_str[32]; + size_t min_len, max_len, min_well_formed_len, max_well_formed_len; + int error= 0; + + cs->coll->like_range(cs, src, src_len, '\\', '_', '%', + sizeof(min_str), min_str, max_str, &min_len, &max_len); + diag("min_len=%d\tmax_len=%d\t%s", min_len, max_len, cs->name); + min_well_formed_len= cs->cset->well_formed_len(cs, + min_str, min_str + min_len, + 10000, &error); + max_well_formed_len= cs->cset->well_formed_len(cs, + max_str, max_str + max_len, + 10000, &error); + if (min_len != min_well_formed_len) + diag("Bad min_str: min_well_formed_len=%d min_str[%d]=0x%02X", + min_well_formed_len, min_well_formed_len, + (uchar) min_str[min_well_formed_len]); + if (max_len != max_well_formed_len) + diag("Bad max_str: max_well_formed_len=%d max_str[%d]=0x%02X", + max_well_formed_len, max_well_formed_len, + (uchar) max_str[max_well_formed_len]); + return + min_len == min_well_formed_len && + max_len == max_well_formed_len ? 0 : 1; +} + + +static CHARSET_INFO *charset_list[]= +{ +#ifdef HAVE_CHARSET_big5 + &my_charset_big5_chinese_ci, + &my_charset_big5_bin, +#endif +#ifdef HAVE_CHARSET_euckr + &my_charset_euckr_korean_ci, + &my_charset_euckr_bin, +#endif +#ifdef HAVE_CHARSET_gb2312 + &my_charset_gb2312_chinese_ci, + &my_charset_gb2312_bin, +#endif +#ifdef HAVE_CHARSET_gbk + &my_charset_gbk_chinese_ci, + &my_charset_gbk_bin, +#endif +#ifdef HAVE_CHARSET_latin1 + &my_charset_latin1, + &my_charset_latin1_bin, +#endif +#ifdef HAVE_CHARSET_sjis + &my_charset_sjis_japanese_ci, + &my_charset_sjis_bin, +#endif +#ifdef HAVE_CHARSET_tis620 + &my_charset_tis620_thai_ci, + &my_charset_tis620_bin, +#endif +#ifdef HAVE_CHARSET_ujis + &my_charset_ujis_japanese_ci, + &my_charset_ujis_bin, +#endif +#ifdef HAVE_CHARSET_utf8 + &my_charset_utf8_general_ci, + &my_charset_utf8_unicode_ci, + &my_charset_utf8_bin, +#endif +}; + + +int main() +{ + size_t i, failed= 0; + + plan(1); + diag("Testing my_like_range_xxx() functions"); + + for (i= 0; i < array_elements(charset_list); i++) + { + CHARSET_INFO *cs= charset_list[i]; + if (test_like_range_for_charset(cs, "abc%", 4)) + { + ++failed; + diag("Failed for %s", cs->name); + } + } + ok(failed == 0, "Testing my_like_range_xxx() functions"); + return exit_status(); +} From 2529ee72ec1af6d27a4f1dc5db2c4f2f001b6120 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 23 Jul 2010 21:55:03 -0300 Subject: [PATCH 323/461] Bug#55501: Disable innodb plugin usage in the embedded server on certain OSes Do not attempt to test the innodb plugin with the embedded server, it's not supported for now. --- mysql-test/include/have_innodb_plugin.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/include/have_innodb_plugin.inc b/mysql-test/include/have_innodb_plugin.inc index 99a79465f52..df876deb2d7 100644 --- a/mysql-test/include/have_innodb_plugin.inc +++ b/mysql-test/include/have_innodb_plugin.inc @@ -1,3 +1,4 @@ +--source include/not_embedded.inc disable_query_log; --require r/true.require SELECT (plugin_library LIKE 'ha_innodb_plugin%') AS `TRUE` FROM information_schema.plugins WHERE LOWER(plugin_name) = 'innodb' AND LOWER(plugin_status) = 'active'; From 9d8ecf782b7f7b4322359aaca57162a08675d907 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sat, 24 Jul 2010 08:10:03 +0200 Subject: [PATCH 324/461] buildbot detected problems mysys/mf_keycache.c: warning on windows storage/example/ha_example.cc: fighting the warnings don't ifdef too much. a function must return a value! storage/xtradb/Makefile.am: add -lmysqlservices for ha_xtradb.so plugin to load --- mysys/mf_keycache.c | 2 +- storage/example/ha_example.cc | 5 ++--- storage/xtradb/Makefile.am | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/mysys/mf_keycache.c b/mysys/mf_keycache.c index 4e22b3f65a2..08c160910c7 100644 --- a/mysys/mf_keycache.c +++ b/mysys/mf_keycache.c @@ -5106,7 +5106,7 @@ static SIMPLE_KEY_CACHE_CB ulonglong* dirty_part_map) { uint i= KEYCACHE_BASE_EXPR( file, filepos) % keycache->partitions; - *dirty_part_map|= 1<partition_array[i]; } diff --git a/storage/example/ha_example.cc b/storage/example/ha_example.cc index 5ad6a45a744..e8ef0b72bc8 100644 --- a/storage/example/ha_example.cc +++ b/storage/example/ha_example.cc @@ -370,13 +370,13 @@ int ha_example::open(const char *name, int mode, uint test_if_locked) #ifndef DBUG_OFF example_table_options_struct *options= (example_table_options_struct *)table->s->option_struct; -#endif DBUG_ASSERT(options); DBUG_PRINT("info", ("strparam: '%-.64s' ullparam: %llu enumparam: %u "\ "boolparam: %u", (options->strparam ? options->strparam : ""), options->ullparam, options->enumparam, options->boolparam)); +#endif DBUG_RETURN(0); } @@ -922,9 +922,8 @@ int ha_example::create(const char *name, TABLE *table_arg, field_options->compex_param_to_parse_it_in_engine : ""))); } - - DBUG_RETURN(0); #endif + DBUG_RETURN(0); } diff --git a/storage/xtradb/Makefile.am b/storage/xtradb/Makefile.am index 36d250890f5..97d3eda7938 100644 --- a/storage/xtradb/Makefile.am +++ b/storage/xtradb/Makefile.am @@ -330,7 +330,7 @@ libxtradb_a_CFLAGS= $(AM_CFLAGS) EXTRA_LTLIBRARIES= ha_xtradb.la pkgplugin_LTLIBRARIES= @plugin_xtradb_shared_target@ -ha_xtradb_la_LDFLAGS= -module -rpath $(pkgplugindir) +ha_xtradb_la_LDFLAGS= -module -rpath $(pkgplugindir) -L$(top_builddir)/libservices -lmysqlservices ha_xtradb_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) ha_xtradb_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) ha_xtradb_la_SOURCES= $(libxtradb_a_SOURCES) From cf86a5ae5284c744bc4cc727073387d0799da5c2 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sat, 24 Jul 2010 14:17:30 +0200 Subject: [PATCH 325/461] force the generation of mysqlmanager.map file --- server-tools/instance-manager/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server-tools/instance-manager/CMakeLists.txt b/server-tools/instance-manager/CMakeLists.txt index 5e61c384254..c988a03912e 100755 --- a/server-tools/instance-manager/CMakeLists.txt +++ b/server-tools/instance-manager/CMakeLists.txt @@ -20,6 +20,8 @@ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") ADD_DEFINITIONS(-DMYSQL_SERVER -DMYSQL_INSTANCE_MANAGER) INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/sql ${PROJECT_SOURCE_DIR}/extra/yassl/include) + +SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS") ADD_EXECUTABLE(mysqlmanager buffer.cc command.cc commands.cc guardian.cc instance.cc instance_map.cc instance_options.cc listener.cc log.cc manager.cc messages.cc mysql_connection.cc From b457573f28e76332f38d8a16c9afd7bc0b8d63ef Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sun, 25 Jul 2010 17:23:38 +0200 Subject: [PATCH 326/461] fixes for buildbot mysql-test/suite/funcs_1/r/is_columns_is.result: update for monty changes mysql-test/valgrind.supp: more generic suppression for dlerror() internal allocations scripts/make_win_bin_dist: update for hakan changes - we don't generate .map files anymore sql/CMakeLists.txt: innodb_plugin is said to need .map files in sql/ --- .../suite/funcs_1/r/is_columns_is.result | 176 +++++++++--------- mysql-test/valgrind.supp | 2 - scripts/make_win_bin_dist | 4 +- sql/CMakeLists.txt | 1 + 4 files changed, 91 insertions(+), 92 deletions(-) diff --git a/mysql-test/suite/funcs_1/r/is_columns_is.result b/mysql-test/suite/funcs_1/r/is_columns_is.result index 7d2f88bf4d0..7f5639a57db 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_is.result +++ b/mysql-test/suite/funcs_1/r/is_columns_is.result @@ -7,29 +7,29 @@ NULL information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 32 96 NU NULL information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select NULL information_schema CHARACTER_SETS DESCRIPTION 3 NO varchar 60 180 NULL NULL utf8 utf8_general_ci varchar(60) select NULL information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3) select -NULL information_schema CLIENT_STATISTICS ACCESS_DENIED 22 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS BINLOG_BYTES_WRITTEN 9 0 NO int NULL NULL 10 0 NULL NULL int(21) select +NULL information_schema CLIENT_STATISTICS ACCESS_DENIED 22 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS BINLOG_BYTES_WRITTEN 9 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select NULL information_schema CLIENT_STATISTICS BUSY_TIME 5 0 NO double NULL NULL 21 NULL NULL NULL double select -NULL information_schema CLIENT_STATISTICS BYTES_RECEIVED 7 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS BYTES_SENT 8 0 NO int NULL NULL 10 0 NULL NULL int(21) select +NULL information_schema CLIENT_STATISTICS BYTES_RECEIVED 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS BYTES_SENT 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select NULL information_schema CLIENT_STATISTICS CLIENT 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema CLIENT_STATISTICS COMMIT_TRANSACTIONS 18 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS 3 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS CONNECTED_TIME 4 0 NO int NULL NULL 10 0 NULL NULL int(21) select +NULL information_schema CLIENT_STATISTICS COMMIT_TRANSACTIONS 18 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS CONNECTED_TIME 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select NULL information_schema CLIENT_STATISTICS CPU_TIME 6 0 NO double NULL NULL 21 NULL NULL NULL double select -NULL information_schema CLIENT_STATISTICS DENIED_CONNECTIONS 20 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES 23 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS LOST_CONNECTIONS 21 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS OTHER_COMMANDS 17 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS ROLLBACK_TRANSACTIONS 19 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS ROWS_DELETED 12 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS ROWS_INSERTED 13 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS ROWS_READ 10 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS ROWS_SENT 11 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS ROWS_UPDATED 14 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS SELECT_COMMANDS 15 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS 2 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema CLIENT_STATISTICS UPDATE_COMMANDS 16 0 NO int NULL NULL 10 0 NULL NULL int(21) select +NULL information_schema CLIENT_STATISTICS DENIED_CONNECTIONS 20 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES 23 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS LOST_CONNECTIONS 21 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS OTHER_COMMANDS 17 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS ROLLBACK_TRANSACTIONS 19 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS ROWS_DELETED 12 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS ROWS_INSERTED 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS ROWS_READ 10 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS ROWS_SENT 11 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS ROWS_UPDATED 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS SELECT_COMMANDS 15 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema CLIENT_STATISTICS UPDATE_COMMANDS 16 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select NULL information_schema COLLATIONS CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select NULL information_schema COLLATIONS COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select NULL information_schema COLLATIONS ID 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(11) select @@ -137,7 +137,7 @@ NULL information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 307 NULL information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select NULL information_schema INDEX_STATISTICS INDEX_NAME 3 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select -NULL information_schema INDEX_STATISTICS ROWS_READ 4 0 NO int NULL NULL 10 0 NULL NULL int(21) select +NULL information_schema INDEX_STATISTICS ROWS_READ 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select NULL information_schema INDEX_STATISTICS TABLE_NAME 2 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select NULL information_schema INDEX_STATISTICS TABLE_SCHEMA 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select NULL information_schema INNODB_BUFFER_POOL_PAGES fix_count 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select @@ -416,9 +416,9 @@ NULL information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NO varchar 64 192 NUL NULL information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select NULL information_schema TABLE_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema TABLE_STATISTICS ROWS_CHANGED 4 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES 5 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema TABLE_STATISTICS ROWS_READ 3 0 NO int NULL NULL 10 0 NULL NULL int(21) select +NULL information_schema TABLE_STATISTICS ROWS_CHANGED 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema TABLE_STATISTICS ROWS_READ 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select NULL information_schema TABLE_STATISTICS TABLE_NAME 2 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select NULL information_schema TABLE_STATISTICS TABLE_SCHEMA 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select NULL information_schema TRIGGERS ACTION_CONDITION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select @@ -447,28 +447,28 @@ NULL information_schema USER_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL u NULL information_schema USER_PRIVILEGES IS_GRANTABLE 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select NULL information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema USER_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select -NULL information_schema USER_STATISTICS ACCESS_DENIED 22 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS BINLOG_BYTES_WRITTEN 9 0 NO int NULL NULL 10 0 NULL NULL int(21) select +NULL information_schema USER_STATISTICS ACCESS_DENIED 22 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS BINLOG_BYTES_WRITTEN 9 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select NULL information_schema USER_STATISTICS BUSY_TIME 5 0 NO double NULL NULL 21 NULL NULL NULL double select -NULL information_schema USER_STATISTICS BYTES_RECEIVED 7 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS BYTES_SENT 8 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS COMMIT_TRANSACTIONS 18 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS CONCURRENT_CONNECTIONS 3 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS CONNECTED_TIME 4 0 NO int NULL NULL 10 0 NULL NULL int(21) select +NULL information_schema USER_STATISTICS BYTES_RECEIVED 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS BYTES_SENT 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS COMMIT_TRANSACTIONS 18 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS CONCURRENT_CONNECTIONS 3 0 NO int NULL NULL 10 0 NULL NULL int(11) select +NULL information_schema USER_STATISTICS CONNECTED_TIME 4 0 NO int NULL NULL 10 0 NULL NULL int(11) select NULL information_schema USER_STATISTICS CPU_TIME 6 0 NO double NULL NULL 21 NULL NULL NULL double select -NULL information_schema USER_STATISTICS DENIED_CONNECTIONS 20 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS EMPTY_QUERIES 23 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS LOST_CONNECTIONS 21 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS OTHER_COMMANDS 17 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS ROLLBACK_TRANSACTIONS 19 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS ROWS_DELETED 12 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS ROWS_INSERTED 13 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS ROWS_READ 10 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS ROWS_SENT 11 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS ROWS_UPDATED 14 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS SELECT_COMMANDS 15 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS TOTAL_CONNECTIONS 2 0 NO int NULL NULL 10 0 NULL NULL int(21) select -NULL information_schema USER_STATISTICS UPDATE_COMMANDS 16 0 NO int NULL NULL 10 0 NULL NULL int(21) select +NULL information_schema USER_STATISTICS DENIED_CONNECTIONS 20 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS EMPTY_QUERIES 23 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS LOST_CONNECTIONS 21 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS OTHER_COMMANDS 17 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS ROLLBACK_TRANSACTIONS 19 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS ROWS_DELETED 12 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS ROWS_INSERTED 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS ROWS_READ 10 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS ROWS_SENT 11 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS ROWS_UPDATED 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS SELECT_COMMANDS 15 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select +NULL information_schema USER_STATISTICS TOTAL_CONNECTIONS 2 0 NO int NULL NULL 10 0 NULL NULL int(11) select +NULL information_schema USER_STATISTICS UPDATE_COMMANDS 16 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select NULL information_schema USER_STATISTICS USER 1 NO varchar 48 144 NULL NULL utf8 utf8_general_ci varchar(48) select NULL information_schema VIEWS CHARACTER_SET_CLIENT 9 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select NULL information_schema VIEWS CHECK_OPTION 5 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select @@ -550,28 +550,28 @@ COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH C 3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8 utf8_general_ci varchar(60) NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(3) 3.0000 information_schema CLIENT_STATISTICS CLIENT varchar 64 192 utf8 utf8_general_ci varchar(64) -NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS CONNECTED_TIME int NULL NULL NULL NULL int(21) +NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS CONNECTED_TIME bigint NULL NULL NULL NULL bigint(21) NULL information_schema CLIENT_STATISTICS BUSY_TIME double NULL NULL NULL NULL double NULL information_schema CLIENT_STATISTICS CPU_TIME double NULL NULL NULL NULL double -NULL information_schema CLIENT_STATISTICS BYTES_RECEIVED int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS BYTES_SENT int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS BINLOG_BYTES_WRITTEN int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS ROWS_READ int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS ROWS_SENT int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS ROWS_DELETED int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS ROWS_INSERTED int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS ROWS_UPDATED int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS SELECT_COMMANDS int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS UPDATE_COMMANDS int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS OTHER_COMMANDS int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS COMMIT_TRANSACTIONS int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS ROLLBACK_TRANSACTIONS int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS DENIED_CONNECTIONS int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS LOST_CONNECTIONS int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS ACCESS_DENIED int NULL NULL NULL NULL int(21) -NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES int NULL NULL NULL NULL int(21) +NULL information_schema CLIENT_STATISTICS BYTES_RECEIVED bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS BYTES_SENT bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS BINLOG_BYTES_WRITTEN bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS ROWS_SENT bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS ROWS_DELETED bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS ROWS_INSERTED bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS ROWS_UPDATED bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS SELECT_COMMANDS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS UPDATE_COMMANDS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS OTHER_COMMANDS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS COMMIT_TRANSACTIONS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS ROLLBACK_TRANSACTIONS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS DENIED_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS LOST_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS ACCESS_DENIED bigint NULL NULL NULL NULL bigint(21) +NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES bigint NULL NULL NULL NULL bigint(21) 3.0000 information_schema COLLATIONS COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32) 3.0000 information_schema COLLATIONS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32) NULL information_schema COLLATIONS ID bigint NULL NULL NULL NULL bigint(11) @@ -681,7 +681,7 @@ NULL information_schema FILES CHECKSUM bigint NULL NULL NULL NULL bigint(21) uns 3.0000 information_schema INDEX_STATISTICS TABLE_SCHEMA varchar 192 576 utf8 utf8_general_ci varchar(192) 3.0000 information_schema INDEX_STATISTICS TABLE_NAME varchar 192 576 utf8 utf8_general_ci varchar(192) 3.0000 information_schema INDEX_STATISTICS INDEX_NAME varchar 192 576 utf8 utf8_general_ci varchar(192) -NULL information_schema INDEX_STATISTICS ROWS_READ int NULL NULL NULL NULL int(21) +NULL information_schema INDEX_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21) 3.0000 information_schema INNODB_BUFFER_POOL_PAGES page_type varchar 64 192 utf8 utf8_general_ci varchar(64) NULL information_schema INNODB_BUFFER_POOL_PAGES space_id bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema INNODB_BUFFER_POOL_PAGES page_no bigint NULL NULL NULL NULL bigint(21) unsigned @@ -960,9 +960,9 @@ NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) un 3.0000 information_schema TABLE_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3) 3.0000 information_schema TABLE_STATISTICS TABLE_SCHEMA varchar 192 576 utf8 utf8_general_ci varchar(192) 3.0000 information_schema TABLE_STATISTICS TABLE_NAME varchar 192 576 utf8 utf8_general_ci varchar(192) -NULL information_schema TABLE_STATISTICS ROWS_READ int NULL NULL NULL NULL int(21) -NULL information_schema TABLE_STATISTICS ROWS_CHANGED int NULL NULL NULL NULL int(21) -NULL information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES int NULL NULL NULL NULL int(21) +NULL information_schema TABLE_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21) +NULL information_schema TABLE_STATISTICS ROWS_CHANGED bigint NULL NULL NULL NULL bigint(21) +NULL information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES bigint NULL NULL NULL NULL bigint(21) 3.0000 information_schema TRIGGERS TRIGGER_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512) 3.0000 information_schema TRIGGERS TRIGGER_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema TRIGGERS TRIGGER_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) @@ -990,28 +990,28 @@ NULL information_schema TRIGGERS CREATED datetime NULL NULL NULL NULL datetime 3.0000 information_schema USER_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema USER_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3) 3.0000 information_schema USER_STATISTICS USER varchar 48 144 utf8 utf8_general_ci varchar(48) -NULL information_schema USER_STATISTICS TOTAL_CONNECTIONS int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS CONCURRENT_CONNECTIONS int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS CONNECTED_TIME int NULL NULL NULL NULL int(21) +NULL information_schema USER_STATISTICS TOTAL_CONNECTIONS int NULL NULL NULL NULL int(11) +NULL information_schema USER_STATISTICS CONCURRENT_CONNECTIONS int NULL NULL NULL NULL int(11) +NULL information_schema USER_STATISTICS CONNECTED_TIME int NULL NULL NULL NULL int(11) NULL information_schema USER_STATISTICS BUSY_TIME double NULL NULL NULL NULL double NULL information_schema USER_STATISTICS CPU_TIME double NULL NULL NULL NULL double -NULL information_schema USER_STATISTICS BYTES_RECEIVED int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS BYTES_SENT int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS BINLOG_BYTES_WRITTEN int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS ROWS_READ int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS ROWS_SENT int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS ROWS_DELETED int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS ROWS_INSERTED int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS ROWS_UPDATED int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS SELECT_COMMANDS int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS UPDATE_COMMANDS int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS OTHER_COMMANDS int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS COMMIT_TRANSACTIONS int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS ROLLBACK_TRANSACTIONS int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS DENIED_CONNECTIONS int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS LOST_CONNECTIONS int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS ACCESS_DENIED int NULL NULL NULL NULL int(21) -NULL information_schema USER_STATISTICS EMPTY_QUERIES int NULL NULL NULL NULL int(21) +NULL information_schema USER_STATISTICS BYTES_RECEIVED bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS BYTES_SENT bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS BINLOG_BYTES_WRITTEN bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS ROWS_SENT bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS ROWS_DELETED bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS ROWS_INSERTED bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS ROWS_UPDATED bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS SELECT_COMMANDS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS UPDATE_COMMANDS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS OTHER_COMMANDS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS COMMIT_TRANSACTIONS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS ROLLBACK_TRANSACTIONS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS DENIED_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS LOST_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS ACCESS_DENIED bigint NULL NULL NULL NULL bigint(21) +NULL information_schema USER_STATISTICS EMPTY_QUERIES bigint NULL NULL NULL NULL bigint(21) 3.0000 information_schema VIEWS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512) 3.0000 information_schema VIEWS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema VIEWS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64) diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp index 8ba27c44567..0dd1c5ce09f 100644 --- a/mysql-test/valgrind.supp +++ b/mysql-test/valgrind.supp @@ -544,8 +544,6 @@ Memcheck:Leak fun:malloc fun:_dl_signal_error - fun:_dl_signal_error - fun:_dl_lookup_symbol_x } # diff --git a/scripts/make_win_bin_dist b/scripts/make_win_bin_dist index aa252ed2b7b..bdaa07a907f 100755 --- a/scripts/make_win_bin_dist +++ b/scripts/make_win_bin_dist @@ -163,7 +163,7 @@ if [ -f "storage/pbxt/bin/xtstat.exe" ] ; then cp storage/pbxt/bin/xtstat.{exe,pdb} $DESTDIR/bin fi -cp server-tools/instance-manager/$TARGET/*.{exe,map} $DESTDIR/bin/ +cp server-tools/instance-manager/$TARGET/*.exe $DESTDIR/bin/ if [ x"$TARGET" != x"release" ] ; then cp server-tools/instance-manager/$TARGET/*.pdb $DESTDIR/bin/ cp client/$TARGET/mysql.pdb $DESTDIR/bin/ @@ -361,7 +361,7 @@ cp -R mysql-test/{t,r,include,suite,std_data,lib,collections} $DESTDIR/mysql-tes rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/my_safe_kill.{dir,vcproj} rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/my_safe_process.{dir,vcproj} -rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/{Debug,RelWithDebInfo}/*.{ilk,idb,map} +rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/{Debug,RelWithDebInfo}/*.{ilk,idb} # Note that this will not copy "extra" if a soft link diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 345a382e391..b431ee075fe 100755 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -18,6 +18,7 @@ SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR /Zi") SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR /Zi") +SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS") INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/extra/yassl/include From 277b055f141173316ef38588721f0522ccabc4a5 Mon Sep 17 00:00:00 2001 From: Jimmy Yang Date: Wed, 28 Jul 2010 03:20:44 -0700 Subject: [PATCH 327/461] Fix bug #55581 by backporting fix of #52546 from mysql-trunk-innodb to mysql-5.1-innodb plugin. --- storage/innodb_plugin/ChangeLog | 6 ++++ storage/innodb_plugin/include/mem0pool.h | 12 ------- storage/innodb_plugin/mem/mem0mem.c | 12 +++---- storage/innodb_plugin/mem/mem0pool.c | 41 +++++++++++++++--------- storage/innodb_plugin/srv/srv0start.c | 6 +++- 5 files changed, 43 insertions(+), 34 deletions(-) diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog index 5bc4ea7c303..3e802360d23 100644 --- a/storage/innodb_plugin/ChangeLog +++ b/storage/innodb_plugin/ChangeLog @@ -1,3 +1,9 @@ +2010-07-27 The InnoDB Team + + * include/mem0pool.h, mem/mem0mem.c, mem/mem0pool.c, srv/srv0start.c: + Fix Bug#55581 shutdown with innodb-use-sys-malloc=0: assert + mutex->magic_n == MUTEX_MAGIC_N. + 2010-06-30 The InnoDB Team * btr/btr0sea.c, ha/ha0ha.c, handler/ha_innodb.cc, include/btr0sea.h: diff --git a/storage/innodb_plugin/include/mem0pool.h b/storage/innodb_plugin/include/mem0pool.h index 5e93bf88a47..fa8be296ec9 100644 --- a/storage/innodb_plugin/include/mem0pool.h +++ b/storage/innodb_plugin/include/mem0pool.h @@ -100,18 +100,6 @@ mem_pool_get_reserved( /*==================*/ mem_pool_t* pool); /*!< in: memory pool */ /********************************************************************//** -Reserves the mem pool mutex. */ -UNIV_INTERN -void -mem_pool_mutex_enter(void); -/*======================*/ -/********************************************************************//** -Releases the mem pool mutex. */ -UNIV_INTERN -void -mem_pool_mutex_exit(void); -/*=====================*/ -/********************************************************************//** Validates a memory pool. @return TRUE if ok */ UNIV_INTERN diff --git a/storage/innodb_plugin/mem/mem0mem.c b/storage/innodb_plugin/mem/mem0mem.c index c0ce8a3e1ac..1dd4db30841 100644 --- a/storage/innodb_plugin/mem/mem0mem.c +++ b/storage/innodb_plugin/mem/mem0mem.c @@ -367,7 +367,7 @@ mem_heap_create_block( block->line = line; #ifdef MEM_PERIODIC_CHECK - mem_pool_mutex_enter(); + mutex_enter(&(mem_comm_pool->mutex)); if (!mem_block_list_inited) { mem_block_list_inited = TRUE; @@ -376,7 +376,7 @@ mem_heap_create_block( UT_LIST_ADD_LAST(mem_block_list, mem_block_list, block); - mem_pool_mutex_exit(); + mutex_exit(&(mem_comm_pool->mutex)); #endif mem_block_set_len(block, len); mem_block_set_type(block, type); @@ -479,11 +479,11 @@ mem_heap_block_free( UT_LIST_REMOVE(list, heap->base, block); #ifdef MEM_PERIODIC_CHECK - mem_pool_mutex_enter(); + mutex_enter(&(mem_comm_pool->mutex)); UT_LIST_REMOVE(mem_block_list, mem_block_list, block); - mem_pool_mutex_exit(); + mutex_exit(&(mem_comm_pool->mutex)); #endif ut_ad(heap->total_size >= block->len); @@ -556,7 +556,7 @@ mem_validate_all_blocks(void) { mem_block_t* block; - mem_pool_mutex_enter(); + mutex_enter(&(mem_comm_pool->mutex)); block = UT_LIST_GET_FIRST(mem_block_list); @@ -568,6 +568,6 @@ mem_validate_all_blocks(void) block = UT_LIST_GET_NEXT(mem_block_list, block); } - mem_pool_mutex_exit(); + mutex_exit(&(mem_comm_pool->mutex)); } #endif diff --git a/storage/innodb_plugin/mem/mem0pool.c b/storage/innodb_plugin/mem/mem0pool.c index c4f8af607e0..3291453eeb5 100644 --- a/storage/innodb_plugin/mem/mem0pool.c +++ b/storage/innodb_plugin/mem/mem0pool.c @@ -34,6 +34,7 @@ Created 5/12/1997 Heikki Tuuri #include "ut0lst.h" #include "ut0byte.h" #include "mem0mem.h" +#include "srv0start.h" /* We would like to use also the buffer frames to allocate memory. This would be desirable, because then the memory consumption of the database @@ -121,23 +122,33 @@ mysql@lists.mysql.com */ UNIV_INTERN ulint mem_n_threads_inside = 0; /********************************************************************//** -Reserves the mem pool mutex. */ -UNIV_INTERN +Reserves the mem pool mutex if we are not in server shutdown. Use +this function only in memory free functions, since only memory +free functions are used during server shutdown. */ +UNIV_INLINE void -mem_pool_mutex_enter(void) -/*======================*/ +mem_pool_mutex_enter( +/*=================*/ + mem_pool_t* pool) /*!< in: memory pool */ { - mutex_enter(&(mem_comm_pool->mutex)); + if (srv_shutdown_state < SRV_SHUTDOWN_EXIT_THREADS) { + mutex_enter(&(pool->mutex)); + } } /********************************************************************//** -Releases the mem pool mutex. */ -UNIV_INTERN +Releases the mem pool mutex if we are not in server shutdown. As +its corresponding mem_pool_mutex_enter() function, use it only +in memory free functions */ +UNIV_INLINE void -mem_pool_mutex_exit(void) -/*=====================*/ +mem_pool_mutex_exit( +/*================*/ + mem_pool_t* pool) /*!< in: memory pool */ { - mutex_exit(&(mem_comm_pool->mutex)); + if (srv_shutdown_state < SRV_SHUTDOWN_EXIT_THREADS) { + mutex_exit(&(pool->mutex)); + } } /********************************************************************//** @@ -567,7 +578,7 @@ mem_area_free( n = ut_2_log(size); - mutex_enter(&(pool->mutex)); + mem_pool_mutex_enter(pool); mem_n_threads_inside++; ut_a(mem_n_threads_inside == 1); @@ -595,7 +606,7 @@ mem_area_free( pool->reserved += ut_2_exp(n); mem_n_threads_inside--; - mutex_exit(&(pool->mutex)); + mem_pool_mutex_exit(pool); mem_area_free(new_ptr, pool); @@ -611,7 +622,7 @@ mem_area_free( } mem_n_threads_inside--; - mutex_exit(&(pool->mutex)); + mem_pool_mutex_exit(pool); ut_ad(mem_pool_validate(pool)); } @@ -630,7 +641,7 @@ mem_pool_validate( ulint free; ulint i; - mutex_enter(&(pool->mutex)); + mem_pool_mutex_enter(pool); free = 0; @@ -658,7 +669,7 @@ mem_pool_validate( ut_a(free + pool->reserved == pool->size); - mutex_exit(&(pool->mutex)); + mem_pool_mutex_exit(pool); return(TRUE); } diff --git a/storage/innodb_plugin/srv/srv0start.c b/storage/innodb_plugin/srv/srv0start.c index e517b9a86b0..ba9fc831b39 100644 --- a/storage/innodb_plugin/srv/srv0start.c +++ b/storage/innodb_plugin/srv/srv0start.c @@ -2018,9 +2018,13 @@ innobase_shutdown_for_mysql(void) pars_lexer_close(); log_mem_free(); buf_pool_free(); - ut_free_all_mem(); mem_close(); + /* ut_free_all_mem() frees all allocated memory not freed yet + in shutdown, and it will also free the ut_list_mutex, so it + should be the last one for all operation */ + ut_free_all_mem(); + if (os_thread_count != 0 || os_event_count != 0 || os_mutex_count != 0 From f67481558db6c0f746fdbed4d7d5e2c82b45980e Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Wed, 28 Jul 2010 12:59:19 -0300 Subject: [PATCH 328/461] Bug#53463: YaSSL patch appears to be reverted The problem is that the fix Bug#29784 was mistakenly reverted when updating YaSSL to a newer version. The solution is to re-apply the fix and this time actually add a meaningful test case so that possible regressions are caught. extra/yassl/taocrypt/src/coding.cpp: Fixed buffer allocation to compute the proper maximum decoded size: (EncodedLength * 3/4) + 3 mysql-test/std_data/server8k-cert.pem: Update certificate. mysql-test/std_data/server8k-key.pem: Update key. mysql-test/t/ssl_8k_key-master.opt: Start the server using the certificate and key that triggers the problem. --- extra/yassl/taocrypt/src/coding.cpp | 2 +- mysql-test/std_data/server8k-cert.pem | 172 +++++++---------------- mysql-test/std_data/server8k-key.pem | 194 +++++++++++++------------- mysql-test/t/ssl_8k_key-master.opt | 1 + 4 files changed, 148 insertions(+), 221 deletions(-) create mode 100644 mysql-test/t/ssl_8k_key-master.opt diff --git a/extra/yassl/taocrypt/src/coding.cpp b/extra/yassl/taocrypt/src/coding.cpp index 7a9d50aaac9..7fc681e1a05 100644 --- a/extra/yassl/taocrypt/src/coding.cpp +++ b/extra/yassl/taocrypt/src/coding.cpp @@ -185,7 +185,7 @@ void Base64Decoder::Decode() { word32 bytes = coded_.size(); word32 plainSz = bytes - ((bytes + (pemLineSz - 1)) / pemLineSz); - plainSz = (plainSz * 3 + 3) / 4; + plainSz = ((plainSz * 3) / 4) + 3; decoded_.New(plainSz); word32 i = 0; diff --git a/mysql-test/std_data/server8k-cert.pem b/mysql-test/std_data/server8k-cert.pem index 06e118cf034..e71ba5722b9 100644 --- a/mysql-test/std_data/server8k-cert.pem +++ b/mysql-test/std_data/server8k-cert.pem @@ -1,125 +1,51 @@ -Certificate: - Data: - Version: 1 (0x0) - Serial Number: 1048579 (0x100003) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=SE, ST=Uppsala, L=Uppsala, O=MySQL AB - Validity - Not Before: Jan 29 12:01:53 2010 GMT - Not After : Jan 28 12:01:53 2015 GMT - Subject: C=SE, ST=Uppsala, O=MySQL AB, CN=server - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (8192 bit) - Modulus: - 00:ca:aa:1d:c4:11:ec:91:f0:c7:ff:5f:90:92:fc: - 40:0c:5e:b7:3d:00:c5:20:d5:0f:89:31:07:d7:41: - 4c:8b:60:80:aa:38:14:de:93:6b:9c:74:88:41:68: - b5:02:41:01:2d:86:a2:7a:95:53:5e:7b:67:2f:6c: - 1e:29:51:f9:44:fd:4a:80:be:b2:23:a1:3e:1b:38: - cf:88:c4:71:ee:f8:6b:41:c5:2d:c0:c3:52:ac:59: - 7d:81:34:19:95:32:b8:9a:51:b6:41:36:d4:c4:a1: - ae:84:e6:38:b9:e8:bf:96:be:19:7a:6b:77:4d:e0: - de:e6:b3:b6:6b:bc:3d:dd:68:bc:4b:c4:eb:f5:36: - 93:ed:56:a2:15:50:8a:10:e8:d6:22:ed:6c:b1:cd: - c3:18:c9:f6:0a:e1:de:61:65:62:d6:14:41:8c:b5: - fb:14:68:c1:cf:12:5d:41:21:9d:57:11:43:7d:bb: - 43:2c:21:bb:c3:44:7d:a8:cf:1f:c3:71:75:b5:47: - c2:7d:ce:38:3c:73:64:9e:15:d8:a7:27:cf:bd:40: - c8:45:08:e3:c8:39:a8:0b:8e:c2:5b:7b:f1:47:91: - 12:91:cc:e1:00:e0:94:5b:bd:32:e4:0c:8d:c3:be: - cc:76:32:52:12:69:b0:18:e0:b0:c2:76:34:5a:5f: - 79:d9:f6:81:9d:02:0a:61:69:1c:33:ce:49:fa:76: - 03:1e:07:5b:27:0b:bf:34:9e:34:96:b8:03:9b:50: - 3a:6a:2f:17:7a:14:cf:65:63:00:37:52:a8:73:ce: - 4b:14:40:f4:d2:9a:56:54:33:b8:77:2e:42:5b:8f: - ec:1f:18:f4:ad:ab:8a:4a:8d:6d:70:25:f3:58:e7: - cb:66:51:14:7d:16:f4:eb:6d:56:76:76:51:6e:d6: - 1d:da:d3:8d:c0:64:5a:67:4e:af:e2:bf:33:d1:b8: - f6:2a:fc:57:87:a7:35:5e:80:c9:ac:fc:87:c9:71: - 17:91:bf:b7:4d:a3:ed:3c:1b:27:f4:66:a0:f9:46: - 03:27:cc:ea:80:f6:4b:40:f6:41:94:cd:bd:0a:b3: - ef:26:be:de:6f:69:ae:0f:3f:1c:55:63:33:90:9b: - ed:ca:5a:12:4d:de:4b:06:c2:a2:92:b0:42:3d:31: - af:a4:15:12:15:f8:8a:e9:88:8d:cf:fd:85:66:50: - 6f:11:f1:9f:48:f3:b5:ba:9d:86:68:24:a2:5d:a8: - 7c:54:42:fa:d8:b5:c5:f2:dd:0e:0f:d0:68:e4:54: - 7e:c5:b9:a0:9b:65:2d:77:f4:8f:b9:30:0a:d5:86: - 5c:ed:c9:7c:d1:da:9d:0d:63:50:ee:e5:1e:92:63: - cc:a2:0c:e8:4a:96:02:4d:dc:8f:df:7c:8f:08:18: - a8:30:88:d7:af:89:ad:fc:57:4b:10:f9:f1:cb:48: - e8:b6:3b:c8:3f:fc:c2:d3:d1:4a:10:3c:1b:6b:64: - dc:e5:65:1e:5b:b2:da:b1:e2:24:97:8f:ee:c0:4b: - 8e:18:83:7c:17:a6:3c:45:b3:60:06:23:f2:2f:18: - 13:9e:17:8a:c6:72:79:8c:4d:04:f3:9d:ea:e0:25: - d3:33:8c:1e:11:47:63:1f:a5:45:3f:bd:85:b3:fe: - a5:68:ee:48:b7:0c:a4:c9:7f:72:d0:75:66:9b:6a: - f9:a0:50:f3:a8:59:6d:a3:dd:38:4f:70:2b:bb:ff: - 92:2e:71:ab:ef:e9:00:ed:0d:d1:b4:6f:f0:8e:b2: - 09:fb:4d:61:0d:d9:10:d5:54:11:cd:03:94:84:fd: - a8:68:e4:45:6e:1e:6a:1e:2f:85:a1:6d:f5:b6:c0: - f1:ee:f7:36:e9:fe:c2:f7:ad:cc:13:46:5b:88:42: - f0:2d:1f:b5:0e:7e:b5:2b:e4:8d:ab:b9:87:30:6a: - 3d:12:f4:ad:f3:1c:ac:cc:1a:48:29:2a:96:7b:80: - 00:0b:6e:59:87:bf:a3:ca:70:99:1b:1c:fd:72:3d: - b2:d3:94:4a:cf:55:75:be:1f:40:ec:55:35:48:2d: - 55:f0:00:da:3c:b0:60:ba:11:32:66:54:0b:be:06: - a4:5e:b7:c9:59:bb:4d:f4:92:06:26:48:6e:c2:12: - d4:7c:f0:20:b8:a2:e1:bc:6a:b6:19:0e:37:47:55: - c9:f2:49:0d:96:75:a2:84:64:bf:34:fc:be:b2:41: - e4:f5:88:eb:e1:b7:26:a5:e5:41:c2:20:0c:f6:e2: - a8:a5:e7:76:54:a5:fb:4b:80:05:7d:18:85:7a:ba: - bc:b7:ad:c0:2f:60:85:cc:15:12:1c:2f:0a:9e:f3: - 7c:40:cf:f4:3e:23:d2:95:ca:d0:06:58:52:f0:84: - d8:0f:3d:eb:ff:12:68:94:79:8f:be:40:29:5f:98: - c8:90:6c:05:2f:99:8c:2a:63:78:1f:23:b1:29:c5: - e7:49:c9:b2:92:0f:53:0b:d5:71:28:17:c2:19:bf: - 60:bf:7c:87:a8:ab:c1:f4:0a:c1:b8:d2:68:ee:c1: - ce:a7:13:13:17:6d:24:5d:a2:37:a6:d7:7d:48:8b: - 2b:74:2d:40:2e:ca:19:d5:b6:3e:6c:42:71:fa:cf: - 85:87:f9:de:80:73:8b:89:f4:70:f0:d8:d7:ff:40: - 41:9c:c7:15:6d:9b:6e:4c:b5:52:02:99:79:32:73: - ca:26:a0:ac:31:6f:c4:b0:f5:da:bb:c2:1f:e0:9f: - 44:ba:25:f7:9f - Exponent: 65537 (0x10001) - Signature Algorithm: md5WithRSAEncryption - 08:75:dc:b9:3f:aa:b6:7e:81:7a:39:d1:ee:ed:44:b6:ce:1b: - 37:c4:4c:19:d0:66:e6:eb:b5:4f:2a:ef:95:58:64:21:55:01: - 12:30:ac:8a:95:d1:06:de:29:46:a4:f1:7d:7f:b0:1e:d2:4e: - fb:f6:fa:9a:74:be:85:62:db:0b:82:90:58:62:c5:5f:f1:80: - 02:9f:c5:fb:f3:6b:b0:b4:3b:04:b1:e5:53:c2:d0:00:a1:1a: - 9d:65:60:6f:73:98:67:e0:9c:c8:12:94:79:59:bf:43:7b:f5: - 77:c8:8f:df:b1:cd:11:1c:01:19:99:c2:22:42:f7:41:ae:b4: - b8:1a -----BEGIN CERTIFICATE----- -MIIFfDCCBOUCAxAAAzANBgkqhkiG9w0BAQQFADBEMQswCQYDVQQGEwJTRTEQMA4G -A1UECBMHVXBwc2FsYTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwg -QUIwHhcNMTAwMTI5MTIwMTUzWhcNMTUwMTI4MTIwMTUzWjBDMQswCQYDVQQGEwJT -RTEQMA4GA1UECBMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwgQUIxDzANBgNVBAMT -BnNlcnZlcjCCBCIwDQYJKoZIhvcNAQEBBQADggQPADCCBAoCggQBAMqqHcQR7JHw -x/9fkJL8QAxetz0AxSDVD4kxB9dBTItggKo4FN6Ta5x0iEFotQJBAS2GonqVU157 -Zy9sHilR+UT9SoC+siOhPhs4z4jEce74a0HFLcDDUqxZfYE0GZUyuJpRtkE21MSh -roTmOLnov5a+GXprd03g3uaztmu8Pd1ovEvE6/U2k+1WohVQihDo1iLtbLHNwxjJ -9grh3mFlYtYUQYy1+xRowc8SXUEhnVcRQ327Qywhu8NEfajPH8NxdbVHwn3OODxz -ZJ4V2Kcnz71AyEUI48g5qAuOwlt78UeREpHM4QDglFu9MuQMjcO+zHYyUhJpsBjg -sMJ2NFpfedn2gZ0CCmFpHDPOSfp2Ax4HWycLvzSeNJa4A5tQOmovF3oUz2VjADdS -qHPOSxRA9NKaVlQzuHcuQluP7B8Y9K2rikqNbXAl81jny2ZRFH0W9OttVnZ2UW7W -HdrTjcBkWmdOr+K/M9G49ir8V4enNV6Ayaz8h8lxF5G/t02j7TwbJ/RmoPlGAyfM -6oD2S0D2QZTNvQqz7ya+3m9prg8/HFVjM5Cb7cpaEk3eSwbCopKwQj0xr6QVEhX4 -iumIjc/9hWZQbxHxn0jztbqdhmgkol2ofFRC+ti1xfLdDg/QaORUfsW5oJtlLXf0 -j7kwCtWGXO3JfNHanQ1jUO7lHpJjzKIM6EqWAk3cj998jwgYqDCI16+JrfxXSxD5 -8ctI6LY7yD/8wtPRShA8G2tk3OVlHluy2rHiJJeP7sBLjhiDfBemPEWzYAYj8i8Y -E54XisZyeYxNBPOd6uAl0zOMHhFHYx+lRT+9hbP+pWjuSLcMpMl/ctB1Zptq+aBQ -86hZbaPdOE9wK7v/ki5xq+/pAO0N0bRv8I6yCftNYQ3ZENVUEc0DlIT9qGjkRW4e -ah4vhaFt9bbA8e73Nun+wvetzBNGW4hC8C0ftQ5+tSvkjau5hzBqPRL0rfMcrMwa -SCkqlnuAAAtuWYe/o8pwmRsc/XI9stOUSs9Vdb4fQOxVNUgtVfAA2jywYLoRMmZU -C74GpF63yVm7TfSSBiZIbsIS1HzwILii4bxqthkON0dVyfJJDZZ1ooRkvzT8vrJB -5PWI6+G3JqXlQcIgDPbiqKXndlSl+0uABX0YhXq6vLetwC9ghcwVEhwvCp7zfEDP -9D4j0pXK0AZYUvCE2A896/8SaJR5j75AKV+YyJBsBS+ZjCpjeB8jsSnF50nJspIP -UwvVcSgXwhm/YL98h6irwfQKwbjSaO7BzqcTExdtJF2iN6bXfUiLK3QtQC7KGdW2 -PmxCcfrPhYf53oBzi4n0cPDY1/9AQZzHFW2bbky1UgKZeTJzyiagrDFvxLD12rvC -H+CfRLol958CAwEAATANBgkqhkiG9w0BAQQFAAOBgQAIddy5P6q2foF6OdHu7US2 -zhs3xEwZ0Gbm67VPKu+VWGQhVQESMKyKldEG3ilGpPF9f7Ae0k779vqadL6FYtsL -gpBYYsVf8YACn8X782uwtDsEseVTwtAAoRqdZWBvc5hn4JzIEpR5Wb9De/V3yI/f -sc0RHAEZmcIiQvdBrrS4Gg== +MIIJFDCCBPwCAQEwDQYJKoZIhvcNAQEEBQAwTjELMAkGA1UEBhMCU0UxEDAOBgNV +BAgTB1VwcHNhbGExETAPBgNVBAoTCE15U1FMIEFCMQ0wCwYDVQQLEwRUZXN0MQsw +CQYDVQQDEwJDQTAeFw0xMDA3MjgxNDA3MjhaFw0xODEwMTQxNDA3MjhaMFIxCzAJ +BgNVBAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxhMREwDwYDVQQKEwhNeVNRTCBBQjEN +MAsGA1UECxMEVGVzdDEPMA0GA1UEAxMGc2VydmVyMIIEIjANBgkqhkiG9w0BAQEF +AAOCBA8AMIIECgKCBAEA6h3v1OWb9I9U/Z8diBu/xYGS8NCTD3ZESboHxVI2qSEC +PgxNNcG8Lh0ktQdgYcOe64MnDTZX0Bibm47hoDldrAlTSffFxQhylqBBoXxDF+Lr +hXIqCz7K0PsK+bYusL9ezJ7PETDnCT7oy95q4GXbKsutbNsm9if4ZE41gs2KnoU2 +DA7kvMmkKojrMIL4+BqTXA20LLo0iSbgvUTvpSJw4u96BeyzMNnxK2wP5vvTtUo5 +hACbfU87YjaSKs+q2VXCzfyYGZk1L1xk5GUI0bP+jutf1dDzNttW2/q2Nf5rxx09 +Gh/GwmOnEk1O7cOZ8VQCsOHirIM39NuSARsY6Y3G5XM4k2W4nxyR/RtdG9bvs/33 +aGsZ5V5yp7WSs8s9HHwaCPSsUiLKckQ7uA0TTRgbeweMrrLKovG57jsbBBB8pQD4 +PRd31qgxCdstWXHiWwRyI8vOLWENPXPFqA/rJwwqNdWTogy38aqVXxGYR8PIwjA2 +OaIwFjwGZcsPNLqw6bgAN8O2UBqZHWiMF8mi7brvioDvAIufZuqa2SqT/At45H83 +psQ6R4FsxZt6SAK7EsdPo8OYTrY1i4iPZd/eKhnEu2srEZgsKRwY5H1mvDH5fWCc +HSFu07sWmlmK6Or65Fsa0IaKLJiQDVVETd6xrI0wkM4AOcbKDrS7aywJ426dopbs ++LFdt4N0cdII4gBgJAfLuuA2yrDXRq4P6cgpVMy0R+0dEYE8zzm8zf1a+Ud273LS +9+LB+LJKwqbW8nOPBoiekimIKfJYoOA4+C/mAjsYl1sVjjEhXJAs9S9L2UvnUk1P +sZi4UKHI6eAIEl7VM1sQ4GbdZ0px2dF2Ax7pGkhD+DLpYyYkCprharKZdmuUNLUd +NhXxi/HSEiE+Uy+o8RIzmH7LuROl/ZgnfHjJEiBLt2qPvwrwYd4c3XuXWs4YsWfV +JTt8Mx2ihgVcdGy9//shCSmgJwR1oWrhgC10AEL2fKeRnYUal1i+IxFPp7nb8uwx +UADgR0cY4A3qR/JP489QFIcxBTVs65De+Bq3ecnujk6yeGpD9iptonq4Y8uNZMc1 +kOE7GiFGwR4EufT5SEMh+tUkjth2r+842vmZZuxrVQaohDiATmIJA07W51zKH+nQ +uw4qVKnAhPaDLCLc7YMIH9JcmkeQX0nf8/S2O2WYDH8glVDi5hfW08tCmV647vRY +nTIywUTO0lFpz7M+VyMNaJ6yXU6biBV5hLAI8C5ldr/SWI789W2+ebBaJ9gfK+PT +trohFSK37GcoSH4V6qSLJHCBASEsiddqHIHMLJZRYD+B6J3tLhjVUM43u+MEGbFT +d33ZDke/WzLTExWkaOv36e67gDBmgDuj9yroq3wGfwIDAQABMA0GCSqGSIb3DQEB +BAUAA4IEAQCc9RBhRbuWlmRZPZkqIdi5/+enyjoMmOa6ryJPxFSP8D2jrlHgQsk1 ++GsJmPFT3rwWfoGAQu/aeSX4sp8OhKVJtqNA6MJrGYnZIMolgYa1wZPbkjJsdEfi +UsZdIB0n2+KA0xwEdGPdkGCfNPBtOg557DkcyEvsIZ9ELp4Pp2XzWRhyFGasJZc4 +YwgD/3K2rpOPZoMkBKeKqV19j41OfLKGBVyuaqzitbu9+KT4RU1ibr2a+UuFCwdT +oqyN7bfWXjcjXOMkxCsOmLfKmqQxs7TEOVrYPTdYjamDxLy/e5g5FgoCxGY8iil0 ++YFLZyH6eEx/Os9DlG/M3O1MeRD9U97CdsphbDVZIDyWw5xeX8qQHJe0KSprAgiG +TLhTZHeyrKujQCQS1oFFmNy4gSqXt0j1/6/9T80j6HeyjiiYEaEQK9YLTAjRoA7W +VN8wtHI5F3RlNOVQEJks/bjdlpLL3VhaWtfewGh/mXRGcow84cgcsejMexmhreHm +JfTUl9+X1IFFxGq2/606A9ROQ7kN/s4rXu7/TiMODXI/kZijoWd2SCc7Z0YWoNo7 +IRKkmZtrsflJbObEuK2Jk59uqzSxyQOBId8qtbPo8qJJyHGV5GCp34g4x67BxJBo +h1iyVMamBAS5Ip1ejghuROrB8Hit8NhAZApXju62btJeXLX+mQayXb/wC/IXNJJD +83tXiLfZgs6GzLAq7+KW/64sZSvj87CPiNtxkvjchAvyr+fhbBXCrf4rlOjJE6SH +Je2/Jon7uqijncARGLBeYUT0Aa6k1slpXuSKxDNt7EIkP21kDZ5/OJ0Y1u587KVB +dEhuDgNf2/8ij7gAQBwBoZMe1DrwddrxgLLBlyHpAZetNYFZNT+Cs/OlpqI0Jm59 +kK9pX0BY4AGOd23XM3K/uLawdmf67kkftim7aVaqXFHPiWsJVtlzmidKvNSmbmZe +dOmMXp6PBoqcdusFVUS7vjd3KAes5wUX/CaTyOOPRu0LMSnpwEnaL76IC9x4Jd6d +7QqY/OFTjpPH8nP57LwouiT6MgSUCWGaOkPuBJ9w9sENSbbINpgJJ42iAe2kE+R7 +qEIvf/2ETCTseeQUqm2nWiSPLkNagEh6kojmEoKrGyrv3YjrSXSOY1a70tDVy43+ +ueQDQzNZm3Q7inpke2ZKvWyY0LQmLzP2te+tnNBcdLyKJx7emPRTuMUlEdK7cLbt +V3Sy9IKtyAXqqd66fPFj4NhJygyncj8M6CSqhG5L0GhDbkA8UJ8yK/gfKm3h5xe2 +utULK5VMtAhQt6cVahO59A9t/OI17y45bmlIgdlEQISzVFe9ZbIUJW44zBfPx74k +/w8pMRr8gEuRqpL2WdJiKGG6lhMHLVFo -----END CERTIFICATE----- diff --git a/mysql-test/std_data/server8k-key.pem b/mysql-test/std_data/server8k-key.pem index faf4b43fa56..99e7417733e 100644 --- a/mysql-test/std_data/server8k-key.pem +++ b/mysql-test/std_data/server8k-key.pem @@ -1,99 +1,99 @@ -----BEGIN RSA PRIVATE KEY----- -MIISKgIBAAKCBAEAyqodxBHskfDH/1+QkvxADF63PQDFINUPiTEH10FMi2CAqjgU -3pNrnHSIQWi1AkEBLYaiepVTXntnL2weKVH5RP1KgL6yI6E+GzjPiMRx7vhrQcUt -wMNSrFl9gTQZlTK4mlG2QTbUxKGuhOY4uei/lr4Zemt3TeDe5rO2a7w93Wi8S8Tr -9TaT7VaiFVCKEOjWIu1ssc3DGMn2CuHeYWVi1hRBjLX7FGjBzxJdQSGdVxFDfbtD -LCG7w0R9qM8fw3F1tUfCfc44PHNknhXYpyfPvUDIRQjjyDmoC47CW3vxR5ESkczh -AOCUW70y5AyNw77MdjJSEmmwGOCwwnY0Wl952faBnQIKYWkcM85J+nYDHgdbJwu/ -NJ40lrgDm1A6ai8XehTPZWMAN1Koc85LFED00ppWVDO4dy5CW4/sHxj0rauKSo1t -cCXzWOfLZlEUfRb0621WdnZRbtYd2tONwGRaZ06v4r8z0bj2KvxXh6c1XoDJrPyH -yXEXkb+3TaPtPBsn9Gag+UYDJ8zqgPZLQPZBlM29CrPvJr7eb2muDz8cVWMzkJvt -yloSTd5LBsKikrBCPTGvpBUSFfiK6YiNz/2FZlBvEfGfSPO1up2GaCSiXah8VEL6 -2LXF8t0OD9Bo5FR+xbmgm2Utd/SPuTAK1YZc7cl80dqdDWNQ7uUekmPMogzoSpYC -TdyP33yPCBioMIjXr4mt/FdLEPnxy0jotjvIP/zC09FKEDwba2Tc5WUeW7LaseIk -l4/uwEuOGIN8F6Y8RbNgBiPyLxgTnheKxnJ5jE0E853q4CXTM4weEUdjH6VFP72F -s/6laO5ItwykyX9y0HVmm2r5oFDzqFlto904T3Aru/+SLnGr7+kA7Q3RtG/wjrIJ -+01hDdkQ1VQRzQOUhP2oaORFbh5qHi+FoW31tsDx7vc26f7C963ME0ZbiELwLR+1 -Dn61K+SNq7mHMGo9EvSt8xyszBpIKSqWe4AAC25Zh7+jynCZGxz9cj2y05RKz1V1 -vh9A7FU1SC1V8ADaPLBguhEyZlQLvgakXrfJWbtN9JIGJkhuwhLUfPAguKLhvGq2 -GQ43R1XJ8kkNlnWihGS/NPy+skHk9Yjr4bcmpeVBwiAM9uKoped2VKX7S4AFfRiF -erq8t63AL2CFzBUSHC8KnvN8QM/0PiPSlcrQBlhS8ITYDz3r/xJolHmPvkApX5jI -kGwFL5mMKmN4HyOxKcXnScmykg9TC9VxKBfCGb9gv3yHqKvB9ArBuNJo7sHOpxMT -F20kXaI3ptd9SIsrdC1ALsoZ1bY+bEJx+s+Fh/negHOLifRw8NjX/0BBnMcVbZtu -TLVSApl5MnPKJqCsMW/EsPXau8If4J9EuiX3nwIDAQABAoIEAElnTjqq502AsV+c -hGfId4ZDdAjjU4LtyJ+/I4DihM/ilxeQEnb/XDWhu4w9WXpEgyGzJvxRQ43wElKJ -zW7X4voK58Yzy5++EhmX/QsjY8TTMz3yJf0wgawtCZkXfsCcS2KRf/qk2nGRwf0e -yaMEWwhFOEMv01lgvjs/Ei55Usrz2Wd0HqaFKxUGkNQ5hJhVTOH/rqPDzAsZc0VD -w+Dw8NhrI8bMTvF4c+IFW8NwYmWbuh87CTxdx30VPJI82ttWJ/UN1bLtU08J2IKt -lPgOIl8ArMjcTGxD/cqZ3Wl3Pc/XCqvGUiSYMwP7Rgh1R4+DdtjEpxdGMmMAVuVI -HPQyqpa4gv+UMqBPish0yjSuM7jXnztINOvg9Vk1sxC5AT9eaRltmiS1s+lVxe+T -43ulf0ccYXJD/WclWSGCwloNFuokPIV+Lgo1pKsp4XDgoxQfkXwH8Q4dEqebY9rT -Tv9FGb1bMbdl22X1oSu2lBltBZaB/QnruV7L2GaQ0tqLKizgBRuvZFSE+DWdMb6d -9mnEB8LWtca/nzogXb5qv4GEMUX4FUAmSf1FnGWZwwDi1DFfJ860RVKf0xokGGQ3 -cm3H/F4veds88Z1hsAu0bG8h/bEAim+Whvag995cFHDD4on41KXW8wX1on9VFA1W -CkaGUPhLRytXDBVCSJkOYYFSJlb2wqONiWe4Tn5hsantCfliTj/GVkgDq2h7dAGR -WyoqTntJAv/xJsUOV9WmGXnWNeZX8BSO3P5dnXnMzhCWQGoprXmWFyJ3TYCJ2+CO -rzkZbtuKvTvGc3sDJgrSVmmg0BrOkH+GyYVlJdTDBmfzoORludDCFHECa8oK7NwY -t3o0eNlG6IqTxl2HIoPneW9nXFQtCXv6tpJjljwjlz5WpJG+kBW6bDedcxZu7olZ -fqtnyZTB2SjzzbGdQ4JvFup8MxNyPvYiqumQXJgkyXFVDl/UFhjWuGe04i8NBJgJ -xORcjfgLrKH1XKVBWPJdh/2YeUKIIvQ9RB4WVqXgGmD/21tgv1bVEMYabh23e/HE -Fe1U2XQPJKxGCEtG6b4zhFP+PeZACS+Vk5IVJYK9n4SepPBPgX/wbJLOcKGpsKjp -yx5WjopMO6T+VUV8HIduuZ+E8+uAILHDmo2Bq+LHblaxd4SkM0+hL2H36imK5CUO -5fLuvHW88LvFtQw6xhP20s+BnmgzE5ZvNG4Iedkjvwe9HmdNDew0UYT5vNJN0ehh -OlraBC++JYwEclrBD9SRvprT63XKDG735pPvzLQi7WKDCBn1/JEgxDIO8nkMewOZ -FU48Mdmkn9wqPeIigQciwl62fuAQCGRG+RXMQqra4A1apqMZQEauTK50VhHDGdbc -ye9LHaECggIBAO9lAzoYS/Lu0ticMt24P8BSbGdxSNIpEyIlTTs+7A0UjpfXsoK9 -4EJWZ7lhgbQh+SCTS662SeC+s8M6bT+3mELxUC5S/N3aCPyfjcM3JaoACkI9+VMn -9otJZjAEwH7cNpMN0Xa8fHCEma3l3XKiVxEJbuJC86S5mpkjeXVnDajAidBtevBd -LWJ9n2yXk+ZKUyI0mjpqItwUxOgQ/MOIvqAu66xyjg08/I1QQTuIrReAA+oaVKhp -c42Ufn26hUhNrQCBAtMAO3VC/chciet6vEMNEM13GqLp4+PcPhRX90gO4+bNrScD -WgiW/jc24CGan8gAenBWC/3l/C6JUsMp+ZYmPozsa0zo6edgiO/f2KXe5nP87wZT -MxaYJgnyXJxMefI79kUHPrhpXZxuiSCEWLhCBN34Lhpr2L491i2g/FJj9i6N3EzE -N3ic5Q63o4QFusjqIm3taQQFoGP2Cgg9owz5WJ0uRz/gtOE3XQiQA7+ozoAXOlTw -pJK5MMtVrEoOLIbVJIpxfDcKDp3yorR8QCQLHgDBmFeNCDmk+7YP33dRIc/AVNLF -q7cecqEc7D8AkXX8Q53GfCEg+uqbdeMQXK4BUE9iwRK9RiFhas/RJe73+Iio3S0L -ekLpnnOfvk744ws+JWsLpsfC/ZE7OxBLPtq2xvGl/RT2G7tCjmpX3CbPAoICAQDY -uOEJks2T105EcMPJjzNHCCqjK6S7qZaWkF3KT1Z0Mu5oUZwwHamsMg4BQJ2mjMrL -fRBKfXQLA6vgE7zysw3F300RDxE1RVow5+JLDQ4bqupp27/M0a8fuwksyOdKHqCV -YHzuTCxbVIFZawTjfOxJVXDHKCFCilfY1LsA+V+oFe3Ej8YYxWXkXA9ZLigpmt3s -Wu6eFcZgF3utzIGjI6eP6lL5bWp6Bh9Avp2xrOvpFwE2m02Y7/Zom6MT4DXvByY2 -KHHQLsasEMpeLuxQXjLeTocwcxBwBFKhX95yFuv31k00VydT+NExtaZeUYi9l19J -WmM4GjFjAqa3uUwMNVv5JfWtKMyk4FOox2XftLvMiIhV95B8hAGxtYr3hPkGg80O -AWPq6OKUD332COXRaHkmL5aQdN3gP5zh9+rH6icLrrZbrQidVRyDw03doRoGrH7i -ixXLyYoW80PHgqUDPohd5bFkZpi2vwXMl1YQ2TfN9TvYFSGme9YCm9ZuypnqauW/ -aAf0FI1MNwS+XDREtzPdFi0me6WxpKL4a2Z3GGNxIFuBjQ/uydWpjxkny9qI3KAp -SgjI3kBUDGq3gf0R+Xo/d4d/4asK9Nv2Fi0X+RfGqioFaTbQl/1zhNdvhP9IcwEJ -DLVQ3UhMdfg285RarC2Sihui0M8Smi9od9Dj6rdWMQKCAgEAiQVRFoRnnDGz/wVQ -W/Wkj6jdoUuG+btG10lwbhOyuj3k6+Yqp4iUfoPENKgpu/eiB1InhGWT3Y5ph7m+ -ZDTqco56bTlUwIqWkDmmw3CiHy6MsKOWPFFoXQry8VMW9sWGex7yoDp8I07SQ2WJ -HZ7rpLW4gMr/d25AnZxfXaJRgCBMAT9YmZFLc88hW99aaPproO1oxTyQnVVJ6uYm -NqjjKv4QKJEc21jn2N5xp+iv4f6Evw65G/fXitbOm5oRxXOoLNyqyCie35wrc+37 -hwumC97DmkasuUiUBoy9/5jl0ZmsOiPJEsZpVvdNpD7FhJZjE++qJPgrPvTPJbe1 -5jz1PUrAjJqZQ9kgYC2x01JVR4NQdlz0VrNyT2FgjFrrRQ7E0bAeYh4meRjd2rat -yC3YNgabkI0HnlnSIfl0yIMXSPUsKDNMP6gjc+aheI4FioBZC7xvXmn/rKynw+9E -iLj2xWtGnBir8VTlUu8EUe1UJ/Qv1cL1wT5HhC95TTjJN03rkHUYyCDyjvIzsZX6 -KMHhWIAAeUBVuO7hIVVcOTXWmw2WA7o7ErTPdy13QN40Hk9t8pEkBn9f9vpQg83d -aMypr3LTC80jY11wcZS3tSEpzCCkYVv91FV4cioTZmytWbg9A+dbNWzi1f22ctTr -FoVrAXaSYie2trOy5bjPmPCW8qMCggIBALQUKymBSkDmTqqf6I+65ajIKGWdBizJ -Jc/F9aj9c6DqER+tcFKq0ym6DdkMj/KsWnXrXXYH+DyOuGpg/EfOcEtS2P6rvmi9 -T8wDYg1qs6ZZxp5fcmgGc7Wx/FWyOj1kZZq5qhV4RgM9nJ1oR4+fZdcpn6RcvAZG -XehWG20byVgpoIAL11cN7zRpKne32rd3b5/NjyjcfxGpcaNgovej0L/MvVV0jV0H -aUCrIu1X+k6cRu3Q7hF+kwkpCcCiNS6AikfGI4wQ0hR3fy/zXXkKTMpcBglEEwyB -Cwf8WSID2d79uvka0hr8TRc5ERyeMzkWZp7U9EzRtufGdDGFTqN2Uw4bdKCFnkYC -AIHl7ciMrN+vM1n7c5uDNMUtTGOPojy/l8tjbFrtWBgfJ1Mg4ZW3cbNBJ6Kw+Qw0 -z28USYoEDp2uduiGRvo0lpUF29Wk37Nb8bLcTygeNxgK2u8Up3iipT0gdt4uQgbX -g0IVHfayB6SjeS57oJJto85XHz7AKlSWroD1OGagDSifLtneU7AlanryymGHrI6H -dsNkuqeLJFYDxQVI6UxJebiCpyxiPxwp9wtX8SS3SEyOZL5GzLn6ypGiCH1CTpW0 -EHHSy3V4DUGOc4w7eMirAnbSkxCfOmBA70NNw/uFY2XlQHKow0T0fImfKIeJagbT -B0GPDYvUpLKBAoICAQCzYnq8xupXK7lvTLaj936qGSe54OC2sj9+UpsFiPxglNY2 -sO5zKWKyY7+rjK6zG2ciGfPEDsZNIqKw1W/KBfR2kRLqkt4bC3fSCvUztx0vtGUe -veXlqiwETdE7RJXoaGJrgJArYJvpOd8PtWGeM+sSJNNrUlGlJnSiZ0CcypqUZgZL -WzGFfLOQYAXCykdB1iZkBqU2C5wktvCb9sVz6G3TmAwSKTENOWWZWmh+W0J4pZFV -ZEyvsxViJRQbwxa0kC0F5J/UtWZknO79/ZFj1H4jiAR45EjWHE+UZAkFwG8BSl54 -EKOx7GDanuRILr0dtbyi4d31nCYXdjs3x2+1N3exw4oKQIvNuF54WoowbNPu0kEb -G+7/kLwcJqRnSV4AiLuMz5aOte7JJSw5tzgZZlAQwJO7IDfrLqodivcXF5yirwiF -dyBpzSDmupy/aTHnCpT+l0H96jRU2awxaeRHZUqZog8gMHsslNVZEFvUFDJ7AUN/ -yyfUzJYjH18pZt0hS7jNb1O7KxZCkWGMiEcxHkgF/UINab5qruNBVKOkJ5vqGhYi -uNkgeGsQtXJcpqMRRiVXJE0kE+26gk+iaYnBJN9jnwy8OEAlYFUHsbCPObe/vPMQ -3RLl+ZoKdFkN/gTiy70wUTRVw+tWk+iAZc7GPX1CqDFOqGZ2t+xdF8hpsMtEww== +MIISKQIBAAKCBAEA6h3v1OWb9I9U/Z8diBu/xYGS8NCTD3ZESboHxVI2qSECPgxN +NcG8Lh0ktQdgYcOe64MnDTZX0Bibm47hoDldrAlTSffFxQhylqBBoXxDF+LrhXIq +Cz7K0PsK+bYusL9ezJ7PETDnCT7oy95q4GXbKsutbNsm9if4ZE41gs2KnoU2DA7k +vMmkKojrMIL4+BqTXA20LLo0iSbgvUTvpSJw4u96BeyzMNnxK2wP5vvTtUo5hACb +fU87YjaSKs+q2VXCzfyYGZk1L1xk5GUI0bP+jutf1dDzNttW2/q2Nf5rxx09Gh/G +wmOnEk1O7cOZ8VQCsOHirIM39NuSARsY6Y3G5XM4k2W4nxyR/RtdG9bvs/33aGsZ +5V5yp7WSs8s9HHwaCPSsUiLKckQ7uA0TTRgbeweMrrLKovG57jsbBBB8pQD4PRd3 +1qgxCdstWXHiWwRyI8vOLWENPXPFqA/rJwwqNdWTogy38aqVXxGYR8PIwjA2OaIw +FjwGZcsPNLqw6bgAN8O2UBqZHWiMF8mi7brvioDvAIufZuqa2SqT/At45H83psQ6 +R4FsxZt6SAK7EsdPo8OYTrY1i4iPZd/eKhnEu2srEZgsKRwY5H1mvDH5fWCcHSFu +07sWmlmK6Or65Fsa0IaKLJiQDVVETd6xrI0wkM4AOcbKDrS7aywJ426dopbs+LFd +t4N0cdII4gBgJAfLuuA2yrDXRq4P6cgpVMy0R+0dEYE8zzm8zf1a+Ud273LS9+LB ++LJKwqbW8nOPBoiekimIKfJYoOA4+C/mAjsYl1sVjjEhXJAs9S9L2UvnUk1PsZi4 +UKHI6eAIEl7VM1sQ4GbdZ0px2dF2Ax7pGkhD+DLpYyYkCprharKZdmuUNLUdNhXx +i/HSEiE+Uy+o8RIzmH7LuROl/ZgnfHjJEiBLt2qPvwrwYd4c3XuXWs4YsWfVJTt8 +Mx2ihgVcdGy9//shCSmgJwR1oWrhgC10AEL2fKeRnYUal1i+IxFPp7nb8uwxUADg +R0cY4A3qR/JP489QFIcxBTVs65De+Bq3ecnujk6yeGpD9iptonq4Y8uNZMc1kOE7 +GiFGwR4EufT5SEMh+tUkjth2r+842vmZZuxrVQaohDiATmIJA07W51zKH+nQuw4q +VKnAhPaDLCLc7YMIH9JcmkeQX0nf8/S2O2WYDH8glVDi5hfW08tCmV647vRYnTIy +wUTO0lFpz7M+VyMNaJ6yXU6biBV5hLAI8C5ldr/SWI789W2+ebBaJ9gfK+PTtroh +FSK37GcoSH4V6qSLJHCBASEsiddqHIHMLJZRYD+B6J3tLhjVUM43u+MEGbFTd33Z +Dke/WzLTExWkaOv36e67gDBmgDuj9yroq3wGfwIDAQABAoIEAQCSt6YoZqigz/50 +XvYT6Uf6T6S1lBDFXNmY1qOuDkLBJTWRiwYMDViQEaWCaZgGTKDYeT3M8uR/Phyu +lRFi5vCEMufmcAeZ3hxptw7KU+R8ILJ207/zgit6YglTys9h5txTIack39+6FJmx +wbZ64HpETJZnpMO6+fuZaMXyLjuT8mmXjvHcOgXOvjWeFkZOveDhjJkAesUXuqyX +EI+ajoXuQiPXeKonkD2qd7NTjzfy4gw/ZF4NXs0ZVJeviqtIPo2xp33udOw2vRFh +bMvlF4cNLAbIKYVyOG0ruOfd2I7Unsc/CvD1u5vlRVuUd8OO0JZLIZR7hlRX+A58 +8O1g2H/wJZAsF1BnLnFzDGYCX2WjCCK3Zn85FkKGRa0lTdYDduad/C/N3Y2/pHFE +e7U/2D7IkEei59tD2HcsDBB3MJnckkn/hyiL9qWcxqWZ61vurE+XjU6tc6fnfhk9 +pJQ6yU3epPU7Vfsk0UGA7bbgKpsyzyH8Zl76YC2mN2ZVJjZekfhY+ibT9odEPdOl +yLB5iXA6/WhKkDWaOqZGOH+7MblWgT9wHINlcn+nKzOr00JHl26ac6aMlXXi9vbe +4jgJbFK1HYlFIndyX/BdqRTsFemDoDrVqrEYsaONoVYDd9c5qrqYOeh34DhOksQW +hNwWBfmMlfzgOGtCYhMeK+AajqTtUbMYQA6qp47KJd/Oa5Dvi3ZCpvZh3Ll5iIau +rqCtmojsWCqmpWSu7P+Wu4+O3XkUMPdQUuQ5rJFESEBB3yEJcxqk/RItTcKNElNC +PASrPrMD9cli7S/pJ+frbhu1Gna1ArXzXQE9pMozPaBpjCig7+15R0lL3pmOKO6e +WK3dgSwrnW6TQdLPlSD4lbRoiIdTHVBczztDeUqVvFiV3/cuaEi1nvaVdAYLqjuL +ogK4HwE/FQ54S0ijAsP52n25usoH6OTU3bSd/7NTp0vZCy3yf10x7HUdsh2DvhRO +3+TSK5t0yz0Nt7hNwcI6pLmWUIYcZgpFc/WsiiGscTfhy8rh3kRHI8ylGq53KNF+ +yCVmjqnBRWs91ArxmeF1ctX2t3w5p7gf65hJWqoX/2DiSi5FBsr6HLxa5sUi4wRZ +136aCNt5Wu7w+AzPDbQW6qKUGSyfHJAw4JZasZcaZLise5IWb1ks0DtFbWWdT3ux +8r2AM7IO1WopnekrYCnx/aBvBAv4NjWozVA517ztVttPERt3AGb4nm387nYt5R2U +NO2GBWcDyT8JQLKmffE1AkWolCR1GsvcNLQfLCbnNppgsnsLE/viTG4mq1wjnd8O +2Q8nH1SVTuyGFREMp/zsiAEaGfdd0hI2r1J7OdNPBBCtmhITsy9ZYHqm5vrGvy3s +vi2GuB2RAoICAQD/oWUsg4eTJxHifTJLz/tVSTXnw7DhfbFVa1K1rUV63/MRQAFW +pabN4T6Yfp3CpdRkljCA8KPJZj7euwhm4OEg1ulpOouA+cfWlE9RFE8wyOK5SYwM +k+nk31P9MUC866pZg/ghzBGDub91OW1+ZGEtqnLI/n/LhiAIWt0hJvgZclTc1cAL +xffHVlFwoSyNl/nc3ueZCC95nOLst2XcuxZLLbOFtZCmDYsp49q/Jn6EFjn4Ge2o +qp38z6eZgDMP1F4lb9nDqXPHfUSt2jxKlmpfXS+IPKdba67+EjhbtmUYzaR4EoPI +zh+o6SrVWT6Yve7KGiYv06fuRz1m/lLQO/Arbd9ntSjgn+ZEXGOkbhnHUX3DJ4ny +/6XEGB9NLQjern4uNTn0AaV+uvhncapFMaIBnVfq0Cw8eog0136PBYRaVX7T44j5 +HwIyGXWtYGA/SzDEQoksD0Y/T61BEGnLZaKeavNd82WwFvcYHZtE0J4aQGjCEE7N ++nijzCy+j5ETmme9KJvQHpEyXP3N4RBko1eWvyTwFZDdIXtoa6TTEI51lm+FXJ/b +Y+BzMr6KRo29FB+7//1ptUoMvn5hzL0PwOv2ZSTQuoG5hLDEbxWXLNhd1VHcfznF +3EZHwfD2F8aGQ3kz+fkMTNfK955KorDrmLgvmV9eZZ5yQxGZrs5H5YfKpwKCAgEA +6nSUbzfSdVFUH89NM5FmEJgkD06vqCgHl2mpyF+VmDGcay4K06eA4QbRO5kns13+ +n6PcBl/YVW/rNE8iFi+WxfqUpAjdR1HlShvTuTRVqtFTfuN8XhbYU6VMjKyuE0kd +LKe3KRdwubjVNhXRZLBknU+3Y/4hnIR7mcE3/M5Zv5hjb7XnwWg/SzxV9WojCKiu +vQ7cXhH5/o7EuKcl1d6vueGhWsRylCG9RimwgViR2H7zD9kpkOc0nNym9cSpb0Gv +Lui4cf/fVwIt2HfNEGBjbM/83e2MH6b8Xp1fFAy0aXCdRtOo4LVOzJVAxn5dERMX +4JJ4d5cSFbssDN1bITOKzuytfBqRIQGNkOfizgQNWUiaFI0MhEN/icymjm1ybOIh +Gc9tzqKI4wP2X9g+u3+Oof1QaBcZ4UbZEU9ITN87Pa6XVJmpNx7A81BafWoEPFeE +ahoO4XDwlHZazDuSlOseEShxXcVwaIiqySy7OBEPBVuYdEd2Qw/z3JTx9Kw8MKnf +hu+ar5tz5dPnJIsvLeYCcJDe/K6loiZuHTtPbWEy9p6It7qubQNPBvTSBN5eVDKc +Q2bTQNCx8SAAA9C5gJiwWoQKsXJzbRFRY77P9JjuGpua3YJ2nYBHEJmF+fp1R33c +uHIyMphPMkKC4GC3/43kkMr6tck8kZbXGSYsLsBr2GkCggIBAJvvrjILQianzKcm +zAmnI6AQ+ssYesvyyrxaraeZvSqJdlLtgmOCxVANuQt5IW9djUSWwZvGL4Np1aw0 +15k6UNqhftzsE7FnrVneOsww4WXXBUcV8FKz4Bf3i9qFswILmGzmrfSf8YczRfGS +SJKzVPxwX3jwlrBmbx/pnb7dcLbFIbNcyLvl1ZJJu4BDMVRmgssTRp/5eExtQZg4 +//A4SA8wH7TO3yAMXvn8vrGgH8kfbdlEp88d1SYk3g4rP/rGB3A63NIYikIEzmJn +ICQ3wUfPJnGq3kRMWgEuyCZaCy2oNE3yrWVPJ8z3/2MJ/79ZDVNHxEeki2o1FuW+ ++nGAPq+fZIp03iy4HdVRro7dgugtc9QaSHJtNId8V4vSjviX5Oz3FxUb9AJst58S +nVV8Q2FMxBa/SlzSOkhRtCg2q1gXkzhaMnIVUleRZFGQ2uWBToxKMjcoUifIyN1J +z999bkfI4hBLq5pRSAXz+YVu5SMKa10GaawIwJLat+i+1zboF6QyI2o/Wz8nrsNq +KX/ajFGu5C94WFgsVoWKNI90KBLe48Ssje9c68waBlV/WHMg1YLvU3yqVDOV+K5c +IHB9tPMnG+AgBYZPxSzuvnLrrkj/GeKx0WI7TrvzOLRGKJo6irMEJ8IzFegASRUq +TVZKYQDYRG7m+lKlSxU+pyMAh2c9AoICAE4kavCip1eIssQjYLTGSkFPo/0iGbOv +G9CgXAE3snFWX67tWphupKrbjdMSWcQTmPD2OTg6q6zWL4twsIi6dcMooHAHsFC7 +//LyUV/SDJdxSyXohiQJ8zH1zwy35RDydnHSuF5OvLh53T44iWDI1dAEqLgAFI3J +LjTxzEpLMGiGTuYFt+ejai0WQAQayvBw4ESM9m+4CB2K0hBFTXv5y5HlnNTW0uWC +VUZUUMrbjUieDz8B/zOXi9aYSGFzmZFGUDAPSqJcSMEELemPDF7f8WNr8vi42tIV +4tlaFD1nep4F9bWMiCXU6B2RxVQi+7vcJEIqL1KUnGd3ydfD00K+ng4Xnj7Vz/cz +QE7CqrpFaXmPlCMzW6+dm51/AyhHXDLkL2od05hiXcNkJ7KMLWRqwExHVIxM3shR +x7lYNl3ArUsCrNd6m4aOjnrKFk7kjeLavHxskPccoGKrC9o0JMfTkWLgmuBJFQ0S +N/HzIbcvIFWF0Ms4ojb50yp6ziXhXfJOO/0KUQEki71XIhvw89mVZszDzD5lqzjf +HCZMBU4MbmL6NdEevFIDH0zPPkx3HPNtJt3kIJbit9wI8VhUMe+ldGnGxpWb8tKw +SfM3vrHkYr+lizk26XfXMFhdAuVtT7dzQKSNEyP/1a2Hs307Xzgiv8JulJ8QIkrX +/nsYWPOAGLG5AoICABmdW9Ppkvuhb1AEcjTWb+XCyopoBc6vit/uQWD9uO+CeX7a +cfzq+iH01CAjyVMc4E1JDc5Lpi106U+GRGcAAaPJB2Sp5NznoxaOVrb71blu4Q4x +bNjtKM/P/DXpO+yJYoOPdKtaSDhtnfNDM7H/jztJ3XIrOltKA7CcRDohbBWIx8Q0 +0uEpvfFpZZBco3yVmjP0RLgIVYn/ZDj9wGhSvFWIJ5vv6GXmtDrcHGMLxcfv7t76 +UVcMW/Yy4mYJRCzGOrWagyVijJ6MTVNciqadWcH1KcbB3EGoMFYMn61or2qJABPM +xz89IlhnROU1Re3X/QRx5t86cw6oa+FqrWMOhSs31I0dNWSuS/xDympG27YIYSDd +mv5seT78GjFmMJC5pPOLoXsbTPB0HpsX2/UL/w/eRAfilTOef/Cf9VE5MP/C2YR7 +NBxUU7/+21D6WvdtBTcZbrXWGroAo8zPP+PwX0+c6WoAvqDJvCPndp8xZhSgEJN/ +0kScptezi8n3ZHI95EA9U5mAHxHz0IhDDVzWw/z1f1SBPxKVX3+By3zaa3lrD2ch +cHq7nBkX72veEevnHUY8Z2rHE2G2jdmRfOtwm4sjL0VBV9fRRoxzJWRduKyeOtDL +EhhBhUoTrT48UnfW9hxnbNLB9P/hh+UJu9HrS2uAwHoGE1+8gcyundupGDBn -----END RSA PRIVATE KEY----- diff --git a/mysql-test/t/ssl_8k_key-master.opt b/mysql-test/t/ssl_8k_key-master.opt new file mode 100644 index 00000000000..b58ca7f39f0 --- /dev/null +++ b/mysql-test/t/ssl_8k_key-master.opt @@ -0,0 +1 @@ +--loose-ssl-key=$MYSQL_TEST_DIR/std_data/server8k-key.pem --loose-ssl-cert=$MYSQL_TEST_DIR/std_data/server8k-cert.pem From a008a6eb35cde020f80b4aefa2e3a351d0640c38 Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Wed, 28 Jul 2010 12:09:38 -0700 Subject: [PATCH 329/461] Fixed bug #610890. The CREATE SHOW TABLE command misplaced virtual column specifiers: the AS clause for a virtual column was put before optional character set attributes, not after them as required by the syntax. --- mysql-test/suite/vcol/r/vcol_misc.result | 8 ++++++++ mysql-test/suite/vcol/t/vcol_misc.test | 10 +++++++++ sql/sql_show.cc | 26 ++++++++++++------------ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result index 24fa8dcaa37..dee34cb4860 100644 --- a/mysql-test/suite/vcol/r/vcol_misc.result +++ b/mysql-test/suite/vcol/r/vcol_misc.result @@ -125,3 +125,11 @@ a p ROUND(a,p) ROUND(a,p+NULL) 1 0 1 NULL 0 NULL NULL NULL DROP TABLE t1; +CREATE TABLE t1 (a char(32), v char(32) CHARACTER SET ucs2 AS (a) VIRTUAL); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` char(32) DEFAULT NULL, + `v` char(32) CHARACTER SET ucs2 AS (a) VIRTUAL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index 0015775ef52..8ae507a8f17 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -128,3 +128,13 @@ INSERT INTO t1(p,a) VALUES (0,1); INSERT INTO t1(p,a) VALUES (NULL,0); SELECT a, p, ROUND(a,p), ROUND(a,p+NULL) FROM t1; DROP TABLE t1; + +# +# Bug#610890: SHOW CREATE TABLE with a virtual column +# + +CREATE TABLE t1 (a char(32), v char(32) CHARACTER SET ucs2 AS (a) VIRTUAL); + +SHOW CREATE TABLE t1; + +DROP TABLE t1; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index b4c88d7f659..4dca54b6290 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1348,19 +1348,6 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet, field->sql_type(type); packet->append(type.ptr(), type.length(), system_charset_info); - if (field->vcol_info) - { - packet->append(STRING_WITH_LEN(" AS (")); - packet->append(field->vcol_info->expr_str.str, - field->vcol_info->expr_str.length, - system_charset_info); - packet->append(STRING_WITH_LEN(")")); - if (field->stored_in_db) - packet->append(STRING_WITH_LEN(" PERSISTENT")); - else - packet->append(STRING_WITH_LEN(" VIRTUAL")); - } - if (field->has_charset() && !(thd->variables.sql_mode & (MODE_MYSQL323 | MODE_MYSQL40))) { @@ -1380,6 +1367,19 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet, } } + if (field->vcol_info) + { + packet->append(STRING_WITH_LEN(" AS (")); + packet->append(field->vcol_info->expr_str.str, + field->vcol_info->expr_str.length, + system_charset_info); + packet->append(STRING_WITH_LEN(")")); + if (field->stored_in_db) + packet->append(STRING_WITH_LEN(" PERSISTENT")); + else + packet->append(STRING_WITH_LEN(" VIRTUAL")); + } + if (flags & NOT_NULL_FLAG) packet->append(STRING_WITH_LEN(" NOT NULL")); else if (field->type() == MYSQL_TYPE_TIMESTAMP) From 2124538d9cea1cea39b01f0b8b99052b36004fb9 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 29 Jul 2010 11:00:57 +0800 Subject: [PATCH 330/461] BUG#49124 Security issue with /*!-versioned */ SQL statements on Slave /*![:version:] Query Code */, where [:version:] is a sequence of 5 digits representing the mysql server version(e.g /*!50200 ... */), is a special comment that the query in it can be executed on those servers whose versions are larger than the version appearing in the comment. It leads to a security issue when slave's version is larger than master's. A malicious user can improve his privileges on slaves. Because slave SQL thread is running with SUPER privileges, so it can execute queries that he/she does not have privileges on master. This bug is fixed with the logic below: - To replace '!' with ' ' in the magic comments which are not applied on master. So they become common comments and will not be applied on slave. - Example: 'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /*!99999 ,(3)*/ will be binlogged as 'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /* 99999 ,(3)*/ mysql-test/suite/rpl/t/rpl_conditional_comments.test: Test the patch for this bug. sql/mysql_priv.h: Rename inBuf as rawBuf and remove the const limitation. sql/sql_lex.cc: To replace '!' with ' ' in the magic comments which are not applied on master. sql/sql_lex.h: Remove the const limitation on parameter buff, as it can be modified in the function since this patch. Add member function yyUnput for Lex_input_stream. It set a character back the query buff. sql/sql_parse.cc: Rename inBuf as rawBuf and remove the const limitation. sql/sql_partition.cc: Remove the const limitation on parameter part_buff, as it can be modified in the function since this patch. sql/sql_partition.h: Remove the const limitation on parameter part_buff, as it can be modified in the function since this patch. sql/table.h: Remove the const limitation on variable partition_info, as it can be modified since this patch. --- .../rpl/r/rpl_conditional_comments.result | 57 ++++++++++++++ .../suite/rpl/t/rpl_conditional_comments.test | 74 +++++++++++++++++++ sql/mysql_priv.h | 2 +- sql/sql_lex.cc | 19 ++++- sql/sql_lex.h | 20 ++++- sql/sql_parse.cc | 12 +-- sql/sql_partition.cc | 2 +- sql/sql_partition.h | 2 +- sql/table.h | 2 +- 9 files changed, 173 insertions(+), 17 deletions(-) create mode 100644 mysql-test/suite/rpl/r/rpl_conditional_comments.result create mode 100644 mysql-test/suite/rpl/t/rpl_conditional_comments.test diff --git a/mysql-test/suite/rpl/r/rpl_conditional_comments.result b/mysql-test/suite/rpl/r/rpl_conditional_comments.result new file mode 100644 index 00000000000..105d3bc59f3 --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_conditional_comments.result @@ -0,0 +1,57 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +CREATE TABLE t1(c1 INT); +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; CREATE TABLE t1(c1 INT) + +# Case 1: +# ------------------------------------------------------------------ +# In a statement, some CCs are applied while others are not. The CCs +# which are not applied on master will be binlogged as common comments. +/*!99999 --- */INSERT /*!INTO*/ /*!10000 t1 */ VALUES(10) /*!99999 ,(11)*/; +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; /* 99999 --- */INSERT /*!INTO*/ /*!10000 t1 */ VALUES(10) /* 99999 ,(11)*/ +Comparing tables master:test.t1 and slave:test.t1 + +# Case 2: +# ----------------------------------------------------------------- +# Verify whether it can be binlogged correctly when executing prepared +# statement. +PREPARE stmt FROM 'INSERT INTO /*!99999 blabla*/ t1 VALUES(60) /*!99999 ,(61)*/'; +EXECUTE stmt; +DROP TABLE t1; +CREATE TABLE t1(c1 INT); +EXECUTE stmt; +Comparing tables master:test.t1 and slave:test.t1 + +SET @value=62; +PREPARE stmt FROM 'INSERT INTO /*!99999 blabla */ t1 VALUES(?) /*!99999 ,(63)*/'; +EXECUTE stmt USING @value; +DROP TABLE t1; +CREATE TABLE t1(c1 INT); +EXECUTE stmt USING @value; +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla*/ t1 VALUES(60) /* 99999 ,(61)*/ +master-bin.000001 # Query # # use `test`; DROP TABLE t1 +master-bin.000001 # Query # # use `test`; CREATE TABLE t1(c1 INT) +master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla*/ t1 VALUES(60) /* 99999 ,(61)*/ +master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla */ t1 VALUES(62) /* 99999 ,(63)*/ +master-bin.000001 # Query # # use `test`; DROP TABLE t1 +master-bin.000001 # Query # # use `test`; CREATE TABLE t1(c1 INT) +master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla */ t1 VALUES(62) /* 99999 ,(63)*/ +Comparing tables master:test.t1 and slave:test.t1 + +# Case 3: +# ----------------------------------------------------------------- +# Verify it can restore the '!', if the it is an uncomplete conditional +# comments +SELECT c1 FROM /*!99999 t1 WHEREN; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/*!99999 t1 WHEREN' at line 1 +DROP TABLE t1; diff --git a/mysql-test/suite/rpl/t/rpl_conditional_comments.test b/mysql-test/suite/rpl/t/rpl_conditional_comments.test new file mode 100644 index 00000000000..14251d5eb37 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_conditional_comments.test @@ -0,0 +1,74 @@ +############################################################################### +# After the patch for BUG#49124: +# - Use ' ' instead of '!' in the conditional comments which are not applied on +# master. So they become common comments and will not be applied on slave. +# +# - Example: +# 'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /*!99999 ,(3)*/ +# will be binlogged as +# 'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /* 99999 ,(3)*/'. +############################################################################### +source include/master-slave.inc; +source include/have_binlog_format_statement.inc; + +CREATE TABLE t1(c1 INT); +source include/show_binlog_events.inc; +let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1); + +--echo +--echo # Case 1: +--echo # ------------------------------------------------------------------ +--echo # In a statement, some CCs are applied while others are not. The CCs +--echo # which are not applied on master will be binlogged as common comments. + +/*!99999 --- */INSERT /*!INTO*/ /*!10000 t1 */ VALUES(10) /*!99999 ,(11)*/; + +source include/show_binlog_events.inc; +let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1); +sync_slave_with_master; +let $diff_table_1=master:test.t1; +let $diff_table_2=slave:test.t1; +source include/diff_tables.inc; + +--echo +--echo # Case 2: +--echo # ----------------------------------------------------------------- +--echo # Verify whether it can be binlogged correctly when executing prepared +--echo # statement. +PREPARE stmt FROM 'INSERT INTO /*!99999 blabla*/ t1 VALUES(60) /*!99999 ,(61)*/'; +EXECUTE stmt; +DROP TABLE t1; +CREATE TABLE t1(c1 INT); +EXECUTE stmt; + +sync_slave_with_master; +let $diff_table_1=master:test.t1; +let $diff_table_2=slave:test.t1; +source include/diff_tables.inc; + +--echo +SET @value=62; +PREPARE stmt FROM 'INSERT INTO /*!99999 blabla */ t1 VALUES(?) /*!99999 ,(63)*/'; +EXECUTE stmt USING @value; +DROP TABLE t1; +CREATE TABLE t1(c1 INT); +EXECUTE stmt USING @value; + +source include/show_binlog_events.inc; +let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1); + +sync_slave_with_master; +let $diff_table_1=master:test.t1; +let $diff_table_2=slave:test.t1; +source include/diff_tables.inc; + +--echo +--echo # Case 3: +--echo # ----------------------------------------------------------------- +--echo # Verify it can restore the '!', if the it is an uncomplete conditional +--echo # comments +--error 1064 +SELECT c1 FROM /*!99999 t1 WHEREN; + +DROP TABLE t1; +source include/master-slave-end.inc; diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 88f3763ef50..9f2c0b04f2c 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1024,7 +1024,7 @@ bool mysql_opt_change_db(THD *thd, bool force_switch, bool *cur_db_changed); -void mysql_parse(THD *thd, const char *inBuf, uint length, +void mysql_parse(THD *thd, char *rawbuf, uint length, const char ** semicolon); bool mysql_test_parse_for_slave(THD *thd,char *inBuf,uint length); diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 6bfd6f3906c..2bff036b1f1 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -111,7 +111,7 @@ st_parsing_options::reset() } -bool Lex_input_stream::init(THD *thd, const char *buff, unsigned int length) +bool Lex_input_stream::init(THD *thd, char *buff, unsigned int length) { DBUG_EXECUTE_IF("bug42064_simulate_oom", DBUG_SET("+d,simulate_out_of_memory");); @@ -1292,11 +1292,10 @@ int MYSQLlex(void *arg, void *yythd) ulong version; version=strtol(version_str, NULL, 10); - /* Accept 'M' 'm' 'm' 'd' 'd' */ - lip->yySkipn(5); - if (version <= MYSQL_VERSION_ID) { + /* Accept 'M' 'm' 'm' 'd' 'd' */ + lip->yySkipn(5); /* Expand the content of the special comment as real code */ lip->set_echo(TRUE); state=MY_LEX_START; @@ -1304,7 +1303,19 @@ int MYSQLlex(void *arg, void *yythd) } else { + const char* version_mark= lip->get_ptr() - 1; + DBUG_ASSERT(*version_mark == '!'); + /* + Patch and skip the conditional comment to avoid it + being propagated infinitely (eg. to a slave). + */ + char *pcom= lip->yyUnput(' '); comment_closed= ! consume_comment(lip, 1); + if (! comment_closed) + { + DBUG_ASSERT(pcom == version_mark); + *pcom= '!'; + } /* version allowed to have one level of comment inside. */ } } diff --git a/sql/sql_lex.h b/sql/sql_lex.h index cefb0cb49fb..7403bb5a1a4 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -1180,7 +1180,7 @@ public: @retval FALSE OK @retval TRUE Error */ - bool init(THD *thd, const char *buff, unsigned int length); + bool init(THD *thd, char *buff, unsigned int length); /** Set the echo mode. @@ -1294,6 +1294,20 @@ public: m_ptr += n; } + /** + Puts a character back into the stream, canceling + the effect of the last yyGet() or yySkip(). + Note that the echo mode should not change between calls + to unput, get, or skip from the stream. + */ + char *yyUnput(char ch) + { + *--m_ptr= ch; + if (m_echo) + m_cpp_ptr--; + return m_ptr; + } + /** End of file indicator for the query text to parse. @return true if there are no more characters to parse @@ -1440,7 +1454,7 @@ public: private: /** Pointer to the current position in the raw input stream. */ - const char *m_ptr; + char *m_ptr; /** Starting position of the last token parsed, in the raw buffer. */ const char *m_tok_start; @@ -1972,7 +1986,7 @@ public: @retval FALSE OK @retval TRUE Error */ - bool init(THD *thd, const char *buff, unsigned int length) + bool init(THD *thd, char *buff, unsigned int length) { return m_lip.init(thd, buff, length); } diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 0a509f62849..9ec03ea1d5f 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5946,13 +5946,13 @@ void mysql_init_multi_delete(LEX *lex) Parse a query. @param thd Current thread - @param inBuf Begining of the query text + @param rawbuf Begining of the query text @param length Length of the query text @param[out] found_semicolon For multi queries, position of the character of the next query in the query text. */ -void mysql_parse(THD *thd, const char *inBuf, uint length, +void mysql_parse(THD *thd, char *rawbuf, uint length, const char ** found_semicolon) { DBUG_ENTER("mysql_parse"); @@ -5978,7 +5978,7 @@ void mysql_parse(THD *thd, const char *inBuf, uint length, lex_start(thd); mysql_reset_thd_for_next_command(thd); - if (query_cache_send_result_to_client(thd, (char*) inBuf, length) <= 0) + if (query_cache_send_result_to_client(thd, rawbuf, length) <= 0) { LEX *lex= thd->lex; @@ -5987,7 +5987,7 @@ void mysql_parse(THD *thd, const char *inBuf, uint length, Parser_state parser_state; bool err; - if (!(err= parser_state.init(thd, inBuf, length))) + if (!(err= parser_state.init(thd, rawbuf, length))) { err= parse_sql(thd, & parser_state, NULL); *found_semicolon= parser_state.m_lip.found_semicolon; @@ -6073,14 +6073,14 @@ void mysql_parse(THD *thd, const char *inBuf, uint length, 1 can be ignored */ -bool mysql_test_parse_for_slave(THD *thd, char *inBuf, uint length) +bool mysql_test_parse_for_slave(THD *thd, char *rawbuf, uint length) { LEX *lex= thd->lex; bool error= 0; DBUG_ENTER("mysql_test_parse_for_slave"); Parser_state parser_state; - if (!(error= parser_state.init(thd, inBuf, length))) + if (!(error= parser_state.init(thd, rawbuf, length))) { lex_start(thd); mysql_reset_thd_for_next_command(thd); diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 122ae661046..76caa2b0c8d 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -3876,7 +3876,7 @@ void get_partition_set(const TABLE *table, uchar *buf, const uint index, */ bool mysql_unpack_partition(THD *thd, - const char *part_buf, uint part_info_len, + char *part_buf, uint part_info_len, const char *part_state, uint part_state_len, TABLE* table, bool is_create_table_ind, handlerton *default_db_type, diff --git a/sql/sql_partition.h b/sql/sql_partition.h index b9efbf25a00..02a5ead1117 100644 --- a/sql/sql_partition.h +++ b/sql/sql_partition.h @@ -78,7 +78,7 @@ void get_full_part_id_from_key(const TABLE *table, uchar *buf, KEY *key_info, const key_range *key_spec, part_id_range *part_spec); -bool mysql_unpack_partition(THD *thd, const char *part_buf, +bool mysql_unpack_partition(THD *thd, char *part_buf, uint part_info_len, const char *part_state, uint part_state_len, TABLE *table, bool is_create_table_ind, diff --git a/sql/table.h b/sql/table.h index 3ef3c5e0cb2..8ea7175eec4 100644 --- a/sql/table.h +++ b/sql/table.h @@ -442,7 +442,7 @@ typedef struct st_table_share #ifdef WITH_PARTITION_STORAGE_ENGINE /** @todo: Move into *ha_data for partitioning */ bool auto_partitioned; - const char *partition_info; + char *partition_info; uint partition_info_len; uint partition_info_buffer_size; const char *part_state; From 6f6a3e529310fa3f719ff0381ee94e83e7e93683 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Thu, 29 Jul 2010 10:12:44 +0400 Subject: [PATCH 331/461] Postfix for BUG#45012. Problem: The original patch didn't compile on debug_werror due to wrong format in printf("%d") for size_t variables. Fix: Adding cast to (int). --- unittest/strings/strings-t.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/unittest/strings/strings-t.c b/unittest/strings/strings-t.c index 2d246cfa17f..278f42e56a5 100644 --- a/unittest/strings/strings-t.c +++ b/unittest/strings/strings-t.c @@ -30,7 +30,7 @@ test_like_range_for_charset(CHARSET_INFO *cs, const char *src, size_t src_len) cs->coll->like_range(cs, src, src_len, '\\', '_', '%', sizeof(min_str), min_str, max_str, &min_len, &max_len); - diag("min_len=%d\tmax_len=%d\t%s", min_len, max_len, cs->name); + diag("min_len=%d\tmax_len=%d\t%s", (int) min_len, (int) max_len, cs->name); min_well_formed_len= cs->cset->well_formed_len(cs, min_str, min_str + min_len, 10000, &error); @@ -39,11 +39,11 @@ test_like_range_for_charset(CHARSET_INFO *cs, const char *src, size_t src_len) 10000, &error); if (min_len != min_well_formed_len) diag("Bad min_str: min_well_formed_len=%d min_str[%d]=0x%02X", - min_well_formed_len, min_well_formed_len, + (int) min_well_formed_len, (int) min_well_formed_len, (uchar) min_str[min_well_formed_len]); if (max_len != max_well_formed_len) diag("Bad max_str: max_well_formed_len=%d max_str[%d]=0x%02X", - max_well_formed_len, max_well_formed_len, + (int) max_well_formed_len, (int) max_well_formed_len, (uchar) max_str[max_well_formed_len]); return min_len == min_well_formed_len && From 5e13086bf88eabfbf91dce63332a450ef52f101f Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 30 Jul 2010 11:59:34 +0800 Subject: [PATCH 332/461] Bug #34283 mysqlbinlog leaves tmpfile after termination if binlog contains load data infile With statement- or mixed-mode logging, "LOAD DATA INFILE" queries are written to the binlog using special types of log events. When mysqlbinlog reads such events, it re-creates the file in a temporary directory with a generated filename and outputs a "LOAD DATA INFILE" query where the filename is replaced by the generated file. The temporary file is not deleted by mysqlbinlog after termination. To fix the problem, in mixed mode we go to row-based. In SBR, we document it to remind user the tmpfile is left in a temporary directory. mysql-test/suite/binlog/r/binlog_mixed_load_data.result: Test result for BUG#34283. mysql-test/suite/binlog/t/binlog_mixed_load_data.test: Added the test file to verify that 'load data infile...' statement will go to row-based in mixed mode. sql/sql_load.cc: Added code to go to row-based in mixed mode for 'load data infile ...' statement --- .../suite/binlog/r/binlog_mixed_load_data.result | 10 ++++++++++ .../suite/binlog/t/binlog_mixed_load_data.test | 15 +++++++++++++++ sql/sql_load.cc | 8 ++++++++ 3 files changed, 33 insertions(+) create mode 100644 mysql-test/suite/binlog/r/binlog_mixed_load_data.result create mode 100644 mysql-test/suite/binlog/t/binlog_mixed_load_data.test diff --git a/mysql-test/suite/binlog/r/binlog_mixed_load_data.result b/mysql-test/suite/binlog/r/binlog_mixed_load_data.result new file mode 100644 index 00000000000..840257f11ff --- /dev/null +++ b/mysql-test/suite/binlog/r/binlog_mixed_load_data.result @@ -0,0 +1,10 @@ +RESET MASTER; +CREATE TABLE t1 (word CHAR(20) NOT NULL) ENGINE=MYISAM; +LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1; +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # COMMIT +DROP TABLE t1; diff --git a/mysql-test/suite/binlog/t/binlog_mixed_load_data.test b/mysql-test/suite/binlog/t/binlog_mixed_load_data.test new file mode 100644 index 00000000000..7e7cb973c1b --- /dev/null +++ b/mysql-test/suite/binlog/t/binlog_mixed_load_data.test @@ -0,0 +1,15 @@ +# +# Bug #34283 mysqlbinlog leaves tmpfile after termination +# if binlog contains load data infile, so in mixed mode we +# go to row-based for avoiding the problem. +# + +--source include/have_binlog_format_mixed.inc +--source include/have_log_bin.inc + +RESET MASTER; +CREATE TABLE t1 (word CHAR(20) NOT NULL) ENGINE=MYISAM; +let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1); +LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1; +--source include/show_binlog_events.inc +DROP TABLE t1; diff --git a/sql/sql_load.cc b/sql/sql_load.cc index a4cf46b35e8..f9386206dce 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -141,6 +141,14 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, bool transactional_table; DBUG_ENTER("mysql_load"); + /* + Bug #34283 + mysqlbinlog leaves tmpfile after termination if binlog contains + load data infile, so in mixed mode we go to row-based for + avoiding the problem. + */ + thd->set_current_stmt_binlog_row_based_if_mixed(); + #ifdef EMBEDDED_LIBRARY read_file_from_client = 0; //server is always in the same process #endif From d2f8b7d04503478ab6b6998194a2070891f0c2bb Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Fri, 30 Jul 2010 10:45:27 +0300 Subject: [PATCH 333/461] Fix for LP#602604: RQG: ma_blockrec.c:6187: _ma_apply_redo_insert_row_head_or_tail: Assertion `0' failed on Maria engine recovery More DBUG_PRINT (to simplify future debugging) Aria: Added STATE_IN_REPAIR, which is set on start of repair. This allows us to see if 'crashed' flag was set intentionally. Aria: Some trivial speedup optimization Aria: Better warning if table was marked crashed by unfinnished repair mysql-test/lib/v1/mysql-test-run.pl: Fix so one can run RQG mysql-test/suite/maria/r/maria-recovery2.result: Update for new error message. mysys/stacktrace.c: Fixed compiler warning storage/maria/ha_maria.cc: More DBUG_PRINT Added STATE_IN_REPAIR flag, which is set on start of repair. This allows us to see if 'crashed' flag was set intentionally. Don't log query for dropping temporary table. storage/maria/ha_maria.h: Added prototype for drop_table() storage/maria/ma_blockrec.c: More DBUG_PRINT Make read_long_data() inline for most cases. (Trivial speedup optimization) storage/maria/ma_check.c: Better warning if table was marked crashed by unfinnished repair storage/maria/ma_open.c: More DBUG_PRINT storage/maria/ma_recovery.c: Give warning if found crashed table. Changed warning for tables that can't be opened. storage/maria/ma_recovery_util.c: Write warnings to DBUG file storage/maria/maria_chk.c: Added STATE_IN_REPAIR flag, which is set on start of repair. This allows us to see if 'crashed' flag was set intentionally. storage/maria/maria_def.h: Added maria_mark_in_repair(x) storage/maria/maria_read_log.c: Added option: --character-sets-dir storage/maria/trnman.c: By default set min_read_from to max value. This allows us to remove TRN:s from rows during recovery to get more space. This fixes bug LP#602604: RQG: ma_blockrec.c:6187: _ma_apply_redo_insert_row_head_or_tail: Assertion `0' failed on Maria engine recovery --- mysql-test/lib/v1/mysql-test-run.pl | 2 +- .../suite/maria/r/maria-recovery2.result | 2 +- mysys/stacktrace.c | 2 +- storage/maria/ha_maria.cc | 27 +++++++++--- storage/maria/ha_maria.h | 1 + storage/maria/ma_blockrec.c | 44 ++++++++++++++----- storage/maria/ma_check.c | 5 ++- storage/maria/ma_open.c | 6 +++ storage/maria/ma_recovery.c | 24 +++++++--- storage/maria/ma_recovery_util.c | 10 ++++- storage/maria/maria_chk.c | 12 +++-- storage/maria/maria_def.h | 11 ++++- storage/maria/maria_read_log.c | 9 +++- storage/maria/trnman.c | 1 + 14 files changed, 120 insertions(+), 36 deletions(-) diff --git a/mysql-test/lib/v1/mysql-test-run.pl b/mysql-test/lib/v1/mysql-test-run.pl index 174de23c530..ddd6e6d936a 100755 --- a/mysql-test/lib/v1/mysql-test-run.pl +++ b/mysql-test/lib/v1/mysql-test-run.pl @@ -3970,7 +3970,7 @@ sub mysqld_arguments ($$$$) { } } - mtr_add_arg($args, "%s--character-set-server-set=latin1", $prefix); + mtr_add_arg($args, "%s--character-set-server=latin1", $prefix); mtr_add_arg($args, "%s--language=%s", $prefix, $path_language); mtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix); diff --git a/mysql-test/suite/maria/r/maria-recovery2.result b/mysql-test/suite/maria/r/maria-recovery2.result index 88db518254f..bca6d0d7c74 100644 --- a/mysql-test/suite/maria/r/maria-recovery2.result +++ b/mysql-test/suite/maria/r/maria-recovery2.result @@ -136,7 +136,7 @@ ERROR HY000: Lost connection to MySQL server during query * recovery happens check table t_corrupted1 extended; Table Op Msg_type Msg_text -mysqltest.t_corrupted1 check warning Table is marked as crashed and last repair failed +mysqltest.t_corrupted1 check warning Last repair was aborted before finishing mysqltest.t_corrupted1 check status OK * testing that checksum after recovery is as expected Checksum-check diff --git a/mysys/stacktrace.c b/mysys/stacktrace.c index 75fda93b56e..80122a4e70f 100644 --- a/mysys/stacktrace.c +++ b/mysys/stacktrace.c @@ -86,7 +86,7 @@ void my_print_stacktrace(uchar* stack_bottom __attribute__((unused)), #if BACKTRACE_DEMANGLE -char __attribute__ ((weak)) *my_demangle(const char *mangled_name, int *status) +char __attribute__ ((weak)) *my_demangle(const char *mangled_name __attribute__((unused)), int *status __attribute__((unused))) { return NULL; } diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc index 5140ad17d74..da23f76f143 100644 --- a/storage/maria/ha_maria.cc +++ b/storage/maria/ha_maria.cc @@ -749,6 +749,9 @@ static int maria_create_trn_for_mysql(MARIA_HA *info) (uchar*) thd->query(), thd->query_length()); } + else + DBUG_PRINT("info", ("lock_type: %d trnman_flags: %u", + info->lock_type, trnman_get_flags(trn))); /* QQ */ #endif DBUG_RETURN(0); } @@ -1055,7 +1058,8 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt) if (!maria_is_crashed(file) && (((param.testflag & T_CHECK_ONLY_CHANGED) && !(share->state.changed & (STATE_CHANGED | STATE_CRASHED | - STATE_CRASHED_ON_REPAIR)) && + STATE_CRASHED_ON_REPAIR | + STATE_IN_REPAIR)) && share->state.open_count == 0) || ((param.testflag & T_FAST) && (share->state.open_count == (uint) (share->global_changed ? 1 : @@ -1092,14 +1096,15 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt) if (!error) { if ((share->state.changed & (STATE_CHANGED | - STATE_CRASHED_ON_REPAIR | + STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR | STATE_CRASHED | STATE_NOT_ANALYZED)) || (param.testflag & T_STATISTICS) || maria_is_crashed(file)) { file->update |= HA_STATE_CHANGED | HA_STATE_ROW_CHANGED; pthread_mutex_lock(&share->intern_lock); - share->state.changed &= ~(STATE_CHANGED | STATE_CRASHED | - STATE_CRASHED_ON_REPAIR); + DBUG_PRINT("info", ("Reseting crashed state")); + share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED | + STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR); if (!(table->db_stat & HA_READ_ONLY)) error= maria_update_state_info(¶m, file, UPDATE_TIME | UPDATE_OPEN_COUNT | @@ -1513,8 +1518,9 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize) { if ((share->state.changed & STATE_CHANGED) || maria_is_crashed(file)) { - share->state.changed &= ~(STATE_CHANGED | STATE_CRASHED | - STATE_CRASHED_ON_REPAIR); + DBUG_PRINT("info", ("Reseting crashed state")); + share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED | + STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR); file->update |= HA_STATE_CHANGED | HA_STATE_ROW_CHANGED; } /* @@ -2360,6 +2366,15 @@ int ha_maria::delete_table(const char *name) } +/* This is mainly for temporary tables, so no logging necessary */ + +void ha_maria::drop_table(const char *name) +{ + (void) close(); + (void) maria_delete_table(name); +} + + int ha_maria::external_lock(THD *thd, int lock_type) { DBUG_ENTER("ha_maria::external_lock"); diff --git a/storage/maria/ha_maria.h b/storage/maria/ha_maria.h index c0f2041fddb..6ca1f6ca797 100644 --- a/storage/maria/ha_maria.h +++ b/storage/maria/ha_maria.h @@ -135,6 +135,7 @@ public: ulonglong *nb_reserved_values); int rename_table(const char *from, const char *to); int delete_table(const char *name); + void drop_table(const char *name); int check(THD * thd, HA_CHECK_OPT * check_opt); int analyze(THD * thd, HA_CHECK_OPT * check_opt); int repair(THD * thd, HA_CHECK_OPT * check_opt); diff --git a/storage/maria/ma_blockrec.c b/storage/maria/ma_blockrec.c index 89701913c9a..2c29fa27278 100644 --- a/storage/maria/ma_blockrec.c +++ b/storage/maria/ma_blockrec.c @@ -1377,7 +1377,8 @@ void _ma_compact_block_page(uchar *buff, uint block_size, uint rownr, uint freed_size= 0; uchar *dir, *end; DBUG_ENTER("_ma_compact_block_page"); - DBUG_PRINT("enter", ("rownr: %u", rownr)); + DBUG_PRINT("enter", ("rownr: %u min_read_from: %lu", rownr, + (ulong) min_read_from)); DBUG_ASSERT(max_entry > 0 && max_entry < (block_size - PAGE_HEADER_SIZE - PAGE_SUFFIX_SIZE) / DIR_ENTRY_SIZE); @@ -3407,13 +3408,14 @@ static my_bool allocate_and_write_block_record(MARIA_HA *info, DBUG_ASSERT(row->checksum == (info->s->calc_checksum)(info, record)); } } + DBUG_PRINT("info", ("rowid: %lu (%lu:%u) length: %u", (ulong) row->lastpos, + (ulong) ma_recordpos_to_page(row->lastpos), + ma_recordpos_to_dir_entry(row->lastpos), + row_pos.length)); if (write_block_record(info, (uchar*) 0, record, row, blocks, blocks->block->org_bitmap_value != 0, &row_pos, undo_lsn, 0)) - goto err; /* Error reading bitmap */ - DBUG_PRINT("exit", ("rowid: %lu (%lu:%u)", (ulong) row->lastpos, - (ulong) ma_recordpos_to_page(row->lastpos), - ma_recordpos_to_dir_entry(row->lastpos))); + goto err; /* Now let checkpoint happen but don't commit */ DBUG_EXECUTE_IF("maria_over_alloc_bitmap", sleep(1000);); DBUG_RETURN(0); @@ -4404,13 +4406,15 @@ crashed: 1 error */ -static my_bool read_long_data(MARIA_HA *info, uchar *to, ulong length, +static my_bool read_long_data2(MARIA_HA *info, uchar *to, ulong length, MARIA_EXTENT_CURSOR *extent, uchar **data, uchar **end_of_data) { - DBUG_ENTER("read_long_data"); + uint left_length; + left_length= (uint) (*end_of_data - *data); + DBUG_ENTER("read_long_data2"); DBUG_PRINT("enter", ("length: %lu left_length: %u", - length, (uint) (*end_of_data - *data))); + length, left_length)); DBUG_ASSERT(*data <= *end_of_data); /* @@ -4422,14 +4426,15 @@ static my_bool read_long_data(MARIA_HA *info, uchar *to, ulong length, This may change in the future, which is why we have the loop written the way it's written. */ - if (extent->first_extent && length > (ulong) (*end_of_data - *data)) + if (extent->first_extent && length > left_length) + { *end_of_data= *data; + left_length= 0; + } for(;;) { - uint left_length; - left_length= (uint) (*end_of_data - *data); - if (likely(left_length >= length)) + if (unlikely(left_length >= length)) { memcpy(to, *data, length); (*data)+= length; @@ -4441,10 +4446,25 @@ static my_bool read_long_data(MARIA_HA *info, uchar *to, ulong length, length-= left_length; if (!(*data= read_next_extent(info, extent, end_of_data))) break; + left_length= (uint) (*end_of_data - *data); } DBUG_RETURN(1); } +static inline my_bool read_long_data(MARIA_HA *info, uchar *to, ulong length, + MARIA_EXTENT_CURSOR *extent, + uchar **data, uchar **end_of_data) +{ + uint left_length= (uint) (*end_of_data - *data); + if (likely(left_length >= length)) + { + memcpy(to, *data, length); + (*data)+= length; + return 0; + } + return read_long_data2(info, to, length, extent, data, end_of_data); +} + /* Read a record from page (helper function for _ma_read_block_record()) diff --git a/storage/maria/ma_check.c b/storage/maria/ma_check.c index 69b1566a2bb..dd26046767f 100644 --- a/storage/maria/ma_check.c +++ b/storage/maria/ma_check.c @@ -154,6 +154,9 @@ int maria_chk_status(HA_CHECK *param, MARIA_HA *info) if (maria_is_crashed_on_repair(info)) _ma_check_print_warning(param, "Table is marked as crashed and last repair failed"); + else if (maria_in_repair(info)) + _ma_check_print_warning(param, + "Last repair was aborted before finishing"); else if (maria_is_crashed(info)) _ma_check_print_warning(param, "Table is marked as crashed"); @@ -2242,7 +2245,7 @@ static my_bool protect_against_repair_crash(MARIA_HA *info, if ((param->testflag & T_NO_CREATE_RENAME_LSN) == 0) { /* this can be true only for a transactional table */ - maria_mark_crashed_on_repair(info); + maria_mark_in_repair(info); if (_ma_state_info_write(share, MA_STATE_INFO_WRITE_DONT_MOVE_OFFSET | MA_STATE_INFO_WRITE_LOCK)) diff --git a/storage/maria/ma_open.c b/storage/maria/ma_open.c index 98ccb3e23cd..a43513cfaa0 100644 --- a/storage/maria/ma_open.c +++ b/storage/maria/ma_open.c @@ -209,6 +209,7 @@ static MARIA_HA *maria_clone_internal(MARIA_SHARE *share, const char *name, DBUG_RETURN(m_info); err: + DBUG_PRINT("error", ("error: %d", my_errno)); save_errno=my_errno ? my_errno : HA_ERR_END_OF_FILE; if ((save_errno == HA_ERR_CRASHED) || (save_errno == HA_ERR_CRASHED_ON_USAGE) || @@ -918,10 +919,15 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags) if (!(m_info= maria_clone_internal(share, name, mode, data_file))) goto err; + if (maria_is_crashed(m_info)) + DBUG_PRINT("warning", ("table is crashed: changed: %u", + share->state.changed)); + pthread_mutex_unlock(&THR_LOCK_maria); DBUG_RETURN(m_info); err: + DBUG_PRINT("error", ("error: %d errpos: %d", my_errno, errpos)); save_errno=my_errno ? my_errno : HA_ERR_END_OF_FILE; if ((save_errno == HA_ERR_CRASHED) || (save_errno == HA_ERR_CRASHED_ON_USAGE) || diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index e74f52b2ef6..5fe4e55cb48 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -1,4 +1,5 @@ /* Copyright (C) 2006, 2007 MySQL AB + Copyright (C) 2010 Monty Program Ab This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -56,6 +57,7 @@ static ulong skipped_undo_phase; static ulonglong now; /**< for tracking execution time of phases */ static int (*save_error_handler_hook)(uint, const char *,myf); static uint recovery_warnings; /**< count of warnings */ +static uint recovery_found_crashed_tables; #define prototype_redo_exec_hook(R) \ static int exec_REDO_LOGREC_ ## R(const TRANSLOG_HEADER_BUFFER *rec) @@ -219,7 +221,7 @@ int maria_recovery_from_log(void) TRUE, TRUE, TRUE, &warnings_count); if (!res) { - if (warnings_count == 0) + if (warnings_count == 0 && recovery_found_crashed_tables == 0) tprint(trace_file, "SUCCESS\n"); else tprint(trace_file, "DOUBTFUL (%u warnings, check previous output)\n", @@ -265,7 +267,7 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply, DBUG_ASSERT(apply == MARIA_LOG_APPLY || !should_run_undo_phase); DBUG_ASSERT(!maria_multi_threaded); - recovery_warnings= 0; + recovery_warnings= recovery_found_crashed_tables= 0; maria_recovery_changed_data= 0; /* checkpoints can happen only if TRNs have been built */ DBUG_ASSERT(should_run_undo_phase || !take_checkpoints); @@ -456,7 +458,7 @@ end: log_record_buffer.str= NULL; log_record_buffer.length= 0; ma_checkpoint_end(); - *warnings_count= recovery_warnings; + *warnings_count= recovery_warnings + recovery_found_crashed_tables; if (recovery_message_printed != REC_MSG_NONE) { if (procent_printed) @@ -726,9 +728,12 @@ prototype_redo_exec_hook(REDO_CREATE_TABLE) maria_close(info); info= NULL; } - else /* one or two files absent, or header corrupted... */ - tprint(tracef, "Table '%s' can't be opened, probably does not exist\n", - name); + else + { + /* one or two files absent, or header corrupted... */ + tprint(tracef, "Table '%s' can't be opened (Error: %d)\n", + name, my_errno); + } /* if does not exist, or is older, overwrite it */ ptr= name + strlen(name) + 1; if ((flags= ptr[0] ? HA_DONT_TOUCH_DATA : 0)) @@ -1206,6 +1211,7 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id) */ tprint(tracef, ", record is corrupted"); info= NULL; + recovery_warnings++; goto end; } tprint(tracef, "Table '%s', id %u", name, sid); @@ -1215,6 +1221,8 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id) tprint(tracef, ", is absent (must have been dropped later?)" " or its header is so corrupted that we cannot open it;" " we skip it"); + if (my_errno != ENOENT) + recovery_found_crashed_tables++; error= 0; goto end; } @@ -1238,6 +1246,7 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id) */ tprint(tracef, ", is not transactional. Ignoring open request"); error= -1; + recovery_warnings++; goto end; } if (cmp_translog_addr(lsn_of_file_id, share->state.create_rename_lsn) <= 0) @@ -1246,6 +1255,7 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id) " LOGREC_FILE_ID's LSN (%lu,0x%lx), ignoring open request", LSN_IN_PARTS(share->state.create_rename_lsn), LSN_IN_PARTS(lsn_of_file_id)); + recovery_warnings++; error= -1; goto end; /* @@ -1257,6 +1267,7 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id) { eprint(tracef, "Table '%s' is crashed, skipping it. Please repair it with" " maria_chk -r", share->open_file_name.str); + recovery_found_crashed_tables++; error= -1; /* not fatal, try with other tables */ goto end; /* @@ -1275,6 +1286,7 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id) (kfile_len == MY_FILEPOS_ERROR)) { tprint(tracef, ", length unknown\n"); + recovery_warnings++; goto end; } if (share->state.state.data_file_length != dfile_len) diff --git a/storage/maria/ma_recovery_util.c b/storage/maria/ma_recovery_util.c index a45a990472e..19e61daf4ef 100644 --- a/storage/maria/ma_recovery_util.c +++ b/storage/maria/ma_recovery_util.c @@ -57,8 +57,16 @@ void tprint(FILE *trace_file __attribute__ ((unused)), const char *format __attribute__ ((unused)), ...) { va_list args; +#ifndef DBUG_OFF + { + char buff[1024]; + va_start(args, format); + vsnprintf(buff, sizeof(buff)-1, format, args); + DBUG_PRINT("info", ("%s", buff)); + va_end(args); + } +#endif va_start(args, format); - DBUG_PRINT("info", ("%s", format)); if (trace_file != NULL) { if (procent_printed) diff --git a/storage/maria/maria_chk.c b/storage/maria/maria_chk.c index 0bf38ac5dc8..0fe230c108c 100644 --- a/storage/maria/maria_chk.c +++ b/storage/maria/maria_chk.c @@ -990,7 +990,7 @@ static int maria_chk(HA_CHECK *param, char *filename) if ((param->testflag & (T_REP_ANY | T_SORT_RECORDS)) && ((share->state.changed & (STATE_CHANGED | STATE_CRASHED | - STATE_CRASHED_ON_REPAIR) || + STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR) || !(param->testflag & T_CHECK_ONLY_CHANGED)))) need_to_check=1; @@ -1008,7 +1008,7 @@ static int maria_chk(HA_CHECK *param, char *filename) } if ((param->testflag & T_CHECK_ONLY_CHANGED) && (share->state.changed & (STATE_CHANGED | STATE_CRASHED | - STATE_CRASHED_ON_REPAIR))) + STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR))) need_to_check=1; if (!need_to_check) { @@ -1225,8 +1225,11 @@ static int maria_chk(HA_CHECK *param, char *filename) if (!error && (param->testflag & T_ZEROFILL)) error= maria_zerofill(param, info, filename); if (!error) + { + DBUG_PRINT("info", ("Reseting crashed state")); share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED | - STATE_CRASHED_ON_REPAIR); + STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR); + } else maria_mark_crashed(info); } @@ -1278,8 +1281,9 @@ static int maria_chk(HA_CHECK *param, char *filename) if ((share->state.changed & STATE_CHANGED) && (param->testflag & T_UPDATE_STATE)) info->update|=HA_STATE_CHANGED | HA_STATE_ROW_CHANGED; + DBUG_PRINT("info", ("Reseting crashed state")); share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED | - STATE_CRASHED_ON_REPAIR); + STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR); } else if (!maria_is_crashed(info) && (param->testflag & T_UPDATE_STATE)) diff --git a/storage/maria/maria_def.h b/storage/maria/maria_def.h index 868885c961b..e9980cf9695 100644 --- a/storage/maria/maria_def.h +++ b/storage/maria/maria_def.h @@ -611,6 +611,7 @@ struct st_maria_handler #define STATE_NOT_ZEROFILLED 128 #define STATE_NOT_MOVABLE 256 #define STATE_MOVED 512 /* set if base->uuid != maria_uuid */ +#define STATE_IN_REPAIR 1024 /* We are running repair on table */ /* options to maria_read_cache */ @@ -666,11 +667,17 @@ struct st_maria_handler #define maria_mark_crashed_on_repair(x) do{(x)->s->state.changed|= \ STATE_CRASHED|STATE_CRASHED_ON_REPAIR; \ (x)->update|= HA_STATE_CHANGED; \ - DBUG_PRINT("error", \ - ("Marked table crashed")); \ + DBUG_PRINT("error", ("Marked table crashed on repair")); \ + }while(0) +#define maria_mark_in_repair(x) do{(x)->s->state.changed|= \ + STATE_CRASHED | STATE_IN_REPAIR; \ + (x)->update|= HA_STATE_CHANGED; \ + DBUG_PRINT("error", ("Marked table crashed for repair")); \ }while(0) #define maria_is_crashed(x) ((x)->s->state.changed & STATE_CRASHED) #define maria_is_crashed_on_repair(x) ((x)->s->state.changed & STATE_CRASHED_ON_REPAIR) +#define maria_in_repair(x) ((x)->s->state.changed & STATE_IN_REPAIR) + #ifdef EXTRA_DEBUG /** Brings additional information in certain debug builds and in standalone diff --git a/storage/maria/maria_read_log.c b/storage/maria/maria_read_log.c index 2b2fa692f24..1e86decc1e0 100644 --- a/storage/maria/maria_read_log.c +++ b/storage/maria/maria_read_log.c @@ -1,4 +1,5 @@ /* Copyright (C) 2007 MySQL AB + Copyright (C) 2010 Monty Program Ab This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -150,6 +151,9 @@ err: #include "ma_check_standalone.h" +enum options_mc { + OPT_CHARSETS_DIR=256 +}; static struct my_option my_long_options[] = { @@ -158,6 +162,9 @@ static struct my_option my_long_options[] = " Displays a lot of information if not run with --silent", (uchar **) &opt_apply, (uchar **) &opt_apply, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"character-sets-dir", OPT_CHARSETS_DIR, + "Directory where character sets are.", + (uchar**) &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"check", 'c', "if --display-only, check if record is fully readable (for debugging)", (uchar **) &opt_check, (uchar **) &opt_check, 0, @@ -206,7 +213,7 @@ static struct my_option my_long_options[] = static void print_version(void) { - VOID(printf("%s Ver 1.2 for %s on %s\n", + VOID(printf("%s Ver 1.3 for %s on %s\n", my_progname_short, SYSTEM_TYPE, MACHINE_TYPE)); NETWARE_SET_SCREEN_MODE(1); } diff --git a/storage/maria/trnman.c b/storage/maria/trnman.c index ceb8ad2ae2d..2e03606ca7c 100644 --- a/storage/maria/trnman.c +++ b/storage/maria/trnman.c @@ -176,6 +176,7 @@ int trnman_init(TrID initial_trid) trnman_active_transactions= 0; trnman_committed_transactions= 0; trnman_allocated_transactions= 0; + dummy_transaction_object.min_read_from= ~(TrID) 0; /* for recovery */ pool= 0; global_trid_generator= initial_trid; From a9538cacda199fcfd733a191c17cc68569871cd7 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 30 Jul 2010 09:17:10 -0300 Subject: [PATCH 334/461] Bug#54041: MySQL 5.0.92 fails when tests from Connector/C suite run Fix a regression (due to a typo) which caused spurious incorrect argument errors for long data stream parameters if all forms of logging were disabled (binary, general and slow logs). mysql-test/t/mysql_client_test.test: Save the status of the slow_log. sql/sql_prepare.cc: Add a missing logical NOT operator. tests/mysql_client_test.c: Disable all query logs when running C tests. Fixes a omission when, slow log should have been disabled too. Run test case for Bug#54041 with query logs enabled and disabled. --- mysql-test/r/mysql_client_test.result | 2 ++ mysql-test/t/mysql_client_test.test | 2 ++ sql/sql_prepare.cc | 4 +-- tests/mysql_client_test.c | 49 +++++++++++++++++++++------ 4 files changed, 45 insertions(+), 12 deletions(-) diff --git a/mysql-test/r/mysql_client_test.result b/mysql-test/r/mysql_client_test.result index 08d982c85e3..edda7980e97 100644 --- a/mysql-test/r/mysql_client_test.result +++ b/mysql-test/r/mysql_client_test.result @@ -1,3 +1,5 @@ SET @old_general_log= @@global.general_log; +SET @old_slow_query_log= @@global.slow_query_log; ok SET @@global.general_log= @old_general_log; +SET @@global.slow_query_log= @old_slow_query_log; diff --git a/mysql-test/t/mysql_client_test.test b/mysql-test/t/mysql_client_test.test index 15c0cd4ac84..41670117c7c 100644 --- a/mysql-test/t/mysql_client_test.test +++ b/mysql-test/t/mysql_client_test.test @@ -2,6 +2,7 @@ -- source include/not_embedded.inc SET @old_general_log= @@global.general_log; +SET @old_slow_query_log= @@global.slow_query_log; # We run with different binaries for normal and --embedded-server # @@ -17,3 +18,4 @@ SET @old_general_log= @@global.general_log; echo ok; SET @@global.general_log= @old_general_log; +SET @@global.slow_query_log= @old_slow_query_log; diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index bd152866deb..d6eb90a57be 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -793,7 +793,7 @@ static bool insert_params_with_log(Prepared_statement *stmt, uchar *null_array, type (the types are supplied at execute). Check that the supplied type of placeholder can accept a data stream. */ - else if (!is_param_long_data_type(param)) + else if (! is_param_long_data_type(param)) DBUG_RETURN(1); res= param->query_val_str(&str); if (param->convert_str_value(thd)) @@ -839,7 +839,7 @@ static bool insert_params(Prepared_statement *stmt, uchar *null_array, type (the types are supplied at execute). Check that the supplied type of placeholder can accept a data stream. */ - else if (is_param_long_data_type(param)) + else if (! is_param_long_data_type(param)) DBUG_RETURN(1); if (param->convert_str_value(stmt->thd)) DBUG_RETURN(1); /* out of memory */ diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 00389d431fa..87c35666ac6 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -13246,37 +13246,52 @@ static void test_bug15518() } -static void disable_general_log() +static void disable_query_logs() { int rc; rc= mysql_query(mysql, "set @@global.general_log=off"); myquery(rc); + rc= mysql_query(mysql, "set @@global.slow_query_log=off"); + myquery(rc); } -static void enable_general_log(int truncate) +static void enable_query_logs(int truncate) { int rc; rc= mysql_query(mysql, "set @save_global_general_log=@@global.general_log"); myquery(rc); + rc= mysql_query(mysql, "set @save_global_slow_query_log=@@global.slow_query_log"); + myquery(rc); + rc= mysql_query(mysql, "set @@global.general_log=on"); myquery(rc); + rc= mysql_query(mysql, "set @@global.slow_query_log=on"); + myquery(rc); + + if (truncate) { rc= mysql_query(mysql, "truncate mysql.general_log"); myquery(rc); + + rc= mysql_query(mysql, "truncate mysql.slow_log"); + myquery(rc); } } -static void restore_general_log() +static void restore_query_logs() { int rc; rc= mysql_query(mysql, "set @@global.general_log=@save_global_general_log"); myquery(rc); + + rc= mysql_query(mysql, "set @@global.slow_query_log=@save_global_slow_query_log"); + myquery(rc); } @@ -15447,7 +15462,7 @@ static void test_bug17667() return; } - enable_general_log(1); + enable_query_logs(1); for (statement_cursor= statements; statement_cursor->buffer != NULL; statement_cursor++) @@ -15527,7 +15542,7 @@ static void test_bug17667() statement_cursor->buffer); } - restore_general_log(); + restore_query_logs(); if (!opt_silent) printf("success. All queries found intact in the log.\n"); @@ -17390,7 +17405,7 @@ static void test_bug28386() } mysql_free_result(result); - enable_general_log(1); + enable_query_logs(1); stmt= mysql_simple_prepare(mysql, "SELECT ?"); check_stmt(stmt); @@ -17429,7 +17444,7 @@ static void test_bug28386() mysql_free_result(result); - restore_general_log(); + restore_query_logs(); DBUG_VOID_RETURN; } @@ -18215,7 +18230,7 @@ static void test_bug42373() Bug#54041: MySQL 5.0.92 fails when tests from Connector/C suite run */ -static void test_bug54041() +static void test_bug54041_impl() { int rc; MYSQL_STMT *stmt; @@ -18230,7 +18245,7 @@ static void test_bug54041() rc= mysql_query(mysql, "CREATE TABLE t1 (a INT)"); myquery(rc); - stmt= mysql_simple_prepare(mysql, "INSERT INTO t1 (a) VALUES (?)"); + stmt= mysql_simple_prepare(mysql, "SELECT a FROM t1 WHERE a > ?"); check_stmt(stmt); verify_param_count(stmt, 1); @@ -18268,6 +18283,20 @@ static void test_bug54041() } +/** + Bug#54041: MySQL 5.0.92 fails when tests from Connector/C suite run +*/ + +static void test_bug54041() +{ + enable_query_logs(0); + test_bug54041_impl(); + disable_query_logs(); + test_bug54041_impl(); + restore_query_logs(); +} + + /* Read and parse arguments and MySQL options from my.cnf */ @@ -18348,7 +18377,7 @@ and you are welcome to modify and redistribute it under the GPL license\n"); static struct my_tests_st my_tests[]= { - { "disable_general_log", disable_general_log }, + { "disable_query_logs", disable_query_logs }, { "test_view_sp_list_fields", test_view_sp_list_fields }, { "client_query", client_query }, { "test_prepare_insert_update", test_prepare_insert_update}, From a6f726c5855011f6ba660ced6bce4721507d0fa3 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 30 Jul 2010 09:34:40 -0300 Subject: [PATCH 335/461] Bug#54041: MySQL 5.0.92 fails when tests from Connector/C suite run Fix a regression (due to a typo) which caused spurious incorrect argument errors for long data stream parameters if all forms of logging were disabled (binary, general and slow logs). sql/sql_prepare.cc: Add a missing logical NOT operator. --- sql/sql_prepare.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index c2fecd63777..9815acfe815 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -755,7 +755,7 @@ static bool insert_params_withlog(Prepared_statement *stmt, uchar *null_array, type (the types are supplied at execute). Check that the supplied type of placeholder can accept a data stream. */ - else if (!is_param_long_data_type(param)) + else if (! is_param_long_data_type(param)) DBUG_RETURN(1); res= param->query_val_str(&str); if (param->convert_str_value(thd)) @@ -801,7 +801,7 @@ static bool insert_params(Prepared_statement *stmt, uchar *null_array, type (the types are supplied at execute). Check that the supplied type of placeholder can accept a data stream. */ - else if (is_param_long_data_type(param)) + else if (! is_param_long_data_type(param)) DBUG_RETURN(1); if (param->convert_str_value(stmt->thd)) DBUG_RETURN(1); /* out of memory */ From de5029a4586176b9fed06ab96fb3a6e0bbcd8c54 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 30 Jul 2010 16:35:06 +0300 Subject: [PATCH 336/461] Bug #55188: GROUP BY, GROUP_CONCAT and TEXT - inconsistent results In order to be able to check if the set of the grouping fields in a GROUP BY has changed (and thus to start a new group) the optimizer caches the current values of these fields in a set of Cached_item derived objects. The Cached_item_str, used for caching varchar and TEXT columns, is limited in length by the max_sort_length variable. A String buffer to store the value with an alloced length of either the max length of the string or the value of max_sort_length (whichever is smaller) in Cached_item_str's constructor. Then, at compare time the value of the string to compare to was truncated to the alloced length of the string buffer inside Cached_item_str. This is all fine and valid, but only if you're not assigning values near or equal to the alloced length of this buffer. Because when assigning values like this the alloced length is rounded up and as a result the next set of data will not match the group buffer, thus leading to wrong results because of the changed alloced_length. Fixed by preserving the original maximum length in the Cached_item_str's constructor and using this instead of the alloced_length to limit the string to compare to. Test case added. --- mysql-test/r/group_by.result | 35 +++++++++++++++++++++++++++++++++++ mysql-test/t/group_by.test | 14 ++++++++++++++ sql/item.h | 1 + sql/item_buff.cc | 6 ++++-- 4 files changed, 54 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result index 645dd460735..f74584f6bcf 100644 --- a/mysql-test/r/group_by.result +++ b/mysql-test/r/group_by.result @@ -1810,4 +1810,39 @@ MAX(t2.a) 2 DROP TABLE t1, t2; # +# Bug#55188: GROUP BY, GROUP_CONCAT and TEXT - inconsistent results +# +CREATE TABLE t1 (a text, b varchar(10)); +INSERT INTO t1 VALUES (repeat('1', 1300),'one'), (repeat('1', 1300),'two'); +EXPLAIN +SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a; +id 1 +select_type SIMPLE +table t1 +type ALL +possible_keys NULL +key NULL +key_len NULL +ref NULL +rows 2 +Extra Using filesort +SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a; +SUBSTRING(a,1,10) LENGTH(a) GROUP_CONCAT(b) +1111111111 1300 one,two +EXPLAIN +SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a; +id 1 +select_type SIMPLE +table t1 +type ALL +possible_keys NULL +key NULL +key_len NULL +ref NULL +rows 2 +Extra Using temporary; Using filesort +SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a; +SUBSTRING(a,1,10) LENGTH(a) +1111111111 1300 +DROP TABLE t1; # End of 5.1 tests diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test index c5b27ee1a62..75ec1d82b02 100644 --- a/mysql-test/t/group_by.test +++ b/mysql-test/t/group_by.test @@ -1221,5 +1221,19 @@ DROP TABLE t1, t2; --echo # +--echo # Bug#55188: GROUP BY, GROUP_CONCAT and TEXT - inconsistent results +--echo # + +CREATE TABLE t1 (a text, b varchar(10)); +INSERT INTO t1 VALUES (repeat('1', 1300),'one'), (repeat('1', 1300),'two'); + +query_vertical EXPLAIN +SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a; +SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a; +query_vertical EXPLAIN +SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a; +SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a; +DROP TABLE t1; + --echo # End of 5.1 tests diff --git a/sql/item.h b/sql/item.h index 174995b43e6..57abb43010e 100644 --- a/sql/item.h +++ b/sql/item.h @@ -2740,6 +2740,7 @@ public: class Cached_item_str :public Cached_item { Item *item; + uint32 value_max_length; String value,tmp_value; public: Cached_item_str(THD *thd, Item *arg); diff --git a/sql/item_buff.cc b/sql/item_buff.cc index 2f45d0a17c2..0ac4edb3656 100644 --- a/sql/item_buff.cc +++ b/sql/item_buff.cc @@ -58,7 +58,9 @@ Cached_item::~Cached_item() {} */ Cached_item_str::Cached_item_str(THD *thd, Item *arg) - :item(arg), value(min(arg->max_length, thd->variables.max_sort_length)) + :item(arg), + value_max_length(min(arg->max_length, thd->variables.max_sort_length)), + value(value_max_length) {} bool Cached_item_str::cmp(void) @@ -67,7 +69,7 @@ bool Cached_item_str::cmp(void) bool tmp; if ((res=item->val_str(&tmp_value))) - res->length(min(res->length(), value.alloced_length())); + res->length(min(res->length(), value_max_length)); if (null_value != item->null_value) { if ((null_value= item->null_value)) From 55e60e14fa4eb240194412ee162c0394751da9e1 Mon Sep 17 00:00:00 2001 From: Luis Soares Date: Fri, 30 Jul 2010 14:44:39 +0100 Subject: [PATCH 337/461] Revert patch for BUG#34283. Causing lots of test failures in PB2, mostly because existing test result files were not updated. --- .../suite/binlog/r/binlog_mixed_load_data.result | 10 ---------- .../suite/binlog/t/binlog_mixed_load_data.test | 15 --------------- sql/sql_load.cc | 8 -------- 3 files changed, 33 deletions(-) delete mode 100644 mysql-test/suite/binlog/r/binlog_mixed_load_data.result delete mode 100644 mysql-test/suite/binlog/t/binlog_mixed_load_data.test diff --git a/mysql-test/suite/binlog/r/binlog_mixed_load_data.result b/mysql-test/suite/binlog/r/binlog_mixed_load_data.result deleted file mode 100644 index 840257f11ff..00000000000 --- a/mysql-test/suite/binlog/r/binlog_mixed_load_data.result +++ /dev/null @@ -1,10 +0,0 @@ -RESET MASTER; -CREATE TABLE t1 (word CHAR(20) NOT NULL) ENGINE=MYISAM; -LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1; -show binlog events from ; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Query # # BEGIN -master-bin.000001 # Table_map # # table_id: # (test.t1) -master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F -master-bin.000001 # Query # # COMMIT -DROP TABLE t1; diff --git a/mysql-test/suite/binlog/t/binlog_mixed_load_data.test b/mysql-test/suite/binlog/t/binlog_mixed_load_data.test deleted file mode 100644 index 7e7cb973c1b..00000000000 --- a/mysql-test/suite/binlog/t/binlog_mixed_load_data.test +++ /dev/null @@ -1,15 +0,0 @@ -# -# Bug #34283 mysqlbinlog leaves tmpfile after termination -# if binlog contains load data infile, so in mixed mode we -# go to row-based for avoiding the problem. -# - ---source include/have_binlog_format_mixed.inc ---source include/have_log_bin.inc - -RESET MASTER; -CREATE TABLE t1 (word CHAR(20) NOT NULL) ENGINE=MYISAM; -let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1); -LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1; ---source include/show_binlog_events.inc -DROP TABLE t1; diff --git a/sql/sql_load.cc b/sql/sql_load.cc index f9386206dce..a4cf46b35e8 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -141,14 +141,6 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, bool transactional_table; DBUG_ENTER("mysql_load"); - /* - Bug #34283 - mysqlbinlog leaves tmpfile after termination if binlog contains - load data infile, so in mixed mode we go to row-based for - avoiding the problem. - */ - thd->set_current_stmt_binlog_row_based_if_mixed(); - #ifdef EMBEDDED_LIBRARY read_file_from_client = 0; //server is always in the same process #endif From ae02cad707494b5c4b3a9bb033fb8515efa50134 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 30 Jul 2010 17:09:24 +0300 Subject: [PATCH 338/461] Disable the tests failing under valgrind because of bug #55503 --- mysql-test/suite/innodb_plugin/t/innodb-autoinc-44030.test | 2 ++ mysql-test/suite/innodb_plugin/t/innodb-autoinc.test | 2 ++ 2 files changed, 4 insertions(+) diff --git a/mysql-test/suite/innodb_plugin/t/innodb-autoinc-44030.test b/mysql-test/suite/innodb_plugin/t/innodb-autoinc-44030.test index 99cdac72e2e..5e4cf9dcb4c 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb-autoinc-44030.test +++ b/mysql-test/suite/innodb_plugin/t/innodb-autoinc-44030.test @@ -1,6 +1,8 @@ -- source include/have_innodb_plugin.inc # embedded server ignores 'delayed', so skip this -- source include/not_embedded.inc +# remove the next line after bug #55503 is fixed +-- source include/not_valgrind.inc let $innodb_file_format_check_orig=`select @@innodb_file_format_check`; diff --git a/mysql-test/suite/innodb_plugin/t/innodb-autoinc.test b/mysql-test/suite/innodb_plugin/t/innodb-autoinc.test index 5a83ffe3617..49394a019d0 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb-autoinc.test +++ b/mysql-test/suite/innodb_plugin/t/innodb-autoinc.test @@ -1,6 +1,8 @@ -- source include/have_innodb_plugin.inc # embedded server ignores 'delayed', so skip this -- source include/not_embedded.inc +# remove the next line after bug #55503 is fixed +-- source include/not_valgrind.inc let $innodb_file_format_check_orig=`select @@innodb_file_format_check`; From 9899e690f06e275e8c7b2e39dba96b46701fd949 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 30 Jul 2010 17:33:10 -0300 Subject: [PATCH 339/461] Bug#45288: pb2 returns a lot of compilation warnings on linux Fix compiler warnings. mysys/stacktrace.c: Tag unused parameters. sql/sql_lex.cc: Variable becomes unused in non-debug builds. Also, no need to assert the obvious. --- mysys/stacktrace.c | 4 +++- sql/sql_lex.cc | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/mysys/stacktrace.c b/mysys/stacktrace.c index 75fda93b56e..7bac8017324 100644 --- a/mysys/stacktrace.c +++ b/mysys/stacktrace.c @@ -86,7 +86,9 @@ void my_print_stacktrace(uchar* stack_bottom __attribute__((unused)), #if BACKTRACE_DEMANGLE -char __attribute__ ((weak)) *my_demangle(const char *mangled_name, int *status) +char __attribute__ ((weak)) * +my_demangle(const char *mangled_name __attribute__((unused)), + int *status __attribute__((unused))) { return NULL; } diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 2bff036b1f1..24c51be2512 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1303,8 +1303,6 @@ int MYSQLlex(void *arg, void *yythd) } else { - const char* version_mark= lip->get_ptr() - 1; - DBUG_ASSERT(*version_mark == '!'); /* Patch and skip the conditional comment to avoid it being propagated infinitely (eg. to a slave). @@ -1313,7 +1311,6 @@ int MYSQLlex(void *arg, void *yythd) comment_closed= ! consume_comment(lip, 1); if (! comment_closed) { - DBUG_ASSERT(pcom == version_mark); *pcom= '!'; } /* version allowed to have one level of comment inside. */ From 80aa8824971de3e5524537e30175b2390d0570db Mon Sep 17 00:00:00 2001 From: Gleb Shchepa Date: Sun, 1 Aug 2010 22:12:36 +0400 Subject: [PATCH 340/461] Bug #54461: crash with longblob and union or update with subquery Queries may crash, if 1) the GREATEST or the LEAST function has a mixed list of numeric and LONGBLOB arguments and 2) the result of such a function goes through an intermediate temporary table. An Item that references a LONGBLOB field has max_length of UINT_MAX32 == (2^32 - 1). The current implementation of GREATEST/LEAST returns REAL result for a mixed list of numeric and string arguments (that contradicts with the current documentation, this contradiction was discussed and it was decided to update the documentation). The max_length of such a function call was calculated as a maximum of argument max_length values (i.e. UINT_MAX32). That max_length value of UINT_MAX32 was used as a length for the intermediate temporary table Field_double to hold GREATEST/LEAST function result. The Field_double::val_str() method call on that field allocates a String value. Since an allocation of String reserves an additional byte for a zero-termination, the size of String buffer was set to (UINT_MAX32 + 1), that caused an integer overflow: actually, an empty buffer of size 0 was allocated. An initialization of the "first" byte of that zero-size buffer with '\0' caused a crash. The Item_func_min_max::fix_length_and_dec() has been modified to calculate max_length for the REAL result like we do it for arithmetical operators. ****** Bug #54461: crash with longblob and union or update with subquery Queries may crash, if 1) the GREATEST or the LEAST function has a mixed list of numeric and LONGBLOB arguments and 2) the result of such a function goes through an intermediate temporary table. An Item that references a LONGBLOB field has max_length of UINT_MAX32 == (2^32 - 1). The current implementation of GREATEST/LEAST returns REAL result for a mixed list of numeric and string arguments (that contradicts with the current documentation, this contradiction was discussed and it was decided to update the documentation). The max_length of such a function call was calculated as a maximum of argument max_length values (i.e. UINT_MAX32). That max_length value of UINT_MAX32 was used as a length for the intermediate temporary table Field_double to hold GREATEST/LEAST function result. The Field_double::val_str() method call on that field allocates a String value. Since an allocation of String reserves an additional byte for a zero-termination, the size of String buffer was set to (UINT_MAX32 + 1), that caused an integer overflow: actually, an empty buffer of size 0 was allocated. An initialization of the "first" byte of that zero-size buffer with '\0' caused a crash. The Item_func_min_max::fix_length_and_dec() has been modified to calculate max_length for the REAL result like we do it for arithmetical operators. mysql-test/r/func_misc.result: Test case for bug #54461. ****** Test case for bug #54461. mysql-test/t/func_misc.test: Test case for bug #54461. ****** Test case for bug #54461. sql/item_func.cc: Bug #54461: crash with longblob and union or update with subquery The Item_func_min_max::fix_length_and_dec() has been modified to calculate max_length for the REAL result like we do it for arithmetical operators. ****** Bug #54461: crash with longblob and union or update with subquery The Item_func_min_max::fix_length_and_dec() has been modified to calculate max_length for the REAL result like we do it for arithmetical operators. --- mysql-test/r/func_misc.result | 15 +++++++++++++++ mysql-test/t/func_misc.test | 12 ++++++++++++ sql/item_func.cc | 2 ++ 3 files changed, 29 insertions(+) diff --git a/mysql-test/r/func_misc.result b/mysql-test/r/func_misc.result index 81dddd0f648..eee56ae7461 100644 --- a/mysql-test/r/func_misc.result +++ b/mysql-test/r/func_misc.result @@ -336,4 +336,19 @@ End of 5.0 tests select connection_id() > 0; connection_id() > 0 1 +# +# Bug #54461: crash with longblob and union or update with subquery +# +CREATE TABLE t1 (a INT, b LONGBLOB); +INSERT INTO t1 VALUES (1, '2'), (2, '3'), (3, '2'); +SELECT DISTINCT LEAST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1; +LEAST(a, (SELECT b FROM t1 LIMIT 1)) +1 +2 +SELECT DISTINCT GREATEST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1; +GREATEST(a, (SELECT b FROM t1 LIMIT 1)) +2 +3 +1 +DROP TABLE t1; End of tests diff --git a/mysql-test/t/func_misc.test b/mysql-test/t/func_misc.test index 6590b43f2dc..c6b5ffd5a3f 100644 --- a/mysql-test/t/func_misc.test +++ b/mysql-test/t/func_misc.test @@ -467,4 +467,16 @@ select NAME_CONST('_id',1234) as id; select connection_id() > 0; +--echo # +--echo # Bug #54461: crash with longblob and union or update with subquery +--echo # + +CREATE TABLE t1 (a INT, b LONGBLOB); +INSERT INTO t1 VALUES (1, '2'), (2, '3'), (3, '2'); + +SELECT DISTINCT LEAST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1; +SELECT DISTINCT GREATEST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1; + +DROP TABLE t1; + --echo End of tests diff --git a/sql/item_func.cc b/sql/item_func.cc index 1bec4700bff..1b13297c951 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -2243,6 +2243,8 @@ void Item_func_min_max::fix_length_and_dec() max_length= my_decimal_precision_to_length_no_truncation(max_int_part + decimals, decimals, unsigned_flag); + else if (cmp_type == REAL_RESULT) + max_length= float_length(decimals); cached_field_type= agg_field_type(args, arg_count); } From 8cacc59e8f7bca1f931f12bbc0315c7c4b5b4a5f Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Mon, 2 Aug 2010 12:22:36 +0300 Subject: [PATCH 341/461] Disable some tests that is waiting for next merge with xtradb Added 'Aria' as an alias for the Maria storage engine. Real rename is happening in 5.2 sql/handler.cc: Added 'Aria' as an alias for the Maria storage engine. --- mysql-test/suite/innodb/t/disabled.def | 2 ++ mysql-test/suite/maria/r/maria.result | 7 +++++++ mysql-test/suite/maria/t/maria.test | 8 ++++++++ sql/handler.cc | 1 + 4 files changed, 18 insertions(+) diff --git a/mysql-test/suite/innodb/t/disabled.def b/mysql-test/suite/innodb/t/disabled.def index 6e475d18211..90c9bc5b38e 100644 --- a/mysql-test/suite/innodb/t/disabled.def +++ b/mysql-test/suite/innodb/t/disabled.def @@ -14,3 +14,5 @@ innodb : Bug#53306 2010-04-30 VasilDimov valgrind warnings innodb_bug52663 : Waiting for merge with XtraDB innodb_bug51920 : Waiting for merge with XtraDB innodb_bug48024 : Waiting for merge with XtraDB +innodb_bug49164 : Waiting for merge with XtraDB +innodb_bug54044 : Waiting for merge with XtraDB diff --git a/mysql-test/suite/maria/r/maria.result b/mysql-test/suite/maria/r/maria.result index 5e33c3fa423..5d7a5fec78b 100644 --- a/mysql-test/suite/maria/r/maria.result +++ b/mysql-test/suite/maria/r/maria.result @@ -2600,3 +2600,10 @@ check table t1; Table Op Msg_type Msg_text test.t1 check status OK drop table t1; +Create table t1 (a int) engine="aria"; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL +) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 +drop table t1; diff --git a/mysql-test/suite/maria/t/maria.test b/mysql-test/suite/maria/t/maria.test index c40dde5952b..35ccb6263e3 100644 --- a/mysql-test/suite/maria/t/maria.test +++ b/mysql-test/suite/maria/t/maria.test @@ -1873,6 +1873,14 @@ insert into t1 values(1,repeat('a',100), repeat('b',657860)); check table t1; drop table t1; +# +# Check we can create a table with the 'Aria' alias +# + +Create table t1 (a int) engine="aria"; +show create table t1; +drop table t1; + # Set defaults back --disable_result_log --disable_query_log diff --git a/sql/handler.cc b/sql/handler.cc index e455523d508..afd9d08971d 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -58,6 +58,7 @@ static const LEX_STRING sys_table_aliases[]= { C_STRING_WITH_LEN("NDB") }, { C_STRING_WITH_LEN("NDBCLUSTER") }, { C_STRING_WITH_LEN("HEAP") }, { C_STRING_WITH_LEN("MEMORY") }, { C_STRING_WITH_LEN("MERGE") }, { C_STRING_WITH_LEN("MRG_MYISAM") }, + { C_STRING_WITH_LEN("Aria") }, { C_STRING_WITH_LEN("Maria") }, {NullS, 0} }; From a74d04671d23fa65bd610184965cc2974ec41cf9 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Mon, 2 Aug 2010 19:39:45 +0300 Subject: [PATCH 342/461] Fixed warnings and build failures after last push Speed up some PBXT tests by adding begin...commit around creating of testing tables. include/my_base.h: Fixed wrong constant mysql-test/mysql-test-run.pl: Print MariaDB instead of MySQL mysql-test/r/range.result: Move test that required partitions to parts.optimizer mysql-test/suite/innodb_plugin/t/disabled.def: Disable test that causes valgrind warning about not released memory in xtradb mysql-test/suite/parts/r/optimizer.result: Moved from range.result mysql-test/suite/parts/t/optimizer.test: Moved from range.test mysql-test/suite/pbxt/r/join_nested.result: Updated results after optimizer changes mysql-test/suite/pbxt/r/renamedb.result: Updated test for new error message mysql-test/suite/pbxt/t/check.test: Speed up test mysql-test/suite/pbxt/t/count_distinct2.test: Speed up test mysql-test/suite/pbxt/t/derived.test: Speed up test mysql-test/suite/pbxt/t/renamedb.test: Updated test for new error message mysql-test/suite/rpl/r/rpl_log_pos.result: Updated results mysql-test/suite/rpl/t/rpl_log_pos.test: Update test to read from a position that has 'known wrong' data. The orignal test read a timestamp, so the error message could differ between runs. mysql-test/suite/rpl/t/rpl_temporary_errors.test: Sync to slave to make test predictable mysql-test/t/events_time_zone.test: Extend wait to make test predictable mysql-test/t/range.test: Move test that required partitions to parts.optimizer sql/sql_list.h: Fixed compiler warning sql/sql_load.cc: buffer was not freed in some error conditions tests/mysql_client_test.c: Fixed compiler warning --- include/my_base.h | 2 +- mysql-test/mysql-test-run.pl | 2 +- mysql-test/r/range.result | 44 ----------------- mysql-test/suite/innodb_plugin/t/disabled.def | 2 + mysql-test/suite/parts/r/optimizer.result | 45 ++++++++++++++++++ mysql-test/suite/parts/t/optimizer.test | 47 +++++++++++++++++++ mysql-test/suite/pbxt/r/join_nested.result | 4 +- mysql-test/suite/pbxt/r/renamedb.result | 2 +- mysql-test/suite/pbxt/t/check.test | 2 + mysql-test/suite/pbxt/t/count_distinct2.test | 4 ++ mysql-test/suite/pbxt/t/derived.test | 2 + mysql-test/suite/pbxt/t/renamedb.test | 2 +- mysql-test/suite/rpl/r/rpl_log_pos.result | 4 +- mysql-test/suite/rpl/t/rpl_log_pos.test | 18 +++++-- .../suite/rpl/t/rpl_temporary_errors.test | 1 + mysql-test/t/events_time_zone.test | 4 +- mysql-test/t/range.test | 41 ---------------- sql/sql_list.h | 2 +- sql/sql_load.cc | 6 +-- tests/mysql_client_test.c | 2 +- 20 files changed, 133 insertions(+), 103 deletions(-) create mode 100644 mysql-test/suite/parts/r/optimizer.result create mode 100644 mysql-test/suite/parts/t/optimizer.test diff --git a/include/my_base.h b/include/my_base.h index f76903dcb6b..00a13f28f57 100644 --- a/include/my_base.h +++ b/include/my_base.h @@ -272,7 +272,7 @@ enum ha_base_keytype { #define HA_USES_PARSER 16384 /* Fulltext index uses [pre]parser */ #define HA_USES_BLOCK_SIZE ((uint) 32768) #define HA_SORT_ALLOWS_SAME 512 /* Intern bit when sorting records */ -#if MYSQL_VERSION_ID < 0x50200 +#if MYSQL_VERSION_ID < 50200 /* Key has a part that can have end space. If this is an unique key we have to handle it differently from other unique keys as we can find diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 6edd892d99d..5fcee4d8861 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -1601,7 +1601,7 @@ sub collect_mysqld_features { #print "Major: $1 Minor: $2 Build: $3\n"; $mysql_version_id= $1*10000 + $2*100 + $3; #print "mysql_version_id: $mysql_version_id\n"; - mtr_report("MySQL Version $1.$2.$3"); + mtr_report("MariaDB Version $1.$2.$3"); } } else diff --git a/mysql-test/r/range.result b/mysql-test/r/range.result index ad8aec7383a..64e00521cd2 100644 --- a/mysql-test/r/range.result +++ b/mysql-test/r/range.result @@ -1653,48 +1653,4 @@ a b 0 0 1 1 DROP TABLE t1; -# -# Bug#50939: Loose Index Scan unduly relies on engine to remember range -# endpoints -# -CREATE TABLE t1 ( -a INT, -b INT, -KEY ( a, b ) -) PARTITION BY HASH (a) PARTITIONS 1; -CREATE TABLE t2 ( -a INT, -b INT, -KEY ( a, b ) -); -INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5); -INSERT INTO t1 SELECT a + 5, b + 5 FROM t1; -INSERT INTO t1 SELECT a + 10, b + 10 FROM t1; -INSERT INTO t1 SELECT a + 20, b + 20 FROM t1; -INSERT INTO t1 SELECT a + 40, b + 40 FROM t1; -INSERT INTO t2 SELECT * FROM t1; -# plans should be identical -EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a; -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 range a a 5 NULL 1 Using where; Using index for group-by -EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a; -id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t2 range a a 5 NULL 2 Using where; Using index for group-by -FLUSH status; -SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100) GROUP BY a; -a MAX(b) -10 10 -# Should be no more than 4 reads. -SHOW status LIKE 'handler_read_key'; -Variable_name Value -Handler_read_key 4 -FLUSH status; -SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a; -a MAX(b) -10 10 -# Should be no more than 4 reads. -SHOW status LIKE 'handler_read_key'; -Variable_name Value -Handler_read_key 4 -DROP TABLE t1, t2; End of 5.1 tests diff --git a/mysql-test/suite/innodb_plugin/t/disabled.def b/mysql-test/suite/innodb_plugin/t/disabled.def index 888298bbb09..87cf2454f81 100644 --- a/mysql-test/suite/innodb_plugin/t/disabled.def +++ b/mysql-test/suite/innodb_plugin/t/disabled.def @@ -9,3 +9,5 @@ # Do not use any TAB characters for whitespace. # ############################################################################## + +innodb-use-sys-malloc : Waiting for buyfix from Percona for LP#612600 diff --git a/mysql-test/suite/parts/r/optimizer.result b/mysql-test/suite/parts/r/optimizer.result new file mode 100644 index 00000000000..cdf0b2b83dc --- /dev/null +++ b/mysql-test/suite/parts/r/optimizer.result @@ -0,0 +1,45 @@ +drop table if exists t1,t2; +# +# Bug#50939: Loose Index Scan unduly relies on engine to remember range +# endpoints +# +CREATE TABLE t1 ( +a INT, +b INT, +KEY ( a, b ) +) PARTITION BY HASH (a) PARTITIONS 1; +CREATE TABLE t2 ( +a INT, +b INT, +KEY ( a, b ) +); +INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5); +INSERT INTO t1 SELECT a + 5, b + 5 FROM t1; +INSERT INTO t1 SELECT a + 10, b + 10 FROM t1; +INSERT INTO t1 SELECT a + 20, b + 20 FROM t1; +INSERT INTO t1 SELECT a + 40, b + 40 FROM t1; +INSERT INTO t2 SELECT * FROM t1; +# plans should be identical +EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range a a 5 NULL 1 Using where; Using index for group-by +EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t2 range a a 5 NULL 2 Using where; Using index for group-by +FLUSH status; +SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100) GROUP BY a; +a MAX(b) +10 10 +# Should be no more than 4 reads. +SHOW status LIKE 'handler_read_key'; +Variable_name Value +Handler_read_key 4 +FLUSH status; +SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a; +a MAX(b) +10 10 +# Should be no more than 4 reads. +SHOW status LIKE 'handler_read_key'; +Variable_name Value +Handler_read_key 4 +DROP TABLE t1, t2; diff --git a/mysql-test/suite/parts/t/optimizer.test b/mysql-test/suite/parts/t/optimizer.test new file mode 100644 index 00000000000..f93c36823ca --- /dev/null +++ b/mysql-test/suite/parts/t/optimizer.test @@ -0,0 +1,47 @@ +# The server must support partitioning. +--source include/have_partition.inc + +--disable_warnings +drop table if exists t1,t2; +--enable_warnings + +--echo # +--echo # Bug#50939: Loose Index Scan unduly relies on engine to remember range +--echo # endpoints +--echo # +CREATE TABLE t1 ( + a INT, + b INT, + KEY ( a, b ) +) PARTITION BY HASH (a) PARTITIONS 1; + +CREATE TABLE t2 ( + a INT, + b INT, + KEY ( a, b ) +); + +INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5); + +INSERT INTO t1 SELECT a + 5, b + 5 FROM t1; +INSERT INTO t1 SELECT a + 10, b + 10 FROM t1; +INSERT INTO t1 SELECT a + 20, b + 20 FROM t1; +INSERT INTO t1 SELECT a + 40, b + 40 FROM t1; + +INSERT INTO t2 SELECT * FROM t1; + +--echo # plans should be identical +EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a; +EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a; + +FLUSH status; +SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100) GROUP BY a; +--echo # Should be no more than 4 reads. +SHOW status LIKE 'handler_read_key'; + +FLUSH status; +SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a; +--echo # Should be no more than 4 reads. +SHOW status LIKE 'handler_read_key'; + +DROP TABLE t1, t2; diff --git a/mysql-test/suite/pbxt/r/join_nested.result b/mysql-test/suite/pbxt/r/join_nested.result index 9b561371404..4e687b810db 100644 --- a/mysql-test/suite/pbxt/r/join_nested.result +++ b/mysql-test/suite/pbxt/r/join_nested.result @@ -958,15 +958,15 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where +1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1 100.00 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where -1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1 100.00 Using where 1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where 1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where 1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where 1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where 1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer Warnings: -Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`))) +Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t3`.`b` = `test`.`t4`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`))) CREATE INDEX idx_b ON t8(b); EXPLAIN SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, diff --git a/mysql-test/suite/pbxt/r/renamedb.result b/mysql-test/suite/pbxt/r/renamedb.result index ff8f89592fc..e77aca0d0b7 100644 --- a/mysql-test/suite/pbxt/r/renamedb.result +++ b/mysql-test/suite/pbxt/r/renamedb.result @@ -7,6 +7,6 @@ ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and n ALTER DATABASE `#mysql51#not-yet` UPGRADE DATA DIRECTORY NAME; ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and name ALTER DATABASE `#mysql50#` UPGRADE DATA DIRECTORY NAME; -ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and name +ERROR 42000: Incorrect database name '#mysql50#' ALTER DATABASE `#mysql50#upgrade-me` UPGRADE DATA DIRECTORY NAME; ERROR 42000: Unknown database '#mysql50#upgrade-me' diff --git a/mysql-test/suite/pbxt/t/check.test b/mysql-test/suite/pbxt/t/check.test index e8f355fe266..e25c5217e48 100644 --- a/mysql-test/suite/pbxt/t/check.test +++ b/mysql-test/suite/pbxt/t/check.test @@ -9,11 +9,13 @@ drop table if exists t1; create table t1(n int not null, key(n), key(n), key(n), key(n)); let $1=10000; disable_query_log; +begin; while ($1) { eval insert into t1 values ($1); dec $1; } +commit; enable_query_log; send check table t1 extended; connection con2; diff --git a/mysql-test/suite/pbxt/t/count_distinct2.test b/mysql-test/suite/pbxt/t/count_distinct2.test index 2f95e000f6c..8e2b33f1704 100644 --- a/mysql-test/suite/pbxt/t/count_distinct2.test +++ b/mysql-test/suite/pbxt/t/count_distinct2.test @@ -52,11 +52,13 @@ drop table t1; create table t1 (n int default NULL); let $1=5000; disable_query_log; +begin; while ($1) { eval insert into t1 values($1); dec $1; } +commit; enable_query_log; flush status; @@ -68,11 +70,13 @@ drop table t1; create table t1 (s text); let $1=5000; disable_query_log; +begin; while ($1) { eval insert into t1 values('$1'); dec $1; } +commit; enable_query_log; flush status; select count(distinct s) from t1; diff --git a/mysql-test/suite/pbxt/t/derived.test b/mysql-test/suite/pbxt/t/derived.test index 33ad994278c..a9127b49741 100644 --- a/mysql-test/suite/pbxt/t/derived.test +++ b/mysql-test/suite/pbxt/t/derived.test @@ -46,12 +46,14 @@ explain select * from (select t1.*, t2.a as t2a from t1,t2 where t1.a=t2.a) t1; drop table t1, t2; create table t1(a int not null, t char(8), index(a)); disable_query_log; +begin; let $1 = 10000; while ($1) { eval insert into t1 values ($1,'$1'); dec $1; } +commit; enable_query_log; SELECT * FROM (SELECT * FROM t1) as b ORDER BY a ASC LIMIT 0,20; explain select count(*) from t1 as tt1, (select * from t1) as tt2; diff --git a/mysql-test/suite/pbxt/t/renamedb.test b/mysql-test/suite/pbxt/t/renamedb.test index 84315090b7a..71d0c127058 100644 --- a/mysql-test/suite/pbxt/t/renamedb.test +++ b/mysql-test/suite/pbxt/t/renamedb.test @@ -44,7 +44,7 @@ ALTER DATABASE `#mysql41#not-supported` UPGRADE DATA DIRECTORY NAME; --error ER_WRONG_USAGE ALTER DATABASE `#mysql51#not-yet` UPGRADE DATA DIRECTORY NAME; ---error ER_WRONG_USAGE +--error ER_WRONG_DB_NAME ALTER DATABASE `#mysql50#` UPGRADE DATA DIRECTORY NAME; --error ER_BAD_DB_ERROR diff --git a/mysql-test/suite/rpl/r/rpl_log_pos.result b/mysql-test/suite/rpl/r/rpl_log_pos.result index d9f02f6e82f..3a52029fa4e 100644 --- a/mysql-test/suite/rpl/r/rpl_log_pos.result +++ b/mysql-test/suite/rpl/r/rpl_log_pos.result @@ -4,13 +4,15 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; +create table if not exists t1 (n int); +drop table t1; call mtr.add_suppression ("Slave I/O: Got fatal error 1236 from master when reading data from binary"); +call mtr.add_suppression ("Error in Log_event::read_log_event"); show master status; File Position Binlog_Do_DB Binlog_Ignore_DB master-bin.000001 # include/stop_slave.inc change master to master_log_pos=MASTER_LOG_POS; -Read_Master_Log_Pos 75 start slave; Last_IO_Error = Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master' include/stop_slave.inc diff --git a/mysql-test/suite/rpl/t/rpl_log_pos.test b/mysql-test/suite/rpl/t/rpl_log_pos.test index 239ddc5c8d4..daf4b9093fe 100644 --- a/mysql-test/suite/rpl/t/rpl_log_pos.test +++ b/mysql-test/suite/rpl/t/rpl_log_pos.test @@ -11,20 +11,30 @@ # Passes with rbr no problem, removed statement include [jbm] source include/master-slave.inc; + +# +# Add an event to get some information into the log we can try to parse +# +let $read_pos= query_get_value(SHOW MASTER STATUS, Position, 1); +create table if not exists t1 (n int); +drop table t1; + call mtr.add_suppression ("Slave I/O: Got fatal error 1236 from master when reading data from binary"); +call mtr.add_suppression ("Error in Log_event::read_log_event"); source include/show_master_status.inc; sync_slave_with_master; source include/stop_slave.inc; ---replace_result 75 MASTER_LOG_POS -change master to master_log_pos=75; -let $status_items= Read_Master_Log_Pos; -source include/show_slave_status.inc; +let $wrong_log_pos= `SELECT $read_pos+2`; +--replace_result $wrong_log_pos MASTER_LOG_POS +eval change master to master_log_pos=$wrong_log_pos; start slave; let $slave_io_errno= 1236; let $show_slave_io_error= 1; source include/wait_for_slave_io_error.inc; +--disable_warnings source include/stop_slave.inc; +--enable_warnings connection master; source include/show_master_status.inc; diff --git a/mysql-test/suite/rpl/t/rpl_temporary_errors.test b/mysql-test/suite/rpl/t/rpl_temporary_errors.test index 9b3c9296e69..6b1ba558d2d 100644 --- a/mysql-test/suite/rpl/t/rpl_temporary_errors.test +++ b/mysql-test/suite/rpl/t/rpl_temporary_errors.test @@ -77,6 +77,7 @@ DROP TABLE t_myisam, t_innodb; # the error log only during shutdown, and currently the suppression of # "Deadlock found" set in this test case is not effective during server # shutdown. +--sync_slave_with_master connection slave; STOP SLAVE; --source include/wait_for_slave_to_stop.inc diff --git a/mysql-test/t/events_time_zone.test b/mysql-test/t/events_time_zone.test index 17260eb0038..cb2fbab29c6 100644 --- a/mysql-test/t/events_time_zone.test +++ b/mysql-test/t/events_time_zone.test @@ -174,13 +174,13 @@ CREATE EVENT e2 ON SCHEDULE EVERY @step SECOND # We want to start at the beginning of the DST cycle, so we wait # untill current time divides by @step6. -let $wait_timeout= `SELECT @step6 + 1`; +let $wait_timeout= `SELECT @step6*2 + 1`; let $wait_condition= SELECT UNIX_TIMESTAMP() % @step6 = @step6 - 1; --source include/wait_condition.inc # The second wait is needed because after the first wait we may end up # on the ending edge of a second. Second wait will bring us to the # beginning edge. -let $wait_timeout= `SELECT @step + 1`; +let $wait_timeout= `SELECT @step*2 + 1`; let $wait_condition= SELECT UNIX_TIMESTAMP() % @step6 = 0; --source include/wait_condition.inc diff --git a/mysql-test/t/range.test b/mysql-test/t/range.test index 2d2a6f75d73..5d5ad180f1a 100644 --- a/mysql-test/t/range.test +++ b/mysql-test/t/range.test @@ -1313,45 +1313,4 @@ SELECT * FROM t1 FORCE INDEX (PRIMARY) DROP TABLE t1; ---echo # ---echo # Bug#50939: Loose Index Scan unduly relies on engine to remember range ---echo # endpoints ---echo # -CREATE TABLE t1 ( - a INT, - b INT, - KEY ( a, b ) -) PARTITION BY HASH (a) PARTITIONS 1; - -CREATE TABLE t2 ( - a INT, - b INT, - KEY ( a, b ) -); - -INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5); - -INSERT INTO t1 SELECT a + 5, b + 5 FROM t1; -INSERT INTO t1 SELECT a + 10, b + 10 FROM t1; -INSERT INTO t1 SELECT a + 20, b + 20 FROM t1; -INSERT INTO t1 SELECT a + 40, b + 40 FROM t1; - -INSERT INTO t2 SELECT * FROM t1; - ---echo # plans should be identical -EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a; -EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a; - -FLUSH status; -SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100) GROUP BY a; ---echo # Should be no more than 4 reads. -SHOW status LIKE 'handler_read_key'; - -FLUSH status; -SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a; ---echo # Should be no more than 4 reads. -SHOW status LIKE 'handler_read_key'; - -DROP TABLE t1, t2; - --echo End of 5.1 tests diff --git a/sql/sql_list.h b/sql/sql_list.h index 5c70005a64b..15eb85ab52c 100644 --- a/sql/sql_list.h +++ b/sql/sql_list.h @@ -74,7 +74,7 @@ public: SQL_I_List() { empty(); } - SQL_I_List(const SQL_I_List &tmp) + SQL_I_List(const SQL_I_List &tmp) :Sql_alloc() { elements= tmp.elements; first= tmp.first; diff --git a/sql/sql_load.cc b/sql/sql_load.cc index 99f0d7c24df..d0506d75925 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -1054,7 +1054,7 @@ READ_INFO::READ_INFO(File file_par, uint tot_length, CHARSET_INFO *cs, String &field_term, String &line_start, String &line_term, String &enclosed_par, int escape, bool get_it_from_net, bool is_fifo) - :file(file_par),escape_char(escape) + :file(file_par),buffer(0),escape_char(escape) { read_charset= cs; field_term_ptr=(char*) field_term.ptr(); @@ -1103,6 +1103,7 @@ READ_INFO::READ_INFO(File file_par, uint tot_length, CHARSET_INFO *cs, MYF(MY_WME))) { my_free((uchar*) buffer,MYF(0)); /* purecov: inspected */ + buffer= 0; error=1; } else @@ -1133,9 +1134,8 @@ READ_INFO::~READ_INFO() { if (need_end_io_cache) ::end_io_cache(&cache); - my_free((uchar*) buffer,MYF(0)); - error=1; } + my_free((uchar*) buffer,MYF(MY_ALLOW_ZERO_PTR)); } diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index e7906b3fc08..6647074bd2f 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -18159,7 +18159,7 @@ static void test_bug53907() rc= mysql_change_user(mysql, "testbug", NULL, "bug53907"); myquery(rc); - rc= simple_command(mysql, COM_TABLE_DUMP, buf, sizeof(buf), 0); + rc= simple_command(mysql, COM_TABLE_DUMP, (uchar*) buf, sizeof(buf), 0); fprintf(stderr, ">>>>>>>>> %d\n", mysql_errno(mysql)); DIE_UNLESS(mysql_errno(mysql) == 1103); /* ER_WRONG_TABLE_NAME */ From f62e89fade7cda645de80e2996de69e7d980cbdd Mon Sep 17 00:00:00 2001 From: Alfranio Correia Date: Mon, 2 Aug 2010 20:48:56 +0100 Subject: [PATCH 343/461] BUG#55625 RBR breaks on failing 'CREATE TABLE' A CREATE...SELECT that fails is written to the binary log if a non-transactional statement is updated. If the logging format is ROW, the CREATE statement and the changes are written to the binary log as distinct events and by consequence the created table is not rolled back in the slave. In this patch, we opted to let the slave goes out of sync by not writting to the binary log the CREATE statement. We do this by simply reseting the binary log's cache. mysql-test/suite/rpl/r/rpl_drop.result: Added a test case. mysql-test/suite/rpl/t/rpl_drop.test: Added a test case. sql/log.cc: Introduced a function to clean up the cache. sql/log.h: Introduced a function to clean up the cache. sql/sql_insert.cc: Cleaned up the binary log cache if a CREATE...SELECT fails. --- mysql-test/suite/rpl/r/rpl_drop.result | 24 ++++++++++++ mysql-test/suite/rpl/t/rpl_drop.test | 53 +++++++++++++++++++++++++- sql/log.cc | 13 +++++++ sql/log.h | 3 +- sql/sql_insert.cc | 11 ++++++ 5 files changed, 102 insertions(+), 2 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_drop.result b/mysql-test/suite/rpl/r/rpl_drop.result index b83594c9bb1..5ebbc4f9ce7 100644 --- a/mysql-test/suite/rpl/r/rpl_drop.result +++ b/mysql-test/suite/rpl/r/rpl_drop.result @@ -8,3 +8,27 @@ drop table if exists t1, t2; create table t1 (a int); drop table t1, t2; ERROR 42S02: Unknown table 't2' +include/stop_slave.inc +SET @old_binlog_format= @@global.binlog_format; +SET GLOBAL binlog_format = ROW; +include/start_slave.inc +SET @old_binlog_format= @@global.binlog_format; +SET binlog_format = ROW; +CREATE TABLE t2(a INT) ENGINE=MYISAM; +CREATE TABLE t3(a INT) ENGINE=INNODB; +CREATE FUNCTION f1() RETURNS INT +BEGIN +insert into t2 values(1); +insert into t3 values(1); +return 1; +END| +CREATE TABLE t1(UNIQUE(a)) ENGINE=MYISAM SELECT 1 AS a UNION ALL SELECT f1(); +ERROR 23000: Duplicate entry '1' for key 'a' +CREATE TABLE t1(UNIQUE(a)) ENGINE=INNODB SELECT 1 AS a UNION ALL SELECT f1(); +ERROR 23000: Duplicate entry '1' for key 'a' +show binlog events in 'master-bin.000001' from ; +Log_name Pos Event_type Server_id End_log_pos Info +DROP FUNCTION f1; +DROP TABLE t2, t3; +SET @@global.binlog_format= @old_binlog_format; +SET @@global.binlog_format= @old_binlog_format; diff --git a/mysql-test/suite/rpl/t/rpl_drop.test b/mysql-test/suite/rpl/t/rpl_drop.test index b38007a755f..336edad6fc5 100644 --- a/mysql-test/suite/rpl/t/rpl_drop.test +++ b/mysql-test/suite/rpl/t/rpl_drop.test @@ -1,6 +1,7 @@ # Testcase for BUG#4552 (DROP on two tables, one of which does not # exist, must be binlogged with a non-zero error code) source include/master-slave.inc; +source include/have_innodb.inc; --disable_warnings drop table if exists t1, t2; --enable_warnings @@ -10,7 +11,57 @@ drop table t1, t2; save_master_pos; connection slave; sync_with_master; - # End of 4.1 tests +# BUG#55625 RBR breaks on failing 'CREATE TABLE' +# A CREATE...SELECT that fails is written to the binary log if a non-transactional +# statement is updated. If the logging format is ROW, the CREATE statement and the +# changes are written to the binary log as distinct events and by consequence the +# created table is not rolled back in the slave. +# To fix the problem, we do not write a CREATE...SELECT that fails to the binary +# log. Howerver, the changes to non-transactional tables are not replicated and +# thus the slave goes out of sync. This should be fixed after BUG#47899. +# +# In the test case, we verify if the binary log contains no information for a +# CREATE...SELECT that fails. +connection slave; +--source include/stop_slave.inc +SET @old_binlog_format= @@global.binlog_format; +SET GLOBAL binlog_format = ROW; +--source include/start_slave.inc + +connection master; +SET @old_binlog_format= @@global.binlog_format; +SET binlog_format = ROW; + +CREATE TABLE t2(a INT) ENGINE=MYISAM; +CREATE TABLE t3(a INT) ENGINE=INNODB; + +delimiter |; +CREATE FUNCTION f1() RETURNS INT +BEGIN + insert into t2 values(1); + insert into t3 values(1); + return 1; +END| +delimiter ;| + +let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1); +let $binlog_file= query_get_value("SHOW MASTER STATUS", File, 1); + +--error 1062 +CREATE TABLE t1(UNIQUE(a)) ENGINE=MYISAM SELECT 1 AS a UNION ALL SELECT f1(); +--error 1062 +CREATE TABLE t1(UNIQUE(a)) ENGINE=INNODB SELECT 1 AS a UNION ALL SELECT f1(); + +--source include/show_binlog_events.inc + +DROP FUNCTION f1; +DROP TABLE t2, t3; +SET @@global.binlog_format= @old_binlog_format; + +--sync_slave_with_master +SET @@global.binlog_format= @old_binlog_format; + +# End of 5.1 tests diff --git a/sql/log.cc b/sql/log.cc index 614a07e6b63..3f41bf1c929 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1628,6 +1628,19 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all) DBUG_RETURN(error); } +/** + Cleanup the cache. + + @param thd The client thread that wants to clean up the cache. +*/ +void MYSQL_BIN_LOG::reset_gathered_updates(THD *thd) +{ + binlog_trx_data *const trx_data= + (binlog_trx_data*) thd_get_ha_data(thd, binlog_hton); + + trx_data->reset(); +} + void MYSQL_BIN_LOG::set_write_error(THD *thd) { DBUG_ENTER("MYSQL_BIN_LOG::set_write_error"); diff --git a/sql/log.h b/sql/log.h index 8d3880d9171..8f1ed7ee90c 100644 --- a/sql/log.h +++ b/sql/log.h @@ -356,10 +356,11 @@ public: /* Use this to start writing a new log file */ void new_file(); + void reset_gathered_updates(THD *thd); bool write(Log_event* event_info); // binary log write bool write(THD *thd, IO_CACHE *cache, Log_event *commit_event, bool incident); - bool write_incident(THD *thd, bool lock); + bool write_incident(THD *thd, bool lock); int write_cache(IO_CACHE *cache, bool lock_log, bool flush_and_sync); void set_write_error(THD *thd); bool check_write_error(THD *thd); diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 35c24e7571e..83b1834da0b 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -3873,6 +3873,17 @@ void select_create::abort() if (table) { + if (thd->lex->sql_command == SQLCOM_CREATE_TABLE && + thd->current_stmt_binlog_row_based && + !(thd->lex->create_info.options & HA_LEX_CREATE_TMP_TABLE) && + mysql_bin_log.is_open()) + { + /* + This should be removed after BUG#47899. + */ + mysql_bin_log.reset_gathered_updates(thd); + } + table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY); table->file->extra(HA_EXTRA_WRITE_CANNOT_REPLACE); if (!create_info->table_existed) From f8e270dbdc51fae5b6b627c29a0498c87e198383 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 3 Aug 2010 12:49:25 +0300 Subject: [PATCH 344/461] Fix for launchpad bug #612894 Support of virtual columns added to maria engine. mysql-test/suite/vcol/r/vcol_handler_maria.result: Basic tests for virtual column and maria engine. mysql-test/suite/vcol/t/vcol_handler_maria.test: Basic tests for virtual column and maria engine. storage/maria/ha_maria.cc: Support of virtual columns added to maria engine. storage/maria/ha_maria.h: Support of virtual columns added to maria engine. --- .../suite/vcol/r/vcol_handler_maria.result | 76 +++++++++++++++++++ .../suite/vcol/t/vcol_handler_maria.test | 50 ++++++++++++ storage/maria/ha_maria.cc | 2 +- storage/maria/ha_maria.h | 1 + 4 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 mysql-test/suite/vcol/r/vcol_handler_maria.result create mode 100644 mysql-test/suite/vcol/t/vcol_handler_maria.test diff --git a/mysql-test/suite/vcol/r/vcol_handler_maria.result b/mysql-test/suite/vcol/r/vcol_handler_maria.result new file mode 100644 index 00000000000..df36d0fbbf3 --- /dev/null +++ b/mysql-test/suite/vcol/r/vcol_handler_maria.result @@ -0,0 +1,76 @@ +SET @@session.storage_engine = 'maria'; +create table t1 (a int, +b int as (-a), +c int as (-a) persistent, +d char(1), +index (a), +index (c)); +insert into t1 (a,d) values (4,'a'), (2,'b'), (1,'c'), (3,'d'); +select * from t1; +a b c d +4 -4 -4 a +2 -2 -2 b +1 -1 -1 c +3 -3 -3 d +# HANDLER tbl_name OPEN +handler t1 open; +# HANDLER tbl_name READ non-vcol_index_name > (value1,value2,...) +handler t1 read a > (2); +a b c d +3 -3 -3 d +# HANDLER tbl_name READ non-vcol_index_name > (value1,value2,...) WHERE non-vcol_field=expr +handler t1 read a > (2) where d='c'; +a b c d +# HANDLER tbl_name READ vcol_index_name = (value1,value2,...) +handler t1 read c = (-2); +a b c d +2 -2 -2 b +# HANDLER tbl_name READ vcol_index_name = (value1,value2,...) WHERE non-vcol_field=expr +handler t1 read c = (-2) where d='c'; +a b c d +# HANDLER tbl_name READ non-vcol_index_name > (value1,value2,...) WHERE vcol_field=expr +handler t1 read a > (2) where b=-3 && c=-3; +a b c d +3 -3 -3 d +# HANDLER tbl_name READ vcol_index_name <= (value1,value2,...) +handler t1 read c <= (-2); +a b c d +2 -2 -2 b +# HANDLER tbl_name READ vcol_index_name > (value1,value2,...) WHERE vcol_field=expr +handler t1 read c <= (-2) where b=-3; +a b c d +3 -3 -3 d +# HANDLER tbl_name READ vcol_index_name FIRST +handler t1 read c first; +a b c d +4 -4 -4 a +# HANDLER tbl_name READ vcol_index_name NEXT +handler t1 read c next; +a b c d +3 -3 -3 d +# HANDLER tbl_name READ vcol_index_name PREV +handler t1 read c prev; +a b c d +4 -4 -4 a +# HANDLER tbl_name READ vcol_index_name LAST +handler t1 read c last; +a b c d +1 -1 -1 c +# HANDLER tbl_name READ FIRST where non-vcol=expr +handler t1 read FIRST where a >= 2; +a b c d +4 -4 -4 a +# HANDLER tbl_name READ FIRST where vcol=expr +handler t1 read FIRST where b >= -2; +a b c d +2 -2 -2 b +# HANDLER tbl_name READ NEXT where non-vcol=expr +handler t1 read NEXT where d='c'; +a b c d +1 -1 -1 c +# HANDLER tbl_name READ NEXT where vcol=expr +handler t1 read NEXT where b<=-4; +a b c d +# HANDLER tbl_name CLOSE +handler t1 close; +drop table t1; diff --git a/mysql-test/suite/vcol/t/vcol_handler_maria.test b/mysql-test/suite/vcol/t/vcol_handler_maria.test new file mode 100644 index 00000000000..e23b44ebe9a --- /dev/null +++ b/mysql-test/suite/vcol/t/vcol_handler_maria.test @@ -0,0 +1,50 @@ +################################################################################ +# t/vcol_handler_maria.test # +# # +# Purpose: # +# Testing HANDLER. +# # +# Maria branch # +# # +#------------------------------------------------------------------------------# +# Original Author: Andrey Zhakov # +# Original Date: 2008-09-04 # +# Change Author: # +# Change Date: # +# Change: # +################################################################################ + +# +# NOTE: PLEASE DO NOT ADD NOT MYISAM SPECIFIC TESTCASES HERE ! +# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN +# THE SOURCED FILES ONLY. +# + +#------------------------------------------------------------------------------# +# General not engine specific settings and requirements +--source suite/vcol/inc/vcol_init_vars.pre + +#------------------------------------------------------------------------------# +# Cleanup +--source suite/vcol/inc/vcol_cleanup.inc + +#------------------------------------------------------------------------------# +# Engine specific settings and requirements + +##### Storage engine to be tested +# Set the session storage engine +eval SET @@session.storage_engine = 'maria'; + +##### Workarounds for known open engine specific bugs +# none + +#------------------------------------------------------------------------------# +# Execute the tests to be applied to all storage engines +--source suite/vcol/inc/vcol_handler.inc + +#------------------------------------------------------------------------------# +# Execute storage engine specific tests + +#------------------------------------------------------------------------------# +# Cleanup +--source suite/vcol/inc/vcol_cleanup.inc diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc index 5495a0d2ffc..4c81fbe521f 100644 --- a/storage/maria/ha_maria.cc +++ b/storage/maria/ha_maria.cc @@ -468,7 +468,7 @@ static int table2maria(TABLE *table_arg, data_file_type row_type, recinfo_pos= recinfo; create_info->null_bytes= table_arg->s->null_bytes; - while (recpos < (uint) share->reclength) + while (recpos < (uint) share->stored_rec_length) { Field **field, *found= 0; minpos= share->reclength; diff --git a/storage/maria/ha_maria.h b/storage/maria/ha_maria.h index c0f2041fddb..d7eeb0a68f7 100644 --- a/storage/maria/ha_maria.h +++ b/storage/maria/ha_maria.h @@ -148,6 +148,7 @@ public: int assign_to_keycache(THD * thd, HA_CHECK_OPT * check_opt); int preload_keys(THD * thd, HA_CHECK_OPT * check_opt); bool check_if_incompatible_data(HA_CREATE_INFO * info, uint table_changes); + bool check_if_supported_virtual_columns(void) { return TRUE;} #ifdef HAVE_REPLICATION int dump(THD * thd, int fd); int net_read_dump(NET * net); From 0c6afe17dceb926b5c757157308188e540caec1e Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 3 Aug 2010 12:54:05 +0200 Subject: [PATCH 345/461] updated with changes from Percona-Server-5.1.47-11.2 --- CMakeLists.txt | 31 +- ChangeLog | 271 +++- Makefile.am | 16 +- Makefile.in | 1315 +++++++++-------- btr/btr0btr.c | 139 +- btr/btr0cur.c | 56 +- btr/btr0pcur.c | 27 +- buf/buf0buddy.c | 4 +- buf/buf0buf.c | 94 +- buf/buf0flu.c | 284 +++- buf/buf0lru.c | 124 +- buf/buf0rea.c | 54 +- data/data0data.c | 15 + dict/dict0boot.c | 10 +- dict/dict0crea.c | 128 +- dict/dict0dict.c | 89 +- dict/dict0load.c | 119 +- dict/dict0mem.c | 2 +- fil/fil0fil.c | 90 +- fsp/fsp0fsp.c | 44 +- ha/ha0ha.c | 16 +- ha/hash0hash.c | 6 +- handler/ha_innodb.cc | 1142 ++++++++++---- handler/ha_innodb.h | 37 +- handler/handler0alter.cc | 97 +- handler/i_s.cc | 77 +- handler/innodb_patch_info.h | 2 +- ibuf/ibuf0ibuf.c | 37 +- include/btr0btr.h | 14 +- include/btr0btr.ic | 6 +- include/btr0cur.h | 20 +- include/btr0pcur.h | 52 +- include/btr0pcur.ic | 49 +- include/buf0buf.h | 38 +- include/buf0buf.ic | 10 +- include/buf0flu.h | 32 +- include/data0type.ic | 6 +- include/dict0boot.h | 3 +- include/dict0dict.h | 21 +- include/dict0mem.h | 24 +- include/fil0fil.h | 9 +- include/hash0hash.h | 5 +- include/hash0hash.ic | 20 + include/lock0lock.h | 12 +- include/log0log.h | 31 +- include/log0log.ic | 11 +- include/log0recv.h | 14 +- include/mem0dbg.h | 9 +- include/mem0dbg.ic | 5 +- include/mem0mem.h | 5 +- include/mem0mem.ic | 10 +- include/mtr0log.ic | 5 +- include/mtr0mtr.ic | 5 +- include/os0file.h | 19 +- include/que0que.h | 13 +- include/que0que.ic | 16 +- include/row0mysql.h | 23 +- include/row0sel.h | 13 +- include/srv0srv.h | 65 +- include/sync0rw.h | 5 +- include/sync0sync.h | 26 +- include/trx0rseg.h | 2 +- include/trx0sys.h | 29 +- include/trx0sys.ic | 34 + include/trx0trx.h | 81 +- include/trx0types.h | 9 +- include/univ.i | 20 +- include/ut0rbt.h | 309 ++++ include/ut0rnd.ic | 1 + lock/lock0lock.c | 279 ++-- log/log0log.c | 23 +- log/log0recv.c | 85 +- mem/mem0dbg.c | 6 +- mem/mem0mem.c | 20 +- os/os0file.c | 32 +- page/page0page.c | 50 +- .../percona_innodb_deadlock_count.result | 28 + .../percona_innodb_deadlock_count.test | 49 + ...percona_innodb_doublewrite_file-master.opt | 1 + .../percona_innodb_doublewrite_file.result | 4 + .../percona_innodb_doublewrite_file.test | 2 + ...-and-use_global_long_query_time-master.opt | 1 + ...s-and-use_global_long_query_time-slave.opt | 1 + ...ents-and-use_global_long_query_time.result | 103 ++ ...ements-and-use_global_long_query_time.test | 137 ++ ...rcona_log_slow_slave_statements-master.opt | 1 + ...ercona_log_slow_slave_statements-slave.opt | 1 + .../percona_log_slow_slave_statements.result | 86 ++ .../percona_log_slow_slave_statements.test | 158 ++ .../percona_query_cache_with_comments.inc | 95 ++ ...rcona_query_cache_with_comments.inc.backup | 88 ++ .../percona_query_cache_with_comments.result | 866 +++++++++++ .../percona_query_cache_with_comments.test | 4 + ...ercona_query_cache_with_comments_begin.inc | 12 + ...ercona_query_cache_with_comments_clear.inc | 5 + ...ona_query_cache_with_comments_crash.result | 21 + ...rcona_query_cache_with_comments_crash.test | 22 + ...a_query_cache_with_comments_disable.result | 865 +++++++++++ ...ona_query_cache_with_comments_disable.test | 3 + .../percona_query_cache_with_comments_end.inc | 3 + ...percona_query_cache_with_comments_eval.inc | 7 + ...e_with_comments_prepared_statements.result | 396 +++++ ...che_with_comments_prepared_statements.test | 208 +++ ...percona_query_cache_with_comments_show.inc | 8 + percona-suite/percona_show_temp_tables.result | 58 + percona-suite/percona_show_temp_tables.test | 65 + ...w_query_log-control_global_slow-master.opt | 1 + ..._slow_query_log-control_global_slow.result | 12 + ...na_slow_query_log-control_global_slow.test | 10 + ..._slow_query_log-log_slow_filter-master.opt | 1 + ...cona_slow_query_log-log_slow_filter.result | 25 + ...ercona_slow_query_log-log_slow_filter.test | 31 + ...ow_query_log-log_slow_verbosity-master.opt | 1 + ...a_slow_query_log-log_slow_verbosity.result | 9 + ...ona_slow_query_log-log_slow_verbosity.test | 11 + ..._slow_query_log-long_query_time-master.opt | 1 + ...cona_slow_query_log-long_query_time.result | 22 + ...ercona_slow_query_log-long_query_time.test | 17 + ...-microseconds_in_slow_query_log-master.opt | 1 + ..._log-microseconds_in_slow_query_log.result | 12 + ...ry_log-microseconds_in_slow_query_log.test | 17 + ...uery_log-min_examined_row_limit-master.opt | 1 + ...ow_query_log-min_examined_row_limit.result | 25 + ...slow_query_log-min_examined_row_limit.test | 31 + ..._log-use_global_long_query_time-master.opt | 1 + ...uery_log-use_global_long_query_time.result | 24 + ..._query_log-use_global_long_query_time.test | 19 + ...rcona_suppress_log_warning_1592-master.opt | 1 + .../percona_suppress_log_warning_1592.result | 28 + .../percona_suppress_log_warning_1592.test | 46 + .../percona_xtradb_admin_command.result | 6 + .../percona_xtradb_admin_command.test | 3 + percona-suite/percona_xtradb_bug317074.result | 4 + percona-suite/percona_xtradb_bug317074.test | 44 + plug.in | 12 +- rem/rem0rec.c | 86 +- row/row0ins.c | 10 +- row/row0merge.c | 157 +- row/row0mysql.c | 285 ++-- row/row0row.c | 17 +- row/row0sel.c | 104 +- row/row0umod.c | 33 +- row/row0upd.c | 3 - srv/srv0srv.c | 248 ++-- srv/srv0start.c | 250 +++- sync/sync0sync.c | 89 +- trx/trx0i_s.c | 11 +- trx/trx0rec.c | 24 +- trx/trx0rseg.c | 2 +- trx/trx0sys.c | 270 +++- trx/trx0trx.c | 5 +- ut/ut0rbt.c | 1249 ++++++++++++++++ 152 files changed, 10152 insertions(+), 2307 deletions(-) create mode 100644 include/ut0rbt.h create mode 100644 percona-suite/percona_innodb_deadlock_count.result create mode 100644 percona-suite/percona_innodb_deadlock_count.test create mode 100644 percona-suite/percona_innodb_doublewrite_file-master.opt create mode 100644 percona-suite/percona_innodb_doublewrite_file.result create mode 100644 percona-suite/percona_innodb_doublewrite_file.test create mode 100644 percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time-master.opt create mode 100644 percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time-slave.opt create mode 100644 percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time.result create mode 100644 percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time.test create mode 100644 percona-suite/percona_log_slow_slave_statements-master.opt create mode 100644 percona-suite/percona_log_slow_slave_statements-slave.opt create mode 100644 percona-suite/percona_log_slow_slave_statements.result create mode 100644 percona-suite/percona_log_slow_slave_statements.test create mode 100644 percona-suite/percona_query_cache_with_comments.inc create mode 100644 percona-suite/percona_query_cache_with_comments.inc.backup create mode 100644 percona-suite/percona_query_cache_with_comments.result create mode 100644 percona-suite/percona_query_cache_with_comments.test create mode 100644 percona-suite/percona_query_cache_with_comments_begin.inc create mode 100644 percona-suite/percona_query_cache_with_comments_clear.inc create mode 100644 percona-suite/percona_query_cache_with_comments_crash.result create mode 100644 percona-suite/percona_query_cache_with_comments_crash.test create mode 100644 percona-suite/percona_query_cache_with_comments_disable.result create mode 100644 percona-suite/percona_query_cache_with_comments_disable.test create mode 100644 percona-suite/percona_query_cache_with_comments_end.inc create mode 100644 percona-suite/percona_query_cache_with_comments_eval.inc create mode 100644 percona-suite/percona_query_cache_with_comments_prepared_statements.result create mode 100644 percona-suite/percona_query_cache_with_comments_prepared_statements.test create mode 100644 percona-suite/percona_query_cache_with_comments_show.inc create mode 100644 percona-suite/percona_show_temp_tables.result create mode 100644 percona-suite/percona_show_temp_tables.test create mode 100644 percona-suite/percona_slow_query_log-control_global_slow-master.opt create mode 100644 percona-suite/percona_slow_query_log-control_global_slow.result create mode 100644 percona-suite/percona_slow_query_log-control_global_slow.test create mode 100644 percona-suite/percona_slow_query_log-log_slow_filter-master.opt create mode 100644 percona-suite/percona_slow_query_log-log_slow_filter.result create mode 100644 percona-suite/percona_slow_query_log-log_slow_filter.test create mode 100644 percona-suite/percona_slow_query_log-log_slow_verbosity-master.opt create mode 100644 percona-suite/percona_slow_query_log-log_slow_verbosity.result create mode 100644 percona-suite/percona_slow_query_log-log_slow_verbosity.test create mode 100644 percona-suite/percona_slow_query_log-long_query_time-master.opt create mode 100644 percona-suite/percona_slow_query_log-long_query_time.result create mode 100644 percona-suite/percona_slow_query_log-long_query_time.test create mode 100644 percona-suite/percona_slow_query_log-microseconds_in_slow_query_log-master.opt create mode 100644 percona-suite/percona_slow_query_log-microseconds_in_slow_query_log.result create mode 100644 percona-suite/percona_slow_query_log-microseconds_in_slow_query_log.test create mode 100644 percona-suite/percona_slow_query_log-min_examined_row_limit-master.opt create mode 100644 percona-suite/percona_slow_query_log-min_examined_row_limit.result create mode 100644 percona-suite/percona_slow_query_log-min_examined_row_limit.test create mode 100644 percona-suite/percona_slow_query_log-use_global_long_query_time-master.opt create mode 100644 percona-suite/percona_slow_query_log-use_global_long_query_time.result create mode 100644 percona-suite/percona_slow_query_log-use_global_long_query_time.test create mode 100644 percona-suite/percona_suppress_log_warning_1592-master.opt create mode 100644 percona-suite/percona_suppress_log_warning_1592.result create mode 100644 percona-suite/percona_suppress_log_warning_1592.test create mode 100644 percona-suite/percona_xtradb_admin_command.result create mode 100644 percona-suite/percona_xtradb_admin_command.test create mode 100644 percona-suite/percona_xtradb_bug317074.result create mode 100644 percona-suite/percona_xtradb_bug317074.test create mode 100644 ut/ut0rbt.c diff --git a/CMakeLists.txt b/CMakeLists.txt index b26a008f477..87318ceec78 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,9 +29,9 @@ IF (CMAKE_SIZEOF_VOID_P MATCHES 8) SET(WIN64 TRUE) ENDIF (CMAKE_SIZEOF_VOID_P MATCHES 8) -# Include directories under innobase -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/innobase/include - ${CMAKE_SOURCE_DIR}/storage/innobase/handler) +# Include directories under innodb_plugin +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/innodb_plugin/include + ${CMAKE_SOURCE_DIR}/storage/innodb_plugin/handler) # Include directories under mysql INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include @@ -47,7 +47,7 @@ IF (MSVC AND $(WIN64)) PROPERTIES COMPILE_FLAGS -Od) ENDIF (MSVC AND $(WIN64)) -SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c +SET(INNODB_PLUGIN_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c buf/buf0buddy.c buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c data/data0data.c data/data0type.c dict/dict0boot.c dict/dict0crea.c dict/dict0dict.c dict/dict0load.c dict/dict0mem.c @@ -78,22 +78,11 @@ SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c trx/trx0i_s.c trx/trx0purge.c trx/trx0rec.c trx/trx0roll.c trx/trx0rseg.c trx/trx0sys.c trx/trx0trx.c trx/trx0undo.c usr/usr0sess.c - ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c + ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rbt.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c ut/ut0list.c ut/ut0wqueue.c) -ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS -DIB_HAVE_PAUSE_INSTRUCTION) +# Windows atomics do not perform well. Disable Windows atomics by default. +# See bug#52102 for details. +#ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS -DINNODB_RW_LOCKS_USE_ATOMICS -DHAVE_IB_PAUSE_INSTRUCTION) +ADD_DEFINITIONS(-DHAVE_IB_PAUSE_INSTRUCTION) -IF (MYSQL_VERSION_ID GREATER "50137") - MYSQL_STORAGE_ENGINE(INNOBASE) - # Use ha_innodb for plugin name, if plugin is built - GET_TARGET_PROPERTY(LIB_LOCATION ha_innobase LOCATION) - IF(LIB_LOCATION) - SET_TARGET_PROPERTIES(ha_innobase PROPERTIES OUTPUT_NAME ha_innodb) - ENDIF(LIB_LOCATION) -ELSE (MYSQL_VERSION_ID GREATER "50137") - IF (NOT SOURCE_SUBLIBS) - ADD_DEFINITIONS(-D_WIN32 -DMYSQL_SERVER) - ADD_LIBRARY(innobase STATIC ${INNOBASE_SOURCES}) - # Require mysqld_error.h, which is built as part of the GenError - ADD_DEPENDENCIES(innobase GenError) - ENDIF (NOT SOURCE_SUBLIBS) -ENDIF (MYSQL_VERSION_ID GREATER "50137") +MYSQL_STORAGE_ENGINE(INNODB_PLUGIN) diff --git a/ChangeLog b/ChangeLog index 1a6e07fd147..bc69aaca96a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,262 @@ +2010-05-03 The InnoDB Team + + * buf0buf.c: + Fix Bug#53248 compressed tables page checksum mismatch after + re-enabling innodb_checksums + +2010-04-28 The InnoDB Team + + * log/log0recv.h, log/log0recv.c: + Fix Bug#53122 InnoDB recovery uses too big a hash table for redo + log records + +2010-04-27 The InnoDB Team + + * handler/ha_innodb.cc, lock/lock0lock.c, row/row0mysql.c, + row/row0sel.c: + Fix Bug#48607 READ UNCOMMITTED uses more locks than READ COMMITTED + in InnoDB 5.1+ + +2010-04-26 The InnoDB Team + + * row/row0sel.c: + Fix Bug#52663 Lost update incrementing column value under + READ COMMITTED isolation level + +2010-04-22 The InnoDB Team + + * include/dict0boot.h, dict/dict0boot.c: + Fix a bug that prevented the crash recovery of fast CREATE INDEX + from dropping partially created indexes. + +2010-04-21 The InnoDB Team + + * btr/btr0btr.c: + Fix Bug#52964 Infinite loop in btr_page_split_and_insert() + in ROW_FORMAT=COMPRESSED + +2010-04-21 The InnoDB Team + + * data/data0data.c: + Fix Bug#52745 Failing assertion: blob_no < page_zip->n_blobs + +2010-04-20 The InnoDB Team + + * dict/dict0crea.c, handler/ha_innodb.cc, include/trx0trx.h: + Fix Bug#50495 'Row size too large' for plugin, but works for + built-in InnoDB + Only check the record size at index creation time when + innodb_strict_mode is set or when ROW_FORMAT is DYNAMIC or COMPRESSED. + +2010-04-20 The InnoDB Team + + * btr/btr0btr.c, include/univ.i: + Implement UNIV_BTR_AVOID_COPY, for avoiding writes when a B-tree + node is split at the first or last record. + +2010-04-15 The InnoDB Team + + * trx/trx0rec.c: + Fix Bug#52746 InnoDB purge thread crashed with table containing + prefix indexed blobs + +2010-03-31 The InnoDB Team + + * mysql-test/innodb_bug51920.test, mysql-test/innodb_bug51920.result, + srv/srv0srv.c: + Fix Bug#51920 InnoDB connections in row lock wait ignore KILL + until lock wait timeout + +2010-03-31 The InnoDB Team + + * mysql-test/innodb_bug38231.test: + Remove non-determinism in the test case. + +2010-03-18 The InnoDB Team + + * CMakeLists.txt: + Fix Bug#52102 InnoDB Plugin shows performance drop compared to + InnoDB (Windows) + +2010-03-18 The InnoDB Team + + * buf0buf.ic: + When comparing the time of the first access to a block against + innodb_old_blocks_time, use 32-bit arithmetics. The comparison was + incorrect on 64-bit systems. + +2010-03-11 The InnoDB Team + + * buf0buf.h, buf0buf.ic: + Fix and clarify the latching of some buf_block_t members. + Note that check_index_page_at_flush is not protected by any mutex. + Note and assert that lock_hash_val is protected by the rw-latch. + +2010-03-10 The InnoDB Team + + * trx/trx0sys.c: + Fix Bug#51653 outdated reference to set-variable + +2010-03-10 The InnoDB Team + + * handler/ha_innodb.cc, mysql-test/innodb_bug21704.result, + mysql-test/innodb_bug47621.result, mysql-test/innodb_bug47621.test: + Fix Bug#47621 MySQL and InnoDB data dictionaries will become out of + sync when renaming columns + +2010-03-10 The InnoDB Team + + * handler/ha_innodb.cc: + Fix Bug#51356 Many Valgrind errors in error messages + with concurrent DDL + +2010-03-10 The InnoDB Team + + * handler/ha_innodb.cc, handler/handler0alter.cc, + mysql-test/innodb_bug51378.result, mysql-test/innodb_bug51378.test: + Fix Bug#51378 Init 'ref_length' to correct value, in case an out + of bound MySQL primary_key + +2010-03-10 The InnoDB Team + + * log/log0recv.c: + Remove a bogus assertion about page numbers exceeding 0x90000000 + in the redo log. Abort when encountering a corrupted redo log + record, unless innodb_force_recovery is set. + +2010-03-09 The InnoDB Team + + * handler/ha_innodb.cc: + Make SHOW ENGINE INNODB MUTEX STATUS display SUM(os_waits) + for the buffer pool block mutexes and locks. + +2010-03-08 The InnoDB Team + + * fil/fil0fil.c: + Fix ALTER TABLE ... IMPORT TABLESPACE of compressed tables. + +2010-03-03 The InnoDB Team + + * handler/handler0alter.cc, innodb-index.result, innodb-index.test, + innodb.result, innodb.test: + Disallow a duplicate index name when creating an index. + +2010-02-11 The InnoDB Team + + * include/mem0mem.h, include/mem0mem.ic, mem/mem0mem.c: + Fix Bug#49535 Available memory check slows down crash + recovery tens of times + +2010-02-09 The InnoDB Team + + * buf/buf0buf.c: + Fix Bug#38901 InnoDB logs error repeatedly when trying to load + page into buffer pool + +2010-02-09 The InnoDB Team + + * srv/srv0srv.c: + Let the master thread sleep if the amount of work to be done is + calibrated as taking less than a second. + +2010-02-04 The InnoDB Team + + * btr/btr0btr.c, btr/btr0cur.c, btr/btr0pcur.c, buf/buf0buf.c, + include/btr0btr.h, include/btr0cur.h, include/btr0pcur.h, + include/btr0pcur.ic, include/buf0buf.h, row/row0ins.c, row/row0sel.c: + Pass the file name and line number of the caller of the + b-tree cursor functions to the buffer pool requests, in order + to make the latch diagnostics more accurate. + +2010-02-03 The InnoDB Team + + * lock/lock0lock.c: + Fix Bug#49001 SHOW INNODB STATUS deadlock info incorrect + when deadlock detection aborts + +2010-02-03 The InnoDB Team + + * buf/buf0lru.c: + Fix Bug#35077 Very slow DROP TABLE (ALTER TABLE, OPTIMIZE TABLE) + on compressed tables + +2010-02-03 The InnoDB Team + + * handler/ha_innodb.cc, include/row0mysql.h, row/row0mysql.c: + Clean up CHECK TABLE error handling. + +2010-02-01 The InnoDB Team + + * handler/ha_innodb.cc, mysql-test/innodb-autoinc.test, + mysql-test/innodb-autoinc.result, + mysql-test/innodb-autoinc-44030.test, + mysql-test/innodb-autoinc-44030.result: + Fix Bug#49497 Error 1467 (ER_AUTOINC_READ_FAILED) on inserting + a negative value + +2010-01-27 The InnoDB Team + + * include/row0mysql.h, log/log0recv.c, row/row0mysql.c: + Drop temporary tables at startup. + This addresses the third aspect of + Bug#41609 Crash recovery does not work for InnoDB temporary tables. + +2010-01-21 The InnoDB Team + + * buf/buf0buf.c: + Do not merge buffered inserts to compressed pages before + the redo log has been applied in crash recovery. + +2010-01-13 The InnoDB Team + + * row/row0sel.c: + On the READ UNCOMMITTED isolation level, do not attempt to access + a clustered index record that has been marked for deletion. The + built-in InnoDB in MySQL 5.1 and earlier would attempt to retrieve + a previous version of the record in this case. + +2010-01-13 The InnoDB Team + + * buf/buf0buf.c: + When disabling the adaptive hash index, check the block state + before checking block->is_hashed, because the latter may be + uninitialized right after server startup. + +2010-01-12 The InnoDB Team + + * handler/ha_innodb.cc, handler/ha_innodb.h: + Fix Bug#46193 crash when accessing tables after enabling + innodb_force_recovery option + +2010-01-12 The InnoDB Team + + * row/row0mysql.c: + Fix Bug#49238 Creating/Dropping a temporary table while at 1023 + transactions will cause assert. + +2009-12-02 The InnoDB Team + + * srv/srv0start.c: + Display the zlib version number at startup. + InnoDB compressed tables use zlib, and the implementation depends + on the zlib function compressBound(), whose definition was slightly + changed in zlib version 1.2.3.1 in 2006. MySQL bundles zlib 1.2.3 + from 2005, but some installations use a more recent zlib. + +2009-11-30 The InnoDB Team + + * dict/dict0crea.c, dict/dict0mem.c, dict/dict0load.c, + dict/dict0boot.c, fil/fil0fil.c, handler/ha_innodb.cc, + include/dict0mem.h, row/row0mysql.c: + Fix the bogus warning messages for non-existing temporary + tables that were reported in + Bug#41609 Crash recovery does not work for InnoDB temporary tables. + The actual crash recovery bug was corrected on 2009-04-29. + +2009-11-27 The InnoDB Team + + InnoDB Plugin 1.0.6 released + 2009-11-20 The InnoDB Team * handler/ha_innodb.cc: @@ -79,8 +338,8 @@ sync/sync0arr.c, sync/sync0sync.c, thr/thr0loc.c, trx/trx0i_s.c, trx/trx0purge.c, trx/trx0rseg.c, trx/trx0sys.c, trx/trx0undo.c, usr/usr0sess.c, ut/ut0mem.c: - Fix Bug #45992 innodb memory not freed after shutdown - Fix Bug #46656 InnoDB plugin: memory leaks (Valgrind) + Fix Bug#45992 innodb memory not freed after shutdown + Fix Bug#46656 InnoDB plugin: memory leaks (Valgrind) 2009-10-29 The InnoDB Team @@ -422,7 +681,7 @@ * dict/dict0dict.c: When an index column cannot be found in the table during index creation, display additional diagnostic before an assertion failure. - This does NOT fix Bug #44571 InnoDB Plugin crashes on ADD INDEX, + This does NOT fix Bug#44571 InnoDB Plugin crashes on ADD INDEX, but it helps understand the reason of the crash. 2009-06-17 The InnoDB Team @@ -535,6 +794,12 @@ Fix Bug#44320 InnoDB: missing DB_ROLL_PTR in Table Monitor COLUMNS output +2009-04-29 The InnoDB Team + + * fil/fil0fil.c, include/fil0fil.h, include/mtr0mtr.h, + log/log0recv.c: + Fix Bug#41609 Crash recovery does not work for InnoDB temporary tables + 2009-04-23 The InnoDB Team * row/row0mysql.c: diff --git a/Makefile.am b/Makefile.am index 53413dfaeb8..aa01aabcdc8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -217,6 +217,7 @@ noinst_HEADERS= \ include/ut0lst.h \ include/ut0mem.h \ include/ut0mem.ic \ + include/ut0rbt.h \ include/ut0rnd.h \ include/ut0rnd.ic \ include/ut0sort.h \ @@ -229,7 +230,7 @@ noinst_HEADERS= \ mem/mem0dbg.c EXTRA_LIBRARIES= libinnobase.a -noinst_LIBRARIES= @plugin_innobase_static_target@ +noinst_LIBRARIES= @plugin_innodb_plugin_static_target@ libinnobase_a_SOURCES= \ btr/btr0btr.c \ btr/btr0cur.c \ @@ -319,6 +320,7 @@ libinnobase_a_SOURCES= \ ut/ut0dbg.c \ ut/ut0list.c \ ut/ut0mem.c \ + ut/ut0rbt.c \ ut/ut0rnd.c \ ut/ut0ut.c \ ut/ut0vec.c \ @@ -327,13 +329,13 @@ libinnobase_a_SOURCES= \ libinnobase_a_CXXFLAGS= $(AM_CFLAGS) libinnobase_a_CFLAGS= $(AM_CFLAGS) -EXTRA_LTLIBRARIES= ha_innodb.la -pkgplugin_LTLIBRARIES= @plugin_innobase_shared_target@ +EXTRA_LTLIBRARIES= ha_innodb_plugin.la +pkgplugin_LTLIBRARIES= @plugin_innodb_plugin_shared_target@ -ha_innodb_la_LDFLAGS= -module -rpath $(pkgplugindir) -ha_innodb_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) -ha_innodb_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) -ha_innodb_la_SOURCES= $(libinnobase_a_SOURCES) +ha_innodb_plugin_la_LDFLAGS= -module -rpath $(pkgplugindir) +ha_innodb_plugin_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) +ha_innodb_plugin_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) +ha_innodb_plugin_la_SOURCES= $(libinnobase_a_SOURCES) EXTRA_DIST= CMakeLists.txt plug.in \ pars/make_bison.sh pars/make_flex.sh \ diff --git a/Makefile.in b/Makefile.in index cc703bd48c7..c4bb0f9a9a2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -52,8 +52,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -subdir = storage/innobase -DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ +subdir = storage/innodb_plugin +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in COPYING ChangeLog ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/ac-macros/alloca.m4 \ @@ -160,8 +160,8 @@ am_libinnobase_a_OBJECTS = libinnobase_a-btr0btr.$(OBJEXT) \ libinnobase_a-usr0sess.$(OBJEXT) \ libinnobase_a-ut0byte.$(OBJEXT) libinnobase_a-ut0dbg.$(OBJEXT) \ libinnobase_a-ut0list.$(OBJEXT) libinnobase_a-ut0mem.$(OBJEXT) \ - libinnobase_a-ut0rnd.$(OBJEXT) libinnobase_a-ut0ut.$(OBJEXT) \ - libinnobase_a-ut0vec.$(OBJEXT) \ + libinnobase_a-ut0rbt.$(OBJEXT) libinnobase_a-ut0rnd.$(OBJEXT) \ + libinnobase_a-ut0ut.$(OBJEXT) libinnobase_a-ut0vec.$(OBJEXT) \ libinnobase_a-ut0wqueue.$(OBJEXT) libinnobase_a_OBJECTS = $(am_libinnobase_a_OBJECTS) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -173,58 +173,77 @@ am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pkgplugindir)" pkgpluginLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(pkgplugin_LTLIBRARIES) -ha_innodb_la_LIBADD = -am__objects_1 = ha_innodb_la-btr0btr.lo ha_innodb_la-btr0cur.lo \ - ha_innodb_la-btr0pcur.lo ha_innodb_la-btr0sea.lo \ - ha_innodb_la-buf0buddy.lo ha_innodb_la-buf0buf.lo \ - ha_innodb_la-buf0flu.lo ha_innodb_la-buf0lru.lo \ - ha_innodb_la-buf0rea.lo ha_innodb_la-data0data.lo \ - ha_innodb_la-data0type.lo ha_innodb_la-dict0boot.lo \ - ha_innodb_la-dict0crea.lo ha_innodb_la-dict0dict.lo \ - ha_innodb_la-dict0load.lo ha_innodb_la-dict0mem.lo \ - ha_innodb_la-dyn0dyn.lo ha_innodb_la-eval0eval.lo \ - ha_innodb_la-eval0proc.lo ha_innodb_la-fil0fil.lo \ - ha_innodb_la-fsp0fsp.lo ha_innodb_la-fut0fut.lo \ - ha_innodb_la-fut0lst.lo ha_innodb_la-ha0ha.lo \ - ha_innodb_la-ha0storage.lo ha_innodb_la-hash0hash.lo \ - ha_innodb_la-ha_innodb.lo ha_innodb_la-handler0alter.lo \ - ha_innodb_la-i_s.lo ha_innodb_la-mysql_addons.lo \ - ha_innodb_la-ibuf0ibuf.lo ha_innodb_la-lock0iter.lo \ - ha_innodb_la-lock0lock.lo ha_innodb_la-log0log.lo \ - ha_innodb_la-log0recv.lo ha_innodb_la-mach0data.lo \ - ha_innodb_la-mem0mem.lo ha_innodb_la-mem0pool.lo \ - ha_innodb_la-mtr0log.lo ha_innodb_la-mtr0mtr.lo \ - ha_innodb_la-os0file.lo ha_innodb_la-os0proc.lo \ - ha_innodb_la-os0sync.lo ha_innodb_la-os0thread.lo \ - ha_innodb_la-page0cur.lo ha_innodb_la-page0page.lo \ - ha_innodb_la-page0zip.lo ha_innodb_la-lexyy.lo \ - ha_innodb_la-pars0grm.lo ha_innodb_la-pars0opt.lo \ - ha_innodb_la-pars0pars.lo ha_innodb_la-pars0sym.lo \ - ha_innodb_la-que0que.lo ha_innodb_la-read0read.lo \ - ha_innodb_la-rem0cmp.lo ha_innodb_la-rem0rec.lo \ - ha_innodb_la-row0ext.lo ha_innodb_la-row0ins.lo \ - ha_innodb_la-row0merge.lo ha_innodb_la-row0mysql.lo \ - ha_innodb_la-row0purge.lo ha_innodb_la-row0row.lo \ - ha_innodb_la-row0sel.lo ha_innodb_la-row0uins.lo \ - ha_innodb_la-row0umod.lo ha_innodb_la-row0undo.lo \ - ha_innodb_la-row0upd.lo ha_innodb_la-row0vers.lo \ - ha_innodb_la-srv0que.lo ha_innodb_la-srv0srv.lo \ - ha_innodb_la-srv0start.lo ha_innodb_la-sync0arr.lo \ - ha_innodb_la-sync0rw.lo ha_innodb_la-sync0sync.lo \ - ha_innodb_la-thr0loc.lo ha_innodb_la-trx0i_s.lo \ - ha_innodb_la-trx0purge.lo ha_innodb_la-trx0rec.lo \ - ha_innodb_la-trx0roll.lo ha_innodb_la-trx0rseg.lo \ - ha_innodb_la-trx0sys.lo ha_innodb_la-trx0trx.lo \ - ha_innodb_la-trx0undo.lo ha_innodb_la-usr0sess.lo \ - ha_innodb_la-ut0byte.lo ha_innodb_la-ut0dbg.lo \ - ha_innodb_la-ut0list.lo ha_innodb_la-ut0mem.lo \ - ha_innodb_la-ut0rnd.lo ha_innodb_la-ut0ut.lo \ - ha_innodb_la-ut0vec.lo ha_innodb_la-ut0wqueue.lo -am_ha_innodb_la_OBJECTS = $(am__objects_1) -ha_innodb_la_OBJECTS = $(am_ha_innodb_la_OBJECTS) -ha_innodb_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(ha_innodb_la_CXXFLAGS) \ - $(CXXFLAGS) $(ha_innodb_la_LDFLAGS) $(LDFLAGS) -o $@ +ha_innodb_plugin_la_LIBADD = +am__objects_1 = ha_innodb_plugin_la-btr0btr.lo \ + ha_innodb_plugin_la-btr0cur.lo ha_innodb_plugin_la-btr0pcur.lo \ + ha_innodb_plugin_la-btr0sea.lo \ + ha_innodb_plugin_la-buf0buddy.lo \ + ha_innodb_plugin_la-buf0buf.lo ha_innodb_plugin_la-buf0flu.lo \ + ha_innodb_plugin_la-buf0lru.lo ha_innodb_plugin_la-buf0rea.lo \ + ha_innodb_plugin_la-data0data.lo \ + ha_innodb_plugin_la-data0type.lo \ + ha_innodb_plugin_la-dict0boot.lo \ + ha_innodb_plugin_la-dict0crea.lo \ + ha_innodb_plugin_la-dict0dict.lo \ + ha_innodb_plugin_la-dict0load.lo \ + ha_innodb_plugin_la-dict0mem.lo ha_innodb_plugin_la-dyn0dyn.lo \ + ha_innodb_plugin_la-eval0eval.lo \ + ha_innodb_plugin_la-eval0proc.lo \ + ha_innodb_plugin_la-fil0fil.lo ha_innodb_plugin_la-fsp0fsp.lo \ + ha_innodb_plugin_la-fut0fut.lo ha_innodb_plugin_la-fut0lst.lo \ + ha_innodb_plugin_la-ha0ha.lo ha_innodb_plugin_la-ha0storage.lo \ + ha_innodb_plugin_la-hash0hash.lo \ + ha_innodb_plugin_la-ha_innodb.lo \ + ha_innodb_plugin_la-handler0alter.lo \ + ha_innodb_plugin_la-i_s.lo ha_innodb_plugin_la-mysql_addons.lo \ + ha_innodb_plugin_la-ibuf0ibuf.lo \ + ha_innodb_plugin_la-lock0iter.lo \ + ha_innodb_plugin_la-lock0lock.lo \ + ha_innodb_plugin_la-log0log.lo ha_innodb_plugin_la-log0recv.lo \ + ha_innodb_plugin_la-mach0data.lo \ + ha_innodb_plugin_la-mem0mem.lo ha_innodb_plugin_la-mem0pool.lo \ + ha_innodb_plugin_la-mtr0log.lo ha_innodb_plugin_la-mtr0mtr.lo \ + ha_innodb_plugin_la-os0file.lo ha_innodb_plugin_la-os0proc.lo \ + ha_innodb_plugin_la-os0sync.lo \ + ha_innodb_plugin_la-os0thread.lo \ + ha_innodb_plugin_la-page0cur.lo \ + ha_innodb_plugin_la-page0page.lo \ + ha_innodb_plugin_la-page0zip.lo ha_innodb_plugin_la-lexyy.lo \ + ha_innodb_plugin_la-pars0grm.lo \ + ha_innodb_plugin_la-pars0opt.lo \ + ha_innodb_plugin_la-pars0pars.lo \ + ha_innodb_plugin_la-pars0sym.lo ha_innodb_plugin_la-que0que.lo \ + ha_innodb_plugin_la-read0read.lo \ + ha_innodb_plugin_la-rem0cmp.lo ha_innodb_plugin_la-rem0rec.lo \ + ha_innodb_plugin_la-row0ext.lo ha_innodb_plugin_la-row0ins.lo \ + ha_innodb_plugin_la-row0merge.lo \ + ha_innodb_plugin_la-row0mysql.lo \ + ha_innodb_plugin_la-row0purge.lo \ + ha_innodb_plugin_la-row0row.lo ha_innodb_plugin_la-row0sel.lo \ + ha_innodb_plugin_la-row0uins.lo \ + ha_innodb_plugin_la-row0umod.lo \ + ha_innodb_plugin_la-row0undo.lo ha_innodb_plugin_la-row0upd.lo \ + ha_innodb_plugin_la-row0vers.lo ha_innodb_plugin_la-srv0que.lo \ + ha_innodb_plugin_la-srv0srv.lo \ + ha_innodb_plugin_la-srv0start.lo \ + ha_innodb_plugin_la-sync0arr.lo ha_innodb_plugin_la-sync0rw.lo \ + ha_innodb_plugin_la-sync0sync.lo \ + ha_innodb_plugin_la-thr0loc.lo ha_innodb_plugin_la-trx0i_s.lo \ + ha_innodb_plugin_la-trx0purge.lo \ + ha_innodb_plugin_la-trx0rec.lo ha_innodb_plugin_la-trx0roll.lo \ + ha_innodb_plugin_la-trx0rseg.lo ha_innodb_plugin_la-trx0sys.lo \ + ha_innodb_plugin_la-trx0trx.lo ha_innodb_plugin_la-trx0undo.lo \ + ha_innodb_plugin_la-usr0sess.lo ha_innodb_plugin_la-ut0byte.lo \ + ha_innodb_plugin_la-ut0dbg.lo ha_innodb_plugin_la-ut0list.lo \ + ha_innodb_plugin_la-ut0mem.lo ha_innodb_plugin_la-ut0rbt.lo \ + ha_innodb_plugin_la-ut0rnd.lo ha_innodb_plugin_la-ut0ut.lo \ + ha_innodb_plugin_la-ut0vec.lo ha_innodb_plugin_la-ut0wqueue.lo +am_ha_innodb_plugin_la_OBJECTS = $(am__objects_1) +ha_innodb_plugin_la_OBJECTS = $(am_ha_innodb_plugin_la_OBJECTS) +ha_innodb_plugin_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ + $(ha_innodb_plugin_la_CXXFLAGS) $(CXXFLAGS) \ + $(ha_innodb_plugin_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -246,8 +265,8 @@ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ -SOURCES = $(libinnobase_a_SOURCES) $(ha_innodb_la_SOURCES) -DIST_SOURCES = $(libinnobase_a_SOURCES) $(ha_innodb_la_SOURCES) +SOURCES = $(libinnobase_a_SOURCES) $(ha_innodb_plugin_la_SOURCES) +DIST_SOURCES = $(libinnobase_a_SOURCES) $(ha_innodb_plugin_la_SOURCES) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags @@ -350,6 +369,7 @@ MYSQL_SERVER_SUFFIX = @MYSQL_SERVER_SUFFIX@ MYSQL_TCP_PORT = @MYSQL_TCP_PORT@ MYSQL_TCP_PORT_DEFAULT = @MYSQL_TCP_PORT_DEFAULT@ MYSQL_UNIX_ADDR = @MYSQL_UNIX_ADDR@ +MYSQL_U_SCORE_VERSION = @MYSQL_U_SCORE_VERSION@ MYSQL_VERSION_ID = @MYSQL_VERSION_ID@ NDB_DEFS = @NDB_DEFS@ NDB_LD_VERSION_SCRIPT = @NDB_LD_VERSION_SCRIPT@ @@ -454,6 +474,7 @@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ +innodb_system_libs = @innodb_system_libs@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ @@ -495,10 +516,14 @@ plugin_blackhole_shared_target = @plugin_blackhole_shared_target@ plugin_blackhole_static_target = @plugin_blackhole_static_target@ plugin_csv_shared_target = @plugin_csv_shared_target@ plugin_csv_static_target = @plugin_csv_static_target@ +plugin_daemon_example_shared_target = @plugin_daemon_example_shared_target@ +plugin_daemon_example_static_target = @plugin_daemon_example_static_target@ plugin_example_shared_target = @plugin_example_shared_target@ plugin_example_static_target = @plugin_example_static_target@ plugin_federated_shared_target = @plugin_federated_shared_target@ plugin_federated_static_target = @plugin_federated_static_target@ +plugin_ftexample_shared_target = @plugin_ftexample_shared_target@ +plugin_ftexample_static_target = @plugin_ftexample_static_target@ plugin_heap_shared_target = @plugin_heap_shared_target@ plugin_heap_static_target = @plugin_heap_static_target@ plugin_ibmdb2i_shared_target = @plugin_ibmdb2i_shared_target@ @@ -748,6 +773,7 @@ noinst_HEADERS = \ include/ut0lst.h \ include/ut0mem.h \ include/ut0mem.ic \ + include/ut0rbt.h \ include/ut0rnd.h \ include/ut0rnd.ic \ include/ut0sort.h \ @@ -760,7 +786,7 @@ noinst_HEADERS = \ mem/mem0dbg.c EXTRA_LIBRARIES = libinnobase.a -noinst_LIBRARIES = @plugin_innobase_static_target@ +noinst_LIBRARIES = @plugin_innodb_plugin_static_target@ libinnobase_a_SOURCES = \ btr/btr0btr.c \ btr/btr0cur.c \ @@ -850,6 +876,7 @@ libinnobase_a_SOURCES = \ ut/ut0dbg.c \ ut/ut0list.c \ ut/ut0mem.c \ + ut/ut0rbt.c \ ut/ut0rnd.c \ ut/ut0ut.c \ ut/ut0vec.c \ @@ -857,38 +884,17 @@ libinnobase_a_SOURCES = \ libinnobase_a_CXXFLAGS = $(AM_CFLAGS) libinnobase_a_CFLAGS = $(AM_CFLAGS) -EXTRA_LTLIBRARIES = ha_innodb.la -pkgplugin_LTLIBRARIES = @plugin_innobase_shared_target@ -ha_innodb_la_LDFLAGS = -module -rpath $(pkgplugindir) -ha_innodb_la_CXXFLAGS = $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) -ha_innodb_la_CFLAGS = $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) -ha_innodb_la_SOURCES = $(libinnobase_a_SOURCES) +EXTRA_LTLIBRARIES = ha_innodb_plugin.la +pkgplugin_LTLIBRARIES = @plugin_innodb_plugin_shared_target@ +ha_innodb_plugin_la_LDFLAGS = -module -rpath $(pkgplugindir) +ha_innodb_plugin_la_CXXFLAGS = $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) +ha_innodb_plugin_la_CFLAGS = $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS) +ha_innodb_plugin_la_SOURCES = $(libinnobase_a_SOURCES) EXTRA_DIST = CMakeLists.txt plug.in \ pars/make_bison.sh pars/make_flex.sh \ pars/pars0grm.y pars/pars0lex.l -custom_checks: - echo '' > include/ut0auxconf.h - if $(COMPILE) ut/ut0auxconf_have_gcc_atomics.c -o ut0auxconf_have_gcc_atomics && ./ut0auxconf_have_gcc_atomics ; then \ - echo '#define HAVE_IB_GCC_ATOMIC_BUILTINS' >> include/ut0auxconf.h ; \ - fi ; \ - if $(COMPILE) ut/ut0auxconf_atomic_pthread_t_gcc.c -o ut0auxconf_atomic_pthread_t_gcc && ./ut0auxconf_atomic_pthread_t_gcc ; then \ - echo '#define HAVE_IB_ATOMIC_PTHREAD_T_GCC' >> include/ut0auxconf.h ; \ - fi ; \ - if $(COMPILE) ut/ut0auxconf_have_solaris_atomics.c -o ut0auxconf_have_solaris_atomics && ./ut0auxconf_have_solaris_atomics ; then \ - echo '#define HAVE_IB_SOLARIS_ATOMICS' >> include/ut0auxconf.h ; \ - fi ; \ - if $(COMPILE) ut/ut0auxconf_atomic_pthread_t_solaris.c -o ut0auxconf_atomic_pthread_t_solaris && ./ut0auxconf_atomic_pthread_t_solaris ; then \ - echo '#define HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS' >> include/ut0auxconf.h ; \ - fi ; \ - $(COMPILE) ut/ut0auxconf_sizeof_pthread_t.c -o ut0auxconf_sizeof_pthread_t ; \ - ./ut0auxconf_sizeof_pthread_t >> include/ut0auxconf.h ; \ - if $(COMPILE) ut/ut0auxconf_pause.c -o ut0auxconf_pause && ./ut0auxconf_pause ; then \ - echo '#define HAVE_IB_PAUSE_INSTRUCTION' >> include/ut0auxconf.h ; \ - fi - $(MAKE) all-am - -all: custom_checks +all: all-am .SUFFIXES: .SUFFIXES: .c .cc .lo .o .obj @@ -901,9 +907,9 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu storage/innobase/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu storage/innodb_plugin/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu storage/innobase/Makefile + $(AUTOMAKE) --gnu storage/innodb_plugin/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -955,8 +961,8 @@ clean-pkgpluginLTLIBRARIES: echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -ha_innodb.la: $(ha_innodb_la_OBJECTS) $(ha_innodb_la_DEPENDENCIES) - $(ha_innodb_la_LINK) $(ha_innodb_la_OBJECTS) $(ha_innodb_la_LIBADD) $(LIBS) +ha_innodb_plugin.la: $(ha_innodb_plugin_la_OBJECTS) $(ha_innodb_plugin_la_DEPENDENCIES) + $(ha_innodb_plugin_la_LINK) $(ha_innodb_plugin_la_OBJECTS) $(ha_innodb_plugin_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -964,98 +970,99 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-btr0btr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-btr0cur.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-btr0pcur.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-btr0sea.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-buf0buddy.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-buf0buf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-buf0flu.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-buf0lru.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-buf0rea.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-data0data.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-data0type.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-dict0boot.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-dict0crea.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-dict0dict.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-dict0load.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-dict0mem.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-dyn0dyn.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-eval0eval.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-eval0proc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-fil0fil.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-fsp0fsp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-fut0fut.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-fut0lst.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ha0ha.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ha0storage.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ha_innodb.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-handler0alter.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-hash0hash.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-i_s.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ibuf0ibuf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-lexyy.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-lock0iter.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-lock0lock.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-log0log.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-log0recv.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-mach0data.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-mem0mem.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-mem0pool.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-mtr0log.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-mtr0mtr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-mysql_addons.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-os0file.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-os0proc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-os0sync.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-os0thread.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-page0cur.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-page0page.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-page0zip.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-pars0grm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-pars0opt.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-pars0pars.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-pars0sym.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-que0que.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-read0read.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-rem0cmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-rem0rec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0ext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0ins.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0merge.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0mysql.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0purge.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0row.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0sel.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0uins.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0umod.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0undo.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0upd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-row0vers.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-srv0que.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-srv0srv.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-srv0start.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-sync0arr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-sync0rw.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-sync0sync.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-thr0loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-trx0i_s.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-trx0purge.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-trx0rec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-trx0roll.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-trx0rseg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-trx0sys.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-trx0trx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-trx0undo.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-usr0sess.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ut0byte.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ut0dbg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ut0list.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ut0mem.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ut0rnd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ut0ut.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ut0vec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_la-ut0wqueue.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-btr0btr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-btr0cur.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-btr0pcur.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-btr0sea.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-buf0buddy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-buf0buf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-buf0flu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-buf0lru.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-buf0rea.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-data0data.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-data0type.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-dict0boot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-dict0crea.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-dict0dict.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-dict0load.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-dict0mem.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-dyn0dyn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-eval0eval.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-eval0proc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-fil0fil.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-fsp0fsp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-fut0fut.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-fut0lst.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ha0ha.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ha0storage.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ha_innodb.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-handler0alter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-hash0hash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-i_s.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ibuf0ibuf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-lexyy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-lock0iter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-lock0lock.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-log0log.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-log0recv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-mach0data.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-mem0mem.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-mem0pool.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-mtr0log.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-mtr0mtr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-mysql_addons.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-os0file.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-os0proc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-os0sync.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-os0thread.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-page0cur.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-page0page.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-page0zip.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-pars0grm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-pars0opt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-pars0pars.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-pars0sym.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-que0que.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-read0read.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-rem0cmp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-rem0rec.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0ext.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0ins.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0merge.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0mysql.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0purge.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0row.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0sel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0uins.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0umod.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0undo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0upd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-row0vers.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-srv0que.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-srv0srv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-srv0start.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-sync0arr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-sync0rw.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-sync0sync.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-thr0loc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-trx0i_s.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-trx0purge.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-trx0rec.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-trx0roll.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-trx0rseg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-trx0sys.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-trx0trx.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-trx0undo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-usr0sess.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ut0byte.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ut0dbg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ut0list.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ut0mem.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ut0rbt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ut0rnd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ut0ut.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ut0vec.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ha_innodb_plugin_la-ut0wqueue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinnobase_a-btr0btr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinnobase_a-btr0cur.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinnobase_a-btr0pcur.Po@am__quote@ @@ -1144,6 +1151,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinnobase_a-ut0dbg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinnobase_a-ut0list.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinnobase_a-ut0mem.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinnobase_a-ut0rbt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinnobase_a-ut0rnd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinnobase_a-ut0ut.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinnobase_a-ut0vec.Po@am__quote@ @@ -2346,6 +2354,20 @@ libinnobase_a-ut0mem.obj: ut/ut0mem.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinnobase_a_CFLAGS) $(CFLAGS) -c -o libinnobase_a-ut0mem.obj `if test -f 'ut/ut0mem.c'; then $(CYGPATH_W) 'ut/ut0mem.c'; else $(CYGPATH_W) '$(srcdir)/ut/ut0mem.c'; fi` +libinnobase_a-ut0rbt.o: ut/ut0rbt.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinnobase_a_CFLAGS) $(CFLAGS) -MT libinnobase_a-ut0rbt.o -MD -MP -MF $(DEPDIR)/libinnobase_a-ut0rbt.Tpo -c -o libinnobase_a-ut0rbt.o `test -f 'ut/ut0rbt.c' || echo '$(srcdir)/'`ut/ut0rbt.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libinnobase_a-ut0rbt.Tpo $(DEPDIR)/libinnobase_a-ut0rbt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0rbt.c' object='libinnobase_a-ut0rbt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinnobase_a_CFLAGS) $(CFLAGS) -c -o libinnobase_a-ut0rbt.o `test -f 'ut/ut0rbt.c' || echo '$(srcdir)/'`ut/ut0rbt.c + +libinnobase_a-ut0rbt.obj: ut/ut0rbt.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinnobase_a_CFLAGS) $(CFLAGS) -MT libinnobase_a-ut0rbt.obj -MD -MP -MF $(DEPDIR)/libinnobase_a-ut0rbt.Tpo -c -o libinnobase_a-ut0rbt.obj `if test -f 'ut/ut0rbt.c'; then $(CYGPATH_W) 'ut/ut0rbt.c'; else $(CYGPATH_W) '$(srcdir)/ut/ut0rbt.c'; fi` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libinnobase_a-ut0rbt.Tpo $(DEPDIR)/libinnobase_a-ut0rbt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0rbt.c' object='libinnobase_a-ut0rbt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinnobase_a_CFLAGS) $(CFLAGS) -c -o libinnobase_a-ut0rbt.obj `if test -f 'ut/ut0rbt.c'; then $(CYGPATH_W) 'ut/ut0rbt.c'; else $(CYGPATH_W) '$(srcdir)/ut/ut0rbt.c'; fi` + libinnobase_a-ut0rnd.o: ut/ut0rnd.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinnobase_a_CFLAGS) $(CFLAGS) -MT libinnobase_a-ut0rnd.o -MD -MP -MF $(DEPDIR)/libinnobase_a-ut0rnd.Tpo -c -o libinnobase_a-ut0rnd.o `test -f 'ut/ut0rnd.c' || echo '$(srcdir)/'`ut/ut0rnd.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libinnobase_a-ut0rnd.Tpo $(DEPDIR)/libinnobase_a-ut0rnd.Po @@ -2402,621 +2424,628 @@ libinnobase_a-ut0wqueue.obj: ut/ut0wqueue.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinnobase_a_CFLAGS) $(CFLAGS) -c -o libinnobase_a-ut0wqueue.obj `if test -f 'ut/ut0wqueue.c'; then $(CYGPATH_W) 'ut/ut0wqueue.c'; else $(CYGPATH_W) '$(srcdir)/ut/ut0wqueue.c'; fi` -ha_innodb_la-btr0btr.lo: btr/btr0btr.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-btr0btr.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-btr0btr.Tpo -c -o ha_innodb_la-btr0btr.lo `test -f 'btr/btr0btr.c' || echo '$(srcdir)/'`btr/btr0btr.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-btr0btr.Tpo $(DEPDIR)/ha_innodb_la-btr0btr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='btr/btr0btr.c' object='ha_innodb_la-btr0btr.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-btr0btr.lo: btr/btr0btr.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-btr0btr.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-btr0btr.Tpo -c -o ha_innodb_plugin_la-btr0btr.lo `test -f 'btr/btr0btr.c' || echo '$(srcdir)/'`btr/btr0btr.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-btr0btr.Tpo $(DEPDIR)/ha_innodb_plugin_la-btr0btr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='btr/btr0btr.c' object='ha_innodb_plugin_la-btr0btr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-btr0btr.lo `test -f 'btr/btr0btr.c' || echo '$(srcdir)/'`btr/btr0btr.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-btr0btr.lo `test -f 'btr/btr0btr.c' || echo '$(srcdir)/'`btr/btr0btr.c -ha_innodb_la-btr0cur.lo: btr/btr0cur.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-btr0cur.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-btr0cur.Tpo -c -o ha_innodb_la-btr0cur.lo `test -f 'btr/btr0cur.c' || echo '$(srcdir)/'`btr/btr0cur.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-btr0cur.Tpo $(DEPDIR)/ha_innodb_la-btr0cur.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='btr/btr0cur.c' object='ha_innodb_la-btr0cur.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-btr0cur.lo: btr/btr0cur.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-btr0cur.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-btr0cur.Tpo -c -o ha_innodb_plugin_la-btr0cur.lo `test -f 'btr/btr0cur.c' || echo '$(srcdir)/'`btr/btr0cur.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-btr0cur.Tpo $(DEPDIR)/ha_innodb_plugin_la-btr0cur.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='btr/btr0cur.c' object='ha_innodb_plugin_la-btr0cur.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-btr0cur.lo `test -f 'btr/btr0cur.c' || echo '$(srcdir)/'`btr/btr0cur.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-btr0cur.lo `test -f 'btr/btr0cur.c' || echo '$(srcdir)/'`btr/btr0cur.c -ha_innodb_la-btr0pcur.lo: btr/btr0pcur.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-btr0pcur.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-btr0pcur.Tpo -c -o ha_innodb_la-btr0pcur.lo `test -f 'btr/btr0pcur.c' || echo '$(srcdir)/'`btr/btr0pcur.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-btr0pcur.Tpo $(DEPDIR)/ha_innodb_la-btr0pcur.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='btr/btr0pcur.c' object='ha_innodb_la-btr0pcur.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-btr0pcur.lo: btr/btr0pcur.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-btr0pcur.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-btr0pcur.Tpo -c -o ha_innodb_plugin_la-btr0pcur.lo `test -f 'btr/btr0pcur.c' || echo '$(srcdir)/'`btr/btr0pcur.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-btr0pcur.Tpo $(DEPDIR)/ha_innodb_plugin_la-btr0pcur.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='btr/btr0pcur.c' object='ha_innodb_plugin_la-btr0pcur.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-btr0pcur.lo `test -f 'btr/btr0pcur.c' || echo '$(srcdir)/'`btr/btr0pcur.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-btr0pcur.lo `test -f 'btr/btr0pcur.c' || echo '$(srcdir)/'`btr/btr0pcur.c -ha_innodb_la-btr0sea.lo: btr/btr0sea.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-btr0sea.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-btr0sea.Tpo -c -o ha_innodb_la-btr0sea.lo `test -f 'btr/btr0sea.c' || echo '$(srcdir)/'`btr/btr0sea.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-btr0sea.Tpo $(DEPDIR)/ha_innodb_la-btr0sea.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='btr/btr0sea.c' object='ha_innodb_la-btr0sea.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-btr0sea.lo: btr/btr0sea.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-btr0sea.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-btr0sea.Tpo -c -o ha_innodb_plugin_la-btr0sea.lo `test -f 'btr/btr0sea.c' || echo '$(srcdir)/'`btr/btr0sea.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-btr0sea.Tpo $(DEPDIR)/ha_innodb_plugin_la-btr0sea.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='btr/btr0sea.c' object='ha_innodb_plugin_la-btr0sea.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-btr0sea.lo `test -f 'btr/btr0sea.c' || echo '$(srcdir)/'`btr/btr0sea.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-btr0sea.lo `test -f 'btr/btr0sea.c' || echo '$(srcdir)/'`btr/btr0sea.c -ha_innodb_la-buf0buddy.lo: buf/buf0buddy.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-buf0buddy.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-buf0buddy.Tpo -c -o ha_innodb_la-buf0buddy.lo `test -f 'buf/buf0buddy.c' || echo '$(srcdir)/'`buf/buf0buddy.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-buf0buddy.Tpo $(DEPDIR)/ha_innodb_la-buf0buddy.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='buf/buf0buddy.c' object='ha_innodb_la-buf0buddy.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-buf0buddy.lo: buf/buf0buddy.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-buf0buddy.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-buf0buddy.Tpo -c -o ha_innodb_plugin_la-buf0buddy.lo `test -f 'buf/buf0buddy.c' || echo '$(srcdir)/'`buf/buf0buddy.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-buf0buddy.Tpo $(DEPDIR)/ha_innodb_plugin_la-buf0buddy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='buf/buf0buddy.c' object='ha_innodb_plugin_la-buf0buddy.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-buf0buddy.lo `test -f 'buf/buf0buddy.c' || echo '$(srcdir)/'`buf/buf0buddy.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-buf0buddy.lo `test -f 'buf/buf0buddy.c' || echo '$(srcdir)/'`buf/buf0buddy.c -ha_innodb_la-buf0buf.lo: buf/buf0buf.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-buf0buf.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-buf0buf.Tpo -c -o ha_innodb_la-buf0buf.lo `test -f 'buf/buf0buf.c' || echo '$(srcdir)/'`buf/buf0buf.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-buf0buf.Tpo $(DEPDIR)/ha_innodb_la-buf0buf.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='buf/buf0buf.c' object='ha_innodb_la-buf0buf.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-buf0buf.lo: buf/buf0buf.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-buf0buf.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-buf0buf.Tpo -c -o ha_innodb_plugin_la-buf0buf.lo `test -f 'buf/buf0buf.c' || echo '$(srcdir)/'`buf/buf0buf.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-buf0buf.Tpo $(DEPDIR)/ha_innodb_plugin_la-buf0buf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='buf/buf0buf.c' object='ha_innodb_plugin_la-buf0buf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-buf0buf.lo `test -f 'buf/buf0buf.c' || echo '$(srcdir)/'`buf/buf0buf.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-buf0buf.lo `test -f 'buf/buf0buf.c' || echo '$(srcdir)/'`buf/buf0buf.c -ha_innodb_la-buf0flu.lo: buf/buf0flu.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-buf0flu.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-buf0flu.Tpo -c -o ha_innodb_la-buf0flu.lo `test -f 'buf/buf0flu.c' || echo '$(srcdir)/'`buf/buf0flu.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-buf0flu.Tpo $(DEPDIR)/ha_innodb_la-buf0flu.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='buf/buf0flu.c' object='ha_innodb_la-buf0flu.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-buf0flu.lo: buf/buf0flu.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-buf0flu.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-buf0flu.Tpo -c -o ha_innodb_plugin_la-buf0flu.lo `test -f 'buf/buf0flu.c' || echo '$(srcdir)/'`buf/buf0flu.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-buf0flu.Tpo $(DEPDIR)/ha_innodb_plugin_la-buf0flu.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='buf/buf0flu.c' object='ha_innodb_plugin_la-buf0flu.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-buf0flu.lo `test -f 'buf/buf0flu.c' || echo '$(srcdir)/'`buf/buf0flu.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-buf0flu.lo `test -f 'buf/buf0flu.c' || echo '$(srcdir)/'`buf/buf0flu.c -ha_innodb_la-buf0lru.lo: buf/buf0lru.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-buf0lru.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-buf0lru.Tpo -c -o ha_innodb_la-buf0lru.lo `test -f 'buf/buf0lru.c' || echo '$(srcdir)/'`buf/buf0lru.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-buf0lru.Tpo $(DEPDIR)/ha_innodb_la-buf0lru.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='buf/buf0lru.c' object='ha_innodb_la-buf0lru.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-buf0lru.lo: buf/buf0lru.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-buf0lru.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-buf0lru.Tpo -c -o ha_innodb_plugin_la-buf0lru.lo `test -f 'buf/buf0lru.c' || echo '$(srcdir)/'`buf/buf0lru.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-buf0lru.Tpo $(DEPDIR)/ha_innodb_plugin_la-buf0lru.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='buf/buf0lru.c' object='ha_innodb_plugin_la-buf0lru.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-buf0lru.lo `test -f 'buf/buf0lru.c' || echo '$(srcdir)/'`buf/buf0lru.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-buf0lru.lo `test -f 'buf/buf0lru.c' || echo '$(srcdir)/'`buf/buf0lru.c -ha_innodb_la-buf0rea.lo: buf/buf0rea.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-buf0rea.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-buf0rea.Tpo -c -o ha_innodb_la-buf0rea.lo `test -f 'buf/buf0rea.c' || echo '$(srcdir)/'`buf/buf0rea.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-buf0rea.Tpo $(DEPDIR)/ha_innodb_la-buf0rea.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='buf/buf0rea.c' object='ha_innodb_la-buf0rea.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-buf0rea.lo: buf/buf0rea.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-buf0rea.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-buf0rea.Tpo -c -o ha_innodb_plugin_la-buf0rea.lo `test -f 'buf/buf0rea.c' || echo '$(srcdir)/'`buf/buf0rea.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-buf0rea.Tpo $(DEPDIR)/ha_innodb_plugin_la-buf0rea.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='buf/buf0rea.c' object='ha_innodb_plugin_la-buf0rea.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-buf0rea.lo `test -f 'buf/buf0rea.c' || echo '$(srcdir)/'`buf/buf0rea.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-buf0rea.lo `test -f 'buf/buf0rea.c' || echo '$(srcdir)/'`buf/buf0rea.c -ha_innodb_la-data0data.lo: data/data0data.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-data0data.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-data0data.Tpo -c -o ha_innodb_la-data0data.lo `test -f 'data/data0data.c' || echo '$(srcdir)/'`data/data0data.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-data0data.Tpo $(DEPDIR)/ha_innodb_la-data0data.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='data/data0data.c' object='ha_innodb_la-data0data.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-data0data.lo: data/data0data.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-data0data.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-data0data.Tpo -c -o ha_innodb_plugin_la-data0data.lo `test -f 'data/data0data.c' || echo '$(srcdir)/'`data/data0data.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-data0data.Tpo $(DEPDIR)/ha_innodb_plugin_la-data0data.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='data/data0data.c' object='ha_innodb_plugin_la-data0data.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-data0data.lo `test -f 'data/data0data.c' || echo '$(srcdir)/'`data/data0data.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-data0data.lo `test -f 'data/data0data.c' || echo '$(srcdir)/'`data/data0data.c -ha_innodb_la-data0type.lo: data/data0type.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-data0type.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-data0type.Tpo -c -o ha_innodb_la-data0type.lo `test -f 'data/data0type.c' || echo '$(srcdir)/'`data/data0type.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-data0type.Tpo $(DEPDIR)/ha_innodb_la-data0type.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='data/data0type.c' object='ha_innodb_la-data0type.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-data0type.lo: data/data0type.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-data0type.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-data0type.Tpo -c -o ha_innodb_plugin_la-data0type.lo `test -f 'data/data0type.c' || echo '$(srcdir)/'`data/data0type.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-data0type.Tpo $(DEPDIR)/ha_innodb_plugin_la-data0type.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='data/data0type.c' object='ha_innodb_plugin_la-data0type.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-data0type.lo `test -f 'data/data0type.c' || echo '$(srcdir)/'`data/data0type.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-data0type.lo `test -f 'data/data0type.c' || echo '$(srcdir)/'`data/data0type.c -ha_innodb_la-dict0boot.lo: dict/dict0boot.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-dict0boot.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-dict0boot.Tpo -c -o ha_innodb_la-dict0boot.lo `test -f 'dict/dict0boot.c' || echo '$(srcdir)/'`dict/dict0boot.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-dict0boot.Tpo $(DEPDIR)/ha_innodb_la-dict0boot.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dict/dict0boot.c' object='ha_innodb_la-dict0boot.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-dict0boot.lo: dict/dict0boot.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-dict0boot.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-dict0boot.Tpo -c -o ha_innodb_plugin_la-dict0boot.lo `test -f 'dict/dict0boot.c' || echo '$(srcdir)/'`dict/dict0boot.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-dict0boot.Tpo $(DEPDIR)/ha_innodb_plugin_la-dict0boot.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dict/dict0boot.c' object='ha_innodb_plugin_la-dict0boot.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-dict0boot.lo `test -f 'dict/dict0boot.c' || echo '$(srcdir)/'`dict/dict0boot.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-dict0boot.lo `test -f 'dict/dict0boot.c' || echo '$(srcdir)/'`dict/dict0boot.c -ha_innodb_la-dict0crea.lo: dict/dict0crea.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-dict0crea.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-dict0crea.Tpo -c -o ha_innodb_la-dict0crea.lo `test -f 'dict/dict0crea.c' || echo '$(srcdir)/'`dict/dict0crea.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-dict0crea.Tpo $(DEPDIR)/ha_innodb_la-dict0crea.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dict/dict0crea.c' object='ha_innodb_la-dict0crea.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-dict0crea.lo: dict/dict0crea.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-dict0crea.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-dict0crea.Tpo -c -o ha_innodb_plugin_la-dict0crea.lo `test -f 'dict/dict0crea.c' || echo '$(srcdir)/'`dict/dict0crea.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-dict0crea.Tpo $(DEPDIR)/ha_innodb_plugin_la-dict0crea.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dict/dict0crea.c' object='ha_innodb_plugin_la-dict0crea.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-dict0crea.lo `test -f 'dict/dict0crea.c' || echo '$(srcdir)/'`dict/dict0crea.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-dict0crea.lo `test -f 'dict/dict0crea.c' || echo '$(srcdir)/'`dict/dict0crea.c -ha_innodb_la-dict0dict.lo: dict/dict0dict.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-dict0dict.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-dict0dict.Tpo -c -o ha_innodb_la-dict0dict.lo `test -f 'dict/dict0dict.c' || echo '$(srcdir)/'`dict/dict0dict.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-dict0dict.Tpo $(DEPDIR)/ha_innodb_la-dict0dict.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dict/dict0dict.c' object='ha_innodb_la-dict0dict.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-dict0dict.lo: dict/dict0dict.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-dict0dict.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-dict0dict.Tpo -c -o ha_innodb_plugin_la-dict0dict.lo `test -f 'dict/dict0dict.c' || echo '$(srcdir)/'`dict/dict0dict.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-dict0dict.Tpo $(DEPDIR)/ha_innodb_plugin_la-dict0dict.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dict/dict0dict.c' object='ha_innodb_plugin_la-dict0dict.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-dict0dict.lo `test -f 'dict/dict0dict.c' || echo '$(srcdir)/'`dict/dict0dict.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-dict0dict.lo `test -f 'dict/dict0dict.c' || echo '$(srcdir)/'`dict/dict0dict.c -ha_innodb_la-dict0load.lo: dict/dict0load.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-dict0load.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-dict0load.Tpo -c -o ha_innodb_la-dict0load.lo `test -f 'dict/dict0load.c' || echo '$(srcdir)/'`dict/dict0load.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-dict0load.Tpo $(DEPDIR)/ha_innodb_la-dict0load.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dict/dict0load.c' object='ha_innodb_la-dict0load.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-dict0load.lo: dict/dict0load.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-dict0load.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-dict0load.Tpo -c -o ha_innodb_plugin_la-dict0load.lo `test -f 'dict/dict0load.c' || echo '$(srcdir)/'`dict/dict0load.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-dict0load.Tpo $(DEPDIR)/ha_innodb_plugin_la-dict0load.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dict/dict0load.c' object='ha_innodb_plugin_la-dict0load.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-dict0load.lo `test -f 'dict/dict0load.c' || echo '$(srcdir)/'`dict/dict0load.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-dict0load.lo `test -f 'dict/dict0load.c' || echo '$(srcdir)/'`dict/dict0load.c -ha_innodb_la-dict0mem.lo: dict/dict0mem.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-dict0mem.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-dict0mem.Tpo -c -o ha_innodb_la-dict0mem.lo `test -f 'dict/dict0mem.c' || echo '$(srcdir)/'`dict/dict0mem.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-dict0mem.Tpo $(DEPDIR)/ha_innodb_la-dict0mem.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dict/dict0mem.c' object='ha_innodb_la-dict0mem.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-dict0mem.lo: dict/dict0mem.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-dict0mem.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-dict0mem.Tpo -c -o ha_innodb_plugin_la-dict0mem.lo `test -f 'dict/dict0mem.c' || echo '$(srcdir)/'`dict/dict0mem.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-dict0mem.Tpo $(DEPDIR)/ha_innodb_plugin_la-dict0mem.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dict/dict0mem.c' object='ha_innodb_plugin_la-dict0mem.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-dict0mem.lo `test -f 'dict/dict0mem.c' || echo '$(srcdir)/'`dict/dict0mem.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-dict0mem.lo `test -f 'dict/dict0mem.c' || echo '$(srcdir)/'`dict/dict0mem.c -ha_innodb_la-dyn0dyn.lo: dyn/dyn0dyn.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-dyn0dyn.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-dyn0dyn.Tpo -c -o ha_innodb_la-dyn0dyn.lo `test -f 'dyn/dyn0dyn.c' || echo '$(srcdir)/'`dyn/dyn0dyn.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-dyn0dyn.Tpo $(DEPDIR)/ha_innodb_la-dyn0dyn.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dyn/dyn0dyn.c' object='ha_innodb_la-dyn0dyn.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-dyn0dyn.lo: dyn/dyn0dyn.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-dyn0dyn.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-dyn0dyn.Tpo -c -o ha_innodb_plugin_la-dyn0dyn.lo `test -f 'dyn/dyn0dyn.c' || echo '$(srcdir)/'`dyn/dyn0dyn.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-dyn0dyn.Tpo $(DEPDIR)/ha_innodb_plugin_la-dyn0dyn.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dyn/dyn0dyn.c' object='ha_innodb_plugin_la-dyn0dyn.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-dyn0dyn.lo `test -f 'dyn/dyn0dyn.c' || echo '$(srcdir)/'`dyn/dyn0dyn.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-dyn0dyn.lo `test -f 'dyn/dyn0dyn.c' || echo '$(srcdir)/'`dyn/dyn0dyn.c -ha_innodb_la-eval0eval.lo: eval/eval0eval.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-eval0eval.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-eval0eval.Tpo -c -o ha_innodb_la-eval0eval.lo `test -f 'eval/eval0eval.c' || echo '$(srcdir)/'`eval/eval0eval.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-eval0eval.Tpo $(DEPDIR)/ha_innodb_la-eval0eval.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eval/eval0eval.c' object='ha_innodb_la-eval0eval.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-eval0eval.lo: eval/eval0eval.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-eval0eval.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-eval0eval.Tpo -c -o ha_innodb_plugin_la-eval0eval.lo `test -f 'eval/eval0eval.c' || echo '$(srcdir)/'`eval/eval0eval.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-eval0eval.Tpo $(DEPDIR)/ha_innodb_plugin_la-eval0eval.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eval/eval0eval.c' object='ha_innodb_plugin_la-eval0eval.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-eval0eval.lo `test -f 'eval/eval0eval.c' || echo '$(srcdir)/'`eval/eval0eval.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-eval0eval.lo `test -f 'eval/eval0eval.c' || echo '$(srcdir)/'`eval/eval0eval.c -ha_innodb_la-eval0proc.lo: eval/eval0proc.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-eval0proc.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-eval0proc.Tpo -c -o ha_innodb_la-eval0proc.lo `test -f 'eval/eval0proc.c' || echo '$(srcdir)/'`eval/eval0proc.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-eval0proc.Tpo $(DEPDIR)/ha_innodb_la-eval0proc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eval/eval0proc.c' object='ha_innodb_la-eval0proc.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-eval0proc.lo: eval/eval0proc.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-eval0proc.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-eval0proc.Tpo -c -o ha_innodb_plugin_la-eval0proc.lo `test -f 'eval/eval0proc.c' || echo '$(srcdir)/'`eval/eval0proc.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-eval0proc.Tpo $(DEPDIR)/ha_innodb_plugin_la-eval0proc.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eval/eval0proc.c' object='ha_innodb_plugin_la-eval0proc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-eval0proc.lo `test -f 'eval/eval0proc.c' || echo '$(srcdir)/'`eval/eval0proc.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-eval0proc.lo `test -f 'eval/eval0proc.c' || echo '$(srcdir)/'`eval/eval0proc.c -ha_innodb_la-fil0fil.lo: fil/fil0fil.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-fil0fil.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-fil0fil.Tpo -c -o ha_innodb_la-fil0fil.lo `test -f 'fil/fil0fil.c' || echo '$(srcdir)/'`fil/fil0fil.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-fil0fil.Tpo $(DEPDIR)/ha_innodb_la-fil0fil.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fil/fil0fil.c' object='ha_innodb_la-fil0fil.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-fil0fil.lo: fil/fil0fil.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-fil0fil.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-fil0fil.Tpo -c -o ha_innodb_plugin_la-fil0fil.lo `test -f 'fil/fil0fil.c' || echo '$(srcdir)/'`fil/fil0fil.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-fil0fil.Tpo $(DEPDIR)/ha_innodb_plugin_la-fil0fil.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fil/fil0fil.c' object='ha_innodb_plugin_la-fil0fil.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-fil0fil.lo `test -f 'fil/fil0fil.c' || echo '$(srcdir)/'`fil/fil0fil.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-fil0fil.lo `test -f 'fil/fil0fil.c' || echo '$(srcdir)/'`fil/fil0fil.c -ha_innodb_la-fsp0fsp.lo: fsp/fsp0fsp.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-fsp0fsp.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-fsp0fsp.Tpo -c -o ha_innodb_la-fsp0fsp.lo `test -f 'fsp/fsp0fsp.c' || echo '$(srcdir)/'`fsp/fsp0fsp.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-fsp0fsp.Tpo $(DEPDIR)/ha_innodb_la-fsp0fsp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsp/fsp0fsp.c' object='ha_innodb_la-fsp0fsp.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-fsp0fsp.lo: fsp/fsp0fsp.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-fsp0fsp.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-fsp0fsp.Tpo -c -o ha_innodb_plugin_la-fsp0fsp.lo `test -f 'fsp/fsp0fsp.c' || echo '$(srcdir)/'`fsp/fsp0fsp.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-fsp0fsp.Tpo $(DEPDIR)/ha_innodb_plugin_la-fsp0fsp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fsp/fsp0fsp.c' object='ha_innodb_plugin_la-fsp0fsp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-fsp0fsp.lo `test -f 'fsp/fsp0fsp.c' || echo '$(srcdir)/'`fsp/fsp0fsp.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-fsp0fsp.lo `test -f 'fsp/fsp0fsp.c' || echo '$(srcdir)/'`fsp/fsp0fsp.c -ha_innodb_la-fut0fut.lo: fut/fut0fut.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-fut0fut.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-fut0fut.Tpo -c -o ha_innodb_la-fut0fut.lo `test -f 'fut/fut0fut.c' || echo '$(srcdir)/'`fut/fut0fut.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-fut0fut.Tpo $(DEPDIR)/ha_innodb_la-fut0fut.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fut/fut0fut.c' object='ha_innodb_la-fut0fut.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-fut0fut.lo: fut/fut0fut.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-fut0fut.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-fut0fut.Tpo -c -o ha_innodb_plugin_la-fut0fut.lo `test -f 'fut/fut0fut.c' || echo '$(srcdir)/'`fut/fut0fut.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-fut0fut.Tpo $(DEPDIR)/ha_innodb_plugin_la-fut0fut.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fut/fut0fut.c' object='ha_innodb_plugin_la-fut0fut.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-fut0fut.lo `test -f 'fut/fut0fut.c' || echo '$(srcdir)/'`fut/fut0fut.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-fut0fut.lo `test -f 'fut/fut0fut.c' || echo '$(srcdir)/'`fut/fut0fut.c -ha_innodb_la-fut0lst.lo: fut/fut0lst.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-fut0lst.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-fut0lst.Tpo -c -o ha_innodb_la-fut0lst.lo `test -f 'fut/fut0lst.c' || echo '$(srcdir)/'`fut/fut0lst.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-fut0lst.Tpo $(DEPDIR)/ha_innodb_la-fut0lst.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fut/fut0lst.c' object='ha_innodb_la-fut0lst.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-fut0lst.lo: fut/fut0lst.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-fut0lst.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-fut0lst.Tpo -c -o ha_innodb_plugin_la-fut0lst.lo `test -f 'fut/fut0lst.c' || echo '$(srcdir)/'`fut/fut0lst.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-fut0lst.Tpo $(DEPDIR)/ha_innodb_plugin_la-fut0lst.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fut/fut0lst.c' object='ha_innodb_plugin_la-fut0lst.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-fut0lst.lo `test -f 'fut/fut0lst.c' || echo '$(srcdir)/'`fut/fut0lst.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-fut0lst.lo `test -f 'fut/fut0lst.c' || echo '$(srcdir)/'`fut/fut0lst.c -ha_innodb_la-ha0ha.lo: ha/ha0ha.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-ha0ha.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ha0ha.Tpo -c -o ha_innodb_la-ha0ha.lo `test -f 'ha/ha0ha.c' || echo '$(srcdir)/'`ha/ha0ha.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ha0ha.Tpo $(DEPDIR)/ha_innodb_la-ha0ha.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ha/ha0ha.c' object='ha_innodb_la-ha0ha.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ha0ha.lo: ha/ha0ha.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ha0ha.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ha0ha.Tpo -c -o ha_innodb_plugin_la-ha0ha.lo `test -f 'ha/ha0ha.c' || echo '$(srcdir)/'`ha/ha0ha.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ha0ha.Tpo $(DEPDIR)/ha_innodb_plugin_la-ha0ha.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ha/ha0ha.c' object='ha_innodb_plugin_la-ha0ha.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-ha0ha.lo `test -f 'ha/ha0ha.c' || echo '$(srcdir)/'`ha/ha0ha.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ha0ha.lo `test -f 'ha/ha0ha.c' || echo '$(srcdir)/'`ha/ha0ha.c -ha_innodb_la-ha0storage.lo: ha/ha0storage.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-ha0storage.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ha0storage.Tpo -c -o ha_innodb_la-ha0storage.lo `test -f 'ha/ha0storage.c' || echo '$(srcdir)/'`ha/ha0storage.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ha0storage.Tpo $(DEPDIR)/ha_innodb_la-ha0storage.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ha/ha0storage.c' object='ha_innodb_la-ha0storage.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ha0storage.lo: ha/ha0storage.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ha0storage.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ha0storage.Tpo -c -o ha_innodb_plugin_la-ha0storage.lo `test -f 'ha/ha0storage.c' || echo '$(srcdir)/'`ha/ha0storage.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ha0storage.Tpo $(DEPDIR)/ha_innodb_plugin_la-ha0storage.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ha/ha0storage.c' object='ha_innodb_plugin_la-ha0storage.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-ha0storage.lo `test -f 'ha/ha0storage.c' || echo '$(srcdir)/'`ha/ha0storage.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ha0storage.lo `test -f 'ha/ha0storage.c' || echo '$(srcdir)/'`ha/ha0storage.c -ha_innodb_la-hash0hash.lo: ha/hash0hash.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-hash0hash.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-hash0hash.Tpo -c -o ha_innodb_la-hash0hash.lo `test -f 'ha/hash0hash.c' || echo '$(srcdir)/'`ha/hash0hash.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-hash0hash.Tpo $(DEPDIR)/ha_innodb_la-hash0hash.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ha/hash0hash.c' object='ha_innodb_la-hash0hash.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-hash0hash.lo: ha/hash0hash.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-hash0hash.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-hash0hash.Tpo -c -o ha_innodb_plugin_la-hash0hash.lo `test -f 'ha/hash0hash.c' || echo '$(srcdir)/'`ha/hash0hash.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-hash0hash.Tpo $(DEPDIR)/ha_innodb_plugin_la-hash0hash.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ha/hash0hash.c' object='ha_innodb_plugin_la-hash0hash.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-hash0hash.lo `test -f 'ha/hash0hash.c' || echo '$(srcdir)/'`ha/hash0hash.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-hash0hash.lo `test -f 'ha/hash0hash.c' || echo '$(srcdir)/'`ha/hash0hash.c -ha_innodb_la-ibuf0ibuf.lo: ibuf/ibuf0ibuf.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-ibuf0ibuf.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ibuf0ibuf.Tpo -c -o ha_innodb_la-ibuf0ibuf.lo `test -f 'ibuf/ibuf0ibuf.c' || echo '$(srcdir)/'`ibuf/ibuf0ibuf.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ibuf0ibuf.Tpo $(DEPDIR)/ha_innodb_la-ibuf0ibuf.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ibuf/ibuf0ibuf.c' object='ha_innodb_la-ibuf0ibuf.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ibuf0ibuf.lo: ibuf/ibuf0ibuf.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ibuf0ibuf.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ibuf0ibuf.Tpo -c -o ha_innodb_plugin_la-ibuf0ibuf.lo `test -f 'ibuf/ibuf0ibuf.c' || echo '$(srcdir)/'`ibuf/ibuf0ibuf.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ibuf0ibuf.Tpo $(DEPDIR)/ha_innodb_plugin_la-ibuf0ibuf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ibuf/ibuf0ibuf.c' object='ha_innodb_plugin_la-ibuf0ibuf.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-ibuf0ibuf.lo `test -f 'ibuf/ibuf0ibuf.c' || echo '$(srcdir)/'`ibuf/ibuf0ibuf.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ibuf0ibuf.lo `test -f 'ibuf/ibuf0ibuf.c' || echo '$(srcdir)/'`ibuf/ibuf0ibuf.c -ha_innodb_la-lock0iter.lo: lock/lock0iter.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-lock0iter.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-lock0iter.Tpo -c -o ha_innodb_la-lock0iter.lo `test -f 'lock/lock0iter.c' || echo '$(srcdir)/'`lock/lock0iter.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-lock0iter.Tpo $(DEPDIR)/ha_innodb_la-lock0iter.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lock/lock0iter.c' object='ha_innodb_la-lock0iter.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-lock0iter.lo: lock/lock0iter.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-lock0iter.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-lock0iter.Tpo -c -o ha_innodb_plugin_la-lock0iter.lo `test -f 'lock/lock0iter.c' || echo '$(srcdir)/'`lock/lock0iter.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-lock0iter.Tpo $(DEPDIR)/ha_innodb_plugin_la-lock0iter.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lock/lock0iter.c' object='ha_innodb_plugin_la-lock0iter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-lock0iter.lo `test -f 'lock/lock0iter.c' || echo '$(srcdir)/'`lock/lock0iter.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-lock0iter.lo `test -f 'lock/lock0iter.c' || echo '$(srcdir)/'`lock/lock0iter.c -ha_innodb_la-lock0lock.lo: lock/lock0lock.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-lock0lock.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-lock0lock.Tpo -c -o ha_innodb_la-lock0lock.lo `test -f 'lock/lock0lock.c' || echo '$(srcdir)/'`lock/lock0lock.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-lock0lock.Tpo $(DEPDIR)/ha_innodb_la-lock0lock.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lock/lock0lock.c' object='ha_innodb_la-lock0lock.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-lock0lock.lo: lock/lock0lock.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-lock0lock.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-lock0lock.Tpo -c -o ha_innodb_plugin_la-lock0lock.lo `test -f 'lock/lock0lock.c' || echo '$(srcdir)/'`lock/lock0lock.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-lock0lock.Tpo $(DEPDIR)/ha_innodb_plugin_la-lock0lock.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lock/lock0lock.c' object='ha_innodb_plugin_la-lock0lock.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-lock0lock.lo `test -f 'lock/lock0lock.c' || echo '$(srcdir)/'`lock/lock0lock.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-lock0lock.lo `test -f 'lock/lock0lock.c' || echo '$(srcdir)/'`lock/lock0lock.c -ha_innodb_la-log0log.lo: log/log0log.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-log0log.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-log0log.Tpo -c -o ha_innodb_la-log0log.lo `test -f 'log/log0log.c' || echo '$(srcdir)/'`log/log0log.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-log0log.Tpo $(DEPDIR)/ha_innodb_la-log0log.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='log/log0log.c' object='ha_innodb_la-log0log.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-log0log.lo: log/log0log.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-log0log.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-log0log.Tpo -c -o ha_innodb_plugin_la-log0log.lo `test -f 'log/log0log.c' || echo '$(srcdir)/'`log/log0log.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-log0log.Tpo $(DEPDIR)/ha_innodb_plugin_la-log0log.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='log/log0log.c' object='ha_innodb_plugin_la-log0log.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-log0log.lo `test -f 'log/log0log.c' || echo '$(srcdir)/'`log/log0log.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-log0log.lo `test -f 'log/log0log.c' || echo '$(srcdir)/'`log/log0log.c -ha_innodb_la-log0recv.lo: log/log0recv.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-log0recv.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-log0recv.Tpo -c -o ha_innodb_la-log0recv.lo `test -f 'log/log0recv.c' || echo '$(srcdir)/'`log/log0recv.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-log0recv.Tpo $(DEPDIR)/ha_innodb_la-log0recv.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='log/log0recv.c' object='ha_innodb_la-log0recv.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-log0recv.lo: log/log0recv.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-log0recv.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-log0recv.Tpo -c -o ha_innodb_plugin_la-log0recv.lo `test -f 'log/log0recv.c' || echo '$(srcdir)/'`log/log0recv.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-log0recv.Tpo $(DEPDIR)/ha_innodb_plugin_la-log0recv.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='log/log0recv.c' object='ha_innodb_plugin_la-log0recv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-log0recv.lo `test -f 'log/log0recv.c' || echo '$(srcdir)/'`log/log0recv.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-log0recv.lo `test -f 'log/log0recv.c' || echo '$(srcdir)/'`log/log0recv.c -ha_innodb_la-mach0data.lo: mach/mach0data.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-mach0data.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-mach0data.Tpo -c -o ha_innodb_la-mach0data.lo `test -f 'mach/mach0data.c' || echo '$(srcdir)/'`mach/mach0data.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-mach0data.Tpo $(DEPDIR)/ha_innodb_la-mach0data.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mach/mach0data.c' object='ha_innodb_la-mach0data.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-mach0data.lo: mach/mach0data.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-mach0data.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-mach0data.Tpo -c -o ha_innodb_plugin_la-mach0data.lo `test -f 'mach/mach0data.c' || echo '$(srcdir)/'`mach/mach0data.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-mach0data.Tpo $(DEPDIR)/ha_innodb_plugin_la-mach0data.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mach/mach0data.c' object='ha_innodb_plugin_la-mach0data.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-mach0data.lo `test -f 'mach/mach0data.c' || echo '$(srcdir)/'`mach/mach0data.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-mach0data.lo `test -f 'mach/mach0data.c' || echo '$(srcdir)/'`mach/mach0data.c -ha_innodb_la-mem0mem.lo: mem/mem0mem.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-mem0mem.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-mem0mem.Tpo -c -o ha_innodb_la-mem0mem.lo `test -f 'mem/mem0mem.c' || echo '$(srcdir)/'`mem/mem0mem.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-mem0mem.Tpo $(DEPDIR)/ha_innodb_la-mem0mem.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mem/mem0mem.c' object='ha_innodb_la-mem0mem.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-mem0mem.lo: mem/mem0mem.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-mem0mem.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-mem0mem.Tpo -c -o ha_innodb_plugin_la-mem0mem.lo `test -f 'mem/mem0mem.c' || echo '$(srcdir)/'`mem/mem0mem.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-mem0mem.Tpo $(DEPDIR)/ha_innodb_plugin_la-mem0mem.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mem/mem0mem.c' object='ha_innodb_plugin_la-mem0mem.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-mem0mem.lo `test -f 'mem/mem0mem.c' || echo '$(srcdir)/'`mem/mem0mem.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-mem0mem.lo `test -f 'mem/mem0mem.c' || echo '$(srcdir)/'`mem/mem0mem.c -ha_innodb_la-mem0pool.lo: mem/mem0pool.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-mem0pool.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-mem0pool.Tpo -c -o ha_innodb_la-mem0pool.lo `test -f 'mem/mem0pool.c' || echo '$(srcdir)/'`mem/mem0pool.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-mem0pool.Tpo $(DEPDIR)/ha_innodb_la-mem0pool.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mem/mem0pool.c' object='ha_innodb_la-mem0pool.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-mem0pool.lo: mem/mem0pool.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-mem0pool.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-mem0pool.Tpo -c -o ha_innodb_plugin_la-mem0pool.lo `test -f 'mem/mem0pool.c' || echo '$(srcdir)/'`mem/mem0pool.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-mem0pool.Tpo $(DEPDIR)/ha_innodb_plugin_la-mem0pool.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mem/mem0pool.c' object='ha_innodb_plugin_la-mem0pool.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-mem0pool.lo `test -f 'mem/mem0pool.c' || echo '$(srcdir)/'`mem/mem0pool.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-mem0pool.lo `test -f 'mem/mem0pool.c' || echo '$(srcdir)/'`mem/mem0pool.c -ha_innodb_la-mtr0log.lo: mtr/mtr0log.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-mtr0log.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-mtr0log.Tpo -c -o ha_innodb_la-mtr0log.lo `test -f 'mtr/mtr0log.c' || echo '$(srcdir)/'`mtr/mtr0log.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-mtr0log.Tpo $(DEPDIR)/ha_innodb_la-mtr0log.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mtr/mtr0log.c' object='ha_innodb_la-mtr0log.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-mtr0log.lo: mtr/mtr0log.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-mtr0log.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-mtr0log.Tpo -c -o ha_innodb_plugin_la-mtr0log.lo `test -f 'mtr/mtr0log.c' || echo '$(srcdir)/'`mtr/mtr0log.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-mtr0log.Tpo $(DEPDIR)/ha_innodb_plugin_la-mtr0log.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mtr/mtr0log.c' object='ha_innodb_plugin_la-mtr0log.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-mtr0log.lo `test -f 'mtr/mtr0log.c' || echo '$(srcdir)/'`mtr/mtr0log.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-mtr0log.lo `test -f 'mtr/mtr0log.c' || echo '$(srcdir)/'`mtr/mtr0log.c -ha_innodb_la-mtr0mtr.lo: mtr/mtr0mtr.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-mtr0mtr.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-mtr0mtr.Tpo -c -o ha_innodb_la-mtr0mtr.lo `test -f 'mtr/mtr0mtr.c' || echo '$(srcdir)/'`mtr/mtr0mtr.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-mtr0mtr.Tpo $(DEPDIR)/ha_innodb_la-mtr0mtr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mtr/mtr0mtr.c' object='ha_innodb_la-mtr0mtr.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-mtr0mtr.lo: mtr/mtr0mtr.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-mtr0mtr.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-mtr0mtr.Tpo -c -o ha_innodb_plugin_la-mtr0mtr.lo `test -f 'mtr/mtr0mtr.c' || echo '$(srcdir)/'`mtr/mtr0mtr.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-mtr0mtr.Tpo $(DEPDIR)/ha_innodb_plugin_la-mtr0mtr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mtr/mtr0mtr.c' object='ha_innodb_plugin_la-mtr0mtr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-mtr0mtr.lo `test -f 'mtr/mtr0mtr.c' || echo '$(srcdir)/'`mtr/mtr0mtr.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-mtr0mtr.lo `test -f 'mtr/mtr0mtr.c' || echo '$(srcdir)/'`mtr/mtr0mtr.c -ha_innodb_la-os0file.lo: os/os0file.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-os0file.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-os0file.Tpo -c -o ha_innodb_la-os0file.lo `test -f 'os/os0file.c' || echo '$(srcdir)/'`os/os0file.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-os0file.Tpo $(DEPDIR)/ha_innodb_la-os0file.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/os0file.c' object='ha_innodb_la-os0file.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-os0file.lo: os/os0file.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-os0file.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-os0file.Tpo -c -o ha_innodb_plugin_la-os0file.lo `test -f 'os/os0file.c' || echo '$(srcdir)/'`os/os0file.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-os0file.Tpo $(DEPDIR)/ha_innodb_plugin_la-os0file.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/os0file.c' object='ha_innodb_plugin_la-os0file.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-os0file.lo `test -f 'os/os0file.c' || echo '$(srcdir)/'`os/os0file.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-os0file.lo `test -f 'os/os0file.c' || echo '$(srcdir)/'`os/os0file.c -ha_innodb_la-os0proc.lo: os/os0proc.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-os0proc.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-os0proc.Tpo -c -o ha_innodb_la-os0proc.lo `test -f 'os/os0proc.c' || echo '$(srcdir)/'`os/os0proc.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-os0proc.Tpo $(DEPDIR)/ha_innodb_la-os0proc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/os0proc.c' object='ha_innodb_la-os0proc.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-os0proc.lo: os/os0proc.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-os0proc.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-os0proc.Tpo -c -o ha_innodb_plugin_la-os0proc.lo `test -f 'os/os0proc.c' || echo '$(srcdir)/'`os/os0proc.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-os0proc.Tpo $(DEPDIR)/ha_innodb_plugin_la-os0proc.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/os0proc.c' object='ha_innodb_plugin_la-os0proc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-os0proc.lo `test -f 'os/os0proc.c' || echo '$(srcdir)/'`os/os0proc.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-os0proc.lo `test -f 'os/os0proc.c' || echo '$(srcdir)/'`os/os0proc.c -ha_innodb_la-os0sync.lo: os/os0sync.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-os0sync.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-os0sync.Tpo -c -o ha_innodb_la-os0sync.lo `test -f 'os/os0sync.c' || echo '$(srcdir)/'`os/os0sync.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-os0sync.Tpo $(DEPDIR)/ha_innodb_la-os0sync.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/os0sync.c' object='ha_innodb_la-os0sync.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-os0sync.lo: os/os0sync.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-os0sync.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-os0sync.Tpo -c -o ha_innodb_plugin_la-os0sync.lo `test -f 'os/os0sync.c' || echo '$(srcdir)/'`os/os0sync.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-os0sync.Tpo $(DEPDIR)/ha_innodb_plugin_la-os0sync.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/os0sync.c' object='ha_innodb_plugin_la-os0sync.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-os0sync.lo `test -f 'os/os0sync.c' || echo '$(srcdir)/'`os/os0sync.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-os0sync.lo `test -f 'os/os0sync.c' || echo '$(srcdir)/'`os/os0sync.c -ha_innodb_la-os0thread.lo: os/os0thread.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-os0thread.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-os0thread.Tpo -c -o ha_innodb_la-os0thread.lo `test -f 'os/os0thread.c' || echo '$(srcdir)/'`os/os0thread.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-os0thread.Tpo $(DEPDIR)/ha_innodb_la-os0thread.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/os0thread.c' object='ha_innodb_la-os0thread.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-os0thread.lo: os/os0thread.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-os0thread.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-os0thread.Tpo -c -o ha_innodb_plugin_la-os0thread.lo `test -f 'os/os0thread.c' || echo '$(srcdir)/'`os/os0thread.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-os0thread.Tpo $(DEPDIR)/ha_innodb_plugin_la-os0thread.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os/os0thread.c' object='ha_innodb_plugin_la-os0thread.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-os0thread.lo `test -f 'os/os0thread.c' || echo '$(srcdir)/'`os/os0thread.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-os0thread.lo `test -f 'os/os0thread.c' || echo '$(srcdir)/'`os/os0thread.c -ha_innodb_la-page0cur.lo: page/page0cur.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-page0cur.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-page0cur.Tpo -c -o ha_innodb_la-page0cur.lo `test -f 'page/page0cur.c' || echo '$(srcdir)/'`page/page0cur.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-page0cur.Tpo $(DEPDIR)/ha_innodb_la-page0cur.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='page/page0cur.c' object='ha_innodb_la-page0cur.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-page0cur.lo: page/page0cur.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-page0cur.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-page0cur.Tpo -c -o ha_innodb_plugin_la-page0cur.lo `test -f 'page/page0cur.c' || echo '$(srcdir)/'`page/page0cur.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-page0cur.Tpo $(DEPDIR)/ha_innodb_plugin_la-page0cur.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='page/page0cur.c' object='ha_innodb_plugin_la-page0cur.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-page0cur.lo `test -f 'page/page0cur.c' || echo '$(srcdir)/'`page/page0cur.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-page0cur.lo `test -f 'page/page0cur.c' || echo '$(srcdir)/'`page/page0cur.c -ha_innodb_la-page0page.lo: page/page0page.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-page0page.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-page0page.Tpo -c -o ha_innodb_la-page0page.lo `test -f 'page/page0page.c' || echo '$(srcdir)/'`page/page0page.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-page0page.Tpo $(DEPDIR)/ha_innodb_la-page0page.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='page/page0page.c' object='ha_innodb_la-page0page.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-page0page.lo: page/page0page.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-page0page.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-page0page.Tpo -c -o ha_innodb_plugin_la-page0page.lo `test -f 'page/page0page.c' || echo '$(srcdir)/'`page/page0page.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-page0page.Tpo $(DEPDIR)/ha_innodb_plugin_la-page0page.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='page/page0page.c' object='ha_innodb_plugin_la-page0page.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-page0page.lo `test -f 'page/page0page.c' || echo '$(srcdir)/'`page/page0page.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-page0page.lo `test -f 'page/page0page.c' || echo '$(srcdir)/'`page/page0page.c -ha_innodb_la-page0zip.lo: page/page0zip.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-page0zip.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-page0zip.Tpo -c -o ha_innodb_la-page0zip.lo `test -f 'page/page0zip.c' || echo '$(srcdir)/'`page/page0zip.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-page0zip.Tpo $(DEPDIR)/ha_innodb_la-page0zip.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='page/page0zip.c' object='ha_innodb_la-page0zip.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-page0zip.lo: page/page0zip.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-page0zip.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-page0zip.Tpo -c -o ha_innodb_plugin_la-page0zip.lo `test -f 'page/page0zip.c' || echo '$(srcdir)/'`page/page0zip.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-page0zip.Tpo $(DEPDIR)/ha_innodb_plugin_la-page0zip.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='page/page0zip.c' object='ha_innodb_plugin_la-page0zip.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-page0zip.lo `test -f 'page/page0zip.c' || echo '$(srcdir)/'`page/page0zip.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-page0zip.lo `test -f 'page/page0zip.c' || echo '$(srcdir)/'`page/page0zip.c -ha_innodb_la-lexyy.lo: pars/lexyy.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-lexyy.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-lexyy.Tpo -c -o ha_innodb_la-lexyy.lo `test -f 'pars/lexyy.c' || echo '$(srcdir)/'`pars/lexyy.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-lexyy.Tpo $(DEPDIR)/ha_innodb_la-lexyy.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pars/lexyy.c' object='ha_innodb_la-lexyy.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-lexyy.lo: pars/lexyy.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-lexyy.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-lexyy.Tpo -c -o ha_innodb_plugin_la-lexyy.lo `test -f 'pars/lexyy.c' || echo '$(srcdir)/'`pars/lexyy.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-lexyy.Tpo $(DEPDIR)/ha_innodb_plugin_la-lexyy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pars/lexyy.c' object='ha_innodb_plugin_la-lexyy.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-lexyy.lo `test -f 'pars/lexyy.c' || echo '$(srcdir)/'`pars/lexyy.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-lexyy.lo `test -f 'pars/lexyy.c' || echo '$(srcdir)/'`pars/lexyy.c -ha_innodb_la-pars0grm.lo: pars/pars0grm.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-pars0grm.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-pars0grm.Tpo -c -o ha_innodb_la-pars0grm.lo `test -f 'pars/pars0grm.c' || echo '$(srcdir)/'`pars/pars0grm.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-pars0grm.Tpo $(DEPDIR)/ha_innodb_la-pars0grm.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pars/pars0grm.c' object='ha_innodb_la-pars0grm.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-pars0grm.lo: pars/pars0grm.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-pars0grm.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-pars0grm.Tpo -c -o ha_innodb_plugin_la-pars0grm.lo `test -f 'pars/pars0grm.c' || echo '$(srcdir)/'`pars/pars0grm.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-pars0grm.Tpo $(DEPDIR)/ha_innodb_plugin_la-pars0grm.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pars/pars0grm.c' object='ha_innodb_plugin_la-pars0grm.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-pars0grm.lo `test -f 'pars/pars0grm.c' || echo '$(srcdir)/'`pars/pars0grm.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-pars0grm.lo `test -f 'pars/pars0grm.c' || echo '$(srcdir)/'`pars/pars0grm.c -ha_innodb_la-pars0opt.lo: pars/pars0opt.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-pars0opt.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-pars0opt.Tpo -c -o ha_innodb_la-pars0opt.lo `test -f 'pars/pars0opt.c' || echo '$(srcdir)/'`pars/pars0opt.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-pars0opt.Tpo $(DEPDIR)/ha_innodb_la-pars0opt.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pars/pars0opt.c' object='ha_innodb_la-pars0opt.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-pars0opt.lo: pars/pars0opt.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-pars0opt.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-pars0opt.Tpo -c -o ha_innodb_plugin_la-pars0opt.lo `test -f 'pars/pars0opt.c' || echo '$(srcdir)/'`pars/pars0opt.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-pars0opt.Tpo $(DEPDIR)/ha_innodb_plugin_la-pars0opt.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pars/pars0opt.c' object='ha_innodb_plugin_la-pars0opt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-pars0opt.lo `test -f 'pars/pars0opt.c' || echo '$(srcdir)/'`pars/pars0opt.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-pars0opt.lo `test -f 'pars/pars0opt.c' || echo '$(srcdir)/'`pars/pars0opt.c -ha_innodb_la-pars0pars.lo: pars/pars0pars.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-pars0pars.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-pars0pars.Tpo -c -o ha_innodb_la-pars0pars.lo `test -f 'pars/pars0pars.c' || echo '$(srcdir)/'`pars/pars0pars.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-pars0pars.Tpo $(DEPDIR)/ha_innodb_la-pars0pars.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pars/pars0pars.c' object='ha_innodb_la-pars0pars.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-pars0pars.lo: pars/pars0pars.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-pars0pars.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-pars0pars.Tpo -c -o ha_innodb_plugin_la-pars0pars.lo `test -f 'pars/pars0pars.c' || echo '$(srcdir)/'`pars/pars0pars.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-pars0pars.Tpo $(DEPDIR)/ha_innodb_plugin_la-pars0pars.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pars/pars0pars.c' object='ha_innodb_plugin_la-pars0pars.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-pars0pars.lo `test -f 'pars/pars0pars.c' || echo '$(srcdir)/'`pars/pars0pars.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-pars0pars.lo `test -f 'pars/pars0pars.c' || echo '$(srcdir)/'`pars/pars0pars.c -ha_innodb_la-pars0sym.lo: pars/pars0sym.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-pars0sym.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-pars0sym.Tpo -c -o ha_innodb_la-pars0sym.lo `test -f 'pars/pars0sym.c' || echo '$(srcdir)/'`pars/pars0sym.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-pars0sym.Tpo $(DEPDIR)/ha_innodb_la-pars0sym.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pars/pars0sym.c' object='ha_innodb_la-pars0sym.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-pars0sym.lo: pars/pars0sym.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-pars0sym.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-pars0sym.Tpo -c -o ha_innodb_plugin_la-pars0sym.lo `test -f 'pars/pars0sym.c' || echo '$(srcdir)/'`pars/pars0sym.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-pars0sym.Tpo $(DEPDIR)/ha_innodb_plugin_la-pars0sym.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pars/pars0sym.c' object='ha_innodb_plugin_la-pars0sym.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-pars0sym.lo `test -f 'pars/pars0sym.c' || echo '$(srcdir)/'`pars/pars0sym.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-pars0sym.lo `test -f 'pars/pars0sym.c' || echo '$(srcdir)/'`pars/pars0sym.c -ha_innodb_la-que0que.lo: que/que0que.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-que0que.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-que0que.Tpo -c -o ha_innodb_la-que0que.lo `test -f 'que/que0que.c' || echo '$(srcdir)/'`que/que0que.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-que0que.Tpo $(DEPDIR)/ha_innodb_la-que0que.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='que/que0que.c' object='ha_innodb_la-que0que.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-que0que.lo: que/que0que.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-que0que.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-que0que.Tpo -c -o ha_innodb_plugin_la-que0que.lo `test -f 'que/que0que.c' || echo '$(srcdir)/'`que/que0que.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-que0que.Tpo $(DEPDIR)/ha_innodb_plugin_la-que0que.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='que/que0que.c' object='ha_innodb_plugin_la-que0que.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-que0que.lo `test -f 'que/que0que.c' || echo '$(srcdir)/'`que/que0que.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-que0que.lo `test -f 'que/que0que.c' || echo '$(srcdir)/'`que/que0que.c -ha_innodb_la-read0read.lo: read/read0read.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-read0read.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-read0read.Tpo -c -o ha_innodb_la-read0read.lo `test -f 'read/read0read.c' || echo '$(srcdir)/'`read/read0read.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-read0read.Tpo $(DEPDIR)/ha_innodb_la-read0read.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='read/read0read.c' object='ha_innodb_la-read0read.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-read0read.lo: read/read0read.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-read0read.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-read0read.Tpo -c -o ha_innodb_plugin_la-read0read.lo `test -f 'read/read0read.c' || echo '$(srcdir)/'`read/read0read.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-read0read.Tpo $(DEPDIR)/ha_innodb_plugin_la-read0read.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='read/read0read.c' object='ha_innodb_plugin_la-read0read.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-read0read.lo `test -f 'read/read0read.c' || echo '$(srcdir)/'`read/read0read.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-read0read.lo `test -f 'read/read0read.c' || echo '$(srcdir)/'`read/read0read.c -ha_innodb_la-rem0cmp.lo: rem/rem0cmp.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-rem0cmp.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-rem0cmp.Tpo -c -o ha_innodb_la-rem0cmp.lo `test -f 'rem/rem0cmp.c' || echo '$(srcdir)/'`rem/rem0cmp.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-rem0cmp.Tpo $(DEPDIR)/ha_innodb_la-rem0cmp.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rem/rem0cmp.c' object='ha_innodb_la-rem0cmp.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-rem0cmp.lo: rem/rem0cmp.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-rem0cmp.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-rem0cmp.Tpo -c -o ha_innodb_plugin_la-rem0cmp.lo `test -f 'rem/rem0cmp.c' || echo '$(srcdir)/'`rem/rem0cmp.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-rem0cmp.Tpo $(DEPDIR)/ha_innodb_plugin_la-rem0cmp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rem/rem0cmp.c' object='ha_innodb_plugin_la-rem0cmp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-rem0cmp.lo `test -f 'rem/rem0cmp.c' || echo '$(srcdir)/'`rem/rem0cmp.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-rem0cmp.lo `test -f 'rem/rem0cmp.c' || echo '$(srcdir)/'`rem/rem0cmp.c -ha_innodb_la-rem0rec.lo: rem/rem0rec.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-rem0rec.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-rem0rec.Tpo -c -o ha_innodb_la-rem0rec.lo `test -f 'rem/rem0rec.c' || echo '$(srcdir)/'`rem/rem0rec.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-rem0rec.Tpo $(DEPDIR)/ha_innodb_la-rem0rec.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rem/rem0rec.c' object='ha_innodb_la-rem0rec.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-rem0rec.lo: rem/rem0rec.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-rem0rec.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-rem0rec.Tpo -c -o ha_innodb_plugin_la-rem0rec.lo `test -f 'rem/rem0rec.c' || echo '$(srcdir)/'`rem/rem0rec.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-rem0rec.Tpo $(DEPDIR)/ha_innodb_plugin_la-rem0rec.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rem/rem0rec.c' object='ha_innodb_plugin_la-rem0rec.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-rem0rec.lo `test -f 'rem/rem0rec.c' || echo '$(srcdir)/'`rem/rem0rec.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-rem0rec.lo `test -f 'rem/rem0rec.c' || echo '$(srcdir)/'`rem/rem0rec.c -ha_innodb_la-row0ext.lo: row/row0ext.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0ext.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0ext.Tpo -c -o ha_innodb_la-row0ext.lo `test -f 'row/row0ext.c' || echo '$(srcdir)/'`row/row0ext.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0ext.Tpo $(DEPDIR)/ha_innodb_la-row0ext.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0ext.c' object='ha_innodb_la-row0ext.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0ext.lo: row/row0ext.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0ext.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0ext.Tpo -c -o ha_innodb_plugin_la-row0ext.lo `test -f 'row/row0ext.c' || echo '$(srcdir)/'`row/row0ext.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0ext.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0ext.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0ext.c' object='ha_innodb_plugin_la-row0ext.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0ext.lo `test -f 'row/row0ext.c' || echo '$(srcdir)/'`row/row0ext.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0ext.lo `test -f 'row/row0ext.c' || echo '$(srcdir)/'`row/row0ext.c -ha_innodb_la-row0ins.lo: row/row0ins.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0ins.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0ins.Tpo -c -o ha_innodb_la-row0ins.lo `test -f 'row/row0ins.c' || echo '$(srcdir)/'`row/row0ins.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0ins.Tpo $(DEPDIR)/ha_innodb_la-row0ins.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0ins.c' object='ha_innodb_la-row0ins.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0ins.lo: row/row0ins.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0ins.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0ins.Tpo -c -o ha_innodb_plugin_la-row0ins.lo `test -f 'row/row0ins.c' || echo '$(srcdir)/'`row/row0ins.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0ins.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0ins.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0ins.c' object='ha_innodb_plugin_la-row0ins.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0ins.lo `test -f 'row/row0ins.c' || echo '$(srcdir)/'`row/row0ins.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0ins.lo `test -f 'row/row0ins.c' || echo '$(srcdir)/'`row/row0ins.c -ha_innodb_la-row0merge.lo: row/row0merge.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0merge.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0merge.Tpo -c -o ha_innodb_la-row0merge.lo `test -f 'row/row0merge.c' || echo '$(srcdir)/'`row/row0merge.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0merge.Tpo $(DEPDIR)/ha_innodb_la-row0merge.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0merge.c' object='ha_innodb_la-row0merge.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0merge.lo: row/row0merge.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0merge.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0merge.Tpo -c -o ha_innodb_plugin_la-row0merge.lo `test -f 'row/row0merge.c' || echo '$(srcdir)/'`row/row0merge.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0merge.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0merge.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0merge.c' object='ha_innodb_plugin_la-row0merge.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0merge.lo `test -f 'row/row0merge.c' || echo '$(srcdir)/'`row/row0merge.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0merge.lo `test -f 'row/row0merge.c' || echo '$(srcdir)/'`row/row0merge.c -ha_innodb_la-row0mysql.lo: row/row0mysql.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0mysql.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0mysql.Tpo -c -o ha_innodb_la-row0mysql.lo `test -f 'row/row0mysql.c' || echo '$(srcdir)/'`row/row0mysql.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0mysql.Tpo $(DEPDIR)/ha_innodb_la-row0mysql.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0mysql.c' object='ha_innodb_la-row0mysql.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0mysql.lo: row/row0mysql.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0mysql.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0mysql.Tpo -c -o ha_innodb_plugin_la-row0mysql.lo `test -f 'row/row0mysql.c' || echo '$(srcdir)/'`row/row0mysql.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0mysql.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0mysql.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0mysql.c' object='ha_innodb_plugin_la-row0mysql.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0mysql.lo `test -f 'row/row0mysql.c' || echo '$(srcdir)/'`row/row0mysql.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0mysql.lo `test -f 'row/row0mysql.c' || echo '$(srcdir)/'`row/row0mysql.c -ha_innodb_la-row0purge.lo: row/row0purge.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0purge.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0purge.Tpo -c -o ha_innodb_la-row0purge.lo `test -f 'row/row0purge.c' || echo '$(srcdir)/'`row/row0purge.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0purge.Tpo $(DEPDIR)/ha_innodb_la-row0purge.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0purge.c' object='ha_innodb_la-row0purge.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0purge.lo: row/row0purge.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0purge.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0purge.Tpo -c -o ha_innodb_plugin_la-row0purge.lo `test -f 'row/row0purge.c' || echo '$(srcdir)/'`row/row0purge.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0purge.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0purge.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0purge.c' object='ha_innodb_plugin_la-row0purge.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0purge.lo `test -f 'row/row0purge.c' || echo '$(srcdir)/'`row/row0purge.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0purge.lo `test -f 'row/row0purge.c' || echo '$(srcdir)/'`row/row0purge.c -ha_innodb_la-row0row.lo: row/row0row.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0row.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0row.Tpo -c -o ha_innodb_la-row0row.lo `test -f 'row/row0row.c' || echo '$(srcdir)/'`row/row0row.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0row.Tpo $(DEPDIR)/ha_innodb_la-row0row.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0row.c' object='ha_innodb_la-row0row.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0row.lo: row/row0row.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0row.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0row.Tpo -c -o ha_innodb_plugin_la-row0row.lo `test -f 'row/row0row.c' || echo '$(srcdir)/'`row/row0row.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0row.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0row.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0row.c' object='ha_innodb_plugin_la-row0row.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0row.lo `test -f 'row/row0row.c' || echo '$(srcdir)/'`row/row0row.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0row.lo `test -f 'row/row0row.c' || echo '$(srcdir)/'`row/row0row.c -ha_innodb_la-row0sel.lo: row/row0sel.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0sel.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0sel.Tpo -c -o ha_innodb_la-row0sel.lo `test -f 'row/row0sel.c' || echo '$(srcdir)/'`row/row0sel.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0sel.Tpo $(DEPDIR)/ha_innodb_la-row0sel.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0sel.c' object='ha_innodb_la-row0sel.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0sel.lo: row/row0sel.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0sel.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0sel.Tpo -c -o ha_innodb_plugin_la-row0sel.lo `test -f 'row/row0sel.c' || echo '$(srcdir)/'`row/row0sel.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0sel.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0sel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0sel.c' object='ha_innodb_plugin_la-row0sel.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0sel.lo `test -f 'row/row0sel.c' || echo '$(srcdir)/'`row/row0sel.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0sel.lo `test -f 'row/row0sel.c' || echo '$(srcdir)/'`row/row0sel.c -ha_innodb_la-row0uins.lo: row/row0uins.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0uins.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0uins.Tpo -c -o ha_innodb_la-row0uins.lo `test -f 'row/row0uins.c' || echo '$(srcdir)/'`row/row0uins.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0uins.Tpo $(DEPDIR)/ha_innodb_la-row0uins.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0uins.c' object='ha_innodb_la-row0uins.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0uins.lo: row/row0uins.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0uins.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0uins.Tpo -c -o ha_innodb_plugin_la-row0uins.lo `test -f 'row/row0uins.c' || echo '$(srcdir)/'`row/row0uins.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0uins.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0uins.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0uins.c' object='ha_innodb_plugin_la-row0uins.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0uins.lo `test -f 'row/row0uins.c' || echo '$(srcdir)/'`row/row0uins.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0uins.lo `test -f 'row/row0uins.c' || echo '$(srcdir)/'`row/row0uins.c -ha_innodb_la-row0umod.lo: row/row0umod.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0umod.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0umod.Tpo -c -o ha_innodb_la-row0umod.lo `test -f 'row/row0umod.c' || echo '$(srcdir)/'`row/row0umod.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0umod.Tpo $(DEPDIR)/ha_innodb_la-row0umod.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0umod.c' object='ha_innodb_la-row0umod.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0umod.lo: row/row0umod.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0umod.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0umod.Tpo -c -o ha_innodb_plugin_la-row0umod.lo `test -f 'row/row0umod.c' || echo '$(srcdir)/'`row/row0umod.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0umod.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0umod.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0umod.c' object='ha_innodb_plugin_la-row0umod.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0umod.lo `test -f 'row/row0umod.c' || echo '$(srcdir)/'`row/row0umod.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0umod.lo `test -f 'row/row0umod.c' || echo '$(srcdir)/'`row/row0umod.c -ha_innodb_la-row0undo.lo: row/row0undo.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0undo.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0undo.Tpo -c -o ha_innodb_la-row0undo.lo `test -f 'row/row0undo.c' || echo '$(srcdir)/'`row/row0undo.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0undo.Tpo $(DEPDIR)/ha_innodb_la-row0undo.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0undo.c' object='ha_innodb_la-row0undo.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0undo.lo: row/row0undo.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0undo.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0undo.Tpo -c -o ha_innodb_plugin_la-row0undo.lo `test -f 'row/row0undo.c' || echo '$(srcdir)/'`row/row0undo.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0undo.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0undo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0undo.c' object='ha_innodb_plugin_la-row0undo.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0undo.lo `test -f 'row/row0undo.c' || echo '$(srcdir)/'`row/row0undo.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0undo.lo `test -f 'row/row0undo.c' || echo '$(srcdir)/'`row/row0undo.c -ha_innodb_la-row0upd.lo: row/row0upd.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0upd.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0upd.Tpo -c -o ha_innodb_la-row0upd.lo `test -f 'row/row0upd.c' || echo '$(srcdir)/'`row/row0upd.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0upd.Tpo $(DEPDIR)/ha_innodb_la-row0upd.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0upd.c' object='ha_innodb_la-row0upd.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0upd.lo: row/row0upd.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0upd.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0upd.Tpo -c -o ha_innodb_plugin_la-row0upd.lo `test -f 'row/row0upd.c' || echo '$(srcdir)/'`row/row0upd.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0upd.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0upd.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0upd.c' object='ha_innodb_plugin_la-row0upd.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0upd.lo `test -f 'row/row0upd.c' || echo '$(srcdir)/'`row/row0upd.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0upd.lo `test -f 'row/row0upd.c' || echo '$(srcdir)/'`row/row0upd.c -ha_innodb_la-row0vers.lo: row/row0vers.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-row0vers.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-row0vers.Tpo -c -o ha_innodb_la-row0vers.lo `test -f 'row/row0vers.c' || echo '$(srcdir)/'`row/row0vers.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-row0vers.Tpo $(DEPDIR)/ha_innodb_la-row0vers.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0vers.c' object='ha_innodb_la-row0vers.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-row0vers.lo: row/row0vers.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-row0vers.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-row0vers.Tpo -c -o ha_innodb_plugin_la-row0vers.lo `test -f 'row/row0vers.c' || echo '$(srcdir)/'`row/row0vers.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-row0vers.Tpo $(DEPDIR)/ha_innodb_plugin_la-row0vers.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='row/row0vers.c' object='ha_innodb_plugin_la-row0vers.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-row0vers.lo `test -f 'row/row0vers.c' || echo '$(srcdir)/'`row/row0vers.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-row0vers.lo `test -f 'row/row0vers.c' || echo '$(srcdir)/'`row/row0vers.c -ha_innodb_la-srv0que.lo: srv/srv0que.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-srv0que.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-srv0que.Tpo -c -o ha_innodb_la-srv0que.lo `test -f 'srv/srv0que.c' || echo '$(srcdir)/'`srv/srv0que.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-srv0que.Tpo $(DEPDIR)/ha_innodb_la-srv0que.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srv/srv0que.c' object='ha_innodb_la-srv0que.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-srv0que.lo: srv/srv0que.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-srv0que.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-srv0que.Tpo -c -o ha_innodb_plugin_la-srv0que.lo `test -f 'srv/srv0que.c' || echo '$(srcdir)/'`srv/srv0que.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-srv0que.Tpo $(DEPDIR)/ha_innodb_plugin_la-srv0que.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srv/srv0que.c' object='ha_innodb_plugin_la-srv0que.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-srv0que.lo `test -f 'srv/srv0que.c' || echo '$(srcdir)/'`srv/srv0que.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-srv0que.lo `test -f 'srv/srv0que.c' || echo '$(srcdir)/'`srv/srv0que.c -ha_innodb_la-srv0srv.lo: srv/srv0srv.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-srv0srv.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-srv0srv.Tpo -c -o ha_innodb_la-srv0srv.lo `test -f 'srv/srv0srv.c' || echo '$(srcdir)/'`srv/srv0srv.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-srv0srv.Tpo $(DEPDIR)/ha_innodb_la-srv0srv.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srv/srv0srv.c' object='ha_innodb_la-srv0srv.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-srv0srv.lo: srv/srv0srv.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-srv0srv.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-srv0srv.Tpo -c -o ha_innodb_plugin_la-srv0srv.lo `test -f 'srv/srv0srv.c' || echo '$(srcdir)/'`srv/srv0srv.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-srv0srv.Tpo $(DEPDIR)/ha_innodb_plugin_la-srv0srv.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srv/srv0srv.c' object='ha_innodb_plugin_la-srv0srv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-srv0srv.lo `test -f 'srv/srv0srv.c' || echo '$(srcdir)/'`srv/srv0srv.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-srv0srv.lo `test -f 'srv/srv0srv.c' || echo '$(srcdir)/'`srv/srv0srv.c -ha_innodb_la-srv0start.lo: srv/srv0start.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-srv0start.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-srv0start.Tpo -c -o ha_innodb_la-srv0start.lo `test -f 'srv/srv0start.c' || echo '$(srcdir)/'`srv/srv0start.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-srv0start.Tpo $(DEPDIR)/ha_innodb_la-srv0start.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srv/srv0start.c' object='ha_innodb_la-srv0start.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-srv0start.lo: srv/srv0start.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-srv0start.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-srv0start.Tpo -c -o ha_innodb_plugin_la-srv0start.lo `test -f 'srv/srv0start.c' || echo '$(srcdir)/'`srv/srv0start.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-srv0start.Tpo $(DEPDIR)/ha_innodb_plugin_la-srv0start.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srv/srv0start.c' object='ha_innodb_plugin_la-srv0start.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-srv0start.lo `test -f 'srv/srv0start.c' || echo '$(srcdir)/'`srv/srv0start.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-srv0start.lo `test -f 'srv/srv0start.c' || echo '$(srcdir)/'`srv/srv0start.c -ha_innodb_la-sync0arr.lo: sync/sync0arr.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-sync0arr.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-sync0arr.Tpo -c -o ha_innodb_la-sync0arr.lo `test -f 'sync/sync0arr.c' || echo '$(srcdir)/'`sync/sync0arr.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-sync0arr.Tpo $(DEPDIR)/ha_innodb_la-sync0arr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sync/sync0arr.c' object='ha_innodb_la-sync0arr.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-sync0arr.lo: sync/sync0arr.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-sync0arr.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-sync0arr.Tpo -c -o ha_innodb_plugin_la-sync0arr.lo `test -f 'sync/sync0arr.c' || echo '$(srcdir)/'`sync/sync0arr.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-sync0arr.Tpo $(DEPDIR)/ha_innodb_plugin_la-sync0arr.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sync/sync0arr.c' object='ha_innodb_plugin_la-sync0arr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-sync0arr.lo `test -f 'sync/sync0arr.c' || echo '$(srcdir)/'`sync/sync0arr.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-sync0arr.lo `test -f 'sync/sync0arr.c' || echo '$(srcdir)/'`sync/sync0arr.c -ha_innodb_la-sync0rw.lo: sync/sync0rw.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-sync0rw.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-sync0rw.Tpo -c -o ha_innodb_la-sync0rw.lo `test -f 'sync/sync0rw.c' || echo '$(srcdir)/'`sync/sync0rw.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-sync0rw.Tpo $(DEPDIR)/ha_innodb_la-sync0rw.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sync/sync0rw.c' object='ha_innodb_la-sync0rw.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-sync0rw.lo: sync/sync0rw.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-sync0rw.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-sync0rw.Tpo -c -o ha_innodb_plugin_la-sync0rw.lo `test -f 'sync/sync0rw.c' || echo '$(srcdir)/'`sync/sync0rw.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-sync0rw.Tpo $(DEPDIR)/ha_innodb_plugin_la-sync0rw.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sync/sync0rw.c' object='ha_innodb_plugin_la-sync0rw.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-sync0rw.lo `test -f 'sync/sync0rw.c' || echo '$(srcdir)/'`sync/sync0rw.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-sync0rw.lo `test -f 'sync/sync0rw.c' || echo '$(srcdir)/'`sync/sync0rw.c -ha_innodb_la-sync0sync.lo: sync/sync0sync.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-sync0sync.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-sync0sync.Tpo -c -o ha_innodb_la-sync0sync.lo `test -f 'sync/sync0sync.c' || echo '$(srcdir)/'`sync/sync0sync.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-sync0sync.Tpo $(DEPDIR)/ha_innodb_la-sync0sync.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sync/sync0sync.c' object='ha_innodb_la-sync0sync.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-sync0sync.lo: sync/sync0sync.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-sync0sync.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-sync0sync.Tpo -c -o ha_innodb_plugin_la-sync0sync.lo `test -f 'sync/sync0sync.c' || echo '$(srcdir)/'`sync/sync0sync.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-sync0sync.Tpo $(DEPDIR)/ha_innodb_plugin_la-sync0sync.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sync/sync0sync.c' object='ha_innodb_plugin_la-sync0sync.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-sync0sync.lo `test -f 'sync/sync0sync.c' || echo '$(srcdir)/'`sync/sync0sync.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-sync0sync.lo `test -f 'sync/sync0sync.c' || echo '$(srcdir)/'`sync/sync0sync.c -ha_innodb_la-thr0loc.lo: thr/thr0loc.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-thr0loc.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-thr0loc.Tpo -c -o ha_innodb_la-thr0loc.lo `test -f 'thr/thr0loc.c' || echo '$(srcdir)/'`thr/thr0loc.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-thr0loc.Tpo $(DEPDIR)/ha_innodb_la-thr0loc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thr/thr0loc.c' object='ha_innodb_la-thr0loc.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-thr0loc.lo: thr/thr0loc.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-thr0loc.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-thr0loc.Tpo -c -o ha_innodb_plugin_la-thr0loc.lo `test -f 'thr/thr0loc.c' || echo '$(srcdir)/'`thr/thr0loc.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-thr0loc.Tpo $(DEPDIR)/ha_innodb_plugin_la-thr0loc.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thr/thr0loc.c' object='ha_innodb_plugin_la-thr0loc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-thr0loc.lo `test -f 'thr/thr0loc.c' || echo '$(srcdir)/'`thr/thr0loc.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-thr0loc.lo `test -f 'thr/thr0loc.c' || echo '$(srcdir)/'`thr/thr0loc.c -ha_innodb_la-trx0i_s.lo: trx/trx0i_s.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-trx0i_s.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-trx0i_s.Tpo -c -o ha_innodb_la-trx0i_s.lo `test -f 'trx/trx0i_s.c' || echo '$(srcdir)/'`trx/trx0i_s.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-trx0i_s.Tpo $(DEPDIR)/ha_innodb_la-trx0i_s.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0i_s.c' object='ha_innodb_la-trx0i_s.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-trx0i_s.lo: trx/trx0i_s.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-trx0i_s.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-trx0i_s.Tpo -c -o ha_innodb_plugin_la-trx0i_s.lo `test -f 'trx/trx0i_s.c' || echo '$(srcdir)/'`trx/trx0i_s.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-trx0i_s.Tpo $(DEPDIR)/ha_innodb_plugin_la-trx0i_s.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0i_s.c' object='ha_innodb_plugin_la-trx0i_s.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-trx0i_s.lo `test -f 'trx/trx0i_s.c' || echo '$(srcdir)/'`trx/trx0i_s.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-trx0i_s.lo `test -f 'trx/trx0i_s.c' || echo '$(srcdir)/'`trx/trx0i_s.c -ha_innodb_la-trx0purge.lo: trx/trx0purge.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-trx0purge.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-trx0purge.Tpo -c -o ha_innodb_la-trx0purge.lo `test -f 'trx/trx0purge.c' || echo '$(srcdir)/'`trx/trx0purge.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-trx0purge.Tpo $(DEPDIR)/ha_innodb_la-trx0purge.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0purge.c' object='ha_innodb_la-trx0purge.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-trx0purge.lo: trx/trx0purge.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-trx0purge.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-trx0purge.Tpo -c -o ha_innodb_plugin_la-trx0purge.lo `test -f 'trx/trx0purge.c' || echo '$(srcdir)/'`trx/trx0purge.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-trx0purge.Tpo $(DEPDIR)/ha_innodb_plugin_la-trx0purge.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0purge.c' object='ha_innodb_plugin_la-trx0purge.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-trx0purge.lo `test -f 'trx/trx0purge.c' || echo '$(srcdir)/'`trx/trx0purge.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-trx0purge.lo `test -f 'trx/trx0purge.c' || echo '$(srcdir)/'`trx/trx0purge.c -ha_innodb_la-trx0rec.lo: trx/trx0rec.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-trx0rec.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-trx0rec.Tpo -c -o ha_innodb_la-trx0rec.lo `test -f 'trx/trx0rec.c' || echo '$(srcdir)/'`trx/trx0rec.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-trx0rec.Tpo $(DEPDIR)/ha_innodb_la-trx0rec.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0rec.c' object='ha_innodb_la-trx0rec.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-trx0rec.lo: trx/trx0rec.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-trx0rec.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-trx0rec.Tpo -c -o ha_innodb_plugin_la-trx0rec.lo `test -f 'trx/trx0rec.c' || echo '$(srcdir)/'`trx/trx0rec.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-trx0rec.Tpo $(DEPDIR)/ha_innodb_plugin_la-trx0rec.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0rec.c' object='ha_innodb_plugin_la-trx0rec.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-trx0rec.lo `test -f 'trx/trx0rec.c' || echo '$(srcdir)/'`trx/trx0rec.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-trx0rec.lo `test -f 'trx/trx0rec.c' || echo '$(srcdir)/'`trx/trx0rec.c -ha_innodb_la-trx0roll.lo: trx/trx0roll.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-trx0roll.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-trx0roll.Tpo -c -o ha_innodb_la-trx0roll.lo `test -f 'trx/trx0roll.c' || echo '$(srcdir)/'`trx/trx0roll.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-trx0roll.Tpo $(DEPDIR)/ha_innodb_la-trx0roll.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0roll.c' object='ha_innodb_la-trx0roll.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-trx0roll.lo: trx/trx0roll.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-trx0roll.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-trx0roll.Tpo -c -o ha_innodb_plugin_la-trx0roll.lo `test -f 'trx/trx0roll.c' || echo '$(srcdir)/'`trx/trx0roll.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-trx0roll.Tpo $(DEPDIR)/ha_innodb_plugin_la-trx0roll.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0roll.c' object='ha_innodb_plugin_la-trx0roll.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-trx0roll.lo `test -f 'trx/trx0roll.c' || echo '$(srcdir)/'`trx/trx0roll.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-trx0roll.lo `test -f 'trx/trx0roll.c' || echo '$(srcdir)/'`trx/trx0roll.c -ha_innodb_la-trx0rseg.lo: trx/trx0rseg.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-trx0rseg.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-trx0rseg.Tpo -c -o ha_innodb_la-trx0rseg.lo `test -f 'trx/trx0rseg.c' || echo '$(srcdir)/'`trx/trx0rseg.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-trx0rseg.Tpo $(DEPDIR)/ha_innodb_la-trx0rseg.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0rseg.c' object='ha_innodb_la-trx0rseg.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-trx0rseg.lo: trx/trx0rseg.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-trx0rseg.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-trx0rseg.Tpo -c -o ha_innodb_plugin_la-trx0rseg.lo `test -f 'trx/trx0rseg.c' || echo '$(srcdir)/'`trx/trx0rseg.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-trx0rseg.Tpo $(DEPDIR)/ha_innodb_plugin_la-trx0rseg.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0rseg.c' object='ha_innodb_plugin_la-trx0rseg.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-trx0rseg.lo `test -f 'trx/trx0rseg.c' || echo '$(srcdir)/'`trx/trx0rseg.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-trx0rseg.lo `test -f 'trx/trx0rseg.c' || echo '$(srcdir)/'`trx/trx0rseg.c -ha_innodb_la-trx0sys.lo: trx/trx0sys.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-trx0sys.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-trx0sys.Tpo -c -o ha_innodb_la-trx0sys.lo `test -f 'trx/trx0sys.c' || echo '$(srcdir)/'`trx/trx0sys.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-trx0sys.Tpo $(DEPDIR)/ha_innodb_la-trx0sys.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0sys.c' object='ha_innodb_la-trx0sys.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-trx0sys.lo: trx/trx0sys.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-trx0sys.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-trx0sys.Tpo -c -o ha_innodb_plugin_la-trx0sys.lo `test -f 'trx/trx0sys.c' || echo '$(srcdir)/'`trx/trx0sys.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-trx0sys.Tpo $(DEPDIR)/ha_innodb_plugin_la-trx0sys.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0sys.c' object='ha_innodb_plugin_la-trx0sys.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-trx0sys.lo `test -f 'trx/trx0sys.c' || echo '$(srcdir)/'`trx/trx0sys.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-trx0sys.lo `test -f 'trx/trx0sys.c' || echo '$(srcdir)/'`trx/trx0sys.c -ha_innodb_la-trx0trx.lo: trx/trx0trx.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-trx0trx.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-trx0trx.Tpo -c -o ha_innodb_la-trx0trx.lo `test -f 'trx/trx0trx.c' || echo '$(srcdir)/'`trx/trx0trx.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-trx0trx.Tpo $(DEPDIR)/ha_innodb_la-trx0trx.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0trx.c' object='ha_innodb_la-trx0trx.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-trx0trx.lo: trx/trx0trx.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-trx0trx.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-trx0trx.Tpo -c -o ha_innodb_plugin_la-trx0trx.lo `test -f 'trx/trx0trx.c' || echo '$(srcdir)/'`trx/trx0trx.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-trx0trx.Tpo $(DEPDIR)/ha_innodb_plugin_la-trx0trx.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0trx.c' object='ha_innodb_plugin_la-trx0trx.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-trx0trx.lo `test -f 'trx/trx0trx.c' || echo '$(srcdir)/'`trx/trx0trx.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-trx0trx.lo `test -f 'trx/trx0trx.c' || echo '$(srcdir)/'`trx/trx0trx.c -ha_innodb_la-trx0undo.lo: trx/trx0undo.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-trx0undo.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-trx0undo.Tpo -c -o ha_innodb_la-trx0undo.lo `test -f 'trx/trx0undo.c' || echo '$(srcdir)/'`trx/trx0undo.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-trx0undo.Tpo $(DEPDIR)/ha_innodb_la-trx0undo.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0undo.c' object='ha_innodb_la-trx0undo.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-trx0undo.lo: trx/trx0undo.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-trx0undo.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-trx0undo.Tpo -c -o ha_innodb_plugin_la-trx0undo.lo `test -f 'trx/trx0undo.c' || echo '$(srcdir)/'`trx/trx0undo.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-trx0undo.Tpo $(DEPDIR)/ha_innodb_plugin_la-trx0undo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trx/trx0undo.c' object='ha_innodb_plugin_la-trx0undo.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-trx0undo.lo `test -f 'trx/trx0undo.c' || echo '$(srcdir)/'`trx/trx0undo.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-trx0undo.lo `test -f 'trx/trx0undo.c' || echo '$(srcdir)/'`trx/trx0undo.c -ha_innodb_la-usr0sess.lo: usr/usr0sess.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-usr0sess.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-usr0sess.Tpo -c -o ha_innodb_la-usr0sess.lo `test -f 'usr/usr0sess.c' || echo '$(srcdir)/'`usr/usr0sess.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-usr0sess.Tpo $(DEPDIR)/ha_innodb_la-usr0sess.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usr/usr0sess.c' object='ha_innodb_la-usr0sess.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-usr0sess.lo: usr/usr0sess.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-usr0sess.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-usr0sess.Tpo -c -o ha_innodb_plugin_la-usr0sess.lo `test -f 'usr/usr0sess.c' || echo '$(srcdir)/'`usr/usr0sess.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-usr0sess.Tpo $(DEPDIR)/ha_innodb_plugin_la-usr0sess.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='usr/usr0sess.c' object='ha_innodb_plugin_la-usr0sess.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-usr0sess.lo `test -f 'usr/usr0sess.c' || echo '$(srcdir)/'`usr/usr0sess.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-usr0sess.lo `test -f 'usr/usr0sess.c' || echo '$(srcdir)/'`usr/usr0sess.c -ha_innodb_la-ut0byte.lo: ut/ut0byte.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-ut0byte.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ut0byte.Tpo -c -o ha_innodb_la-ut0byte.lo `test -f 'ut/ut0byte.c' || echo '$(srcdir)/'`ut/ut0byte.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ut0byte.Tpo $(DEPDIR)/ha_innodb_la-ut0byte.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0byte.c' object='ha_innodb_la-ut0byte.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ut0byte.lo: ut/ut0byte.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ut0byte.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ut0byte.Tpo -c -o ha_innodb_plugin_la-ut0byte.lo `test -f 'ut/ut0byte.c' || echo '$(srcdir)/'`ut/ut0byte.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ut0byte.Tpo $(DEPDIR)/ha_innodb_plugin_la-ut0byte.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0byte.c' object='ha_innodb_plugin_la-ut0byte.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-ut0byte.lo `test -f 'ut/ut0byte.c' || echo '$(srcdir)/'`ut/ut0byte.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ut0byte.lo `test -f 'ut/ut0byte.c' || echo '$(srcdir)/'`ut/ut0byte.c -ha_innodb_la-ut0dbg.lo: ut/ut0dbg.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-ut0dbg.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ut0dbg.Tpo -c -o ha_innodb_la-ut0dbg.lo `test -f 'ut/ut0dbg.c' || echo '$(srcdir)/'`ut/ut0dbg.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ut0dbg.Tpo $(DEPDIR)/ha_innodb_la-ut0dbg.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0dbg.c' object='ha_innodb_la-ut0dbg.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ut0dbg.lo: ut/ut0dbg.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ut0dbg.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ut0dbg.Tpo -c -o ha_innodb_plugin_la-ut0dbg.lo `test -f 'ut/ut0dbg.c' || echo '$(srcdir)/'`ut/ut0dbg.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ut0dbg.Tpo $(DEPDIR)/ha_innodb_plugin_la-ut0dbg.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0dbg.c' object='ha_innodb_plugin_la-ut0dbg.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-ut0dbg.lo `test -f 'ut/ut0dbg.c' || echo '$(srcdir)/'`ut/ut0dbg.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ut0dbg.lo `test -f 'ut/ut0dbg.c' || echo '$(srcdir)/'`ut/ut0dbg.c -ha_innodb_la-ut0list.lo: ut/ut0list.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-ut0list.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ut0list.Tpo -c -o ha_innodb_la-ut0list.lo `test -f 'ut/ut0list.c' || echo '$(srcdir)/'`ut/ut0list.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ut0list.Tpo $(DEPDIR)/ha_innodb_la-ut0list.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0list.c' object='ha_innodb_la-ut0list.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ut0list.lo: ut/ut0list.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ut0list.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ut0list.Tpo -c -o ha_innodb_plugin_la-ut0list.lo `test -f 'ut/ut0list.c' || echo '$(srcdir)/'`ut/ut0list.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ut0list.Tpo $(DEPDIR)/ha_innodb_plugin_la-ut0list.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0list.c' object='ha_innodb_plugin_la-ut0list.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-ut0list.lo `test -f 'ut/ut0list.c' || echo '$(srcdir)/'`ut/ut0list.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ut0list.lo `test -f 'ut/ut0list.c' || echo '$(srcdir)/'`ut/ut0list.c -ha_innodb_la-ut0mem.lo: ut/ut0mem.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-ut0mem.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ut0mem.Tpo -c -o ha_innodb_la-ut0mem.lo `test -f 'ut/ut0mem.c' || echo '$(srcdir)/'`ut/ut0mem.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ut0mem.Tpo $(DEPDIR)/ha_innodb_la-ut0mem.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0mem.c' object='ha_innodb_la-ut0mem.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ut0mem.lo: ut/ut0mem.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ut0mem.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ut0mem.Tpo -c -o ha_innodb_plugin_la-ut0mem.lo `test -f 'ut/ut0mem.c' || echo '$(srcdir)/'`ut/ut0mem.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ut0mem.Tpo $(DEPDIR)/ha_innodb_plugin_la-ut0mem.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0mem.c' object='ha_innodb_plugin_la-ut0mem.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-ut0mem.lo `test -f 'ut/ut0mem.c' || echo '$(srcdir)/'`ut/ut0mem.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ut0mem.lo `test -f 'ut/ut0mem.c' || echo '$(srcdir)/'`ut/ut0mem.c -ha_innodb_la-ut0rnd.lo: ut/ut0rnd.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-ut0rnd.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ut0rnd.Tpo -c -o ha_innodb_la-ut0rnd.lo `test -f 'ut/ut0rnd.c' || echo '$(srcdir)/'`ut/ut0rnd.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ut0rnd.Tpo $(DEPDIR)/ha_innodb_la-ut0rnd.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0rnd.c' object='ha_innodb_la-ut0rnd.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ut0rbt.lo: ut/ut0rbt.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ut0rbt.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ut0rbt.Tpo -c -o ha_innodb_plugin_la-ut0rbt.lo `test -f 'ut/ut0rbt.c' || echo '$(srcdir)/'`ut/ut0rbt.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ut0rbt.Tpo $(DEPDIR)/ha_innodb_plugin_la-ut0rbt.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0rbt.c' object='ha_innodb_plugin_la-ut0rbt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-ut0rnd.lo `test -f 'ut/ut0rnd.c' || echo '$(srcdir)/'`ut/ut0rnd.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ut0rbt.lo `test -f 'ut/ut0rbt.c' || echo '$(srcdir)/'`ut/ut0rbt.c -ha_innodb_la-ut0ut.lo: ut/ut0ut.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-ut0ut.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ut0ut.Tpo -c -o ha_innodb_la-ut0ut.lo `test -f 'ut/ut0ut.c' || echo '$(srcdir)/'`ut/ut0ut.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ut0ut.Tpo $(DEPDIR)/ha_innodb_la-ut0ut.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0ut.c' object='ha_innodb_la-ut0ut.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ut0rnd.lo: ut/ut0rnd.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ut0rnd.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ut0rnd.Tpo -c -o ha_innodb_plugin_la-ut0rnd.lo `test -f 'ut/ut0rnd.c' || echo '$(srcdir)/'`ut/ut0rnd.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ut0rnd.Tpo $(DEPDIR)/ha_innodb_plugin_la-ut0rnd.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0rnd.c' object='ha_innodb_plugin_la-ut0rnd.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-ut0ut.lo `test -f 'ut/ut0ut.c' || echo '$(srcdir)/'`ut/ut0ut.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ut0rnd.lo `test -f 'ut/ut0rnd.c' || echo '$(srcdir)/'`ut/ut0rnd.c -ha_innodb_la-ut0vec.lo: ut/ut0vec.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-ut0vec.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ut0vec.Tpo -c -o ha_innodb_la-ut0vec.lo `test -f 'ut/ut0vec.c' || echo '$(srcdir)/'`ut/ut0vec.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ut0vec.Tpo $(DEPDIR)/ha_innodb_la-ut0vec.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0vec.c' object='ha_innodb_la-ut0vec.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ut0ut.lo: ut/ut0ut.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ut0ut.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ut0ut.Tpo -c -o ha_innodb_plugin_la-ut0ut.lo `test -f 'ut/ut0ut.c' || echo '$(srcdir)/'`ut/ut0ut.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ut0ut.Tpo $(DEPDIR)/ha_innodb_plugin_la-ut0ut.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0ut.c' object='ha_innodb_plugin_la-ut0ut.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-ut0vec.lo `test -f 'ut/ut0vec.c' || echo '$(srcdir)/'`ut/ut0vec.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ut0ut.lo `test -f 'ut/ut0ut.c' || echo '$(srcdir)/'`ut/ut0ut.c -ha_innodb_la-ut0wqueue.lo: ut/ut0wqueue.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -MT ha_innodb_la-ut0wqueue.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ut0wqueue.Tpo -c -o ha_innodb_la-ut0wqueue.lo `test -f 'ut/ut0wqueue.c' || echo '$(srcdir)/'`ut/ut0wqueue.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ut0wqueue.Tpo $(DEPDIR)/ha_innodb_la-ut0wqueue.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0wqueue.c' object='ha_innodb_la-ut0wqueue.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ut0vec.lo: ut/ut0vec.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ut0vec.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ut0vec.Tpo -c -o ha_innodb_plugin_la-ut0vec.lo `test -f 'ut/ut0vec.c' || echo '$(srcdir)/'`ut/ut0vec.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ut0vec.Tpo $(DEPDIR)/ha_innodb_plugin_la-ut0vec.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0vec.c' object='ha_innodb_plugin_la-ut0vec.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_la-ut0wqueue.lo `test -f 'ut/ut0wqueue.c' || echo '$(srcdir)/'`ut/ut0wqueue.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ut0vec.lo `test -f 'ut/ut0vec.c' || echo '$(srcdir)/'`ut/ut0vec.c + +ha_innodb_plugin_la-ut0wqueue.lo: ut/ut0wqueue.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -MT ha_innodb_plugin_la-ut0wqueue.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ut0wqueue.Tpo -c -o ha_innodb_plugin_la-ut0wqueue.lo `test -f 'ut/ut0wqueue.c' || echo '$(srcdir)/'`ut/ut0wqueue.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ut0wqueue.Tpo $(DEPDIR)/ha_innodb_plugin_la-ut0wqueue.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ut/ut0wqueue.c' object='ha_innodb_plugin_la-ut0wqueue.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CFLAGS) $(CFLAGS) -c -o ha_innodb_plugin_la-ut0wqueue.lo `test -f 'ut/ut0wqueue.c' || echo '$(srcdir)/'`ut/ut0wqueue.c .cc.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -3095,33 +3124,33 @@ libinnobase_a-mysql_addons.obj: handler/mysql_addons.cc @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinnobase_a_CXXFLAGS) $(CXXFLAGS) -c -o libinnobase_a-mysql_addons.obj `if test -f 'handler/mysql_addons.cc'; then $(CYGPATH_W) 'handler/mysql_addons.cc'; else $(CYGPATH_W) '$(srcdir)/handler/mysql_addons.cc'; fi` -ha_innodb_la-ha_innodb.lo: handler/ha_innodb.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CXXFLAGS) $(CXXFLAGS) -MT ha_innodb_la-ha_innodb.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-ha_innodb.Tpo -c -o ha_innodb_la-ha_innodb.lo `test -f 'handler/ha_innodb.cc' || echo '$(srcdir)/'`handler/ha_innodb.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-ha_innodb.Tpo $(DEPDIR)/ha_innodb_la-ha_innodb.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='handler/ha_innodb.cc' object='ha_innodb_la-ha_innodb.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-ha_innodb.lo: handler/ha_innodb.cc +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CXXFLAGS) $(CXXFLAGS) -MT ha_innodb_plugin_la-ha_innodb.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-ha_innodb.Tpo -c -o ha_innodb_plugin_la-ha_innodb.lo `test -f 'handler/ha_innodb.cc' || echo '$(srcdir)/'`handler/ha_innodb.cc +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-ha_innodb.Tpo $(DEPDIR)/ha_innodb_plugin_la-ha_innodb.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='handler/ha_innodb.cc' object='ha_innodb_plugin_la-ha_innodb.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CXXFLAGS) $(CXXFLAGS) -c -o ha_innodb_la-ha_innodb.lo `test -f 'handler/ha_innodb.cc' || echo '$(srcdir)/'`handler/ha_innodb.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CXXFLAGS) $(CXXFLAGS) -c -o ha_innodb_plugin_la-ha_innodb.lo `test -f 'handler/ha_innodb.cc' || echo '$(srcdir)/'`handler/ha_innodb.cc -ha_innodb_la-handler0alter.lo: handler/handler0alter.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CXXFLAGS) $(CXXFLAGS) -MT ha_innodb_la-handler0alter.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-handler0alter.Tpo -c -o ha_innodb_la-handler0alter.lo `test -f 'handler/handler0alter.cc' || echo '$(srcdir)/'`handler/handler0alter.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-handler0alter.Tpo $(DEPDIR)/ha_innodb_la-handler0alter.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='handler/handler0alter.cc' object='ha_innodb_la-handler0alter.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-handler0alter.lo: handler/handler0alter.cc +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CXXFLAGS) $(CXXFLAGS) -MT ha_innodb_plugin_la-handler0alter.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-handler0alter.Tpo -c -o ha_innodb_plugin_la-handler0alter.lo `test -f 'handler/handler0alter.cc' || echo '$(srcdir)/'`handler/handler0alter.cc +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-handler0alter.Tpo $(DEPDIR)/ha_innodb_plugin_la-handler0alter.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='handler/handler0alter.cc' object='ha_innodb_plugin_la-handler0alter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CXXFLAGS) $(CXXFLAGS) -c -o ha_innodb_la-handler0alter.lo `test -f 'handler/handler0alter.cc' || echo '$(srcdir)/'`handler/handler0alter.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CXXFLAGS) $(CXXFLAGS) -c -o ha_innodb_plugin_la-handler0alter.lo `test -f 'handler/handler0alter.cc' || echo '$(srcdir)/'`handler/handler0alter.cc -ha_innodb_la-i_s.lo: handler/i_s.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CXXFLAGS) $(CXXFLAGS) -MT ha_innodb_la-i_s.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-i_s.Tpo -c -o ha_innodb_la-i_s.lo `test -f 'handler/i_s.cc' || echo '$(srcdir)/'`handler/i_s.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-i_s.Tpo $(DEPDIR)/ha_innodb_la-i_s.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='handler/i_s.cc' object='ha_innodb_la-i_s.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-i_s.lo: handler/i_s.cc +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CXXFLAGS) $(CXXFLAGS) -MT ha_innodb_plugin_la-i_s.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-i_s.Tpo -c -o ha_innodb_plugin_la-i_s.lo `test -f 'handler/i_s.cc' || echo '$(srcdir)/'`handler/i_s.cc +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-i_s.Tpo $(DEPDIR)/ha_innodb_plugin_la-i_s.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='handler/i_s.cc' object='ha_innodb_plugin_la-i_s.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CXXFLAGS) $(CXXFLAGS) -c -o ha_innodb_la-i_s.lo `test -f 'handler/i_s.cc' || echo '$(srcdir)/'`handler/i_s.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CXXFLAGS) $(CXXFLAGS) -c -o ha_innodb_plugin_la-i_s.lo `test -f 'handler/i_s.cc' || echo '$(srcdir)/'`handler/i_s.cc -ha_innodb_la-mysql_addons.lo: handler/mysql_addons.cc -@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CXXFLAGS) $(CXXFLAGS) -MT ha_innodb_la-mysql_addons.lo -MD -MP -MF $(DEPDIR)/ha_innodb_la-mysql_addons.Tpo -c -o ha_innodb_la-mysql_addons.lo `test -f 'handler/mysql_addons.cc' || echo '$(srcdir)/'`handler/mysql_addons.cc -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/ha_innodb_la-mysql_addons.Tpo $(DEPDIR)/ha_innodb_la-mysql_addons.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='handler/mysql_addons.cc' object='ha_innodb_la-mysql_addons.lo' libtool=yes @AMDEPBACKSLASH@ +ha_innodb_plugin_la-mysql_addons.lo: handler/mysql_addons.cc +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CXXFLAGS) $(CXXFLAGS) -MT ha_innodb_plugin_la-mysql_addons.lo -MD -MP -MF $(DEPDIR)/ha_innodb_plugin_la-mysql_addons.Tpo -c -o ha_innodb_plugin_la-mysql_addons.lo `test -f 'handler/mysql_addons.cc' || echo '$(srcdir)/'`handler/mysql_addons.cc +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/ha_innodb_plugin_la-mysql_addons.Tpo $(DEPDIR)/ha_innodb_plugin_la-mysql_addons.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='handler/mysql_addons.cc' object='ha_innodb_plugin_la-mysql_addons.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_la_CXXFLAGS) $(CXXFLAGS) -c -o ha_innodb_la-mysql_addons.lo `test -f 'handler/mysql_addons.cc' || echo '$(srcdir)/'`handler/mysql_addons.cc +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ha_innodb_plugin_la_CXXFLAGS) $(CXXFLAGS) -c -o ha_innodb_plugin_la-mysql_addons.lo `test -f 'handler/mysql_addons.cc' || echo '$(srcdir)/'`handler/mysql_addons.cc mostlyclean-libtool: -rm -f *.lo diff --git a/btr/btr0btr.c b/btr/btr0btr.c index 520c18553ea..12e57dcc490 100644 --- a/btr/btr0btr.c +++ b/btr/btr0btr.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -604,13 +604,15 @@ an x-latch on the tree. @return rec_get_offsets() of the node pointer record */ static ulint* -btr_page_get_father_node_ptr( -/*=========================*/ +btr_page_get_father_node_ptr_func( +/*==============================*/ ulint* offsets,/*!< in: work area for the return value */ mem_heap_t* heap, /*!< in: memory heap to use */ btr_cur_t* cursor, /*!< in: cursor pointing to user record, out: cursor on node pointer record, its page x-latched */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr) /*!< in: mtr */ { dtuple_t* tuple; @@ -634,7 +636,8 @@ btr_page_get_father_node_ptr( tuple = dict_index_build_node_ptr(index, user_rec, 0, heap, level); btr_cur_search_to_nth_level(index, level + 1, tuple, PAGE_CUR_LE, - BTR_CONT_MODIFY_TREE, cursor, 0, mtr); + BTR_CONT_MODIFY_TREE, cursor, 0, + file, line, mtr); node_ptr = btr_cur_get_rec(cursor); ut_ad(!page_rec_is_comp(node_ptr) @@ -682,6 +685,9 @@ btr_page_get_father_node_ptr( return(offsets); } +#define btr_page_get_father_node_ptr(of,heap,cur,mtr) \ + btr_page_get_father_node_ptr_func(of,heap,cur,__FILE__,__LINE__,mtr) + /************************************************************//** Returns the upper level node pointer to a page. It is assumed that mtr holds an x-latch on the tree. @@ -1475,11 +1481,11 @@ Calculates a split record such that the tuple will certainly fit on its half-page when the split is performed. We assume in this function only that the cursor page has at least one user record. @return split record, or NULL if tuple will be the first record on -upper half-page */ +the lower or upper half-page (determined by btr_page_tuple_smaller()) */ static rec_t* -btr_page_get_sure_split_rec( -/*========================*/ +btr_page_get_split_rec( +/*===================*/ btr_cur_t* cursor, /*!< in: cursor at which insert should be made */ const dtuple_t* tuple, /*!< in: tuple to insert */ ulint n_ext) /*!< in: number of externally stored columns */ @@ -1692,11 +1698,13 @@ Inserts a data tuple to a tree on a non-leaf level. It is assumed that mtr holds an x-latch on the tree. */ UNIV_INTERN void -btr_insert_on_non_leaf_level( -/*=========================*/ +btr_insert_on_non_leaf_level_func( +/*==============================*/ dict_index_t* index, /*!< in: index */ ulint level, /*!< in: level, must be > 0 */ dtuple_t* tuple, /*!< in: the record to be inserted */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr) /*!< in: mtr */ { big_rec_t* dummy_big_rec; @@ -1708,7 +1716,7 @@ btr_insert_on_non_leaf_level( btr_cur_search_to_nth_level(index, level, tuple, PAGE_CUR_LE, BTR_CONT_MODIFY_TREE, - &cursor, 0, mtr); + &cursor, 0, file, line, mtr); err = btr_cur_pessimistic_insert(BTR_NO_LOCKING_FLAG | BTR_KEEP_SYS_FLAG @@ -1853,6 +1861,37 @@ btr_attach_half_pages( btr_page_set_next(upper_page, upper_page_zip, next_page_no, mtr); } +/*************************************************************//** +Determine if a tuple is smaller than any record on the page. +@return TRUE if smaller */ +static +ibool +btr_page_tuple_smaller( +/*===================*/ + btr_cur_t* cursor, /*!< in: b-tree cursor */ + const dtuple_t* tuple, /*!< in: tuple to consider */ + ulint* offsets,/*!< in/out: temporary storage */ + ulint n_uniq, /*!< in: number of unique fields + in the index page records */ + mem_heap_t** heap) /*!< in/out: heap for offsets */ +{ + buf_block_t* block; + const rec_t* first_rec; + page_cur_t pcur; + + /* Read the first user record in the page. */ + block = btr_cur_get_block(cursor); + page_cur_set_before_first(block, &pcur); + page_cur_move_to_next(&pcur); + first_rec = page_cur_get_rec(&pcur); + + offsets = rec_get_offsets( + first_rec, cursor->index, offsets, + n_uniq, heap); + + return(cmp_dtuple_rec(tuple, first_rec, offsets) < 0); +} + /*************************************************************//** Splits an index page to halves and inserts the tuple. It is assumed that mtr holds an x-latch to the index tree. NOTE: the tree x-latch is @@ -1923,12 +1962,17 @@ func_start: /* 1. Decide the split record; split_rec == NULL means that the tuple to be inserted should be the first record on the upper half-page */ + insert_left = FALSE; if (n_iterations > 0) { direction = FSP_UP; hint_page_no = page_no + 1; - split_rec = btr_page_get_sure_split_rec(cursor, tuple, n_ext); + split_rec = btr_page_get_split_rec(cursor, tuple, n_ext); + if (UNIV_UNLIKELY(split_rec == NULL)) { + insert_left = btr_page_tuple_smaller( + cursor, tuple, offsets, n_uniq, &heap); + } } else if (btr_page_get_split_rec_to_right(cursor, &split_rec)) { direction = FSP_UP; hint_page_no = page_no + 1; @@ -1936,37 +1980,24 @@ func_start: } else if (btr_page_get_split_rec_to_left(cursor, &split_rec)) { direction = FSP_DOWN; hint_page_no = page_no - 1; + ut_ad(split_rec); } else { direction = FSP_UP; hint_page_no = page_no + 1; - if (page_get_n_recs(page) == 1) { - page_cur_t pcur; + /* If there is only one record in the index page, we + can't split the node in the middle by default. We need + to determine whether the new record will be inserted + to the left or right. */ - /* There is only one record in the index page - therefore we can't split the node in the middle - by default. We need to determine whether the - new record will be inserted to the left or right. */ - - /* Read the first (and only) record in the page. */ - page_cur_set_before_first(block, &pcur); - page_cur_move_to_next(&pcur); - first_rec = page_cur_get_rec(&pcur); - - offsets = rec_get_offsets( - first_rec, cursor->index, offsets, - n_uniq, &heap); - - /* If the new record is less than the existing record - the split in the middle will copy the existing - record to the new node. */ - if (cmp_dtuple_rec(tuple, first_rec, offsets) < 0) { - split_rec = page_get_middle_rec(page); - } else { - split_rec = NULL; - } - } else { + if (page_get_n_recs(page) > 1) { split_rec = page_get_middle_rec(page); + } else if (btr_page_tuple_smaller(cursor, tuple, + offsets, n_uniq, &heap)) { + split_rec = page_rec_get_next( + page_get_infimum_rec(page)); + } else { + split_rec = NULL; } } @@ -1996,11 +2027,15 @@ func_start: avoid further splits by inserting the record to an empty page. */ split_rec = NULL; - goto insert_right; + goto insert_empty; } + } else if (UNIV_UNLIKELY(insert_left)) { + first_rec = page_rec_get_next(page_get_infimum_rec(page)); + move_limit = page_rec_get_next(btr_cur_get_rec(cursor)); } else { -insert_right: - insert_left = FALSE; +insert_empty: + ut_ad(!split_rec); + ut_ad(!insert_left); buf = mem_alloc(rec_get_converted_size(cursor->index, tuple, n_ext)); @@ -2024,7 +2059,11 @@ insert_right: && btr_page_insert_fits(cursor, split_rec, offsets, tuple, n_ext, heap); } else { - mem_free(buf); + if (!insert_left) { + mem_free(buf); + buf = NULL; + } + insert_will_fit = !new_page_zip && btr_page_insert_fits(cursor, NULL, NULL, tuple, n_ext, heap); @@ -2037,7 +2076,17 @@ insert_right: } /* 5. Move then the records to the new page */ - if (direction == FSP_DOWN) { + if (direction == FSP_DOWN +#ifdef UNIV_BTR_AVOID_COPY + && page_rec_is_supremum(move_limit)) { + /* Instead of moving all records, make the new page + the empty page. */ + + left_block = block; + right_block = new_block; + } else if (direction == FSP_DOWN +#endif /* UNIV_BTR_AVOID_COPY */ + ) { /* fputs("Split left\n", stderr); */ if (0 @@ -2080,6 +2129,14 @@ insert_right: right_block = block; lock_update_split_left(right_block, left_block); +#ifdef UNIV_BTR_AVOID_COPY + } else if (!split_rec) { + /* Instead of moving all records, make the new page + the empty page. */ + + left_block = new_block; + right_block = block; +#endif /* UNIV_BTR_AVOID_COPY */ } else { /* fputs("Split right\n", stderr); */ diff --git a/btr/btr0cur.c b/btr/btr0cur.c index 7e4179d9e85..91ff5957d48 100644 --- a/btr/btr0cur.c +++ b/btr/btr0cur.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2008, Google Inc. Portions of this file contain modifications contributed and copyrighted by @@ -372,6 +372,8 @@ btr_cur_search_to_nth_level( ulint has_search_latch,/*!< in: info on the latch mode the caller currently has on btr_search_latch: RW_S_LATCH, or 0 */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr) /*!< in: mtr */ { page_cur_t* page_cursor; @@ -550,7 +552,7 @@ btr_cur_search_to_nth_level( retry_page_get: block = buf_page_get_gen(space, zip_size, page_no, rw_latch, guess, buf_mode, - __FILE__, __LINE__, mtr); + file, line, mtr); if (block == NULL) { if (srv_pass_corrupt_table && buf_mode != BUF_GET_IF_IN_POOL) { page_cursor->block = 0; @@ -727,13 +729,15 @@ func_exit: Opens a cursor at either end of an index. */ UNIV_INTERN void -btr_cur_open_at_index_side( -/*=======================*/ +btr_cur_open_at_index_side_func( +/*============================*/ ibool from_left, /*!< in: TRUE if open to the low end, FALSE if to the high end */ dict_index_t* index, /*!< in: index */ ulint latch_mode, /*!< in: latch mode */ btr_cur_t* cursor, /*!< in: cursor */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr) /*!< in: mtr */ { page_cur_t* page_cursor; @@ -778,7 +782,7 @@ btr_cur_open_at_index_side( page_t* page; block = buf_page_get_gen(space, zip_size, page_no, RW_NO_LATCH, NULL, BUF_GET, - __FILE__, __LINE__, mtr); + file, line, mtr); page = buf_block_get_frame(block); if (srv_pass_corrupt_table && !page) { @@ -869,11 +873,13 @@ btr_cur_open_at_index_side( Positions a cursor at a randomly chosen position within a B-tree. */ UNIV_INTERN void -btr_cur_open_at_rnd_pos( -/*====================*/ +btr_cur_open_at_rnd_pos_func( +/*=========================*/ dict_index_t* index, /*!< in: index */ ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */ btr_cur_t* cursor, /*!< in/out: B-tree cursor */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr) /*!< in: mtr */ { page_cur_t* page_cursor; @@ -908,7 +914,7 @@ btr_cur_open_at_rnd_pos( block = buf_page_get_gen(space, zip_size, page_no, RW_NO_LATCH, NULL, BUF_GET, - __FILE__, __LINE__, mtr); + file, line, mtr); page = buf_block_get_frame(block); if (srv_pass_corrupt_table && !page) { @@ -1229,7 +1235,6 @@ btr_cur_optimistic_insert( ibool inherit; ulint zip_size; ulint rec_size; - mem_heap_t* heap = NULL; ulint err; *big_rec = NULL; @@ -1315,10 +1320,6 @@ btr_cur_optimistic_insert( index, entry, big_rec_vec); } - if (heap) { - mem_heap_free(heap); - } - return(DB_TOO_BIG_RECORD); } } @@ -1341,15 +1342,11 @@ fail_err: dtuple_convert_back_big_rec(index, entry, big_rec_vec); } - if (UNIV_LIKELY_NULL(heap)) { - mem_heap_free(heap); - } - return(err); } if (UNIV_UNLIKELY(max_size < BTR_CUR_PAGE_REORGANIZE_LIMIT - || max_size < rec_size) + || max_size < rec_size) && UNIV_LIKELY(page_get_n_recs(page) > 1) && page_get_max_insert_size(page, 1) < rec_size) { @@ -1415,10 +1412,6 @@ fail_err: } } - if (UNIV_LIKELY_NULL(heap)) { - mem_heap_free(heap); - } - #ifdef BTR_CUR_HASH_ADAPT if (!reorg && leaf && (cursor->flag == BTR_CUR_HASH)) { btr_search_update_hash_node_on_insert(cursor); @@ -3282,7 +3275,8 @@ btr_estimate_n_rows_in_range( btr_cur_search_to_nth_level(index, 0, tuple1, mode1, BTR_SEARCH_LEAF | BTR_ESTIMATE, - &cursor, 0, &mtr); + &cursor, 0, + __FILE__, __LINE__, &mtr); } else { btr_cur_open_at_index_side(TRUE, index, BTR_SEARCH_LEAF | BTR_ESTIMATE, @@ -3299,7 +3293,8 @@ btr_estimate_n_rows_in_range( btr_cur_search_to_nth_level(index, 0, tuple2, mode2, BTR_SEARCH_LEAF | BTR_ESTIMATE, - &cursor, 0, &mtr); + &cursor, 0, + __FILE__, __LINE__, &mtr); } else { btr_cur_open_at_index_side(FALSE, index, BTR_SEARCH_LEAF | BTR_ESTIMATE, @@ -3438,7 +3433,7 @@ btr_estimate_n_pages_not_null( btr_cur_search_to_nth_level(index, 0, tuple1, PAGE_CUR_G, BTR_SEARCH_LEAF | BTR_ESTIMATE, - &cursor, 0, &mtr); + &cursor, 0, __FILE__, __LINE__, &mtr); mtr_commit(&mtr); @@ -3588,9 +3583,11 @@ btr_estimate_number_of_different_key_vals( effective_pages = btr_estimate_n_pages_not_null(index, 1 /*k*/, first_rec_path); if (!effective_pages) { + dict_index_stat_mutex_enter(index); for (j = 0; j <= n_cols; j++) { index->stat_n_diff_key_vals[j] = (ib_int64_t)index->stat_n_leaf_pages; } + dict_index_stat_mutex_exit(index); return; } else if (effective_pages > index->stat_n_leaf_pages) { effective_pages = index->stat_n_leaf_pages; @@ -3732,6 +3729,8 @@ btr_estimate_number_of_different_key_vals( also the pages used for external storage of fields (those pages are included in index->stat_n_leaf_pages) */ + dict_index_stat_mutex_enter(index); + for (j = 0; j <= n_cols; j++) { index->stat_n_diff_key_vals[j] = ((n_diff[j] @@ -3770,8 +3769,9 @@ btr_estimate_number_of_different_key_vals( } } - mem_free(n_diff); + dict_index_stat_mutex_exit(index); + mem_free(n_diff); if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -4639,7 +4639,7 @@ btr_free_externally_stored_field( /* In the rollback of uncommitted transactions, we may encounter a clustered index record whose BLOBs have not been written. There is nothing to free then. */ - ut_a(rb_ctx == RB_RECOVERY); + ut_a(rb_ctx == RB_RECOVERY || rb_ctx == RB_RECOVERY_PURGE_REC); return; } @@ -4685,7 +4685,7 @@ btr_free_externally_stored_field( || (mach_read_from_1(field_ref + BTR_EXTERN_LEN) & BTR_EXTERN_OWNER_FLAG) /* Rollback and inherited field */ - || (rb_ctx != RB_NONE + || ((rb_ctx == RB_NORMAL || rb_ctx == RB_RECOVERY) && (mach_read_from_1(field_ref + BTR_EXTERN_LEN) & BTR_EXTERN_INHERITED_FLAG))) { diff --git a/btr/btr0pcur.c b/btr/btr0pcur.c index 86beea5a899..537c26f6bf2 100644 --- a/btr/btr0pcur.c +++ b/btr/btr0pcur.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -211,10 +211,12 @@ record and it can be restored on a user record whose ordering fields are identical to the ones of the original user record */ UNIV_INTERN ibool -btr_pcur_restore_position( -/*======================*/ +btr_pcur_restore_position_func( +/*===========================*/ ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */ btr_pcur_t* cursor, /*!< in: detached persistent cursor */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr) /*!< in: mtr */ { dict_index_t* index; @@ -223,6 +225,9 @@ btr_pcur_restore_position( ulint old_mode; mem_heap_t* heap; + ut_ad(mtr); + ut_ad(mtr->state == MTR_ACTIVE); + index = btr_cur_get_index(btr_pcur_get_btr_cur(cursor)); if (UNIV_UNLIKELY(cursor->old_stored != BTR_PCUR_OLD_STORED) @@ -263,7 +268,8 @@ btr_pcur_restore_position( if (UNIV_LIKELY(buf_page_optimistic_get( latch_mode, cursor->block_when_stored, - cursor->modify_clock, mtr))) { + cursor->modify_clock, + file, line, mtr))) { cursor->pos_state = BTR_PCUR_IS_POSITIONED; buf_block_dbg_add_level(btr_pcur_get_block(cursor), @@ -318,8 +324,8 @@ btr_pcur_restore_position( mode = PAGE_CUR_L; } - btr_pcur_open_with_no_init(index, tuple, mode, latch_mode, - cursor, 0, mtr); + btr_pcur_open_with_no_init_func(index, tuple, mode, latch_mode, + cursor, 0, file, line, mtr); /* Restore the old search mode */ cursor->search_mode = old_mode; @@ -568,8 +574,8 @@ before first in tree. The latching mode must be BTR_SEARCH_LEAF or BTR_MODIFY_LEAF. */ UNIV_INTERN void -btr_pcur_open_on_user_rec( -/*======================*/ +btr_pcur_open_on_user_rec_func( +/*===========================*/ dict_index_t* index, /*!< in: index */ const dtuple_t* tuple, /*!< in: tuple on which search done */ ulint mode, /*!< in: PAGE_CUR_L, ... */ @@ -577,9 +583,12 @@ btr_pcur_open_on_user_rec( BTR_MODIFY_LEAF */ btr_pcur_t* cursor, /*!< in: memory buffer for persistent cursor */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr) /*!< in: mtr */ { - btr_pcur_open(index, tuple, mode, latch_mode, cursor, mtr); + btr_pcur_open_func(index, tuple, mode, latch_mode, cursor, + file, line, mtr); if ((mode == PAGE_CUR_GE) || (mode == PAGE_CUR_G)) { diff --git a/buf/buf0buddy.c b/buf/buf0buddy.c index d5e45745757..8fc6c286d4d 100644 --- a/buf/buf0buddy.c +++ b/buf/buf0buddy.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 2006, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -430,6 +430,8 @@ buf_buddy_relocate_block( } mutex_exit(&flush_list_mutex); + UNIV_MEM_INVALID(bpage, sizeof *bpage); + mutex_exit(&buf_pool_zip_mutex); mutex_exit(&zip_free_mutex); return(TRUE); diff --git a/buf/buf0buf.c b/buf/buf0buf.c index c287a511165..8592704665a 100644 --- a/buf/buf0buf.c +++ b/buf/buf0buf.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2008, Google Inc. Portions of this file contain modifications contributed and copyrighted by @@ -277,6 +277,8 @@ the read requests for the whole area. #ifndef UNIV_HOTBACKUP /** Value in microseconds */ static const int WAIT_FOR_READ = 5000; +/** Number of attemtps made to read in a page in the buffer pool */ +static const ulint BUF_PAGE_READ_MAX_RETRIES = 100; /** The buffer buf_pool of the database */ UNIV_INTERN buf_pool_t* buf_pool = NULL; @@ -1150,7 +1152,9 @@ buf_pool_drop_hash_index(void) when we have an x-latch on btr_search_latch; see the comment in buf0buf.h */ - if (!block->is_hashed) { + if (buf_block_get_state(block) + != BUF_BLOCK_FILE_PAGE + || !block->is_hashed) { continue; } @@ -1283,8 +1287,6 @@ buf_relocate( HASH_DELETE(buf_page_t, hash, buf_pool->page_hash, fold, bpage); HASH_INSERT(buf_page_t, hash, buf_pool->page_hash, fold, dpage); - - UNIV_MEM_INVALID(bpage, sizeof *bpage); } /********************************************************************//** @@ -1980,14 +1982,14 @@ buf_zip_decompress( buf_block_t* block, /*!< in/out: block */ ibool check) /*!< in: TRUE=verify the page checksum */ { - const byte* frame = block->page.zip.data; + const byte* frame = block->page.zip.data; + ulint stamp_checksum = mach_read_from_4( + frame + FIL_PAGE_SPACE_OR_CHKSUM); ut_ad(buf_block_get_zip_size(block)); ut_a(buf_block_get_space(block) != 0); - if (UNIV_LIKELY(check)) { - ulint stamp_checksum = mach_read_from_4( - frame + FIL_PAGE_SPACE_OR_CHKSUM); + if (UNIV_LIKELY(check && stamp_checksum != BUF_NO_CHECKSUM_MAGIC)) { ulint calc_checksum = page_zip_calc_checksum( frame, page_zip_get_size(&block->page.zip)); @@ -2196,6 +2198,7 @@ buf_page_get_gen( unsigned access_time; ulint fix_type; ibool must_read; + ulint retries = 0; mutex_t* block_mutex; trx_t* trx = NULL; ulint sec; @@ -2204,6 +2207,7 @@ buf_page_get_gen( ib_uint64_t finish_time; ut_ad(mtr); + ut_ad(mtr->state == MTR_ACTIVE); ut_ad((rw_latch == RW_S_LATCH) || (rw_latch == RW_X_LATCH) || (rw_latch == RW_NO_LATCH)); @@ -2271,7 +2275,29 @@ loop2: return(NULL); } - buf_read_page(space, zip_size, offset, trx); + if (buf_read_page(space, zip_size, offset, trx)) { + retries = 0; + } else if (retries < BUF_PAGE_READ_MAX_RETRIES) { + ++retries; + } else { + fprintf(stderr, "InnoDB: Error: Unable" + " to read tablespace %lu page no" + " %lu into the buffer pool after" + " %lu attempts\n" + "InnoDB: The most probable cause" + " of this error may be that the" + " table has been corrupted.\n" + "InnoDB: You can try to fix this" + " problem by using" + " innodb_force_recovery.\n" + "InnoDB: Please see reference manual" + " for more details.\n" + "InnoDB: Aborting...\n", + space, offset, + BUF_PAGE_READ_MAX_RETRIES); + + ut_error; + } #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG ut_a(++buf_dbg_counter % 37 || buf_validate()); @@ -2414,22 +2440,8 @@ wait_until_unfixed: ut_ad(!block->page.in_flush_list); } else { /* Relocate buf_pool->flush_list. */ - buf_page_t* b; - - b = UT_LIST_GET_PREV(flush_list, &block->page); - ut_ad(block->page.in_flush_list); - UT_LIST_REMOVE(flush_list, buf_pool->flush_list, - &block->page); - - if (b) { - UT_LIST_INSERT_AFTER( - flush_list, buf_pool->flush_list, b, - &block->page); - } else { - UT_LIST_ADD_FIRST( - flush_list, buf_pool->flush_list, - &block->page); - } + buf_flush_relocate_on_flush_list(bpage, + &block->page); } mutex_exit(&flush_list_mutex); @@ -2447,6 +2459,9 @@ wait_until_unfixed: block->page.buf_fix_count = 1; buf_block_set_io_fix(block, BUF_IO_READ); rw_lock_x_lock(&block->lock); + + UNIV_MEM_INVALID(bpage, sizeof *bpage); + mutex_exit(block_mutex); mutex_exit(&buf_pool_zip_mutex); @@ -2461,8 +2476,9 @@ wait_until_unfixed: /* Decompress the page and apply buffered operations while not holding buf_pool_mutex or block->mutex. */ success = buf_zip_decompress(block, srv_use_checksums); + ut_a(success); - if (UNIV_LIKELY(success)) { + if (UNIV_LIKELY(!recv_no_ibuf_operations)) { ibuf_merge_or_delete_for_page(block, space, offset, zip_size, TRUE); } @@ -2478,14 +2494,6 @@ wait_until_unfixed: buf_pool->n_pend_unzip--; mutex_exit(&buf_pool_mutex); rw_lock_x_unlock(&block->lock); - - if (UNIV_UNLIKELY(!success)) { - - //buf_pool_mutex_exit(); - mutex_exit(block_mutex); - return(NULL); - } - break; case BUF_BLOCK_ZIP_FREE: @@ -2603,8 +2611,8 @@ page. @return TRUE if success */ UNIV_INTERN ibool -buf_page_optimistic_get_func( -/*=========================*/ +buf_page_optimistic_get( +/*====================*/ ulint rw_latch,/*!< in: RW_S_LATCH, RW_X_LATCH */ buf_block_t* block, /*!< in: guessed buffer block */ ib_uint64_t modify_clock,/*!< in: modify clock value if mode is @@ -2618,7 +2626,9 @@ buf_page_optimistic_get_func( ulint fix_type; trx_t* trx = NULL; - ut_ad(mtr && block); + ut_ad(block); + ut_ad(mtr); + ut_ad(mtr->state == MTR_ACTIVE); ut_ad((rw_latch == RW_S_LATCH) || (rw_latch == RW_X_LATCH)); mutex_enter(&block->mutex); @@ -2738,6 +2748,7 @@ buf_page_get_known_nowait( trx_t* trx = NULL; ut_ad(mtr); + ut_ad(mtr->state == MTR_ACTIVE); ut_ad((rw_latch == RW_S_LATCH) || (rw_latch == RW_X_LATCH)); mutex_enter(&block->mutex); @@ -2846,6 +2857,9 @@ buf_page_try_get_func( ibool success; ulint fix_type; + ut_ad(mtr); + ut_ad(mtr->state == MTR_ACTIVE); + //buf_pool_mutex_enter(); rw_lock_s_lock(&page_hash_latch); block = buf_block_hash_get(space_id, page_no); @@ -3249,6 +3263,7 @@ buf_page_create( ulint time_ms = ut_time_ms(); ut_ad(mtr); + ut_ad(mtr->state == MTR_ACTIVE); ut_ad(space || !zip_size); free_block = buf_LRU_get_free_block(0); @@ -3431,7 +3446,8 @@ buf_page_io_complete( read_space_id = mach_read_from_4( frame + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); - if (bpage->space == TRX_SYS_SPACE + if ((bpage->space == TRX_SYS_SPACE + || (srv_doublewrite_file && bpage->space == TRX_DOUBLEWRITE_SPACE)) && trx_doublewrite_page_inside(bpage->offset)) { ut_print_timestamp(stderr); @@ -3503,7 +3519,7 @@ corrupt: REFMAN "forcing-recovery.html\n" "InnoDB: about forcing recovery.\n", stderr); - if (srv_pass_corrupt_table && bpage->space > 0 + if (srv_pass_corrupt_table && !trx_sys_sys_space(bpage->space) && bpage->space < SRV_LOG_SPACE_FIRST_ID) { fprintf(stderr, "InnoDB: space %lu will be treated as corrupt.\n", diff --git a/buf/buf0flu.c b/buf/buf0flu.c index 1735f6ac3cb..17588475bbf 100644 --- a/buf/buf0flu.c +++ b/buf/buf0flu.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -87,6 +87,146 @@ buf_flush_validate_low(void); /*========================*/ #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ +/********************************************************************//** +Insert a block in the flush_rbt and returns a pointer to its +predecessor or NULL if no predecessor. The ordering is maintained +on the basis of the key. +@return pointer to the predecessor or NULL if no predecessor. */ +static +buf_page_t* +buf_flush_insert_in_flush_rbt( +/*==========================*/ + buf_page_t* bpage) /*!< in: bpage to be inserted. */ +{ + buf_page_t* prev = NULL; + const ib_rbt_node_t* c_node; + const ib_rbt_node_t* p_node; + + //ut_ad(buf_pool_mutex_own()); + ut_ad(mutex_own(&flush_list_mutex)); + + /* Insert this buffer into the rbt. */ + c_node = rbt_insert(buf_pool->flush_rbt, &bpage, &bpage); + ut_a(c_node != NULL); + + /* Get the predecessor. */ + p_node = rbt_prev(buf_pool->flush_rbt, c_node); + + if (p_node != NULL) { + prev = *rbt_value(buf_page_t*, p_node); + ut_a(prev != NULL); + } + + return(prev); +} + +/********************************************************************//** +Delete a bpage from the flush_rbt. */ +static +void +buf_flush_delete_from_flush_rbt( +/*============================*/ + buf_page_t* bpage) /*!< in: bpage to be removed. */ +{ + + ibool ret = FALSE; + + //ut_ad(buf_pool_mutex_own()); + ut_ad(mutex_own(&flush_list_mutex)); + ret = rbt_delete(buf_pool->flush_rbt, &bpage); + ut_ad(ret); +} + +/********************************************************************//** +Compare two modified blocks in the buffer pool. The key for comparison +is: +key = +This comparison is used to maintian ordering of blocks in the +buf_pool->flush_rbt. +Note that for the purpose of flush_rbt, we only need to order blocks +on the oldest_modification. The other two fields are used to uniquely +identify the blocks. +@return < 0 if b2 < b1, 0 if b2 == b1, > 0 if b2 > b1 */ +static +int +buf_flush_block_cmp( +/*================*/ + const void* p1, /*!< in: block1 */ + const void* p2) /*!< in: block2 */ +{ + int ret; + const buf_page_t* b1; + const buf_page_t* b2; + + ut_ad(p1 != NULL); + ut_ad(p2 != NULL); + + b1 = *(const buf_page_t**) p1; + b2 = *(const buf_page_t**) p2; + + ut_ad(b1 != NULL); + ut_ad(b2 != NULL); + + ut_ad(b1->in_flush_list); + ut_ad(b2->in_flush_list); + + if (b2->oldest_modification + > b1->oldest_modification) { + return(1); + } + + if (b2->oldest_modification + < b1->oldest_modification) { + return(-1); + } + + /* If oldest_modification is same then decide on the space. */ + ret = (int)(b2->space - b1->space); + + /* Or else decide ordering on the offset field. */ + return(ret ? ret : (int)(b2->offset - b1->offset)); +} + +/********************************************************************//** +Initialize the red-black tree to speed up insertions into the flush_list +during recovery process. Should be called at the start of recovery +process before any page has been read/written. */ +UNIV_INTERN +void +buf_flush_init_flush_rbt(void) +/*==========================*/ +{ + //buf_pool_mutex_enter(); + mutex_enter(&flush_list_mutex); + + /* Create red black tree for speedy insertions in flush list. */ + buf_pool->flush_rbt = rbt_create(sizeof(buf_page_t*), + buf_flush_block_cmp); + //buf_pool_mutex_exit(); + mutex_exit(&flush_list_mutex); +} + +/********************************************************************//** +Frees up the red-black tree. */ +UNIV_INTERN +void +buf_flush_free_flush_rbt(void) +/*==========================*/ +{ + //buf_pool_mutex_enter(); + mutex_enter(&flush_list_mutex); + +#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG + ut_a(buf_flush_validate_low()); +#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ + + rbt_free(buf_pool->flush_rbt); + buf_pool->flush_rbt = NULL; + + //buf_pool_mutex_exit(); + mutex_exit(&flush_list_mutex); +} + /********************************************************************//** Inserts a modified block into the flush list. */ UNIV_INTERN @@ -102,6 +242,13 @@ buf_flush_insert_into_flush_list( || (UT_LIST_GET_FIRST(buf_pool->flush_list)->oldest_modification <= block->page.oldest_modification)); + /* If we are in the recovery then we need to update the flush + red-black tree as well. */ + if (UNIV_LIKELY_NULL(buf_pool->flush_rbt)) { + buf_flush_insert_sorted_into_flush_list(block); + return; + } + ut_ad(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE); ut_ad(block->page.in_LRU_list); ut_ad(block->page.in_page_hash); @@ -140,26 +287,27 @@ buf_flush_insert_sorted_into_flush_list( ut_d(block->page.in_flush_list = TRUE); prev_b = NULL; - b = UT_LIST_GET_FIRST(buf_pool->flush_list); - if (srv_fast_recovery) { - /* speed hack */ - if (b == NULL || b->oldest_modification < block->page.oldest_modification) { - UT_LIST_ADD_FIRST(flush_list, buf_pool->flush_list, &block->page); + /* For the most part when this function is called the flush_rbt + should not be NULL. In a very rare boundary case it is possible + that the flush_rbt has already been freed by the recovery thread + before the last page was hooked up in the flush_list by the + io-handler thread. In that case we'll just do a simple + linear search in the else block. */ + if (buf_pool->flush_rbt) { + + prev_b = buf_flush_insert_in_flush_rbt(&block->page); + } else { - b = UT_LIST_GET_LAST(buf_pool->flush_list); - if (b->oldest_modification < block->page.oldest_modification) { - /* align oldest_modification not to sort */ - block->page.oldest_modification = b->oldest_modification; + + b = UT_LIST_GET_FIRST(buf_pool->flush_list); + + while (b && b->oldest_modification + > block->page.oldest_modification) { + ut_ad(b->in_flush_list); + prev_b = b; + b = UT_LIST_GET_NEXT(flush_list, b); } - UT_LIST_ADD_LAST(flush_list, buf_pool->flush_list, &block->page); - } - } else { - /* normal */ - while (b && b->oldest_modification > block->page.oldest_modification) { - ut_ad(b->in_flush_list); - prev_b = b; - b = UT_LIST_GET_NEXT(flush_list, b); } if (prev_b == NULL) { @@ -168,7 +316,6 @@ buf_flush_insert_sorted_into_flush_list( UT_LIST_INSERT_AFTER(flush_list, buf_pool->flush_list, prev_b, &block->page); } - } #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG ut_a(buf_flush_validate_low()); @@ -262,7 +409,6 @@ buf_flush_remove( mutex_enter(&flush_list_mutex); ut_ad(bpage->in_flush_list); - ut_d(bpage->in_flush_list = FALSE); switch (buf_page_get_state(bpage)) { case BUF_BLOCK_ZIP_PAGE: @@ -285,6 +431,15 @@ buf_flush_remove( break; } + /* If the flush_rbt is active then delete from it as well. */ + if (UNIV_LIKELY_NULL(buf_pool->flush_rbt)) { + buf_flush_delete_from_flush_rbt(bpage); + } + + /* Must be done after we have removed it from the flush_rbt + because we assert on in_flush_list in comparison function. */ + ut_d(bpage->in_flush_list = FALSE); + bpage->oldest_modification = 0; ut_d(UT_LIST_VALIDATE(flush_list, buf_page_t, buf_pool->flush_list, @@ -292,6 +447,64 @@ buf_flush_remove( mutex_exit(&flush_list_mutex); } +/********************************************************************//** +Relocates a buffer control block on the flush_list. +Note that it is assumed that the contents of bpage has already been +copied to dpage. */ +UNIV_INTERN +void +buf_flush_relocate_on_flush_list( +/*=============================*/ + buf_page_t* bpage, /*!< in/out: control block being moved */ + buf_page_t* dpage) /*!< in/out: destination block */ +{ + buf_page_t* prev; + buf_page_t* prev_b = NULL; + + //ut_ad(buf_pool_mutex_own()); + ut_ad(mutex_own(&flush_list_mutex)); + + ut_ad(mutex_own(buf_page_get_mutex(bpage))); + + ut_ad(bpage->in_flush_list); + ut_ad(dpage->in_flush_list); + + /* If recovery is active we must swap the control blocks in + the flush_rbt as well. */ + if (UNIV_LIKELY_NULL(buf_pool->flush_rbt)) { + buf_flush_delete_from_flush_rbt(bpage); + prev_b = buf_flush_insert_in_flush_rbt(dpage); + } + + /* Must be done after we have removed it from the flush_rbt + because we assert on in_flush_list in comparison function. */ + ut_d(bpage->in_flush_list = FALSE); + + prev = UT_LIST_GET_PREV(flush_list, bpage); + UT_LIST_REMOVE(flush_list, buf_pool->flush_list, bpage); + + if (prev) { + ut_ad(prev->in_flush_list); + UT_LIST_INSERT_AFTER( + flush_list, + buf_pool->flush_list, + prev, dpage); + } else { + UT_LIST_ADD_FIRST( + flush_list, + buf_pool->flush_list, + dpage); + } + + /* Just an extra check. Previous in flush_list + should be the same control block as in flush_rbt. */ + ut_a(!buf_pool->flush_rbt || prev_b == prev); + +#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG + ut_a(buf_flush_validate_low()); +#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ +} + /********************************************************************//** Updates the flush system data structures when a write is completed. */ UNIV_INTERN @@ -452,7 +665,8 @@ corrupted_page: write_buf = trx_doublewrite->write_buf; i = 0; - fil_io(OS_FILE_WRITE, TRUE, TRX_SYS_SPACE, 0, + fil_io(OS_FILE_WRITE, TRUE, + (srv_doublewrite_file ? TRX_DOUBLEWRITE_SPACE : TRX_SYS_SPACE), 0, trx_doublewrite->block1, 0, len, (void*) write_buf, NULL); @@ -489,7 +703,8 @@ corrupted_page: + TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE; ut_ad(i == TRX_SYS_DOUBLEWRITE_BLOCK_SIZE); - fil_io(OS_FILE_WRITE, TRUE, TRX_SYS_SPACE, 0, + fil_io(OS_FILE_WRITE, TRUE, + (srv_doublewrite_file ? TRX_DOUBLEWRITE_SPACE : TRX_SYS_SPACE), 0, trx_doublewrite->block2, 0, len, (void*) write_buf, NULL); @@ -519,7 +734,7 @@ corrupted_page: flush: /* Now flush the doublewrite buffer data to disk */ - fil_flush(TRX_SYS_SPACE); + fil_flush(srv_doublewrite_file ? TRX_DOUBLEWRITE_SPACE : TRX_SYS_SPACE); /* We know that the writes have been flushed to disk now and in recovery we will find them in the doublewrite buffer @@ -1473,24 +1688,45 @@ ibool buf_flush_validate_low(void) /*========================*/ { - buf_page_t* bpage; + buf_page_t* bpage; + const ib_rbt_node_t* rnode = NULL; UT_LIST_VALIDATE(flush_list, buf_page_t, buf_pool->flush_list, ut_ad(ut_list_node_313->in_flush_list)); bpage = UT_LIST_GET_FIRST(buf_pool->flush_list); + /* If we are in recovery mode i.e.: flush_rbt != NULL + then each block in the flush_list must also be present + in the flush_rbt. */ + if (UNIV_LIKELY_NULL(buf_pool->flush_rbt)) { + rnode = rbt_first(buf_pool->flush_rbt); + } + while (bpage != NULL) { const ib_uint64_t om = bpage->oldest_modification; ut_ad(bpage->in_flush_list); //ut_a(buf_page_in_file(bpage)); /* optimistic */ ut_a(om > 0); + if (UNIV_LIKELY_NULL(buf_pool->flush_rbt)) { + ut_a(rnode); + buf_page_t* rpage = *rbt_value(buf_page_t*, + rnode); + ut_a(rpage); + ut_a(rpage == bpage); + rnode = rbt_next(buf_pool->flush_rbt, rnode); + } + bpage = UT_LIST_GET_NEXT(flush_list, bpage); ut_a(!bpage || om >= bpage->oldest_modification); } + /* By this time we must have exhausted the traversal of + flush_rbt (if active) as well. */ + ut_a(rnode == NULL); + return(TRUE); } diff --git a/buf/buf0lru.c b/buf/buf0lru.c index 58e2c23275b..a3d7f3f84bd 100644 --- a/buf/buf0lru.c +++ b/buf/buf0lru.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -371,21 +371,39 @@ scan_again: bpage = UT_LIST_GET_LAST(buf_pool->LRU); while (bpage != NULL) { - mutex_t* block_mutex = buf_page_get_mutex_enter(bpage); buf_page_t* prev_bpage; + ibool prev_bpage_buf_fix = FALSE; ut_a(buf_page_in_file(bpage)); prev_bpage = UT_LIST_GET_PREV(LRU, bpage); - if (!block_mutex) { - bpage = prev_bpage; - continue; - } + /* bpage->space and bpage->io_fix are protected by + buf_pool_mutex and block_mutex. It is safe to check + them while holding buf_pool_mutex only. */ - if (buf_page_get_space(bpage) == id) { - if (bpage->buf_fix_count > 0 - || buf_page_get_io_fix(bpage) != BUF_IO_NONE) { + if (buf_page_get_space(bpage) != id) { + /* Skip this block, as it does not belong to + the space that is being invalidated. */ + } else if (buf_page_get_io_fix(bpage) != BUF_IO_NONE) { + /* We cannot remove this page during this scan + yet; maybe the system is currently reading it + in, or flushing the modifications to the file */ + + all_freed = FALSE; + } else { + mutex_t* block_mutex = buf_page_get_mutex_enter(bpage); + + if (!block_mutex) { + /* It may be impossible case... + Something wrong, so will be scan_again */ + + all_freed = FALSE; + + goto next_page_no_mutex; + } + + if (bpage->buf_fix_count > 0) { /* We cannot remove this page during this scan yet; maybe the system is @@ -405,8 +423,40 @@ scan_again: (ulong) buf_page_get_page_no(bpage)); } #endif - if (buf_page_get_state(bpage) == BUF_BLOCK_FILE_PAGE - && ((buf_block_t*) bpage)->is_hashed) { + if (buf_page_get_state(bpage) != BUF_BLOCK_FILE_PAGE) { + /* This is a compressed-only block + descriptor. Ensure that prev_bpage + cannot be relocated when bpage is freed. */ + if (UNIV_LIKELY(prev_bpage != NULL)) { + switch (buf_page_get_state( + prev_bpage)) { + case BUF_BLOCK_FILE_PAGE: + /* Descriptors of uncompressed + blocks will not be relocated, + because we are holding the + buf_pool_mutex. */ + break; + case BUF_BLOCK_ZIP_PAGE: + case BUF_BLOCK_ZIP_DIRTY: + /* Descriptors of compressed- + only blocks can be relocated, + unless they are buffer-fixed. + Because both bpage and + prev_bpage are protected by + buf_pool_zip_mutex, it is + not necessary to acquire + further mutexes. */ + ut_ad(&buf_pool_zip_mutex + == block_mutex); + ut_ad(mutex_own(block_mutex)); + prev_bpage_buf_fix = TRUE; + prev_bpage->buf_fix_count++; + break; + default: + ut_error; + } + } + } else if (((buf_block_t*) bpage)->is_hashed) { ulint page_no; ulint zip_size; @@ -432,7 +482,8 @@ scan_again: buf_flush_remove(bpage); } - /* Remove from the LRU list */ + /* Remove from the LRU list. */ + if (buf_LRU_block_remove_hashed_page(bpage, TRUE) != BUF_BLOCK_ZIP_FREE) { buf_LRU_block_free_hashed_page((buf_block_t*) @@ -444,18 +495,27 @@ scan_again: ut_ad(block_mutex == &buf_pool_zip_mutex); ut_ad(!mutex_own(block_mutex)); - /* The compressed block descriptor - (bpage) has been deallocated and - block_mutex released. Also, - buf_buddy_free() may have relocated - prev_bpage. Rescan the LRU list. */ + if (prev_bpage_buf_fix) { + /* We temporarily buffer-fixed + prev_bpage, so that + buf_buddy_free() could not + relocate it, in case it was a + compressed-only block + descriptor. */ - bpage = UT_LIST_GET_LAST(buf_pool->LRU); - continue; + mutex_enter(block_mutex); + ut_ad(prev_bpage->buf_fix_count > 0); + prev_bpage->buf_fix_count--; + mutex_exit(block_mutex); + } + + goto next_page_no_mutex; } - } next_page: - mutex_exit(block_mutex); + mutex_exit(block_mutex); + } + +next_page_no_mutex: bpage = prev_bpage; } @@ -1600,26 +1660,8 @@ not_freed: if (b->state == BUF_BLOCK_ZIP_PAGE) { buf_LRU_insert_zip_clean(b); } else { - buf_page_t* prev; - - ut_ad(b->in_flush_list); - ut_d(bpage->in_flush_list = FALSE); - - prev = UT_LIST_GET_PREV(flush_list, b); - UT_LIST_REMOVE(flush_list, buf_pool->flush_list, b); - - if (prev) { - ut_ad(prev->in_flush_list); - UT_LIST_INSERT_AFTER( - flush_list, - buf_pool->flush_list, - prev, b); - } else { - UT_LIST_ADD_FIRST( - flush_list, - buf_pool->flush_list, - b); - } + /* Relocate on buf_pool->flush_list. */ + buf_flush_relocate_on_flush_list(bpage, b); } mutex_exit(&flush_list_mutex); diff --git a/buf/buf0rea.c b/buf/buf0rea.c index e5d04df797f..59de70d9a8a 100644 --- a/buf/buf0rea.c +++ b/buf/buf0rea.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -86,7 +86,9 @@ buf_read_page_low( wake_later = mode & OS_AIO_SIMULATED_WAKE_LATER; mode = mode & ~OS_AIO_SIMULATED_WAKE_LATER; - if (trx_doublewrite && space == TRX_SYS_SPACE + if (trx_doublewrite + && (space == TRX_SYS_SPACE + || (srv_doublewrite_file && space == TRX_DOUBLEWRITE_SPACE)) && ( (offset >= trx_doublewrite->block1 && offset < trx_doublewrite->block1 + TRX_SYS_DOUBLEWRITE_BLOCK_SIZE) @@ -656,6 +658,50 @@ buf_read_recv_pages( /* It is a single table tablespace and the .ibd file is missing: do nothing */ + /* the log records should be treated here same reason + for http://bugs.mysql.com/bug.php?id=43948 */ + + if (recv_recovery_is_on()) { + recv_addr_t* recv_addr; + + mutex_enter(&(recv_sys->mutex)); + + if (recv_sys->apply_log_recs == FALSE) { + mutex_exit(&(recv_sys->mutex)); + goto not_to_recover; + } + + for (i = 0; i < n_stored; i++) { + /* recv_get_fil_addr_struct() */ + recv_addr = HASH_GET_FIRST(recv_sys->addr_hash, + hash_calc_hash(ut_fold_ulint_pair(space, page_nos[i]), + recv_sys->addr_hash)); + while (recv_addr) { + if ((recv_addr->space == space) + && (recv_addr->page_no == page_nos[i])) { + break; + } + recv_addr = HASH_GET_NEXT(addr_hash, recv_addr); + } + + if ((recv_addr == NULL) + || (recv_addr->state == RECV_BEING_PROCESSED) + || (recv_addr->state == RECV_PROCESSED)) { + continue; + } + + recv_addr->state = RECV_PROCESSED; + + ut_a(recv_sys->n_addrs); + recv_sys->n_addrs--; + } + + mutex_exit(&(recv_sys->mutex)); + + fprintf(stderr, " (cannot find space: %lu)", space); + } +not_to_recover: + return; } @@ -674,10 +720,10 @@ buf_read_recv_pages( count++; - if (count > 5000) { + if (count > 1000) { fprintf(stderr, "InnoDB: Error: InnoDB has waited for" - " 50 seconds for pending\n" + " 10 seconds for pending\n" "InnoDB: reads to the buffer pool to" " be finished.\n" "InnoDB: Number of pending reads %lu," diff --git a/data/data0data.c b/data/data0data.c index e3c1f1b4f23..0715b49bf9c 100644 --- a/data/data0data.c +++ b/data/data0data.c @@ -666,6 +666,21 @@ dtuple_convert_big_rec( goto skip_field; } + /* In DYNAMIC and COMPRESSED format, store + locally any non-BLOB columns whose maximum + length does not exceed 256 bytes. This is + because there is no room for the "external + storage" flag when the maximum length is 255 + bytes or less. This restriction trivially + holds in REDUNDANT and COMPACT format, because + there we always store locally columns whose + length is up to local_len == 788 bytes. + @see rec_init_offsets_comp_ordinary */ + if (ifield->col->mtype != DATA_BLOB + && ifield->col->len < 256) { + goto skip_field; + } + longest_i = i; longest = savings; diff --git a/dict/dict0boot.c b/dict/dict0boot.c index 0eb73e6c2f9..0a713f0deaa 100644 --- a/dict/dict0boot.c +++ b/dict/dict0boot.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -275,6 +275,9 @@ dict_boot(void) and (TYPE & DICT_TF_FORMAT_MASK) are nonzero and TYPE = table->flags */ dict_mem_table_add_col(table, heap, "TYPE", DATA_INT, 0, 4); dict_mem_table_add_col(table, heap, "MIX_ID", DATA_BINARY, 0, 0); + /* MIX_LEN may contain additional table flags when + ROW_FORMAT!=REDUNDANT. Currently, these flags include + DICT_TF2_TEMPORARY. */ dict_mem_table_add_col(table, heap, "MIX_LEN", DATA_INT, 0, 4); dict_mem_table_add_col(table, heap, "CLUSTER_NAME", DATA_BINARY, 0, 0); dict_mem_table_add_col(table, heap, "SPACE", DATA_INT, 0, 4); @@ -358,7 +361,7 @@ dict_boot(void) dict_mem_table_add_col(table, heap, "SPACE", DATA_INT, 0, 4); dict_mem_table_add_col(table, heap, "PAGE_NO", DATA_INT, 0, 4); - /* The '+ 2' below comes from the 2 system fields */ + /* The '+ 2' below comes from the fields DB_TRX_ID, DB_ROLL_PTR */ #if DICT_SYS_INDEXES_PAGE_NO_FIELD != 6 + 2 #error "DICT_SYS_INDEXES_PAGE_NO_FIELD != 6 + 2" #endif @@ -367,6 +370,9 @@ dict_boot(void) #endif #if DICT_SYS_INDEXES_TYPE_FIELD != 4 + 2 #error "DICT_SYS_INDEXES_TYPE_FIELD != 4 + 2" +#endif +#if DICT_SYS_INDEXES_NAME_FIELD != 2 + 2 +#error "DICT_SYS_INDEXES_NAME_FIELD != 2 + 2" #endif table->id = DICT_INDEXES_ID; diff --git a/dict/dict0crea.c b/dict/dict0crea.c index f548d89bc68..fc9f69fe591 100644 --- a/dict/dict0crea.c +++ b/dict/dict0crea.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -51,16 +51,18 @@ static dtuple_t* dict_create_sys_tables_tuple( /*=========================*/ - dict_table_t* table, /*!< in: table */ - mem_heap_t* heap) /*!< in: memory heap from which the memory for - the built tuple is allocated */ + const dict_table_t* table, /*!< in: table */ + mem_heap_t* heap) /*!< in: memory heap from + which the memory for the built + tuple is allocated */ { dict_table_t* sys_tables; dtuple_t* entry; dfield_t* dfield; byte* ptr; - ut_ad(table && heap); + ut_ad(table); + ut_ad(heap); sys_tables = dict_sys->sys_tables; @@ -69,18 +71,18 @@ dict_create_sys_tables_tuple( dict_table_copy_types(entry, sys_tables); /* 0: NAME -----------------------------*/ - dfield = dtuple_get_nth_field(entry, 0); + dfield = dtuple_get_nth_field(entry, 0/*NAME*/); dfield_set_data(dfield, table->name, ut_strlen(table->name)); /* 3: ID -------------------------------*/ - dfield = dtuple_get_nth_field(entry, 1); + dfield = dtuple_get_nth_field(entry, 1/*ID*/); ptr = mem_heap_alloc(heap, 8); mach_write_to_8(ptr, table->id); dfield_set_data(dfield, ptr, 8); /* 4: N_COLS ---------------------------*/ - dfield = dtuple_get_nth_field(entry, 2); + dfield = dtuple_get_nth_field(entry, 2/*N_COLS*/); #if DICT_TF_COMPACT != 1 #error @@ -91,40 +93,41 @@ dict_create_sys_tables_tuple( | ((table->flags & DICT_TF_COMPACT) << 31)); dfield_set_data(dfield, ptr, 4); /* 5: TYPE -----------------------------*/ - dfield = dtuple_get_nth_field(entry, 3); + dfield = dtuple_get_nth_field(entry, 3/*TYPE*/); ptr = mem_heap_alloc(heap, 4); - if (table->flags & ~DICT_TF_COMPACT) { + if (table->flags & (~DICT_TF_COMPACT & ~(~0 << DICT_TF_BITS))) { ut_a(table->flags & DICT_TF_COMPACT); ut_a(dict_table_get_format(table) >= DICT_TF_FORMAT_ZIP); ut_a((table->flags & DICT_TF_ZSSIZE_MASK) <= (DICT_TF_ZSSIZE_MAX << DICT_TF_ZSSIZE_SHIFT)); - ut_a(!(table->flags & (~0 << DICT_TF_BITS))); - mach_write_to_4(ptr, table->flags); + ut_a(!(table->flags & (~0 << DICT_TF2_BITS))); + mach_write_to_4(ptr, table->flags & ~(~0 << DICT_TF_BITS)); } else { mach_write_to_4(ptr, DICT_TABLE_ORDINARY); } dfield_set_data(dfield, ptr, 4); /* 6: MIX_ID (obsolete) ---------------------------*/ - dfield = dtuple_get_nth_field(entry, 4); + dfield = dtuple_get_nth_field(entry, 4/*MIX_ID*/); ptr = mem_heap_zalloc(heap, 8); dfield_set_data(dfield, ptr, 8); - /* 7: MIX_LEN (obsolete) --------------------------*/ + /* 7: MIX_LEN (additional flags) --------------------------*/ - dfield = dtuple_get_nth_field(entry, 5); + dfield = dtuple_get_nth_field(entry, 5/*MIX_LEN*/); - ptr = mem_heap_zalloc(heap, 4); + ptr = mem_heap_alloc(heap, 4); + mach_write_to_4(ptr, table->flags >> DICT_TF2_SHIFT); dfield_set_data(dfield, ptr, 4); /* 8: CLUSTER_NAME ---------------------*/ - dfield = dtuple_get_nth_field(entry, 6); + dfield = dtuple_get_nth_field(entry, 6/*CLUSTER_NAME*/); dfield_set_null(dfield); /* not supported */ /* 9: SPACE ----------------------------*/ - dfield = dtuple_get_nth_field(entry, 7); + dfield = dtuple_get_nth_field(entry, 7/*SPACE*/); ptr = mem_heap_alloc(heap, 4); mach_write_to_4(ptr, table->space); @@ -143,19 +146,21 @@ static dtuple_t* dict_create_sys_columns_tuple( /*==========================*/ - dict_table_t* table, /*!< in: table */ - ulint i, /*!< in: column number */ - mem_heap_t* heap) /*!< in: memory heap from which the memory for - the built tuple is allocated */ + const dict_table_t* table, /*!< in: table */ + ulint i, /*!< in: column number */ + mem_heap_t* heap) /*!< in: memory heap from + which the memory for the built + tuple is allocated */ { dict_table_t* sys_columns; dtuple_t* entry; const dict_col_t* column; dfield_t* dfield; byte* ptr; - const char* col_name; + const char* col_name; - ut_ad(table && heap); + ut_ad(table); + ut_ad(heap); column = dict_table_get_nth_col(table, i); @@ -166,47 +171,47 @@ dict_create_sys_columns_tuple( dict_table_copy_types(entry, sys_columns); /* 0: TABLE_ID -----------------------*/ - dfield = dtuple_get_nth_field(entry, 0); + dfield = dtuple_get_nth_field(entry, 0/*TABLE_ID*/); ptr = mem_heap_alloc(heap, 8); mach_write_to_8(ptr, table->id); dfield_set_data(dfield, ptr, 8); /* 1: POS ----------------------------*/ - dfield = dtuple_get_nth_field(entry, 1); + dfield = dtuple_get_nth_field(entry, 1/*POS*/); ptr = mem_heap_alloc(heap, 4); mach_write_to_4(ptr, i); dfield_set_data(dfield, ptr, 4); /* 4: NAME ---------------------------*/ - dfield = dtuple_get_nth_field(entry, 2); + dfield = dtuple_get_nth_field(entry, 2/*NAME*/); col_name = dict_table_get_col_name(table, i); dfield_set_data(dfield, col_name, ut_strlen(col_name)); /* 5: MTYPE --------------------------*/ - dfield = dtuple_get_nth_field(entry, 3); + dfield = dtuple_get_nth_field(entry, 3/*MTYPE*/); ptr = mem_heap_alloc(heap, 4); mach_write_to_4(ptr, column->mtype); dfield_set_data(dfield, ptr, 4); /* 6: PRTYPE -------------------------*/ - dfield = dtuple_get_nth_field(entry, 4); + dfield = dtuple_get_nth_field(entry, 4/*PRTYPE*/); ptr = mem_heap_alloc(heap, 4); mach_write_to_4(ptr, column->prtype); dfield_set_data(dfield, ptr, 4); /* 7: LEN ----------------------------*/ - dfield = dtuple_get_nth_field(entry, 5); + dfield = dtuple_get_nth_field(entry, 5/*LEN*/); ptr = mem_heap_alloc(heap, 4); mach_write_to_4(ptr, column->len); dfield_set_data(dfield, ptr, 4); /* 8: PREC ---------------------------*/ - dfield = dtuple_get_nth_field(entry, 6); + dfield = dtuple_get_nth_field(entry, 6/*PREC*/); ptr = mem_heap_alloc(heap, 4); mach_write_to_4(ptr, 0/* unused */); @@ -230,6 +235,7 @@ dict_build_table_def_step( dict_table_t* table; dtuple_t* row; ulint error; + ulint flags; const char* path_or_name; ibool is_path; mtr_t mtr; @@ -268,9 +274,10 @@ dict_build_table_def_step( ut_ad(!dict_table_zip_size(table) || dict_table_get_format(table) >= DICT_TF_FORMAT_ZIP); + flags = table->flags & ~(~0 << DICT_TF_BITS); error = fil_create_new_single_table_tablespace( &space, path_or_name, is_path, - table->flags == DICT_TF_COMPACT ? 0 : table->flags, + flags == DICT_TF_COMPACT ? 0 : flags, FIL_IBD_FILE_INITIAL_SIZE); table->space = (unsigned int) space; @@ -286,7 +293,7 @@ dict_build_table_def_step( mtr_commit(&mtr); } else { /* Create in the system tablespace: disallow new features */ - table->flags &= DICT_TF_COMPACT; + table->flags &= (~0 << DICT_TF_BITS) | DICT_TF_COMPACT; } row = dict_create_sys_tables_tuple(table, node->heap); @@ -322,9 +329,10 @@ static dtuple_t* dict_create_sys_indexes_tuple( /*==========================*/ - dict_index_t* index, /*!< in: index */ - mem_heap_t* heap) /*!< in: memory heap from which the memory for - the built tuple is allocated */ + const dict_index_t* index, /*!< in: index */ + mem_heap_t* heap) /*!< in: memory heap from + which the memory for the built + tuple is allocated */ { dict_table_t* sys_indexes; dict_table_t* table; @@ -333,7 +341,8 @@ dict_create_sys_indexes_tuple( byte* ptr; ut_ad(mutex_own(&(dict_sys->mutex))); - ut_ad(index && heap); + ut_ad(index); + ut_ad(heap); sys_indexes = dict_sys->sys_indexes; @@ -344,32 +353,32 @@ dict_create_sys_indexes_tuple( dict_table_copy_types(entry, sys_indexes); /* 0: TABLE_ID -----------------------*/ - dfield = dtuple_get_nth_field(entry, 0); + dfield = dtuple_get_nth_field(entry, 0/*TABLE_ID*/); ptr = mem_heap_alloc(heap, 8); mach_write_to_8(ptr, table->id); dfield_set_data(dfield, ptr, 8); /* 1: ID ----------------------------*/ - dfield = dtuple_get_nth_field(entry, 1); + dfield = dtuple_get_nth_field(entry, 1/*ID*/); ptr = mem_heap_alloc(heap, 8); mach_write_to_8(ptr, index->id); dfield_set_data(dfield, ptr, 8); /* 4: NAME --------------------------*/ - dfield = dtuple_get_nth_field(entry, 2); + dfield = dtuple_get_nth_field(entry, 2/*NAME*/); dfield_set_data(dfield, index->name, ut_strlen(index->name)); /* 5: N_FIELDS ----------------------*/ - dfield = dtuple_get_nth_field(entry, 3); + dfield = dtuple_get_nth_field(entry, 3/*N_FIELDS*/); ptr = mem_heap_alloc(heap, 4); mach_write_to_4(ptr, index->n_fields); dfield_set_data(dfield, ptr, 4); /* 6: TYPE --------------------------*/ - dfield = dtuple_get_nth_field(entry, 4); + dfield = dtuple_get_nth_field(entry, 4/*TYPE*/); ptr = mem_heap_alloc(heap, 4); mach_write_to_4(ptr, index->type); @@ -381,7 +390,7 @@ dict_create_sys_indexes_tuple( #error "DICT_SYS_INDEXES_SPACE_NO_FIELD != 7" #endif - dfield = dtuple_get_nth_field(entry, 5); + dfield = dtuple_get_nth_field(entry, 5/*SPACE*/); ptr = mem_heap_alloc(heap, 4); mach_write_to_4(ptr, index->space); @@ -393,7 +402,7 @@ dict_create_sys_indexes_tuple( #error "DICT_SYS_INDEXES_PAGE_NO_FIELD != 8" #endif - dfield = dtuple_get_nth_field(entry, 6); + dfield = dtuple_get_nth_field(entry, 6/*PAGE_NO*/); ptr = mem_heap_alloc(heap, 4); mach_write_to_4(ptr, FIL_NULL); @@ -412,10 +421,11 @@ static dtuple_t* dict_create_sys_fields_tuple( /*=========================*/ - dict_index_t* index, /*!< in: index */ - ulint i, /*!< in: field number */ - mem_heap_t* heap) /*!< in: memory heap from which the memory for - the built tuple is allocated */ + const dict_index_t* index, /*!< in: index */ + ulint i, /*!< in: field number */ + mem_heap_t* heap) /*!< in: memory heap from + which the memory for the built + tuple is allocated */ { dict_table_t* sys_fields; dtuple_t* entry; @@ -425,7 +435,8 @@ dict_create_sys_fields_tuple( ibool index_contains_column_prefix_field = FALSE; ulint j; - ut_ad(index && heap); + ut_ad(index); + ut_ad(heap); for (j = 0; j < index->n_fields; j++) { if (dict_index_get_nth_field(index, j)->prefix_len > 0) { @@ -443,7 +454,7 @@ dict_create_sys_fields_tuple( dict_table_copy_types(entry, sys_fields); /* 0: INDEX_ID -----------------------*/ - dfield = dtuple_get_nth_field(entry, 0); + dfield = dtuple_get_nth_field(entry, 0/*INDEX_ID*/); ptr = mem_heap_alloc(heap, 8); mach_write_to_8(ptr, index->id); @@ -451,7 +462,7 @@ dict_create_sys_fields_tuple( dfield_set_data(dfield, ptr, 8); /* 1: POS + PREFIX LENGTH ----------------------------*/ - dfield = dtuple_get_nth_field(entry, 1); + dfield = dtuple_get_nth_field(entry, 1/*POS*/); ptr = mem_heap_alloc(heap, 4); @@ -471,7 +482,7 @@ dict_create_sys_fields_tuple( dfield_set_data(dfield, ptr, 4); /* 4: COL_NAME -------------------------*/ - dfield = dtuple_get_nth_field(entry, 2); + dfield = dtuple_get_nth_field(entry, 2/*COL_NAME*/); dfield_set_data(dfield, field->name, ut_strlen(field->name)); @@ -602,6 +613,7 @@ dict_create_index_tree_step( dict_table_t* sys_indexes; dict_table_t* table; dtuple_t* search_tuple; + ulint zip_size; btr_pcur_t pcur; mtr_t mtr; @@ -626,8 +638,9 @@ dict_create_index_tree_step( btr_pcur_move_to_next_user_rec(&pcur, &mtr); - node->page_no = btr_create(index->type, index->space, - dict_table_zip_size(index->table), + zip_size = dict_table_zip_size(index->table); + + node->page_no = btr_create(index->type, index->space, zip_size, index->id, index, &mtr); /* printf("Created a new index tree in space %lu root page %lu\n", index->space, index->page_no); */ @@ -1092,8 +1105,11 @@ dict_create_index_step( dulint index_id = node->index->id; - err = dict_index_add_to_cache(node->table, node->index, - FIL_NULL, TRUE); + err = dict_index_add_to_cache( + node->table, node->index, FIL_NULL, + trx_is_strict(trx) + || dict_table_get_format(node->table) + >= DICT_TF_FORMAT_ZIP); node->index = dict_index_get_if_in_cache_low(index_id); ut_a(!node->index == (err != DB_SUCCESS)); diff --git a/dict/dict0dict.c b/dict/dict0dict.c index 7b4174b4b15..1d088b2e02b 100644 --- a/dict/dict0dict.c +++ b/dict/dict0dict.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -81,6 +81,10 @@ UNIV_INTERN rw_lock_t dict_operation_lock; /** Identifies generated InnoDB foreign key names */ static char dict_ibfk[] = "_ibfk_"; +/** array of mutexes protecting dict_index_t::stat_n_diff_key_vals[] */ +#define DICT_INDEX_STAT_MUTEX_SIZE 32 +mutex_t dict_index_stat_mutex[DICT_INDEX_STAT_MUTEX_SIZE]; + /*******************************************************************//** Tries to find column names for the index and sets the col field of the index. @@ -141,7 +145,7 @@ static void dict_field_print_low( /*=================*/ - dict_field_t* field); /*!< in: field */ + const dict_field_t* field); /*!< in: field */ /*********************************************************************//** Frees a foreign key struct. */ static @@ -240,6 +244,45 @@ dict_mutex_exit_for_mysql(void) mutex_exit(&(dict_sys->mutex)); } +/** Get the mutex that protects index->stat_n_diff_key_vals[] */ +#define GET_INDEX_STAT_MUTEX(index) \ + (&dict_index_stat_mutex[ut_fold_dulint(index->id) \ + % DICT_INDEX_STAT_MUTEX_SIZE]) + +/**********************************************************************//** +Lock the appropriate mutex to protect index->stat_n_diff_key_vals[]. +index->id is used to pick the right mutex and it should not change +before dict_index_stat_mutex_exit() is called on this index. */ +UNIV_INTERN +void +dict_index_stat_mutex_enter( +/*========================*/ + const dict_index_t* index) /*!< in: index */ +{ + ut_ad(index != NULL); + ut_ad(index->magic_n == DICT_INDEX_MAGIC_N); + ut_ad(index->cached); + ut_ad(!index->to_be_dropped); + + mutex_enter(GET_INDEX_STAT_MUTEX(index)); +} + +/**********************************************************************//** +Unlock the appropriate mutex that protects index->stat_n_diff_key_vals[]. */ +UNIV_INTERN +void +dict_index_stat_mutex_exit( +/*=======================*/ + const dict_index_t* index) /*!< in: index */ +{ + ut_ad(index != NULL); + ut_ad(index->magic_n == DICT_INDEX_MAGIC_N); + ut_ad(index->cached); + ut_ad(!index->to_be_dropped); + + mutex_exit(GET_INDEX_STAT_MUTEX(index)); +} + /********************************************************************//** Decrements the count of open MySQL handles to a table. */ UNIV_INTERN @@ -608,6 +651,8 @@ void dict_init(void) /*===========*/ { + int i; + dict_sys = mem_alloc(sizeof(dict_sys_t)); mutex_create(&dict_sys->mutex, SYNC_DICT); @@ -628,6 +673,10 @@ dict_init(void) ut_a(dict_foreign_err_file); mutex_create(&dict_foreign_err_mutex, SYNC_ANY_LATCH); + + for (i = 0; i < DICT_INDEX_STAT_MUTEX_SIZE; i++) { + mutex_create(&dict_index_stat_mutex[i], SYNC_INDEX_TREE); + } } /**********************************************************************//** @@ -1442,11 +1491,7 @@ dict_index_too_big_for_tree( goto add_field_size; } - if (srv_relax_table_creation) { - field_max_size = dict_col_get_min_size(col); - } else { field_max_size = dict_col_get_max_size(col); - } field_ext_max_size = field_max_size < 256 ? 1 : 2; if (field->prefix_len) { @@ -1527,6 +1572,7 @@ dict_index_add_to_cache( if (!dict_index_find_cols(table, index)) { + dict_mem_index_free(index); return(DB_CORRUPTION); } @@ -4247,9 +4293,13 @@ dict_update_statistics_low( index = dict_table_get_first_index(table); + dict_index_stat_mutex_enter(index); + table->stat_n_rows = index->stat_n_diff_key_vals[ dict_index_get_n_unique(index)]; + dict_index_stat_mutex_exit(index); + table->stat_clustered_index_size = index->stat_index_size; table->stat_sum_of_other_index_sizes = sum_of_index_sizes @@ -4428,6 +4478,8 @@ dict_index_print_low( ut_ad(mutex_own(&(dict_sys->mutex))); + dict_index_stat_mutex_enter(index); + if (index->n_user_defined_cols > 0) { n_vals = index->stat_n_diff_key_vals[ index->n_user_defined_cols]; @@ -4435,6 +4487,8 @@ dict_index_print_low( n_vals = index->stat_n_diff_key_vals[1]; } + dict_index_stat_mutex_exit(index); + if (dict_index_is_clust(index)) { type_string = "clustered index"; } else if (dict_index_is_unique(index)) { @@ -4480,7 +4534,7 @@ static void dict_field_print_low( /*=================*/ - dict_field_t* field) /*!< in: field */ + const dict_field_t* field) /*!< in: field */ { ut_ad(mutex_own(&(dict_sys->mutex))); @@ -4844,8 +4898,10 @@ UNIV_INTERN void dict_table_check_for_dup_indexes( /*=============================*/ - const dict_table_t* table) /*!< in: Check for dup indexes + const dict_table_t* table, /*!< in: Check for dup indexes in this table */ + ibool tmp_ok) /*!< in: TRUE=allow temporary + index names */ { /* Check for duplicates, ignoring indexes that are marked as to be dropped */ @@ -4853,13 +4909,17 @@ dict_table_check_for_dup_indexes( const dict_index_t* index1; const dict_index_t* index2; + ut_ad(mutex_own(&dict_sys->mutex)); + /* The primary index _must_ exist */ ut_a(UT_LIST_GET_LEN(table->indexes) > 0); index1 = UT_LIST_GET_FIRST(table->indexes); - index2 = UT_LIST_GET_NEXT(indexes, index1); - while (index1 && index2) { + do { + ut_ad(tmp_ok || *index1->name != TEMP_INDEX_PREFIX); + + index2 = UT_LIST_GET_NEXT(indexes, index1); while (index2) { @@ -4871,8 +4931,7 @@ dict_table_check_for_dup_indexes( } index1 = UT_LIST_GET_NEXT(indexes, index1); - index2 = UT_LIST_GET_NEXT(indexes, index1); - } + } while (index1); } #endif /* UNIV_DEBUG */ @@ -4925,6 +4984,10 @@ dict_close(void) mem_free(dict_sys); dict_sys = NULL; + + for (i = 0; i < DICT_INDEX_STAT_MUTEX_SIZE; i++) { + mutex_free(&dict_index_stat_mutex[i]); + } } /************************************************************************* @@ -4939,7 +5002,7 @@ dict_table_set_corrupt_by_space( dict_table_t* table; ibool found = FALSE; - ut_a(space_id != 0 && space_id < SRV_LOG_SPACE_FIRST_ID); + ut_a(!trx_sys_sys_space(space_id) && space_id < SRV_LOG_SPACE_FIRST_ID); if (need_mutex) mutex_enter(&(dict_sys->mutex)); diff --git a/dict/dict0load.c b/dict/dict0load.c index 46cce5050cd..ba0374595ce 100644 --- a/dict/dict0load.c +++ b/dict/dict0load.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -260,7 +260,7 @@ dict_sys_tables_get_flags( return(0); } - field = rec_get_nth_field_old(rec, 4, &len); + field = rec_get_nth_field_old(rec, 4/*N_COLS*/, &len); n_cols = mach_read_from_4(field); if (UNIV_UNLIKELY(!(n_cols & 0x80000000UL))) { @@ -390,15 +390,35 @@ loop: mtr_commit(&mtr); - if (space_id != 0 && in_crash_recovery) { + if (trx_sys_sys_space(space_id)) { + /* The system tablespace always exists. */ + } else if (in_crash_recovery) { /* Check that the tablespace (the .ibd file) really - exists; print a warning to the .err log if not */ + exists; print a warning to the .err log if not. + Do not print warnings for temporary tables. */ + ibool is_temp; - fil_space_for_table_exists_in_mem(space_id, name, - FALSE, TRUE, TRUE); - } + field = rec_get_nth_field_old(rec, 4, &len); + if (0x80000000UL & mach_read_from_4(field)) { + /* ROW_FORMAT=COMPACT: read the is_temp + flag from SYS_TABLES.MIX_LEN. */ + field = rec_get_nth_field_old(rec, 7, &len); + is_temp = mach_read_from_4(field) + & DICT_TF2_TEMPORARY; + } else { + /* For tables created with old versions + of InnoDB, SYS_TABLES.MIX_LEN may contain + garbage. Such tables would always be + in ROW_FORMAT=REDUNDANT. Pretend that + all such tables are non-temporary. That is, + do not suppress error printouts about + temporary tables not being found. */ + is_temp = FALSE; + } - if (space_id != 0 && !in_crash_recovery) { + fil_space_for_table_exists_in_mem( + space_id, name, is_temp, TRUE, !is_temp); + } else { /* It is a normal database startup: create the space object and check that the .ibd file exists. */ @@ -878,7 +898,7 @@ err_exit: space = mach_read_from_4(field); /* Check if the tablespace exists and has the right name */ - if (space != 0) { + if (!trx_sys_sys_space(space)) { flags = dict_sys_tables_get_flags(rec); if (UNIV_UNLIKELY(flags == ULINT_UNDEFINED)) { @@ -894,31 +914,6 @@ err_exit: (ulong) flags); goto err_exit; } - - if (fil_space_for_table_exists_in_mem(space, name, FALSE, - FALSE, FALSE)) { - /* Ok; (if we did a crash recovery then the tablespace - can already be in the memory cache) */ - } else { - /* In >= 4.1.9, InnoDB scans the data dictionary also - at a normal mysqld startup. It is an error if the - space object does not exist in memory. */ - - ut_print_timestamp(stderr); - fprintf(stderr, - " InnoDB: error: space object of table %s,\n" - "InnoDB: space id %lu did not exist in memory." - " Retrying an open.\n", - name, (ulong)space); - /* Try to open the tablespace */ - if (!fil_open_single_table_tablespace( - TRUE, space, flags, name)) { - /* We failed to find a sensible tablespace - file */ - - ibd_file_missing = TRUE; - } - } } else { flags = 0; } @@ -928,9 +923,63 @@ err_exit: field = rec_get_nth_field_old(rec, 4, &len); n_cols = mach_read_from_4(field); - /* The high-order bit of N_COLS is the "compact format" flag. */ + /* The high-order bit of N_COLS is the "compact format" flag. + For tables in that format, MIX_LEN may hold additional flags. */ if (n_cols & 0x80000000UL) { + ulint flags2; + flags |= DICT_TF_COMPACT; + + ut_a(name_of_col_is(sys_tables, sys_index, 7, "MIX_LEN")); + field = rec_get_nth_field_old(rec, 7, &len); + + flags2 = mach_read_from_4(field); + + if (flags2 & (~0 << (DICT_TF2_BITS - DICT_TF2_SHIFT))) { + ut_print_timestamp(stderr); + fputs(" InnoDB: Warning: table ", stderr); + ut_print_filename(stderr, name); + fprintf(stderr, "\n" + "InnoDB: in InnoDB data dictionary" + " has unknown flags %lx.\n", + (ulong) flags2); + + flags2 &= ~(~0 << (DICT_TF2_BITS - DICT_TF2_SHIFT)); + } + + flags |= flags2 << DICT_TF2_SHIFT; + } + + /* See if the tablespace is available. */ + if (trx_sys_sys_space(space)) { + /* The system tablespace is always available. */ + } else if (!fil_space_for_table_exists_in_mem( + space, name, + (flags >> DICT_TF2_SHIFT) & DICT_TF2_TEMPORARY, + FALSE, FALSE)) { + + if ((flags >> DICT_TF2_SHIFT) & DICT_TF2_TEMPORARY) { + /* Do not bother to retry opening temporary tables. */ + ibd_file_missing = TRUE; + } else { + ut_print_timestamp(stderr); + fprintf(stderr, + " InnoDB: error: space object of table"); + ut_print_filename(stderr, name); + fprintf(stderr, ",\n" + "InnoDB: space id %lu did not exist in memory." + " Retrying an open.\n", + (ulong) space); + /* Try to open the tablespace */ + if (!fil_open_single_table_tablespace( + TRUE, space, + flags & ~(~0 << DICT_TF_BITS), name)) { + /* We failed to find a sensible + tablespace file */ + + ibd_file_missing = TRUE; + } + } } table = dict_mem_table_create(name, space, n_cols & ~0x80000000UL, diff --git a/dict/dict0mem.c b/dict/dict0mem.c index acf550befad..388d46568ac 100644 --- a/dict/dict0mem.c +++ b/dict/dict0mem.c @@ -59,7 +59,7 @@ dict_mem_table_create( mem_heap_t* heap; ut_ad(name); - ut_a(!(flags & (~0 << DICT_TF_BITS))); + ut_a(!(flags & (~0 << DICT_TF2_BITS))); heap = mem_heap_create(DICT_HEAP_SIZE); diff --git a/fil/fil0fil.c b/fil/fil0fil.c index 8956c360ae5..bca6db473ed 100644 --- a/fil/fil0fil.c +++ b/fil/fil0fil.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -38,6 +38,7 @@ Created 10/25/1995 Heikki Tuuri #include "mtr0mtr.h" #include "mtr0log.h" #include "dict0dict.h" +#include "page0page.h" #include "page0zip.h" #include "trx0trx.h" #include "trx0sys.h" @@ -673,14 +674,14 @@ fil_node_open_file( size_bytes = (((ib_int64_t)size_high) << 32) + (ib_int64_t)size_low; #ifdef UNIV_HOTBACKUP - if (space->id == 0) { + if (trx_sys_sys_space(space->id)) { node->size = (ulint) (size_bytes / UNIV_PAGE_SIZE); os_file_close(node->handle); goto add_size; } #endif /* UNIV_HOTBACKUP */ ut_a(space->purpose != FIL_LOG); - ut_a(space->id != 0); + ut_a(!trx_sys_sys_space(space->id)); if (size_bytes < FIL_IBD_FILE_INITIAL_SIZE * UNIV_PAGE_SIZE) { fprintf(stderr, @@ -726,7 +727,7 @@ fil_node_open_file( } if (UNIV_UNLIKELY(space_id == ULINT_UNDEFINED - || space_id == 0)) { + || trx_sys_sys_space(space_id))) { fprintf(stderr, "InnoDB: Error: tablespace id %lu" " in file %s is not sensible\n", @@ -788,7 +789,7 @@ add_size: system->n_open++; - if (space->purpose == FIL_TABLESPACE && space->id != 0) { + if (space->purpose == FIL_TABLESPACE && !trx_sys_sys_space(space->id)) { /* Put the node to the LRU list */ UT_LIST_ADD_FIRST(LRU, system->LRU, node); } @@ -821,7 +822,7 @@ fil_node_close_file( ut_a(system->n_open > 0); system->n_open--; - if (node->space->purpose == FIL_TABLESPACE && node->space->id != 0) { + if (node->space->purpose == FIL_TABLESPACE && !trx_sys_sys_space(node->space->id)) { ut_a(UT_LIST_GET_LEN(system->LRU) > 0); /* The node is in the LRU list, remove it */ @@ -907,7 +908,7 @@ fil_mutex_enter_and_prepare_for_io( retry: mutex_enter(&fil_system->mutex); - if (space_id == 0 || space_id >= SRV_LOG_SPACE_FIRST_ID) { + if (trx_sys_sys_space(space_id) || space_id >= SRV_LOG_SPACE_FIRST_ID) { /* We keep log files and system tablespace files always open; this is important in preventing deadlocks in this module, as a page read completion often performs another read from the @@ -1102,10 +1103,13 @@ fil_space_create( fil_space_t* space; /* The tablespace flags (FSP_SPACE_FLAGS) should be 0 for - ROW_FORMAT=COMPACT (table->flags == DICT_TF_COMPACT) and + ROW_FORMAT=COMPACT + ((table->flags & ~(~0 << DICT_TF_BITS)) == DICT_TF_COMPACT) and ROW_FORMAT=REDUNDANT (table->flags == 0). For any other - format, the tablespace flags should equal table->flags. */ + format, the tablespace flags should equal + (table->flags & ~(~0 << DICT_TF_BITS)). */ ut_a(flags != DICT_TF_COMPACT); + ut_a(!(flags & (~0UL << DICT_TF_BITS))); try_again: /*printf( @@ -1134,7 +1138,7 @@ try_again: " tablespace memory cache!\n", (ulong) space->id); - if (id == 0 || purpose != FIL_TABLESPACE) { + if (trx_sys_sys_space(id) || purpose != FIL_TABLESPACE) { mutex_exit(&fil_system->mutex); @@ -1528,7 +1532,7 @@ fil_init( fil_system->max_n_open = max_n_open; fil_system->modification_counter = 0; - fil_system->max_assigned_id = 0; + fil_system->max_assigned_id = TRX_SYS_SPACE_MAX; fil_system->tablespace_version = 0; @@ -1555,7 +1559,7 @@ fil_open_log_and_system_tablespace_files(void) space = UT_LIST_GET_FIRST(fil_system->space_list); while (space != NULL) { - if (space->purpose != FIL_TABLESPACE || space->id == 0) { + if (space->purpose != FIL_TABLESPACE || trx_sys_sys_space(space->id)) { node = UT_LIST_GET_FIRST(space->chain); while (node != NULL) { @@ -2589,10 +2593,13 @@ fil_create_new_single_table_tablespace( ut_a(size >= FIL_IBD_FILE_INITIAL_SIZE); /* The tablespace flags (FSP_SPACE_FLAGS) should be 0 for - ROW_FORMAT=COMPACT (table->flags == DICT_TF_COMPACT) and + ROW_FORMAT=COMPACT + ((table->flags & ~(~0 << DICT_TF_BITS)) == DICT_TF_COMPACT) and ROW_FORMAT=REDUNDANT (table->flags == 0). For any other - format, the tablespace flags should equal table->flags. */ + format, the tablespace flags should equal + (table->flags & ~(~0 << DICT_TF_BITS)). */ ut_a(flags != DICT_TF_COMPACT); + ut_a(!(flags & (~0UL << DICT_TF_BITS))); path = fil_make_ibd_name(tablename, is_temp); @@ -2793,6 +2800,7 @@ fil_reset_too_high_lsns( ib_int64_t offset; ulint zip_size; ibool success; + page_zip_des_t page_zip; filepath = fil_make_ibd_name(name, FALSE); @@ -2840,6 +2848,12 @@ fil_reset_too_high_lsns( space_id = fsp_header_get_space_id(page); zip_size = fsp_header_get_zip_size(page); + page_zip_des_init(&page_zip); + page_zip_set_size(&page_zip, zip_size); + if (zip_size) { + page_zip.data = page + UNIV_PAGE_SIZE; + } + ut_print_timestamp(stderr); fprintf(stderr, " InnoDB: Flush lsn in the tablespace file %lu" @@ -2874,20 +2888,23 @@ fil_reset_too_high_lsns( /* We have to reset the lsn */ if (zip_size) { - memcpy(page + UNIV_PAGE_SIZE, page, zip_size); + memcpy(page_zip.data, page, zip_size); buf_flush_init_for_writing( - page, page + UNIV_PAGE_SIZE, - current_lsn); + page, &page_zip, current_lsn); + success = os_file_write( + filepath, file, page_zip.data, + (ulint) offset & 0xFFFFFFFFUL, + (ulint) (offset >> 32), zip_size); } else { buf_flush_init_for_writing( page, NULL, current_lsn); + success = os_file_write( + filepath, file, page, + (ulint)(offset & 0xFFFFFFFFUL), + (ulint)(offset >> 32), + UNIV_PAGE_SIZE); } - success = os_file_write(filepath, file, page, - (ulint)(offset & 0xFFFFFFFFUL), - (ulint)(offset >> 32), - zip_size - ? zip_size - : UNIV_PAGE_SIZE); + if (!success) { goto func_exit; @@ -2963,10 +2980,13 @@ fil_open_single_table_tablespace( filepath = fil_make_ibd_name(name, FALSE); /* The tablespace flags (FSP_SPACE_FLAGS) should be 0 for - ROW_FORMAT=COMPACT (table->flags == DICT_TF_COMPACT) and + ROW_FORMAT=COMPACT + ((table->flags & ~(~0 << DICT_TF_BITS)) == DICT_TF_COMPACT) and ROW_FORMAT=REDUNDANT (table->flags == 0). For any other - format, the tablespace flags should equal table->flags. */ + format, the tablespace flags should equal + (table->flags & ~(~0 << DICT_TF_BITS)). */ ut_a(flags != DICT_TF_COMPACT); + ut_a(!(flags & (~0UL << DICT_TF_BITS))); file = os_file_create_simple_no_error_handling( filepath, OS_FILE_OPEN, OS_FILE_READ_WRITE, &success); @@ -3016,7 +3036,8 @@ fil_open_single_table_tablespace( space_id = fsp_header_get_space_id(page); space_flags = fsp_header_get_flags(page); - if (srv_expand_import && (space_id != id || space_flags != flags)) { + if (srv_expand_import + && (space_id != id || space_flags != (flags & ~(~0 << DICT_TF_BITS)))) { dulint old_id[31]; dulint new_id[31]; ulint root_page[31]; @@ -3357,7 +3378,8 @@ skip_write: ut_free(buf2); - if (UNIV_UNLIKELY(space_id != id || space_flags != flags)) { + if (UNIV_UNLIKELY(space_id != id + || space_flags != (flags & ~(~0 << DICT_TF_BITS)))) { ut_print_timestamp(stderr); fputs(" InnoDB: Error: tablespace id and flags in file ", @@ -3596,7 +3618,7 @@ fil_load_single_table_tablespace( } #ifndef UNIV_HOTBACKUP - if (space_id == ULINT_UNDEFINED || space_id == 0) { + if (space_id == ULINT_UNDEFINED || trx_sys_sys_space(space_id)) { fprintf(stderr, "InnoDB: Error: tablespace id %lu in file %s" " is not sensible\n", @@ -3605,7 +3627,7 @@ fil_load_single_table_tablespace( goto func_exit; } #else - if (space_id == ULINT_UNDEFINED || space_id == 0) { + if (space_id == ULINT_UNDEFINED || trx_sys_sys_space(space_id)) { char* new_path; fprintf(stderr, @@ -3884,7 +3906,7 @@ fil_print_orphaned_tablespaces(void) space = UT_LIST_GET_FIRST(fil_system->space_list); while (space) { - if (space->purpose == FIL_TABLESPACE && space->id != 0 + if (space->purpose == FIL_TABLESPACE && !trx_sys_sys_space(space->id) && !space->mark) { fputs("InnoDB: Warning: tablespace ", stderr); ut_print_filename(stderr, space->name); @@ -4459,7 +4481,7 @@ fil_node_prepare_for_io( } if (node->n_pending == 0 && space->purpose == FIL_TABLESPACE - && space->id != 0) { + && !trx_sys_sys_space(space->id)) { /* The node is in the LRU list, remove it */ ut_a(UT_LIST_GET_LEN(system->LRU) > 0); @@ -4505,7 +4527,7 @@ fil_node_complete_io( } if (node->n_pending == 0 && node->space->purpose == FIL_TABLESPACE - && node->space->id != 0) { + && !trx_sys_sys_space(node->space->id)) { /* The node must be put back to the LRU list */ UT_LIST_ADD_FIRST(LRU, system->LRU, node); } @@ -5136,7 +5158,7 @@ fil_validate(void) ut_a(fil_node->n_pending == 0); ut_a(fil_node->open); ut_a(fil_node->space->purpose == FIL_TABLESPACE); - ut_a(fil_node->space->id != 0); + ut_a(!trx_sys_sys_space(fil_node->space->id)); fil_node = UT_LIST_GET_NEXT(LRU, fil_node); } @@ -5218,8 +5240,10 @@ void fil_close(void) /*===========*/ { +#ifndef UNIV_HOTBACKUP /* The mutex should already have been freed. */ ut_ad(fil_system->mutex.magic_n == 0); +#endif /* !UNIV_HOTBACKUP */ hash_table_free(fil_system->spaces); diff --git a/fsp/fsp0fsp.c b/fsp/fsp0fsp.c index 3b888f292a7..a05a96a28b7 100644 --- a/fsp/fsp0fsp.c +++ b/fsp/fsp0fsp.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -48,7 +48,7 @@ Created 11/29/1995 Heikki Tuuri # include "log0log.h" #endif /* UNIV_HOTBACKUP */ #include "dict0mem.h" - +#include "trx0sys.h" #define FSP_HEADER_OFFSET FIL_PAGE_DATA /* Offset of the space header within a file page */ @@ -392,11 +392,11 @@ UNIV_INLINE ibool xdes_get_bit( /*=========*/ - xdes_t* descr, /*!< in: descriptor */ - ulint bit, /*!< in: XDES_FREE_BIT or XDES_CLEAN_BIT */ - ulint offset, /*!< in: page offset within extent: - 0 ... FSP_EXTENT_SIZE - 1 */ - mtr_t* mtr) /*!< in: mtr */ + const xdes_t* descr, /*!< in: descriptor */ + ulint bit, /*!< in: XDES_FREE_BIT or XDES_CLEAN_BIT */ + ulint offset, /*!< in: page offset within extent: + 0 ... FSP_EXTENT_SIZE - 1 */ + mtr_t* mtr) /*!< in: mtr */ { ulint index; ulint byte_index; @@ -533,8 +533,8 @@ UNIV_INLINE ulint xdes_get_n_used( /*============*/ - xdes_t* descr, /*!< in: descriptor */ - mtr_t* mtr) /*!< in: mtr */ + const xdes_t* descr, /*!< in: descriptor */ + mtr_t* mtr) /*!< in: mtr */ { ulint i; ulint count = 0; @@ -557,8 +557,8 @@ UNIV_INLINE ibool xdes_is_free( /*=========*/ - xdes_t* descr, /*!< in: descriptor */ - mtr_t* mtr) /*!< in: mtr */ + const xdes_t* descr, /*!< in: descriptor */ + mtr_t* mtr) /*!< in: mtr */ { if (0 == xdes_get_n_used(descr, mtr)) { @@ -575,8 +575,8 @@ UNIV_INLINE ibool xdes_is_full( /*=========*/ - xdes_t* descr, /*!< in: descriptor */ - mtr_t* mtr) /*!< in: mtr */ + const xdes_t* descr, /*!< in: descriptor */ + mtr_t* mtr) /*!< in: mtr */ { if (FSP_EXTENT_SIZE == xdes_get_n_used(descr, mtr)) { @@ -592,7 +592,7 @@ UNIV_INLINE void xdes_set_state( /*===========*/ - xdes_t* descr, /*!< in: descriptor */ + xdes_t* descr, /*!< in/out: descriptor */ ulint state, /*!< in: state to set */ mtr_t* mtr) /*!< in: mtr handle */ { @@ -611,8 +611,8 @@ UNIV_INLINE ulint xdes_get_state( /*===========*/ - xdes_t* descr, /*!< in: descriptor */ - mtr_t* mtr) /*!< in: mtr handle */ + const xdes_t* descr, /*!< in: descriptor */ + mtr_t* mtr) /*!< in: mtr handle */ { ulint state; @@ -712,7 +712,7 @@ UNIV_INLINE xdes_t* xdes_get_descriptor_with_space_hdr( /*===============================*/ - fsp_header_t* sp_header,/*!< in: space header, x-latched */ + fsp_header_t* sp_header,/*!< in/out: space header, x-latched */ ulint space, /*!< in: space id */ ulint offset, /*!< in: page offset; if equal to the free limit, @@ -882,9 +882,7 @@ fsp_init_file_page_low( return; } -#ifdef UNIV_BASIC_LOG_DEBUG - memset(page, 0xff, UNIV_PAGE_SIZE); -#endif + UNIV_MEM_INVALID(page, UNIV_PAGE_SIZE); mach_write_to_4(page + FIL_PAGE_OFFSET, buf_block_get_page_no(block)); memset(page + FIL_PAGE_LSN, 0, 8); mach_write_to_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, @@ -1017,10 +1015,10 @@ fsp_header_init( flst_init(header + FSP_SEG_INODES_FREE, mtr); mlog_write_dulint(header + FSP_SEG_ID, ut_dulint_create(0, 1), mtr); - if (space == 0) { + if (space == TRX_SYS_SPACE || space == TRX_DOUBLEWRITE_SPACE) { fsp_fill_free_list(FALSE, space, header, mtr); btr_create(DICT_CLUSTERED | DICT_UNIVERSAL | DICT_IBUF, - 0, 0, ut_dulint_add(DICT_IBUF_ID_MIN, space), + space, 0, ut_dulint_add(DICT_IBUF_ID_MIN, space), dict_ind_redundant, mtr); } else { fsp_fill_free_list(TRUE, space, header, mtr); @@ -1355,7 +1353,7 @@ fsp_fill_free_list( descriptor page and ibuf bitmap page; then we do not allocate more extents */ ulint space, /*!< in: space */ - fsp_header_t* header, /*!< in: space header */ + fsp_header_t* header, /*!< in/out: space header */ mtr_t* mtr) /*!< in: mtr */ { ulint limit; diff --git a/ha/ha0ha.c b/ha/ha0ha.c index cb5e541b55d..9d9d341ad39 100644 --- a/ha/ha0ha.c +++ b/ha/ha0ha.c @@ -101,6 +101,8 @@ ha_clear( ulint i; ulint n; + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); #ifdef UNIV_SYNC_DEBUG ut_ad(rw_lock_own(&btr_search_latch, RW_LOCK_EXCLUSIVE)); #endif /* UNIV_SYNC_DEBUG */ @@ -146,7 +148,9 @@ ha_insert_for_fold_func( ha_node_t* prev_node; ulint hash; - ut_ad(table && data); + ut_ad(data); + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG ut_a(block->frame == page_align(data)); #endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */ @@ -237,6 +241,8 @@ ha_delete_hash_node( hash_table_t* table, /*!< in: hash table */ ha_node_t* del_node) /*!< in: node to be deleted */ { + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG # ifndef UNIV_HOTBACKUP if (table->adaptive) { @@ -267,6 +273,8 @@ ha_search_and_update_if_found_func( { ha_node_t* node; + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); ASSERT_HASH_MUTEX_OWN(table, fold); #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG ut_a(new_block->frame == page_align(new_data)); @@ -304,6 +312,8 @@ ha_remove_all_nodes_to_page( { ha_node_t* node; + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); ASSERT_HASH_MUTEX_OWN(table, fold); node = ha_chain_get_first(table, fold); @@ -353,6 +363,8 @@ ha_validate( ibool ok = TRUE; ulint i; + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); ut_a(start_index <= end_index); ut_a(start_index < hash_get_n_cells(table)); ut_a(end_index < hash_get_n_cells(table)); @@ -404,6 +416,8 @@ builds, see http://bugs.mysql.com/36941 */ #endif /* PRINT_USED_CELLS */ ulint n_bufs; + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); #ifdef PRINT_USED_CELLS for (i = 0; i < hash_get_n_cells(table); i++) { diff --git a/ha/hash0hash.c b/ha/hash0hash.c index 2800d7793f8..30c304dafcd 100644 --- a/ha/hash0hash.c +++ b/ha/hash0hash.c @@ -119,7 +119,7 @@ hash_create( table->heaps = NULL; #endif /* !UNIV_HOTBACKUP */ table->heap = NULL; - table->magic_n = HASH_TABLE_MAGIC_N; + ut_d(table->magic_n = HASH_TABLE_MAGIC_N); /* Initialize the cell array */ hash_table_clear(table); @@ -135,6 +135,8 @@ hash_table_free( /*============*/ hash_table_t* table) /*!< in, own: hash table */ { + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); #ifndef UNIV_HOTBACKUP ut_a(table->mutexes == NULL); #endif /* !UNIV_HOTBACKUP */ @@ -160,6 +162,8 @@ hash_create_mutexes_func( { ulint i; + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); ut_a(n_mutexes > 0); ut_a(ut_is_2pow(n_mutexes)); diff --git a/handler/ha_innodb.cc b/handler/ha_innodb.cc index 5a84d853ad3..5c01abd2e0c 100644 --- a/handler/ha_innodb.cc +++ b/handler/ha_innodb.cc @@ -1,7 +1,8 @@ /***************************************************************************** -Copyright (c) 2000, 2009, MySQL AB & Innobase Oy. All Rights Reserved. +Copyright (c) 2000, 2010, MySQL AB & Innobase Oy. All Rights Reserved. Copyright (c) 2008, 2009 Google Inc. +Copyright (c) 2009, Percona Inc. Portions of this file contain modifications contributed and copyrighted by Google, Inc. Those modifications are gratefully acknowledged and are described @@ -9,6 +10,13 @@ briefly in the InnoDB documentation. The contributions by Google are incorporated with their permission, and subject to the conditions contained in the file COPYING.Google. +Portions of this file contain modifications contributed and copyrighted +by Percona Inc.. Those modifications are +gratefully acknowledged and are described briefly in the InnoDB +documentation. The contributions by Percona Inc. are incorporated with +their permission, and subject to the conditions contained in the file +COPYING.Percona. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. @@ -22,32 +30,6 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *****************************************************************************/ -/*********************************************************************** - -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. -Copyright (c) 2009, Percona Inc. - -Portions of this file contain modifications contributed and copyrighted -by Percona Inc.. Those modifications are -gratefully acknowledged and are described briefly in the InnoDB -documentation. The contributions by Percona Inc. are incorporated with -their permission, and subject to the conditions contained in the file -COPYING.Percona. - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -***********************************************************************/ /* TODO list for the InnoDB handler in 5.0: - Remove the flag trx->active_trans and look at trx->conc_state @@ -144,7 +126,6 @@ static ulong commit_threads = 0; static pthread_mutex_t commit_threads_m; static pthread_cond_t commit_cond; static pthread_mutex_t commit_cond_m; -static pthread_mutex_t analyze_mutex; static bool innodb_inited = 0; #define INSIDE_HA_INNOBASE_CC @@ -187,6 +168,7 @@ static char* innobase_data_file_path = NULL; static char* innobase_log_group_home_dir = NULL; static char* innobase_file_format_name = NULL; static char* innobase_change_buffering = NULL; +static char* innobase_doublewrite_file = NULL; /* Note: This variable can be set to on/off and any of the supported file formats in the configuration file, but can only be set to any @@ -360,7 +342,7 @@ static MYSQL_THDVAR_ULONG(lock_wait_timeout, PLUGIN_VAR_RQCMDARG, static handler *innobase_create_handler(handlerton *hton, - TABLE_SHARE *table, + TABLE_SHARE *table, MEM_ROOT *mem_root) { return new (mem_root) ha_innobase(hton, table); @@ -473,8 +455,9 @@ static int innobase_start_trx_and_assign_read_view( /*====================================*/ - handlerton* hton, /*!< in: Innodb handlerton */ - THD* thd); /*!< in: MySQL thread handle of the user for whom + /* out: 0 */ + handlerton* hton, /* in: Innodb handlerton */ + THD* thd); /* in: MySQL thread handle of the user for whom the transaction should be committed */ /****************************************************************//** Flushes InnoDB logs to disk and makes a checkpoint. Really, a commit flushes @@ -556,6 +539,8 @@ static SHOW_VAR innodb_status_variables[]= { (char*) &export_vars.innodb_data_written, SHOW_LONG}, {"dblwr_pages_written", (char*) &export_vars.innodb_dblwr_pages_written, SHOW_LONG}, + {"deadlocks", + (char*) &export_vars.innodb_deadlocks, SHOW_LONG}, {"dblwr_writes", (char*) &export_vars.innodb_dblwr_writes, SHOW_LONG}, {"dict_tables", @@ -1897,6 +1882,19 @@ trx_is_interrupted( return(trx && trx->mysql_thd && thd_killed((THD*) trx->mysql_thd)); } +/**********************************************************************//** +Determines if the currently running transaction is in strict mode. +@return TRUE if strict */ +extern "C" UNIV_INTERN +ibool +trx_is_strict( +/*==========*/ + trx_t* trx) /*!< in: transaction */ +{ + return(trx && trx->mysql_thd + && THDVAR((THD*) trx->mysql_thd, strict_mode)); +} + /**************************************************************//** Resets some fields of a prebuilt struct. The template is used in fast retrieval of just those column values MySQL needs in its processing. */ @@ -2233,6 +2231,8 @@ mem_free_and_error: goto error; } + srv_doublewrite_file = innobase_doublewrite_file; + srv_extra_undoslots = (ibool) innobase_extra_undoslots; /* -------------- Log files ---------------------------*/ @@ -2331,7 +2331,7 @@ mem_free_and_error: } sql_print_error("InnoDB: invalid value " - "innodb_file_format_check=%s", + "innodb_change_buffering=%s", innobase_change_buffering); goto mem_free_and_error; } @@ -2370,7 +2370,6 @@ innobase_change_buffering_inited_ok: srv_force_recovery = (ulint) innobase_force_recovery; - srv_fast_recovery = (ibool) innobase_fast_recovery; srv_recovery_stats = (ibool) innobase_recovery_stats; srv_use_doublewrite_buf = (ibool) innobase_use_doublewrite; @@ -2500,7 +2499,6 @@ skip_overwrite: pthread_mutex_init(&prepare_commit_mutex, MY_MUTEX_INIT_FAST); pthread_mutex_init(&commit_threads_m, MY_MUTEX_INIT_FAST); pthread_mutex_init(&commit_cond_m, MY_MUTEX_INIT_FAST); - pthread_mutex_init(&analyze_mutex, MY_MUTEX_INIT_FAST); pthread_cond_init(&commit_cond, NULL); innodb_inited= 1; #ifdef MYSQL_DYNAMIC_PLUGIN @@ -2555,7 +2553,6 @@ innobase_end( pthread_mutex_destroy(&prepare_commit_mutex); pthread_mutex_destroy(&commit_threads_m); pthread_mutex_destroy(&commit_cond_m); - pthread_mutex_destroy(&analyze_mutex); pthread_cond_destroy(&commit_cond); } @@ -2592,10 +2589,7 @@ innobase_alter_table_flags( { return(HA_ONLINE_ADD_INDEX_NO_WRITES | HA_ONLINE_DROP_INDEX_NO_WRITES - /* Current InnoDB doesn't sort unique indexes along mysqld's order - It is dangerous to use index. So it is disabled until - the bug http://bugs.mysql.com/47622 */ - /* | HA_ONLINE_ADD_UNIQUE_INDEX_NO_WRITES */ + | HA_ONLINE_ADD_UNIQUE_INDEX_NO_WRITES | HA_ONLINE_DROP_UNIQUE_INDEX_NO_WRITES | HA_ONLINE_ADD_PK_INDEX_NO_WRITES); } @@ -3288,59 +3282,370 @@ normalize_table_name( } /********************************************************************//** +Get the upper limit of the MySQL integral and floating-point type. +@return maximum allowed value for the field */ +static +ulonglong +innobase_get_int_col_max_value( +/*===========================*/ + const Field* field) /*!< in: MySQL field */ +{ + ulonglong max_value = 0; + + switch(field->key_type()) { + /* TINY */ + case HA_KEYTYPE_BINARY: + max_value = 0xFFULL; + break; + case HA_KEYTYPE_INT8: + max_value = 0x7FULL; + break; + /* SHORT */ + case HA_KEYTYPE_USHORT_INT: + max_value = 0xFFFFULL; + break; + case HA_KEYTYPE_SHORT_INT: + max_value = 0x7FFFULL; + break; + /* MEDIUM */ + case HA_KEYTYPE_UINT24: + max_value = 0xFFFFFFULL; + break; + case HA_KEYTYPE_INT24: + max_value = 0x7FFFFFULL; + break; + /* LONG */ + case HA_KEYTYPE_ULONG_INT: + max_value = 0xFFFFFFFFULL; + break; + case HA_KEYTYPE_LONG_INT: + max_value = 0x7FFFFFFFULL; + break; + /* BIG */ + case HA_KEYTYPE_ULONGLONG: + max_value = 0xFFFFFFFFFFFFFFFFULL; + break; + case HA_KEYTYPE_LONGLONG: + max_value = 0x7FFFFFFFFFFFFFFFULL; + break; + case HA_KEYTYPE_FLOAT: + /* We use the maximum as per IEEE754-2008 standard, 2^24 */ + max_value = 0x1000000ULL; + break; + case HA_KEYTYPE_DOUBLE: + /* We use the maximum as per IEEE754-2008 standard, 2^53 */ + max_value = 0x20000000000000ULL; + break; + default: + ut_error; + } + + return(max_value); +} + +/*******************************************************************//** +This function checks whether the index column information +is consistent between KEY info from mysql and that from innodb index. +@return TRUE if all column types match. */ +static +ibool +innobase_match_index_columns( +/*=========================*/ + const KEY* key_info, /*!< in: Index info + from mysql */ + const dict_index_t* index_info) /*!< in: Index info + from Innodb */ +{ + const KEY_PART_INFO* key_part; + const KEY_PART_INFO* key_end; + const dict_field_t* innodb_idx_fld; + const dict_field_t* innodb_idx_fld_end; + + DBUG_ENTER("innobase_match_index_columns"); + + /* Check whether user defined index column count matches */ + if (key_info->key_parts != index_info->n_user_defined_cols) { + DBUG_RETURN(FALSE); + } + + key_part = key_info->key_part; + key_end = key_part + key_info->key_parts; + innodb_idx_fld = index_info->fields; + innodb_idx_fld_end = index_info->fields + index_info->n_fields; + + /* Check each index column's datatype. We do not check + column name because there exists case that index + column name got modified in mysql but such change does not + propagate to InnoDB. + One hidden assumption here is that the index column sequences + are matched up between those in mysql and Innodb. */ + for (; key_part != key_end; ++key_part) { + ulint col_type; + ibool is_unsigned; + ulint mtype = innodb_idx_fld->col->mtype; + + /* Need to translate to InnoDB column type before + comparison. */ + col_type = get_innobase_type_from_mysql_type(&is_unsigned, + key_part->field); + + /* Ignore Innodb specific system columns. */ + while (mtype == DATA_SYS) { + innodb_idx_fld++; + + if (innodb_idx_fld >= innodb_idx_fld_end) { + DBUG_RETURN(FALSE); + } + } + + if (col_type != mtype) { + /* Column Type mismatches */ + DBUG_RETURN(FALSE); + } + + innodb_idx_fld++; + } + + DBUG_RETURN(TRUE); +} + +/*******************************************************************//** +This function builds a translation table in INNOBASE_SHARE +structure for fast index location with mysql array number from its +table->key_info structure. This also provides the necessary translation +between the key order in mysql key_info and Innodb ib_table->indexes if +they are not fully matched with each other. +Note we do not have any mutex protecting the translation table +building based on the assumption that there is no concurrent +index creation/drop and DMLs that requires index lookup. All table +handle will be closed before the index creation/drop. +@return TRUE if index translation table built successfully */ +static +ibool +innobase_build_index_translation( +/*=============================*/ + const TABLE* table, /*!< in: table in MySQL data + dictionary */ + dict_table_t* ib_table, /*!< in: table in Innodb data + dictionary */ + INNOBASE_SHARE* share) /*!< in/out: share structure + where index translation table + will be constructed in. */ +{ + ulint mysql_num_index; + ulint ib_num_index; + dict_index_t** index_mapping; + ibool ret = TRUE; + + DBUG_ENTER("innobase_build_index_translation"); + + mysql_num_index = table->s->keys; + ib_num_index = UT_LIST_GET_LEN(ib_table->indexes); + + index_mapping = share->idx_trans_tbl.index_mapping; + + /* If there exists inconsistency between MySQL and InnoDB dictionary + (metadata) information, the number of index defined in MySQL + could exceed that in InnoDB, do not build index translation + table in such case */ + if (UNIV_UNLIKELY(ib_num_index < mysql_num_index)) { + ret = FALSE; + goto func_exit; + } + + /* If index entry count is non-zero, nothing has + changed since last update, directly return TRUE */ + if (share->idx_trans_tbl.index_count) { + /* Index entry count should still match mysql_num_index */ + ut_a(share->idx_trans_tbl.index_count == mysql_num_index); + goto func_exit; + } + + /* The number of index increased, rebuild the mapping table */ + if (mysql_num_index > share->idx_trans_tbl.array_size) { + index_mapping = (dict_index_t**) my_realloc(index_mapping, + mysql_num_index * + sizeof(*index_mapping), + MYF(MY_ALLOW_ZERO_PTR)); + + if (!index_mapping) { + ret = FALSE; + goto func_exit; + } + + share->idx_trans_tbl.array_size = mysql_num_index; + } + + + /* For each index in the mysql key_info array, fetch its + corresponding InnoDB index pointer into index_mapping + array. */ + for (ulint count = 0; count < mysql_num_index; count++) { + + /* Fetch index pointers into index_mapping according to mysql + index sequence */ + index_mapping[count] = dict_table_get_index_on_name( + ib_table, table->key_info[count].name); + + if (!index_mapping[count]) { + sql_print_error("Cannot find index %s in InnoDB " + "index dictionary.", + table->key_info[count].name); + ret = FALSE; + goto func_exit; + } + + /* Double check fetched index has the same + column info as those in mysql key_info. */ + if (!innobase_match_index_columns(&table->key_info[count], + index_mapping[count])) { + sql_print_error("Found index %s whose column info " + "does not match that of MySQL.", + table->key_info[count].name); + ret = FALSE; + goto func_exit; + } + } + + /* Successfully built the translation table */ + share->idx_trans_tbl.index_count = mysql_num_index; + +func_exit: + if (!ret) { + /* Build translation table failed. */ + my_free(index_mapping, MYF(MY_ALLOW_ZERO_PTR)); + + share->idx_trans_tbl.array_size = 0; + share->idx_trans_tbl.index_count = 0; + index_mapping = NULL; + } + + share->idx_trans_tbl.index_mapping = index_mapping; + + DBUG_RETURN(ret); +} + +/*******************************************************************//** +This function uses index translation table to quickly locate the +requested index structure. +Note we do not have mutex protection for the index translatoin table +access, it is based on the assumption that there is no concurrent +translation table rebuild (fter create/drop index) and DMLs that +require index lookup. +@return dict_index_t structure for requested index. NULL if +fail to locate the index structure. */ +static +dict_index_t* +innobase_index_lookup( +/*==================*/ + INNOBASE_SHARE* share, /*!< in: share structure for index + translation table. */ + uint keynr) /*!< in: index number for the requested + index */ +{ + if (!share->idx_trans_tbl.index_mapping + || keynr >= share->idx_trans_tbl.index_count) { + return(NULL); + } + + return(share->idx_trans_tbl.index_mapping[keynr]); +} + +/************************************************************************ Set the autoinc column max value. This should only be called once from -ha_innobase::open(). Therefore there's no need for a covering lock. -@return DB_SUCCESS or error code */ +ha_innobase::open(). Therefore there's no need for a covering lock. */ UNIV_INTERN -ulint +void ha_innobase::innobase_initialize_autoinc() /*======================================*/ { - dict_index_t* index; ulonglong auto_inc; - const char* col_name; - ulint error; + const Field* field = table->found_next_number_field; - col_name = table->found_next_number_field->field_name; - index = innobase_get_index(table->s->next_number_index); + if (field != NULL) { + auto_inc = innobase_get_int_col_max_value(field); + } else { + /* We have no idea what's been passed in to us as the + autoinc column. We set it to the 0, effectively disabling + updates to the table. */ + auto_inc = 0; - /* Execute SELECT MAX(col_name) FROM TABLE; */ - error = row_search_max_autoinc(index, col_name, &auto_inc); - - switch (error) { - case DB_SUCCESS: - - /* At the this stage we don't know the increment - or the offset, so use default inrement of 1. */ - ++auto_inc; - break; - - case DB_RECORD_NOT_FOUND: ut_print_timestamp(stderr); - fprintf(stderr, " InnoDB: MySQL and InnoDB data " - "dictionaries are out of sync.\n" - "InnoDB: Unable to find the AUTOINC column %s in the " - "InnoDB table %s.\n" - "InnoDB: We set the next AUTOINC column value to the " - "maximum possible value,\n" - "InnoDB: in effect disabling the AUTOINC next value " - "generation.\n" - "InnoDB: You can either set the next AUTOINC value " - "explicitly using ALTER TABLE\n" - "InnoDB: or fix the data dictionary by recreating " - "the table.\n", - col_name, index->table->name); + fprintf(stderr, " InnoDB: Unable to determine the AUTOINC " + "column name\n"); + } - auto_inc = 0xFFFFFFFFFFFFFFFFULL; - break; + if (srv_force_recovery >= SRV_FORCE_NO_IBUF_MERGE) { + /* If the recovery level is set so high that writes + are disabled we force the AUTOINC counter to 0 + value effectively disabling writes to the table. + Secondly, we avoid reading the table in case the read + results in failure due to a corrupted table/index. - default: - return(error); + We will not return an error to the client, so that the + tables can be dumped with minimal hassle. If an error + were returned in this case, the first attempt to read + the table would fail and subsequent SELECTs would succeed. */ + auto_inc = 0; + } else if (field == NULL) { + /* This is a far more serious error, best to avoid + opening the table and return failure. */ + my_error(ER_AUTOINC_READ_FAILED, MYF(0)); + } else { + dict_index_t* index; + const char* col_name; + ulonglong read_auto_inc; + ulint err; + + update_thd(ha_thd()); + + ut_a(prebuilt->trx == thd_to_trx(user_thd)); + + col_name = field->field_name; + index = innobase_get_index(table->s->next_number_index); + + /* Execute SELECT MAX(col_name) FROM TABLE; */ + err = row_search_max_autoinc(index, col_name, &read_auto_inc); + + switch (err) { + case DB_SUCCESS: + /* At the this stage we do not know the increment + or the offset, so use a default increment of 1. */ + auto_inc = read_auto_inc + 1; + break; + + case DB_RECORD_NOT_FOUND: + ut_print_timestamp(stderr); + fprintf(stderr, " InnoDB: MySQL and InnoDB data " + "dictionaries are out of sync.\n" + "InnoDB: Unable to find the AUTOINC column " + "%s in the InnoDB table %s.\n" + "InnoDB: We set the next AUTOINC column " + "value to 0,\n" + "InnoDB: in effect disabling the AUTOINC " + "next value generation.\n" + "InnoDB: You can either set the next " + "AUTOINC value explicitly using ALTER TABLE\n" + "InnoDB: or fix the data dictionary by " + "recreating the table.\n", + col_name, index->table->name); + + /* This will disable the AUTOINC generation. */ + auto_inc = 0; + + /* We want the open to succeed, so that the user can + take corrective action. ie. reads should succeed but + updates should fail. */ + err = DB_SUCCESS; + break; + default: + /* row_search_max_autoinc() should only return + one of DB_SUCCESS or DB_RECORD_NOT_FOUND. */ + ut_error; + } } dict_table_autoinc_initialize(prebuilt->table, auto_inc); - - return(DB_SUCCESS); } /*****************************************************************//** @@ -3493,6 +3798,11 @@ retry: primary_key = table->s->primary_key; key_used_on_scan = primary_key; + if (!innobase_build_index_translation(table, ib_table, share)) { + sql_print_error("Build InnoDB index translation table for" + " Table %s failed", name); + } + /* Allocate a buffer for a 'row reference'. A row reference is a string of bytes of length ref_length which uniquely specifies a row in our table. Note that MySQL may also compare two row @@ -3500,31 +3810,86 @@ retry: of length ref_length! */ if (!row_table_got_default_clust_index(ib_table)) { - if (primary_key >= MAX_KEY) { - sql_print_error("Table %s has a primary key in InnoDB data " - "dictionary, but not in MySQL!", name); - } prebuilt->clust_index_was_generated = FALSE; - /* MySQL allocates the buffer for ref. key_info->key_length - includes space for all key columns + one byte for each column - that may be NULL. ref_length must be as exact as possible to - save space, because all row reference buffers are allocated - based on ref_length. */ + if (UNIV_UNLIKELY(primary_key >= MAX_KEY)) { + sql_print_error("Table %s has a primary key in " + "InnoDB data dictionary, but not " + "in MySQL!", name); - ref_length = table->key_info[primary_key].key_length; + /* This mismatch could cause further problems + if not attended, bring this to the user's attention + by printing a warning in addition to log a message + in the errorlog */ + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_NO_SUCH_INDEX, + "InnoDB: Table %s has a " + "primary key in InnoDB data " + "dictionary, but not in " + "MySQL!", name); + + /* If primary_key >= MAX_KEY, its (primary_key) + value could be out of bound if continue to index + into key_info[] array. Find InnoDB primary index, + and assign its key_length to ref_length. + In addition, since MySQL indexes are sorted starting + with primary index, unique index etc., initialize + ref_length to the first index key length in + case we fail to find InnoDB cluster index. + + Please note, this will not resolve the primary + index mismatch problem, other side effects are + possible if users continue to use the table. + However, we allow this table to be opened so + that user can adopt necessary measures for the + mismatch while still being accessible to the table + date. */ + ref_length = table->key_info[0].key_length; + + /* Find correspoinding cluster index + key length in MySQL's key_info[] array */ + for (ulint i = 0; i < table->s->keys; i++) { + dict_index_t* index; + index = innobase_get_index(i); + if (dict_index_is_clust(index)) { + ref_length = + table->key_info[i].key_length; + } + } + } else { + /* MySQL allocates the buffer for ref. + key_info->key_length includes space for all key + columns + one byte for each column that may be + NULL. ref_length must be as exact as possible to + save space, because all row reference buffers are + allocated based on ref_length. */ + + ref_length = table->key_info[primary_key].key_length; + } } else { if (primary_key != MAX_KEY) { - sql_print_error("Table %s has no primary key in InnoDB data " - "dictionary, but has one in MySQL! If you " - "created the table with a MySQL version < " - "3.23.54 and did not define a primary key, " - "but defined a unique key with all non-NULL " - "columns, then MySQL internally treats that " - "key as the primary key. You can fix this " - "error by dump + DROP + CREATE + reimport " - "of the table.", name); + sql_print_error( + "Table %s has no primary key in InnoDB data " + "dictionary, but has one in MySQL! If you " + "created the table with a MySQL version < " + "3.23.54 and did not define a primary key, " + "but defined a unique key with all non-NULL " + "columns, then MySQL internally treats that " + "key as the primary key. You can fix this " + "error by dump + DROP + CREATE + reimport " + "of the table.", name); + + /* This mismatch could cause further problems + if not attended, bring this to the user attention + by printing a warning in addition to log a message + in the errorlog */ + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_NO_SUCH_INDEX, + "InnoDB: Table %s has no " + "primary key in InnoDB data " + "dictionary, but has one in " + "MySQL!", name); } prebuilt->clust_index_was_generated = TRUE; @@ -3566,8 +3931,6 @@ retry: /* Only if the table has an AUTOINC column. */ if (prebuilt->table != NULL && table->found_next_number_field != NULL) { - ulint error; - dict_table_autoinc_lock(prebuilt->table); /* Since a table can already be "open" in InnoDB's internal @@ -3576,8 +3939,7 @@ retry: autoinc value from a previous MySQL open. */ if (dict_table_autoinc_read(prebuilt->table) == 0) { - error = innobase_initialize_autoinc(); - ut_a(error == DB_SUCCESS); + innobase_initialize_autoinc(); } dict_table_autoinc_unlock(prebuilt->table); @@ -4393,67 +4755,6 @@ skip_field: } } -/********************************************************************//** -Get the upper limit of the MySQL integral and floating-point type. */ -UNIV_INTERN -ulonglong -ha_innobase::innobase_get_int_col_max_value( -/*========================================*/ - const Field* field) -{ - ulonglong max_value = 0; - - switch(field->key_type()) { - /* TINY */ - case HA_KEYTYPE_BINARY: - max_value = 0xFFULL; - break; - case HA_KEYTYPE_INT8: - max_value = 0x7FULL; - break; - /* SHORT */ - case HA_KEYTYPE_USHORT_INT: - max_value = 0xFFFFULL; - break; - case HA_KEYTYPE_SHORT_INT: - max_value = 0x7FFFULL; - break; - /* MEDIUM */ - case HA_KEYTYPE_UINT24: - max_value = 0xFFFFFFULL; - break; - case HA_KEYTYPE_INT24: - max_value = 0x7FFFFFULL; - break; - /* LONG */ - case HA_KEYTYPE_ULONG_INT: - max_value = 0xFFFFFFFFULL; - break; - case HA_KEYTYPE_LONG_INT: - max_value = 0x7FFFFFFFULL; - break; - /* BIG */ - case HA_KEYTYPE_ULONGLONG: - max_value = 0xFFFFFFFFFFFFFFFFULL; - break; - case HA_KEYTYPE_LONGLONG: - max_value = 0x7FFFFFFFFFFFFFFFULL; - break; - case HA_KEYTYPE_FLOAT: - /* We use the maximum as per IEEE754-2008 standard, 2^24 */ - max_value = 0x1000000ULL; - break; - case HA_KEYTYPE_DOUBLE: - /* We use the maximum as per IEEE754-2008 standard, 2^53 */ - max_value = 0x20000000000000ULL; - break; - default: - ut_error; - } - - return(max_value); -} - /********************************************************************//** This special handling is really to overcome the limitations of MySQL's binlogging. We need to eliminate the non-determinism that will arise in @@ -4683,11 +4984,17 @@ no_commit: prebuilt->autoinc_error = DB_SUCCESS; if ((error = update_auto_increment())) { - /* We don't want to mask autoinc overflow errors. */ - if (prebuilt->autoinc_error != DB_SUCCESS) { - error = (int) prebuilt->autoinc_error; + /* Handle the case where the AUTOINC sub-system + failed during initialization. */ + if (prebuilt->autoinc_error == DB_UNSUPPORTED) { + error_result = ER_AUTOINC_READ_FAILED; + /* Set the error message to report too. */ + my_error(ER_AUTOINC_READ_FAILED, MYF(0)); + goto func_exit; + } else if (prebuilt->autoinc_error != DB_SUCCESS) { + error = (int) prebuilt->autoinc_error; goto report_error; } @@ -5168,7 +5475,7 @@ ha_innobase::unlock_row(void) case ROW_READ_WITH_LOCKS: if (!srv_locks_unsafe_for_binlog && prebuilt->trx->isolation_level - != TRX_ISO_READ_COMMITTED) { + > TRX_ISO_READ_COMMITTED) { break; } /* fall through */ @@ -5207,7 +5514,7 @@ ha_innobase::try_semi_consistent_read(bool yes) if (yes && (srv_locks_unsafe_for_binlog - || prebuilt->trx->isolation_level == TRX_ISO_READ_COMMITTED)) { + || prebuilt->trx->isolation_level <= TRX_ISO_READ_COMMITTED)) { prebuilt->row_read_type = ROW_READ_TRY_SEMI_CONSISTENT; } else { prebuilt->row_read_type = ROW_READ_WITH_LOCKS; @@ -5510,14 +5817,30 @@ ha_innobase::innobase_get_index( DBUG_ENTER("innobase_get_index"); ha_statistic_increment(&SSV::ha_read_key_count); - ut_ad(user_thd == ha_thd()); - ut_a(prebuilt->trx == thd_to_trx(user_thd)); - if (keynr != MAX_KEY && table->s->keys > 0) { key = table->key_info + keynr; - index = dict_table_get_index_on_name(prebuilt->table, - key->name); + index = innobase_index_lookup(share, keynr); + + if (index) { + ut_a(ut_strcmp(index->name, key->name) == 0); + } else { + /* Can't find index with keynr in the translation + table. Only print message if the index translation + table exists */ + if (share->idx_trans_tbl.index_mapping) { + sql_print_error("InnoDB could not find " + "index %s key no %u for " + "table %s through its " + "index translation table", + key ? key->name : "NULL", + keynr, + prebuilt->table->name); + } + + index = dict_table_get_index_on_name(prebuilt->table, + key->name); + } } else { index = dict_table_get_first_index(prebuilt->table); } @@ -5582,7 +5905,7 @@ ha_innobase::change_active_index( dtuple_set_n_fields(prebuilt->search_tuple, prebuilt->index->n_fields); dict_index_copy_types(prebuilt->search_tuple, prebuilt->index, - prebuilt->index->n_fields); + prebuilt->index->n_fields); /* MySQL changes the active index for a handle also during some queries, for example SELECT MAX(a), SUM(a) first retrieves the MAX() @@ -6096,9 +6419,11 @@ create_table_def( if (error == DB_DUPLICATE_KEY) { char buf[100]; - innobase_convert_identifier(buf, sizeof buf, - table_name, strlen(table_name), - trx->mysql_thd, TRUE); + char* buf_end = innobase_convert_identifier( + buf, sizeof buf - 1, table_name, strlen(table_name), + trx->mysql_thd, TRUE); + + *buf_end = '\0'; my_error(ER_TABLE_EXISTS_ERROR, MYF(0), buf); } @@ -6700,6 +7025,10 @@ ha_innobase::create( goto cleanup; } + if (create_info->options & HA_LEX_CREATE_TMP_TABLE) { + flags |= DICT_TF2_TEMPORARY << DICT_TF2_SHIFT; + } + error = create_table_def(trx, form, norm_name, create_info->options & HA_LEX_CREATE_TMP_TABLE ? name2 : NULL, flags); @@ -7229,10 +7558,15 @@ ha_innobase::records_in_range( key = table->key_info + active_index; - index = dict_table_get_index_on_name(prebuilt->table, key->name); + index = innobase_get_index(keynr); - /* MySQL knows about this index and so we must be able to find it.*/ - ut_a(index); + /* There exists possibility of not being able to find requested + index due to inconsistency between MySQL and InoDB dictionary info. + Necessary message should have been printed in innobase_get_index() */ + if (UNIV_UNLIKELY(!index)) { + n_rows = HA_POS_ERROR; + goto func_exit; + } heap = mem_heap_create(2 * (key->key_parts * sizeof(dfield_t) + sizeof(dtuple_t))); @@ -7277,6 +7611,7 @@ ha_innobase::records_in_range( mem_heap_free(heap); +func_exit: my_free(key_val_buff2, MYF(0)); prebuilt->trx->op_info = (char*)""; @@ -7428,6 +7763,7 @@ ha_innobase::info( char path[FN_REFLEN]; os_file_stat_t stat_info; + DBUG_ENTER("info"); /* If we are forcing recovery at a high level, we will suppress @@ -7590,13 +7926,29 @@ ha_innobase::info( } if (flag & HA_STATUS_CONST) { - index = dict_table_get_first_index(ib_table); + /* Verify the number of index in InnoDB and MySQL + matches up. If prebuilt->clust_index_was_generated + holds, InnoDB defines GEN_CLUST_INDEX internally */ + ulint num_innodb_index = UT_LIST_GET_LEN(ib_table->indexes) + - prebuilt->clust_index_was_generated; - if (prebuilt->clust_index_was_generated) { - index = dict_table_get_next_index(index); + if (table->s->keys != num_innodb_index) { + sql_print_error("Table %s contains %lu " + "indexes inside InnoDB, which " + "is different from the number of " + "indexes %u defined in the MySQL ", + ib_table->name, num_innodb_index, + table->s->keys); } for (i = 0; i < table->s->keys; i++) { + /* We could get index quickly through internal + index mapping with the index translation table. + The identity of index (match up index name with + that of table->key_info[i]) is already verified in + innobase_get_index(). */ + index = innobase_get_index(i); + if (index == NULL) { sql_print_error("Table %s contains fewer " "indexes inside InnoDB than " @@ -7625,6 +7977,8 @@ ha_innobase::info( break; } + dict_index_stat_mutex_enter(index); + if (index->stat_n_diff_key_vals[j + 1] == 0) { rec_per_key = stats.records; @@ -7633,6 +7987,8 @@ ha_innobase::info( index->stat_n_diff_key_vals[j + 1]); } + dict_index_stat_mutex_exit(index); + /* Since MySQL seems to favor table scans too much over index searches, we pretend index selectivity is 2 times better than @@ -7648,8 +8004,6 @@ ha_innobase::info( rec_per_key >= ~(ulong) 0 ? ~(ulong) 0 : (ulong) rec_per_key; } - - index = dict_table_get_next_index(index); } } @@ -7693,15 +8047,9 @@ ha_innobase::analyze( return(HA_ADMIN_CORRUPT); } - /* Serialize ANALYZE TABLE inside InnoDB, see - Bug#38996 Race condition in ANALYZE TABLE */ - pthread_mutex_lock(&analyze_mutex); - /* Simply call ::info() with all the flags */ info(HA_STATUS_TIME | HA_STATUS_CONST | HA_STATUS_VARIABLE); - pthread_mutex_unlock(&analyze_mutex); - if (share->ib_table->is_corrupt) { return(HA_ADMIN_CORRUPT); } @@ -7735,8 +8083,13 @@ ha_innobase::check( HA_CHECK_OPT* check_opt) /*!< in: check options, currently ignored */ { - ulint ret; + dict_index_t* index; + ulint n_rows; + ulint n_rows_in_table = ULINT_UNDEFINED; + ibool is_ok = TRUE; + ulint old_isolation_level; + DBUG_ENTER("ha_innobase::check"); DBUG_ASSERT(thd == ha_thd()); ut_a(prebuilt->trx); ut_a(prebuilt->trx->magic_n == TRX_MAGIC_N); @@ -7749,21 +8102,144 @@ ha_innobase::check( build_template(prebuilt, NULL, table, ROW_MYSQL_WHOLE_ROW); } - ret = row_check_table_for_mysql(prebuilt); - - if (ret != DB_INTERRUPTED && share->ib_table->is_corrupt) { - return(HA_ADMIN_CORRUPT); + if (prebuilt->table->ibd_file_missing) { + sql_print_error("InnoDB: Error:\n" + "InnoDB: MySQL is trying to use a table handle" + " but the .ibd file for\n" + "InnoDB: table %s does not exist.\n" + "InnoDB: Have you deleted the .ibd file" + " from the database directory under\n" + "InnoDB: the MySQL datadir, or have you" + " used DISCARD TABLESPACE?\n" + "InnoDB: Please refer to\n" + "InnoDB: " REFMAN "innodb-troubleshooting.html\n" + "InnoDB: how you can resolve the problem.\n", + prebuilt->table->name); + DBUG_RETURN(HA_ADMIN_CORRUPT); } - switch (ret) { - case DB_SUCCESS: - return(HA_ADMIN_OK); - case DB_INTERRUPTED: + prebuilt->trx->op_info = "checking table"; + + old_isolation_level = prebuilt->trx->isolation_level; + + /* We must run the index record counts at an isolation level + >= READ COMMITTED, because a dirty read can see a wrong number + of records in some index; to play safe, we use always + REPEATABLE READ here */ + + prebuilt->trx->isolation_level = TRX_ISO_REPEATABLE_READ; + + /* Enlarge the fatal lock wait timeout during CHECK TABLE. */ + mutex_enter(&kernel_mutex); + srv_fatal_semaphore_wait_threshold += 7200; /* 2 hours */ + mutex_exit(&kernel_mutex); + + for (index = dict_table_get_first_index(prebuilt->table); + index != NULL; + index = dict_table_get_next_index(index)) { +#if 0 + fputs("Validating index ", stderr); + ut_print_name(stderr, trx, FALSE, index->name); + putc('\n', stderr); +#endif + + if (!btr_validate_index(index, prebuilt->trx)) { + is_ok = FALSE; + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_NOT_KEYFILE, + "InnoDB: The B-tree of" + " index '%-.200s' is corrupted.", + index->name); + continue; + } + + /* Instead of invoking change_active_index(), set up + a dummy template for non-locking reads, disabling + access to the clustered index. */ + prebuilt->index = index; + + prebuilt->index_usable = row_merge_is_index_usable( + prebuilt->trx, prebuilt->index); + + if (UNIV_UNLIKELY(!prebuilt->index_usable)) { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + HA_ERR_TABLE_DEF_CHANGED, + "InnoDB: Insufficient history for" + " index '%-.200s'", + index->name); + continue; + } + + prebuilt->sql_stat_start = TRUE; + prebuilt->template_type = ROW_MYSQL_DUMMY_TEMPLATE; + prebuilt->n_template = 0; + prebuilt->need_to_access_clustered = FALSE; + + dtuple_set_n_fields(prebuilt->search_tuple, 0); + + prebuilt->select_lock_type = LOCK_NONE; + + if (!row_check_index_for_mysql(prebuilt, index, &n_rows)) { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_NOT_KEYFILE, + "InnoDB: The B-tree of" + " index '%-.200s' is corrupted.", + index->name); + is_ok = FALSE; + } + + if (thd_killed(user_thd)) { + break; + } + +#if 0 + fprintf(stderr, "%lu entries in index %s\n", n_rows, + index->name); +#endif + + if (index == dict_table_get_first_index(prebuilt->table)) { + n_rows_in_table = n_rows; + } else if (n_rows != n_rows_in_table) { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_NOT_KEYFILE, + "InnoDB: Index '%-.200s'" + " contains %lu entries," + " should be %lu.", + index->name, + (ulong) n_rows, + (ulong) n_rows_in_table); + is_ok = FALSE; + } + } + + /* Restore the original isolation level */ + prebuilt->trx->isolation_level = old_isolation_level; + + /* We validate also the whole adaptive hash index for all tables + at every CHECK TABLE */ + + if (!btr_search_validate()) { + push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_NOT_KEYFILE, + "InnoDB: The adaptive hash index is corrupted."); + is_ok = FALSE; + } + + /* Restore the fatal lock wait timeout after CHECK TABLE. */ + mutex_enter(&kernel_mutex); + srv_fatal_semaphore_wait_threshold -= 7200; /* 2 hours */ + mutex_exit(&kernel_mutex); + + prebuilt->trx->op_info = ""; + if (thd_killed(user_thd)) { my_error(ER_QUERY_INTERRUPTED, MYF(0)); - return(-1); - default: + } + + if (share->ib_table->is_corrupt) { return(HA_ADMIN_CORRUPT); } + + DBUG_RETURN(is_ok ? HA_ADMIN_OK : HA_ADMIN_CORRUPT); } /*************************************************************//** @@ -8427,7 +8903,9 @@ ha_innobase::external_lock( if (trx->n_mysql_tables_in_use == 0) { #ifdef EXTENDED_SLOWLOG - increment_thd_innodb_stats(thd, trx->io_reads, + increment_thd_innodb_stats(thd, + (unsigned long long) ut_conv_dulint_to_longlong(trx->id), + trx->io_reads, trx->io_read, trx->io_reads_wait_timer, trx->lock_que_wait_timer, @@ -8607,8 +9085,8 @@ innodb_show_status( mutex_enter(&srv_monitor_file_mutex); rewind(srv_monitor_file); - srv_printf_innodb_monitor(srv_monitor_file, - &trx_list_start, &trx_list_end); + srv_printf_innodb_monitor(srv_monitor_file, FALSE, + &trx_list_start, &trx_list_end); flen = ftell(srv_monitor_file); os_file_set_eof(srv_monitor_file); @@ -8665,19 +9143,25 @@ innodb_show_status( } /************************************************************************//** -Implements the SHOW MUTEX STATUS command. . */ +Implements the SHOW MUTEX STATUS command. +@return TRUE on failure, FALSE on success. */ static bool innodb_mutex_show_status( /*=====================*/ - handlerton* hton, /*!< in: the innodb handlerton */ + handlerton* hton, /*!< in: the innodb handlerton */ THD* thd, /*!< in: the MySQL query thread of the caller */ - stat_print_fn* stat_print) + stat_print_fn* stat_print) /*!< in: function for printing + statistics */ { char buf1[IO_SIZE], buf2[IO_SIZE]; mutex_t* mutex; rw_lock_t* lock; + ulint block_mutex_oswait_count = 0; + ulint block_lock_oswait_count = 0; + mutex_t* block_mutex = NULL; + rw_lock_t* block_lock = NULL; #ifdef UNIV_DEBUG ulint rw_lock_count= 0; ulint rw_lock_count_spin_loop= 0; @@ -8692,12 +9176,16 @@ innodb_mutex_show_status( mutex_enter(&mutex_list_mutex); - mutex = UT_LIST_GET_FIRST(mutex_list); + for (mutex = UT_LIST_GET_FIRST(mutex_list); mutex != NULL; + mutex = UT_LIST_GET_NEXT(list, mutex)) { + if (mutex->count_os_wait == 0) { + continue; + } - while (mutex != NULL) { - if (mutex->count_os_wait == 0 - || buf_pool_is_block_mutex(mutex)) { - goto next_mutex; + if (buf_pool_is_block_mutex(mutex)) { + block_mutex = mutex; + block_mutex_oswait_count += mutex->count_os_wait; + continue; } #ifdef UNIV_DEBUG if (mutex->mutex_type != 1) { @@ -8724,8 +9212,7 @@ innodb_mutex_show_status( DBUG_RETURN(1); } } - } - else { + } else { rw_lock_count += mutex->count_using; rw_lock_count_spin_loop += mutex->count_spin_loop; rw_lock_count_spin_rounds += mutex->count_spin_rounds; @@ -8737,7 +9224,7 @@ innodb_mutex_show_status( buf1len= (uint) my_snprintf(buf1, sizeof(buf1), "%s", mutex->cmutex_name); buf2len= (uint) my_snprintf(buf2, sizeof(buf2), "os_waits=%lu", - mutex->count_os_wait); + (ulong) mutex->count_os_wait); if (stat_print(thd, innobase_hton_name, hton_name_len, buf1, buf1len, @@ -8746,45 +9233,81 @@ innodb_mutex_show_status( DBUG_RETURN(1); } #endif /* UNIV_DEBUG */ + } -next_mutex: - mutex = UT_LIST_GET_NEXT(list, mutex); + if (block_mutex) { + buf1len = (uint) my_snprintf(buf1, sizeof buf1, + "combined %s", + block_mutex->cmutex_name); + buf2len = (uint) my_snprintf(buf2, sizeof buf2, + "os_waits=%lu", + (ulong) block_mutex_oswait_count); + + if (stat_print(thd, innobase_hton_name, + hton_name_len, buf1, buf1len, + buf2, buf2len)) { + mutex_exit(&mutex_list_mutex); + DBUG_RETURN(1); + } } mutex_exit(&mutex_list_mutex); mutex_enter(&rw_lock_list_mutex); - lock = UT_LIST_GET_FIRST(rw_lock_list); - - while (lock != NULL) { - if (lock->count_os_wait - && !buf_pool_is_block_lock(lock)) { - buf1len= my_snprintf(buf1, sizeof(buf1), "%s", - lock->lock_name); - buf2len= my_snprintf(buf2, sizeof(buf2), - "os_waits=%lu", lock->count_os_wait); - - if (stat_print(thd, innobase_hton_name, - hton_name_len, buf1, buf1len, - buf2, buf2len)) { - mutex_exit(&rw_lock_list_mutex); - DBUG_RETURN(1); - } + for (lock = UT_LIST_GET_FIRST(rw_lock_list); lock != NULL; + lock = UT_LIST_GET_NEXT(list, lock)) { + if (lock->count_os_wait == 0) { + continue; + } + + if (buf_pool_is_block_lock(lock)) { + block_lock = lock; + block_lock_oswait_count += lock->count_os_wait; + continue; + } + + buf1len = my_snprintf(buf1, sizeof buf1, "%s", + lock->lock_name); + buf2len = my_snprintf(buf2, sizeof buf2, "os_waits=%lu", + (ulong) lock->count_os_wait); + + if (stat_print(thd, innobase_hton_name, + hton_name_len, buf1, buf1len, + buf2, buf2len)) { + mutex_exit(&rw_lock_list_mutex); + DBUG_RETURN(1); + } + } + + if (block_lock) { + buf1len = (uint) my_snprintf(buf1, sizeof buf1, + "combined %s", + block_lock->lock_name); + buf2len = (uint) my_snprintf(buf2, sizeof buf2, + "os_waits=%lu", + (ulong) block_lock_oswait_count); + + if (stat_print(thd, innobase_hton_name, + hton_name_len, buf1, buf1len, + buf2, buf2len)) { + mutex_exit(&rw_lock_list_mutex); + DBUG_RETURN(1); } - lock = UT_LIST_GET_NEXT(list, lock); } mutex_exit(&rw_lock_list_mutex); #ifdef UNIV_DEBUG - buf2len= my_snprintf(buf2, sizeof(buf2), - "count=%lu, spin_waits=%lu, spin_rounds=%lu, " - "os_waits=%lu, os_yields=%lu, os_wait_times=%lu", - rw_lock_count, rw_lock_count_spin_loop, - rw_lock_count_spin_rounds, - rw_lock_count_os_wait, rw_lock_count_os_yield, - (ulong) (rw_lock_wait_time/1000)); + buf2len = my_snprintf(buf2, sizeof buf2, + "count=%lu, spin_waits=%lu, spin_rounds=%lu, " + "os_waits=%lu, os_yields=%lu, os_wait_times=%lu", + (ulong) rw_lock_count, + (ulong) rw_lock_count_spin_loop, + (ulong) rw_lock_count_spin_rounds, + (ulong) rw_lock_count_os_wait, + (ulong) rw_lock_count_os_yield, + (ulong) (rw_lock_wait_time / 1000)); if (stat_print(thd, innobase_hton_name, hton_name_len, STRING_WITH_LEN("rw_lock_mutexes"), buf2, buf2len)) { @@ -8846,6 +9369,11 @@ static INNOBASE_SHARE* get_share(const char* table_name) innobase_open_tables, fold, share); thr_lock_init(&share->lock); + + /* Index translation table initialization */ + share->idx_trans_tbl.index_mapping = NULL; + share->idx_trans_tbl.index_count = 0; + share->idx_trans_tbl.array_size = 0; } share->use_count++; @@ -8876,6 +9404,11 @@ static void free_share(INNOBASE_SHARE* share) HASH_DELETE(INNOBASE_SHARE, table_name_hash, innobase_open_tables, fold, share); thr_lock_delete(&share->lock); + + /* Free any memory from index translation table */ + my_free(share->idx_trans_tbl.index_mapping, + MYF(MY_ALLOW_ZERO_PTR)); + my_free(share, MYF(0)); /* TODO: invoke HASH_MIGRATE if innobase_open_tables @@ -8978,7 +9511,7 @@ ha_innobase::store_lock( isolation_level = trx->isolation_level; if ((srv_locks_unsafe_for_binlog - || isolation_level == TRX_ISO_READ_COMMITTED) + || isolation_level <= TRX_ISO_READ_COMMITTED) && isolation_level != TRX_ISO_SERIALIZABLE && (lock_type == TL_READ || lock_type == TL_READ_NO_INSERT) && (sql_command == SQLCOM_INSERT_SELECT @@ -9110,7 +9643,10 @@ ha_innobase::innobase_get_autoinc( *value = dict_table_autoinc_read(prebuilt->table); /* It should have been initialized during open. */ - ut_a(*value != 0); + if (*value == 0) { + prebuilt->autoinc_error = DB_UNSUPPORTED; + dict_table_autoinc_unlock(prebuilt->table); + } } return(prebuilt->autoinc_error); @@ -9190,6 +9726,11 @@ ha_innobase::get_auto_increment( invoking this method. So we are not sure if it's guaranteed to be 0 or not. */ + /* We need the upper limit of the col type to check for + whether we update the table autoinc counter or not. */ + ulonglong col_max_value = innobase_get_int_col_max_value( + table->next_number_field); + /* Called for the first time ? */ if (trx->n_autoinc_rows == 0) { @@ -9206,6 +9747,11 @@ ha_innobase::get_auto_increment( /* Not in the middle of a mult-row INSERT. */ } else if (prebuilt->autoinc_last_value == 0) { set_if_bigger(*first_value, autoinc); + /* Check for -ve values. */ + } else if (*first_value > col_max_value && trx->n_autoinc_rows > 0) { + /* Set to next logical value. */ + ut_a(autoinc > trx->n_autoinc_rows); + *first_value = (autoinc - trx->n_autoinc_rows) - 1; } *nb_reserved_values = trx->n_autoinc_rows; @@ -9216,12 +9762,6 @@ ha_innobase::get_auto_increment( ulonglong need; ulonglong current; ulonglong next_value; - ulonglong col_max_value; - - /* We need the upper limit of the col type to check for - whether we update the table autoinc counter or not. */ - col_max_value = innobase_get_int_col_max_value( - table->next_number_field); current = *first_value > col_max_value ? autoinc : *first_value; need = *nb_reserved_values * increment; @@ -9722,33 +10262,60 @@ innobase_set_cursor_view( (cursor_view_t*) curview); } +/*******************************************************************//** +If col_name is not NULL, check whether the named column is being +renamed in the table. If col_name is not provided, check +whether any one of columns in the table is being renamed. +@return true if the column is being renamed */ +static +bool +check_column_being_renamed( +/*=======================*/ + const TABLE* table, /*!< in: MySQL table */ + const char* col_name) /*!< in: name of the column */ +{ + uint k; + Field* field; -/*********************************************************************** -Check whether any of the given columns is being renamed in the table. */ + for (k = 0; k < table->s->fields; k++) { + field = table->field[k]; + + if (field->flags & FIELD_IS_RENAMED) { + + /* If col_name is not provided, return + if the field is marked as being renamed. */ + if (!col_name) { + return(true); + } + + /* If col_name is provided, return only + if names match */ + if (innobase_strcasecmp(field->field_name, + col_name) == 0) { + return(true); + } + } + } + + return(false); +} + +/*******************************************************************//** +Check whether any of the given columns is being renamed in the table. +@return true if any of col_names is being renamed in table */ static bool column_is_being_renamed( /*====================*/ - /* out: true if any of col_names is - being renamed in table */ - TABLE* table, /* in: MySQL table */ - uint n_cols, /* in: number of columns */ - const char** col_names) /* in: names of the columns */ + TABLE* table, /*!< in: MySQL table */ + uint n_cols, /*!< in: number of columns */ + const char** col_names) /*!< in: names of the columns */ { uint j; - uint k; - Field* field; - const char* col_name; for (j = 0; j < n_cols; j++) { - col_name = col_names[j]; - for (k = 0; k < table->s->fields; k++) { - field = table->field[k]; - if ((field->flags & FIELD_IS_RENAMED) - && innobase_strcasecmp(field->field_name, - col_name) == 0) { - return(true); - } + if (check_column_being_renamed(table, col_names[j])) { + return(true); } } @@ -9832,18 +10399,13 @@ ha_innobase::check_if_incompatible_data( return(COMPATIBLE_DATA_NO); } - /* Renaming column asynchronizes dictionary between mysqld and InnoDB... - If not synchronized, treat as COMPATIBLE_DATA_NO - until the bug http://bugs.mysql.com/47621 is fixed officialily */ - { - uint i; - for (i = 0; i < table->s->fields; i++) { - if (table->field[i]->flags & FIELD_IN_ADD_INDEX - && innobase_strcasecmp(table->field[i]->field_name, - dict_table_get_col_name(prebuilt->table, i))) { - return(COMPATIBLE_DATA_NO); - } - } + /* For column rename operation, MySQL does not supply enough + information (new column name etc.) for InnoDB to make appropriate + system metadata change. To avoid system metadata inconsistency, + currently we can just request a table rebuild/copy by returning + COMPATIBLE_DATA_NO */ + if (check_column_being_renamed(table, NULL)) { + return COMPATIBLE_DATA_NO; } /* Check if a column participating in a foreign key is being renamed. @@ -10362,8 +10924,8 @@ static MYSQL_SYSVAR_BOOL(extra_undoslots, innobase_extra_undoslots, static MYSQL_SYSVAR_BOOL(fast_recovery, innobase_fast_recovery, PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, - "Enable to use speed hack of recovery avoiding flush list sorting.", - NULL, NULL, TRUE); + "obsolete option. affects nothing.", + NULL, NULL, FALSE); static MYSQL_SYSVAR_BOOL(recovery_stats, innobase_recovery_stats, PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, @@ -10656,6 +11218,11 @@ static MYSQL_SYSVAR_STR(data_file_path, innobase_data_file_path, "Path to individual files and their sizes.", NULL, NULL, NULL); +static MYSQL_SYSVAR_STR(doublewrite_file, innobase_doublewrite_file, + PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, + "Path to special datafile for doublewrite buffer. (default is "": not used) ### ONLY FOR EXPERTS!!! ###", + NULL, NULL, NULL); + static MYSQL_SYSVAR_LONG(autoinc_lock_mode, innobase_autoinc_lock_mode, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, "The AUTOINC lock modes supported by InnoDB: " @@ -10680,13 +11247,13 @@ static MYSQL_SYSVAR_BOOL(use_sys_malloc, srv_use_sys_malloc, static MYSQL_SYSVAR_STR(change_buffering, innobase_change_buffering, PLUGIN_VAR_RQCMDARG, "Buffer changes to reduce random access: " - "OFF, ON, inserting, deleting, changing, or purging.", + "OFF, ON, none, inserts.", innodb_change_buffering_validate, innodb_change_buffering_update, NULL); static MYSQL_SYSVAR_ULONG(read_ahead_threshold, srv_read_ahead_threshold, PLUGIN_VAR_RQCMDARG, - "Number of pages that must be accessed sequentially for InnoDB to" + "Number of pages that must be accessed sequentially for InnoDB to " "trigger a readahead.", NULL, NULL, 56, 0, 64, 0); @@ -10799,11 +11366,6 @@ static MYSQL_SYSVAR_ULONG(dict_size_limit, srv_dict_size_limit, "Limit the allocated memory for dictionary cache. (0: unlimited)", NULL, NULL, 0, 0, LONG_MAX, 0); -static MYSQL_SYSVAR_ULONG(relax_table_creation, srv_relax_table_creation, - PLUGIN_VAR_RQCMDARG, - "Relax limitation of column size at table creation as builtin InnoDB.", - NULL, NULL, 0, 0, 1, 0); - static MYSQL_SYSVAR_ULONG(pass_corrupt_table, srv_pass_corrupt_table, PLUGIN_VAR_RQCMDARG, "Pass corruptions of user tables as 'corrupt table' instead of not crashing itself, " @@ -10822,6 +11384,7 @@ static struct st_mysql_sys_var* innobase_system_variables[]= { MYSQL_SYSVAR(commit_concurrency), MYSQL_SYSVAR(concurrency_tickets), MYSQL_SYSVAR(data_file_path), + MYSQL_SYSVAR(doublewrite_file), MYSQL_SYSVAR(data_home_dir), MYSQL_SYSVAR(doublewrite), MYSQL_SYSVAR(extra_undoslots), @@ -10892,12 +11455,11 @@ static struct st_mysql_sys_var* innobase_system_variables[]= { MYSQL_SYSVAR(read_ahead_threshold), MYSQL_SYSVAR(io_capacity), MYSQL_SYSVAR(use_purge_thread), - MYSQL_SYSVAR(relax_table_creation), MYSQL_SYSVAR(pass_corrupt_table), NULL }; -mysql_declare_plugin(innobase) +mysql_declare_plugin(innodb_plugin) { MYSQL_STORAGE_ENGINE_PLUGIN, &innobase_storage_engine, diff --git a/handler/ha_innodb.h b/handler/ha_innodb.h index 52fc54fde8c..729abcbcd0a 100644 --- a/handler/ha_innodb.h +++ b/handler/ha_innodb.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2000, 2009, MySQL AB & Innobase Oy. All Rights Reserved. +Copyright (c) 2000, 2010, MySQL AB & Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -27,16 +27,32 @@ Place, Suite 330, Boston, MA 02111-1307 USA #pragma interface /* gcc class implementation */ #endif +/* Structure defines translation table between mysql index and innodb +index structures */ +typedef struct innodb_idx_translate_struct { + ulint index_count; /*!< number of valid index entries + in the index_mapping array */ + ulint array_size; /*!< array size of index_mapping */ + dict_index_t** index_mapping; /*!< index pointer array directly + maps to index in Innodb from MySQL + array index */ +} innodb_idx_translate_t; + + /** InnoDB table share */ typedef struct st_innobase_share { - THR_LOCK lock; /*!< MySQL lock protecting - this structure */ - const char* table_name; /*!< InnoDB table name */ - uint use_count; /*!< reference count, - incremented in get_share() - and decremented in free_share() */ - void* table_name_hash;/*!< hash table chain node */ - dict_table_t* ib_table; + THR_LOCK lock; /*!< MySQL lock protecting + this structure */ + const char* table_name; /*!< InnoDB table name */ + uint use_count; /*!< reference count, + incremented in get_share() + and decremented in + free_share() */ + void* table_name_hash;/*!< hash table chain node */ + innodb_idx_translate_t idx_trans_tbl; /*!< index translation + table between MySQL and + Innodb */ + dict_table_t* ib_table; } INNOBASE_SHARE; @@ -92,9 +108,8 @@ class ha_innobase: public handler ulint innobase_reset_autoinc(ulonglong auto_inc); ulint innobase_get_autoinc(ulonglong* value); ulint innobase_update_autoinc(ulonglong auto_inc); - ulint innobase_initialize_autoinc(); + void innobase_initialize_autoinc(); dict_index_t* innobase_get_index(uint keynr); - ulonglong innobase_get_int_col_max_value(const Field* field); /* Init values for the class: */ public: diff --git a/handler/handler0alter.cc b/handler/handler0alter.cc index a5008991400..e474c318c58 100644 --- a/handler/handler0alter.cc +++ b/handler/handler0alter.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2005, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 2005, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -229,9 +229,11 @@ static int innobase_check_index_keys( /*======================*/ - const KEY* key_info, /*!< in: Indexes to be created */ - ulint num_of_keys) /*!< in: Number of indexes to - be created */ + const KEY* key_info, /*!< in: Indexes to be + created */ + ulint num_of_keys, /*!< in: Number of + indexes to be created */ + const dict_table_t* table) /*!< in: Existing indexes */ { ulint key_num; @@ -248,9 +250,22 @@ innobase_check_index_keys( const KEY& key2 = key_info[i]; if (0 == strcmp(key.name, key2.name)) { - sql_print_error("InnoDB: key name `%s` appears" - " twice in CREATE INDEX\n", - key.name); + my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), + key.name); + + return(ER_WRONG_NAME_FOR_INDEX); + } + } + + /* Check that the same index name does not already exist. */ + + for (const dict_index_t* index + = dict_table_get_first_index(table); + index; index = dict_table_get_next_index(index)) { + + if (0 == strcmp(key.name, index->name)) { + my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), + key.name); return(ER_WRONG_NAME_FOR_INDEX); } @@ -258,7 +273,7 @@ innobase_check_index_keys( /* Check that MySQL does not try to create a column prefix index field on an inappropriate data type and - that the same colum does not appear twice in the index. */ + that the same column does not appear twice in the index. */ for (ulint i = 0; i < key.key_parts; i++) { const KEY_PART_INFO& key_part1 @@ -289,14 +304,8 @@ innobase_check_index_keys( } } - sql_print_error("InnoDB: MySQL is trying to" - " create a column prefix" - " index field on an" - " inappropriate data type." - " column `%s`," - " index `%s`.\n", - field->field_name, - key.name); + my_error(ER_WRONG_KEY_COLUMN, MYF(0), + field->field_name); return(ER_WRONG_KEY_COLUMN); } @@ -309,11 +318,8 @@ innobase_check_index_keys( continue; } - sql_print_error("InnoDB: column `%s`" - " is not allowed to occur" - " twice in index `%s`.\n", - key_part1.field->field_name, - key.name); + my_error(ER_WRONG_KEY_COLUMN, MYF(0), + key_part1.field->field_name); return(ER_WRONG_KEY_COLUMN); } } @@ -522,12 +528,14 @@ innobase_create_key_def( key_info->name, "PRIMARY"); /* If there is a UNIQUE INDEX consisting entirely of NOT NULL - columns, MySQL will treat it as a PRIMARY KEY unless the - table already has one. */ + columns and if the index does not contain column prefix(es) + (only prefix/part of the column is indexed), MySQL will treat the + index as a PRIMARY KEY unless the table already has one. */ if (!new_primary && (key_info->flags & HA_NOSAME) + && (!(key_info->flags & HA_KEY_HAS_PART_KEY_SEG)) && row_table_got_default_clust_index(table)) { - uint key_part = key_info->key_parts; + uint key_part = key_info->key_parts; new_primary = TRUE; @@ -656,12 +664,18 @@ ha_innobase::add_index( innodb_table = indexed_table = dict_table_get(prebuilt->table->name, FALSE); + if (UNIV_UNLIKELY(!innodb_table)) { + error = HA_ERR_NO_SUCH_TABLE; + goto err_exit; + } + /* Check if the index name is reserved. */ if (innobase_index_name_is_reserved(trx, key_info, num_of_keys)) { error = -1; } else { /* Check that index keys are sensible */ - error = innobase_check_index_keys(key_info, num_of_keys); + error = innobase_check_index_keys(key_info, num_of_keys, + innodb_table); } if (UNIV_UNLIKELY(error)) { @@ -708,6 +722,8 @@ err_exit: row_mysql_lock_data_dictionary(trx); dict_locked = TRUE; + ut_d(dict_table_check_for_dup_indexes(innodb_table, FALSE)); + /* If a new primary key is defined for the table we need to drop the original table and rebuild all indexes. */ @@ -740,6 +756,8 @@ err_exit: user_thd); } + ut_d(dict_table_check_for_dup_indexes(innodb_table, + FALSE)); row_mysql_unlock_data_dictionary(trx); goto err_exit; } @@ -764,6 +782,10 @@ err_exit: ut_ad(error == DB_SUCCESS); + /* We will need to rebuild index translation table. Set + valid index entry count in the translation table to zero */ + share->idx_trans_tbl.index_count = 0; + /* Commit the data dictionary transaction in order to release the table locks on the system tables. This means that if MySQL crashes while creating a new primary key inside @@ -799,18 +821,6 @@ err_exit: index, num_of_idx, table); error_handling: -#ifdef UNIV_DEBUG - /* TODO: At the moment we can't handle the following statement - in our debugging code below: - - alter table t drop index b, add index (b); - - The fix will have to parse the SQL and note that the index - being added has the same name as the one being dropped and - ignore that in the dup index check.*/ - //dict_table_check_for_dup_indexes(prebuilt->table); -#endif - /* After an error, remove all those index definitions from the dictionary which were defined. */ @@ -822,6 +832,8 @@ error_handling: row_mysql_lock_data_dictionary(trx); dict_locked = TRUE; + ut_d(dict_table_check_for_dup_indexes(prebuilt->table, TRUE)); + if (!new_primary) { error = row_merge_rename_indexes(trx, indexed_table); @@ -909,6 +921,7 @@ convert_error: } if (dict_locked) { + ut_d(dict_table_check_for_dup_indexes(innodb_table, FALSE)); row_mysql_unlock_data_dictionary(trx); } @@ -951,6 +964,7 @@ ha_innobase::prepare_drop_index( /* Test and mark all the indexes to be dropped */ row_mysql_lock_data_dictionary(trx); + ut_d(dict_table_check_for_dup_indexes(prebuilt->table, FALSE)); /* Check that none of the indexes have previously been flagged for deletion. */ @@ -1116,6 +1130,7 @@ func_exit: } while (index); } + ut_d(dict_table_check_for_dup_indexes(prebuilt->table, FALSE)); row_mysql_unlock_data_dictionary(trx); DBUG_RETURN(err); @@ -1162,6 +1177,7 @@ ha_innobase::final_drop_index( prebuilt->table->flags, user_thd); row_mysql_lock_data_dictionary(trx); + ut_d(dict_table_check_for_dup_indexes(prebuilt->table, FALSE)); if (UNIV_UNLIKELY(err)) { @@ -1198,11 +1214,12 @@ ha_innobase::final_drop_index( ut_a(!index->to_be_dropped); } -#ifdef UNIV_DEBUG - dict_table_check_for_dup_indexes(prebuilt->table); -#endif + /* We will need to rebuild index translation table. Set + valid index entry count in the translation table to zero */ + share->idx_trans_tbl.index_count = 0; func_exit: + ut_d(dict_table_check_for_dup_indexes(prebuilt->table, FALSE)); trx_commit_for_mysql(trx); trx_commit_for_mysql(prebuilt->trx); row_mysql_unlock_data_dictionary(trx); diff --git a/handler/i_s.cc b/handler/i_s.cc index cd00da93d77..3165ce663ca 100644 --- a/handler/i_s.cc +++ b/handler/i_s.cc @@ -2900,6 +2900,9 @@ i_s_innodb_index_stats_fill( i_s_table->field[3]->store(index->n_uniq); row_per_keys[0] = '\0'; + + /* It is remained optimistic operation still for now */ + //dict_index_stat_mutex_enter(index); if (index->stat_n_diff_key_vals) { for (i = 1; i <= index->n_uniq; i++) { ib_int64_t rec_per_key; @@ -2913,6 +2916,8 @@ i_s_innodb_index_stats_fill( strncat(row_per_keys, buff, 256 - strlen(row_per_keys)); } } + //dict_index_stat_mutex_exit(index); + field_store_string(i_s_table->field[4], row_per_keys); i_s_table->field[5]->store(index->stat_index_size); @@ -3169,6 +3174,14 @@ UNIV_INTERN struct st_mysql_plugin i_s_innodb_admin_command = static ST_FIELD_INFO i_s_innodb_sys_tables_info[] = { + {STRUCT_FLD(field_name, "SCHEMA"), + STRUCT_FLD(field_length, NAME_LEN), + STRUCT_FLD(field_type, MYSQL_TYPE_STRING), + STRUCT_FLD(value, 0), + STRUCT_FLD(field_flags, 0), + STRUCT_FLD(old_name, ""), + STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}, + {STRUCT_FLD(field_name, "NAME"), STRUCT_FLD(field_length, NAME_LEN), STRUCT_FLD(field_type, MYSQL_TYPE_STRING), @@ -3325,6 +3338,54 @@ copy_string_field( return status; } +static +int +copy_name_fields( +/*=============*/ + TABLE* table, + int table_field_1, + const rec_t* rec, + int rec_field) +{ + int status; + const byte* data; + ulint len; + + data = rec_get_nth_field_old(rec, rec_field, &len); + if (len == UNIV_SQL_NULL) { + table->field[table_field_1]->set_null(); + table->field[table_field_1 + 1]->set_null(); + status = 0; /* success */ + } else { + char buf[NAME_LEN * 2 + 2]; + char* ptr; + + if (len > NAME_LEN * 2 + 1) { + table->field[table_field_1]->set_null(); + status = field_store_string(table->field[table_field_1 + 1], + "###TOO LONG NAME###"); + goto end_func; + } + + strncpy(buf, (char*)data, len); + buf[len] = '\0'; + ptr = strchr(buf, '/'); + if (ptr) { + *ptr = '\0'; + ++ptr; + + status = field_store_string(table->field[table_field_1], buf); + status |= field_store_string(table->field[table_field_1 + 1], ptr); + } else { + table->field[table_field_1]->set_null(); + status = field_store_string(table->field[table_field_1 + 1], buf); + } + } + +end_func: + return status; +} + static int copy_int_field( @@ -3395,49 +3456,49 @@ copy_sys_tables_rec( /* NAME */ field = dict_index_get_nth_col_pos(index, 0); - status = copy_string_field(table, 0, rec, field); + status = copy_name_fields(table, 0, rec, field); if (status) { return status; } /* ID */ field = dict_index_get_nth_col_pos(index, 1); - status = copy_id_field(table, 1, rec, field); + status = copy_id_field(table, 2, rec, field); if (status) { return status; } /* N_COLS */ field = dict_index_get_nth_col_pos(index, 2); - status = copy_int_field(table, 2, rec, field); + status = copy_int_field(table, 3, rec, field); if (status) { return status; } /* TYPE */ field = dict_index_get_nth_col_pos(index, 3); - status = copy_int_field(table, 3, rec, field); + status = copy_int_field(table, 4, rec, field); if (status) { return status; } /* MIX_ID */ field = dict_index_get_nth_col_pos(index, 4); - status = copy_id_field(table, 4, rec, field); + status = copy_id_field(table, 5, rec, field); if (status) { return status; } /* MIX_LEN */ field = dict_index_get_nth_col_pos(index, 5); - status = copy_int_field(table, 5, rec, field); + status = copy_int_field(table, 6, rec, field); if (status) { return status; } /* CLUSTER_NAME */ field = dict_index_get_nth_col_pos(index, 6); - status = copy_string_field(table, 6, rec, field); + status = copy_string_field(table, 7, rec, field); if (status) { return status; } /* SPACE */ field = dict_index_get_nth_col_pos(index, 7); - status = copy_int_field(table, 7, rec, field); + status = copy_int_field(table, 8, rec, field); if (status) { return status; } diff --git a/handler/innodb_patch_info.h b/handler/innodb_patch_info.h index 5fa50129a04..38b97411340 100644 --- a/handler/innodb_patch_info.h +++ b/handler/innodb_patch_info.h @@ -41,8 +41,8 @@ struct innodb_enhancement { {"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"}, {"innodb_show_lock_name","Show mutex/lock name instead of crated file/line","","http://www.percona.com/docs/wiki/percona-xtradb"}, {"innodb_extend_slow","Extended statistics in slow.log","It is InnoDB-part only. It needs to patch also to mysqld.","http://www.percona.com/docs/wiki/percona-xtradb"}, -{"innodb_relax_table_creation","Relax limitation of column size at table creation as builtin InnoDB.","","http://www.percona.com/docs/wiki/percona-xtradb"}, {"innodb_lru_dump_restore","Dump and restore command for content of buffer pool","","http://www.percona.com/docs/wiki/percona-xtradb"}, +{"innodb_separate_doublewrite","Add option 'innodb_doublewrite_file' to separate doublewrite dedicated tablespace","","http://www.percona.com/docs/wiki/percona-xtradb"}, {"innodb_pass_corrupt_table","Treat tables as corrupt instead of crash, when meet corrupt blocks","","http://www.percona.com/docs/wiki/percona-xtradb"}, {"innodb_fast_checksum","Using the checksum on 32bit-unit calculation","incompatible for unpatched ver.","http://www.percona.com/docs/wiki/percona-xtradb"}, {"innodb_files_extend","allow >4GB transaction log files, and can vary universal page size of datafiles","incompatible for unpatched ver.","http://www.percona.com/docs/wiki/percona-xtradb"}, diff --git a/ibuf/ibuf0ibuf.c b/ibuf/ibuf0ibuf.c index 94f3751dd04..e01c2d6b800 100644 --- a/ibuf/ibuf0ibuf.c +++ b/ibuf/ibuf0ibuf.c @@ -733,24 +733,41 @@ page containing the descriptor bits for the file page; the bitmap page is x-latched */ static page_t* -ibuf_bitmap_get_map_page( -/*=====================*/ - ulint space, /*!< in: space id of the file page */ - ulint page_no,/*!< in: page number of the file page */ - ulint zip_size,/*!< in: compressed page size in bytes; - 0 for uncompressed pages */ - mtr_t* mtr) /*!< in: mtr */ +ibuf_bitmap_get_map_page_func( +/*==========================*/ + ulint space, /*!< in: space id of the file page */ + ulint page_no,/*!< in: page number of the file page */ + ulint zip_size,/*!< in: compressed page size in bytes; + 0 for uncompressed pages */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ + mtr_t* mtr) /*!< in: mtr */ { buf_block_t* block; - block = buf_page_get(space, zip_size, - ibuf_bitmap_page_no_calc(zip_size, page_no), - RW_X_LATCH, mtr); + block = buf_page_get_gen(space, zip_size, + ibuf_bitmap_page_no_calc(zip_size, page_no), + RW_X_LATCH, NULL, BUF_GET, + file, line, mtr); buf_block_dbg_add_level(block, SYNC_IBUF_BITMAP); return(buf_block_get_frame(block)); } +/********************************************************************//** +Gets the ibuf bitmap page where the bits describing a given file page are +stored. +@return bitmap page where the file page is mapped, that is, the bitmap +page containing the descriptor bits for the file page; the bitmap page +is x-latched +@param space in: space id of the file page +@param page_no in: page number of the file page +@param zip_size in: compressed page size in bytes; 0 for uncompressed pages +@param mtr in: mini-transaction */ +#define ibuf_bitmap_get_map_page(space, page_no, zip_size, mtr) \ + ibuf_bitmap_get_map_page_func(space, page_no, zip_size, \ + __FILE__, __LINE__, mtr) + /************************************************************************//** Sets the free bits of the page in the ibuf bitmap. This is done in a separate mini-transaction, hence this operation does not restrict further work to only diff --git a/include/btr0btr.h b/include/btr0btr.h index d5c8258513c..5e6a76c7d21 100644 --- a/include/btr0btr.h +++ b/include/btr0btr.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -193,6 +193,10 @@ btr_leaf_page_release( mtr_t* mtr); /*!< in: mtr */ /**************************************************************//** Gets the child node file address in a node pointer. +NOTE: the offsets array must contain all offsets for the record since +we read the last field according to offsets and assume that it contains +the child page number. In other words offsets must have been retrieved +with rec_get_offsets(n_fields=ULINT_UNDEFINED). @return child node address */ UNIV_INLINE ulint @@ -317,12 +321,16 @@ Inserts a data tuple to a tree on a non-leaf level. It is assumed that mtr holds an x-latch on the tree. */ UNIV_INTERN void -btr_insert_on_non_leaf_level( -/*=========================*/ +btr_insert_on_non_leaf_level_func( +/*==============================*/ dict_index_t* index, /*!< in: index */ ulint level, /*!< in: level, must be > 0 */ dtuple_t* tuple, /*!< in: the record to be inserted */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr); /*!< in: mtr */ +# define btr_insert_on_non_leaf_level(i,l,t,m) \ + btr_insert_on_non_leaf_level_func(i,l,t,__FILE__,__LINE__,m) #endif /* !UNIV_HOTBACKUP */ /****************************************************************//** Sets a record as the predefined minimum record. */ diff --git a/include/btr0btr.ic b/include/btr0btr.ic index 4aa4a41f50d..c9c38f3c3b3 100644 --- a/include/btr0btr.ic +++ b/include/btr0btr.ic @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -257,6 +257,10 @@ btr_page_set_prev( /**************************************************************//** Gets the child node file address in a node pointer. +NOTE: the offsets array must contain all offsets for the record since +we read the last field according to offsets and assume that it contains +the child page number. In other words offsets must have been retrieved +with rec_get_offsets(n_fields=ULINT_UNDEFINED). @return child node address */ UNIV_INLINE ulint diff --git a/include/btr0cur.h b/include/btr0cur.h index 480a3877e54..716f15c4267 100644 --- a/include/btr0cur.h +++ b/include/btr0cur.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -152,29 +152,39 @@ btr_cur_search_to_nth_level( ulint has_search_latch,/*!< in: latch mode the caller currently has on btr_search_latch: RW_S_LATCH, or 0 */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr); /*!< in: mtr */ /*****************************************************************//** Opens a cursor at either end of an index. */ UNIV_INTERN void -btr_cur_open_at_index_side( -/*=======================*/ +btr_cur_open_at_index_side_func( +/*============================*/ ibool from_left, /*!< in: TRUE if open to the low end, FALSE if to the high end */ dict_index_t* index, /*!< in: index */ ulint latch_mode, /*!< in: latch mode */ btr_cur_t* cursor, /*!< in: cursor */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr); /*!< in: mtr */ +#define btr_cur_open_at_index_side(f,i,l,c,m) \ + btr_cur_open_at_index_side_func(f,i,l,c,__FILE__,__LINE__,m) /**********************************************************************//** Positions a cursor at a randomly chosen position within a B-tree. */ UNIV_INTERN void -btr_cur_open_at_rnd_pos( -/*====================*/ +btr_cur_open_at_rnd_pos_func( +/*=========================*/ dict_index_t* index, /*!< in: index */ ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */ btr_cur_t* cursor, /*!< in/out: B-tree cursor */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr); /*!< in: mtr */ +#define btr_cur_open_at_rnd_pos(i,l,c,m) \ + btr_cur_open_at_rnd_pos_func(i,l,c,__FILE__,__LINE__,m) /*************************************************************//** Tries to perform an insert to a page in an index tree, next to cursor. It is assumed that mtr holds an x-latch on the page. The operation does diff --git a/include/btr0pcur.h b/include/btr0pcur.h index 12b1375d8b7..2334a266280 100644 --- a/include/btr0pcur.h +++ b/include/btr0pcur.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -82,8 +82,8 @@ Initializes and opens a persistent cursor to an index tree. It should be closed with btr_pcur_close. */ UNIV_INLINE void -btr_pcur_open( -/*==========*/ +btr_pcur_open_func( +/*===============*/ dict_index_t* index, /*!< in: index */ const dtuple_t* tuple, /*!< in: tuple on which search done */ ulint mode, /*!< in: PAGE_CUR_L, ...; @@ -94,14 +94,18 @@ btr_pcur_open( record! */ ulint latch_mode,/*!< in: BTR_SEARCH_LEAF, ... */ btr_pcur_t* cursor, /*!< in: memory buffer for persistent cursor */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr); /*!< in: mtr */ +#define btr_pcur_open(i,t,md,l,c,m) \ + btr_pcur_open_func(i,t,md,l,c,__FILE__,__LINE__,m) /**************************************************************//** Opens an persistent cursor to an index tree without initializing the cursor. */ UNIV_INLINE void -btr_pcur_open_with_no_init( -/*=======================*/ +btr_pcur_open_with_no_init_func( +/*============================*/ dict_index_t* index, /*!< in: index */ const dtuple_t* tuple, /*!< in: tuple on which search done */ ulint mode, /*!< in: PAGE_CUR_L, ...; @@ -119,7 +123,12 @@ btr_pcur_open_with_no_init( ulint has_search_latch,/*!< in: latch mode the caller currently has on btr_search_latch: RW_S_LATCH, or 0 */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr); /*!< in: mtr */ +#define btr_pcur_open_with_no_init(ix,t,md,l,cur,has,m) \ + btr_pcur_open_with_no_init_func(ix,t,md,l,cur,has,__FILE__,__LINE__,m) + /*****************************************************************//** Opens a persistent cursor at either end of an index. */ UNIV_INLINE @@ -160,8 +169,8 @@ before first in tree. The latching mode must be BTR_SEARCH_LEAF or BTR_MODIFY_LEAF. */ UNIV_INTERN void -btr_pcur_open_on_user_rec( -/*======================*/ +btr_pcur_open_on_user_rec_func( +/*===========================*/ dict_index_t* index, /*!< in: index */ const dtuple_t* tuple, /*!< in: tuple on which search done */ ulint mode, /*!< in: PAGE_CUR_L, ... */ @@ -169,17 +178,25 @@ btr_pcur_open_on_user_rec( BTR_MODIFY_LEAF */ btr_pcur_t* cursor, /*!< in: memory buffer for persistent cursor */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr); /*!< in: mtr */ +#define btr_pcur_open_on_user_rec(i,t,md,l,c,m) \ + btr_pcur_open_on_user_rec_func(i,t,md,l,c,__FILE__,__LINE__,m) /**********************************************************************//** Positions a cursor at a randomly chosen position within a B-tree. */ UNIV_INLINE void -btr_pcur_open_at_rnd_pos( -/*=====================*/ +btr_pcur_open_at_rnd_pos_func( +/*==========================*/ dict_index_t* index, /*!< in: index */ ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */ btr_pcur_t* cursor, /*!< in/out: B-tree pcur */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr); /*!< in: mtr */ +#define btr_pcur_open_at_rnd_pos(i,l,c,m) \ + btr_pcur_open_at_rnd_pos_func(i,l,c,__FILE__,__LINE__,m) /**************************************************************//** Frees the possible old_rec_buf buffer of a persistent cursor and sets the latch mode of the persistent cursor to BTR_NO_LATCHES. */ @@ -218,11 +235,15 @@ record and it can be restored on a user record whose ordering fields are identical to the ones of the original user record */ UNIV_INTERN ibool -btr_pcur_restore_position( -/*======================*/ +btr_pcur_restore_position_func( +/*===========================*/ ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */ btr_pcur_t* cursor, /*!< in: detached persistent cursor */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr); /*!< in: mtr */ +#define btr_pcur_restore_position(l,cur,mtr) \ + btr_pcur_restore_position_func(l,cur,__FILE__,__LINE__,mtr) /**************************************************************//** If the latch mode of the cursor is BTR_LEAF_SEARCH or BTR_LEAF_MODIFY, releases the page latch and bufferfix reserved by the cursor. @@ -260,20 +281,13 @@ btr_pcur_get_mtr( /*=============*/ btr_pcur_t* cursor); /*!< in: persistent cursor */ /**************************************************************//** -Commits the pcur mtr and sets the pcur latch mode to BTR_NO_LATCHES, +Commits the mtr and sets the pcur latch mode to BTR_NO_LATCHES, that is, the cursor becomes detached. If there have been modifications to the page where pcur is positioned, this can be used instead of btr_pcur_release_leaf. Function btr_pcur_store_position should be used before calling this, if restoration of cursor is wanted later. */ UNIV_INLINE void -btr_pcur_commit( -/*============*/ - btr_pcur_t* pcur); /*!< in: persistent cursor */ -/**************************************************************//** -Differs from btr_pcur_commit in that we can specify the mtr to commit. */ -UNIV_INLINE -void btr_pcur_commit_specify_mtr( /*========================*/ btr_pcur_t* pcur, /*!< in: persistent cursor */ diff --git a/include/btr0pcur.ic b/include/btr0pcur.ic index 0ca7223f861..0c38797e6c5 100644 --- a/include/btr0pcur.ic +++ b/include/btr0pcur.ic @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -395,30 +395,13 @@ btr_pcur_move_to_next( } /**************************************************************//** -Commits the pcur mtr and sets the pcur latch mode to BTR_NO_LATCHES, +Commits the mtr and sets the pcur latch mode to BTR_NO_LATCHES, that is, the cursor becomes detached. If there have been modifications to the page where pcur is positioned, this can be used instead of btr_pcur_release_leaf. Function btr_pcur_store_position should be used before calling this, if restoration of cursor is wanted later. */ UNIV_INLINE void -btr_pcur_commit( -/*============*/ - btr_pcur_t* pcur) /*!< in: persistent cursor */ -{ - ut_a(pcur->pos_state == BTR_PCUR_IS_POSITIONED); - - pcur->latch_mode = BTR_NO_LATCHES; - - mtr_commit(pcur->mtr); - - pcur->pos_state = BTR_PCUR_WAS_POSITIONED; -} - -/**************************************************************//** -Differs from btr_pcur_commit in that we can specify the mtr to commit. */ -UNIV_INLINE -void btr_pcur_commit_specify_mtr( /*========================*/ btr_pcur_t* pcur, /*!< in: persistent cursor */ @@ -483,8 +466,8 @@ Initializes and opens a persistent cursor to an index tree. It should be closed with btr_pcur_close. */ UNIV_INLINE void -btr_pcur_open( -/*==========*/ +btr_pcur_open_func( +/*===============*/ dict_index_t* index, /*!< in: index */ const dtuple_t* tuple, /*!< in: tuple on which search done */ ulint mode, /*!< in: PAGE_CUR_L, ...; @@ -495,6 +478,8 @@ btr_pcur_open( record! */ ulint latch_mode,/*!< in: BTR_SEARCH_LEAF, ... */ btr_pcur_t* cursor, /*!< in: memory buffer for persistent cursor */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr) /*!< in: mtr */ { btr_cur_t* btr_cursor; @@ -511,7 +496,7 @@ btr_pcur_open( btr_cursor = btr_pcur_get_btr_cur(cursor); btr_cur_search_to_nth_level(index, 0, tuple, mode, latch_mode, - btr_cursor, 0, mtr); + btr_cursor, 0, file, line, mtr); cursor->pos_state = BTR_PCUR_IS_POSITIONED; cursor->trx_if_known = NULL; @@ -522,8 +507,8 @@ Opens an persistent cursor to an index tree without initializing the cursor. */ UNIV_INLINE void -btr_pcur_open_with_no_init( -/*=======================*/ +btr_pcur_open_with_no_init_func( +/*============================*/ dict_index_t* index, /*!< in: index */ const dtuple_t* tuple, /*!< in: tuple on which search done */ ulint mode, /*!< in: PAGE_CUR_L, ...; @@ -541,6 +526,8 @@ btr_pcur_open_with_no_init( ulint has_search_latch,/*!< in: latch mode the caller currently has on btr_search_latch: RW_S_LATCH, or 0 */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr) /*!< in: mtr */ { btr_cur_t* btr_cursor; @@ -553,7 +540,8 @@ btr_pcur_open_with_no_init( btr_cursor = btr_pcur_get_btr_cur(cursor); btr_cur_search_to_nth_level(index, 0, tuple, mode, latch_mode, - btr_cursor, has_search_latch, mtr); + btr_cursor, has_search_latch, + file, line, mtr); cursor->pos_state = BTR_PCUR_IS_POSITIONED; cursor->old_stored = BTR_PCUR_OLD_NOT_STORED; @@ -600,11 +588,13 @@ btr_pcur_open_at_index_side( Positions a cursor at a randomly chosen position within a B-tree. */ UNIV_INLINE void -btr_pcur_open_at_rnd_pos( -/*=====================*/ +btr_pcur_open_at_rnd_pos_func( +/*==========================*/ dict_index_t* index, /*!< in: index */ ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */ btr_pcur_t* cursor, /*!< in/out: B-tree pcur */ + const char* file, /*!< in: file name */ + ulint line, /*!< in: line where called */ mtr_t* mtr) /*!< in: mtr */ { /* Initialize the cursor */ @@ -614,8 +604,9 @@ btr_pcur_open_at_rnd_pos( btr_pcur_init(cursor); - btr_cur_open_at_rnd_pos(index, latch_mode, - btr_pcur_get_btr_cur(cursor), mtr); + btr_cur_open_at_rnd_pos_func(index, latch_mode, + btr_pcur_get_btr_cur(cursor), + file, line, mtr); cursor->pos_state = BTR_PCUR_IS_POSITIONED; cursor->old_stored = BTR_PCUR_OLD_NOT_STORED; diff --git a/include/buf0buf.h b/include/buf0buf.h index c95fcc00dd3..f93510be6d6 100644 --- a/include/buf0buf.h +++ b/include/buf0buf.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -33,6 +33,7 @@ Created 11/5/1995 Heikki Tuuri #include "hash0hash.h" #include "ut0byte.h" #include "page0types.h" +#include "ut0rbt.h" #ifndef UNIV_HOTBACKUP #include "os0proc.h" @@ -202,20 +203,14 @@ with care. */ #define buf_page_get_with_no_latch(SP, ZS, OF, MTR) buf_page_get_gen(\ SP, ZS, OF, RW_NO_LATCH, NULL,\ BUF_GET_NO_LATCH, __FILE__, __LINE__, MTR) -/**************************************************************//** -NOTE! The following macros should be used instead of -buf_page_optimistic_get_func, to improve debugging. Only values RW_S_LATCH and -RW_X_LATCH are allowed as LA! */ -#define buf_page_optimistic_get(LA, BL, MC, MTR) \ - buf_page_optimistic_get_func(LA, BL, MC, __FILE__, __LINE__, MTR) /********************************************************************//** This is the general function used to get optimistic access to a database page. @return TRUE if success */ UNIV_INTERN ibool -buf_page_optimistic_get_func( -/*=========================*/ +buf_page_optimistic_get( +/*====================*/ ulint rw_latch,/*!< in: RW_S_LATCH, RW_X_LATCH */ buf_block_t* block, /*!< in: guessed block */ ib_uint64_t modify_clock,/*!< in: modify clock value if mode is @@ -1205,15 +1200,21 @@ struct buf_block_struct{ rw_lock_t lock; /*!< read-write lock of the buffer frame */ unsigned lock_hash_val:32;/*!< hashed value of the page address - in the record lock hash table */ - unsigned check_index_page_at_flush:1; + in the record lock hash table; + protected by buf_block_t::lock + (or buf_block_t::mutex, buf_pool_mutex + in buf_page_get_gen(), + buf_page_init_for_read() + and buf_page_create()) */ + ibool check_index_page_at_flush; /*!< TRUE if we know that this is an index page, and want the database to check its consistency before flush; note that there may be pages in the buffer pool which are index pages, but this flag is not set because - we do not keep track of all pages */ + we do not keep track of all pages; + NOT protected by any mutex */ /* @} */ /** @name Optimistic search field */ /* @{ */ @@ -1379,6 +1380,19 @@ struct buf_pool_struct{ /*!< this is in the set state when there is no flush batch of the given type running */ + ib_rbt_t* flush_rbt; /* !< a red-black tree is used + exclusively during recovery to + speed up insertions in the + flush_list. This tree contains + blocks in order of + oldest_modification LSN and is + kept in sync with the + flush_list. + Each member of the tree MUST + also be on the flush_list. + This tree is relevant only in + recovery and is set to NULL + once the recovery is over. */ ulint freed_page_clock;/*!< a sequence number used to count the number of buffer blocks removed from the end of diff --git a/include/buf0buf.ic b/include/buf0buf.ic index 07387565ef2..2c7386a22a4 100644 --- a/include/buf0buf.ic +++ b/include/buf0buf.ic @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2008, Google Inc. Portions of this file contain modifications contributed and copyrighted by @@ -81,7 +81,7 @@ buf_page_peek_if_too_old( unsigned access_time = buf_page_is_accessed(bpage); if (access_time > 0 - && (ut_time_ms() - access_time) + && ((ib_uint32_t) (ut_time_ms() - access_time)) >= buf_LRU_old_threshold_ms) { return(TRUE); } @@ -743,6 +743,12 @@ buf_block_get_lock_hash_val( /*========================*/ const buf_block_t* block) /*!< in: block */ { + ut_ad(block); + ut_ad(buf_page_in_file(&block->page)); +#ifdef UNIV_SYNC_DEBUG + ut_ad(rw_lock_own(&(((buf_block_t*) block)->lock), RW_LOCK_EXCLUSIVE) + || rw_lock_own(&(((buf_block_t*) block)->lock), RW_LOCK_SHARED)); +#endif /* UNIV_SYNC_DEBUG */ return(block->lock_hash_val); } diff --git a/include/buf0flu.h b/include/buf0flu.h index cac4bf9fe4b..2f7108fda1b 100644 --- a/include/buf0flu.h +++ b/include/buf0flu.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -40,6 +40,16 @@ buf_flush_remove( /*=============*/ buf_page_t* bpage); /*!< in: pointer to the block in question */ /********************************************************************//** +Relocates a buffer control block on the flush_list. +Note that it is assumed that the contents of bpage has already been +copied to dpage. */ +UNIV_INTERN +void +buf_flush_relocate_on_flush_list( +/*=============================*/ + buf_page_t* bpage, /*!< in/out: control block being moved */ + buf_page_t* dpage); /*!< in/out: destination block */ +/********************************************************************//** Updates the flush system data structures when a write is completed. */ UNIV_INTERN void @@ -140,8 +150,8 @@ how much redo the workload is generating and at what rate. */ struct buf_flush_stat_struct { - ib_uint64_t redo; /**< amount of redo generated. */ - ulint n_flushed; /**< number of pages flushed. */ + ib_uint64_t redo; /*!< amount of redo generated. */ + ulint n_flushed; /*!< number of pages flushed. */ }; /** Statistics for selecting flush rate of dirty pages. */ @@ -176,6 +186,22 @@ buf_flush_validate(void); /*====================*/ #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ +/******************************************************************//** +Initialize the red-black tree to speed up insertions into the flush_list +during recovery process. Should be called at the start of recovery +process before any page has been read/written. */ +UNIV_INTERN +void +buf_flush_init_flush_rbt(void); +/*==========================*/ + +/******************************************************************//** +Frees up the red-black tree. */ +UNIV_INTERN +void +buf_flush_free_flush_rbt(void); +/*==========================*/ + /** When buf_flush_free_margin is called, it tries to make this many blocks available to replacement in the free list and at the end of the LRU list (to make sure that a read-ahead batch can be read efficiently in a single diff --git a/include/data0type.ic b/include/data0type.ic index 240b4288f39..2bf67a941bd 100644 --- a/include/data0type.ic +++ b/include/data0type.ic @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -285,6 +285,10 @@ dtype_new_store_for_order_and_null_size( #endif ulint len; + ut_ad(type); + ut_ad(type->mtype >= DATA_VARCHAR); + ut_ad(type->mtype <= DATA_MYSQL); + buf[0] = (byte)(type->mtype & 0xFFUL); if (type->prtype & DATA_BINARY_TYPE) { diff --git a/include/dict0boot.h b/include/dict0boot.h index 51d37ee98d1..1a13bd1503a 100644 --- a/include/dict0boot.h +++ b/include/dict0boot.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -137,6 +137,7 @@ clustered index */ #define DICT_SYS_INDEXES_PAGE_NO_FIELD 8 #define DICT_SYS_INDEXES_SPACE_NO_FIELD 7 #define DICT_SYS_INDEXES_TYPE_FIELD 6 +#define DICT_SYS_INDEXES_NAME_FIELD 4 /* When a row id which is zero modulo this number (which must be a power of two) is assigned, the field DICT_HDR_ROW_ID on the dictionary header page is diff --git a/include/dict0dict.h b/include/dict0dict.h index 8272bfe2422..0879e91ab33 100644 --- a/include/dict0dict.h +++ b/include/dict0dict.h @@ -928,9 +928,10 @@ UNIV_INTERN void dict_table_check_for_dup_indexes( /*=============================*/ - const dict_table_t* table); /*!< in: Check for dup indexes + const dict_table_t* table, /*!< in: Check for dup indexes in this table */ - + ibool tmp_ok);/*!< in: TRUE=allow temporary + index names */ #endif /* UNIV_DEBUG */ /**********************************************************************//** Builds a node pointer out of a physical record and a page number. @@ -1060,6 +1061,22 @@ UNIV_INTERN void dict_mutex_exit_for_mysql(void); /*===========================*/ +/**********************************************************************//** +Lock the appropriate mutex to protect index->stat_n_diff_key_vals[]. +index->id is used to pick the right mutex and it should not change +before dict_index_stat_mutex_exit() is called on this index. */ +UNIV_INTERN +void +dict_index_stat_mutex_enter( +/*========================*/ + const dict_index_t* index); /*!< in: index */ +/**********************************************************************//** +Unlock the appropriate mutex that protects index->stat_n_diff_key_vals[]. */ +UNIV_INTERN +void +dict_index_stat_mutex_exit( +/*=======================*/ + const dict_index_t* index); /*!< in: index */ /********************************************************************//** Checks if the database name in two table names is the same. @return TRUE if same db name */ diff --git a/include/dict0mem.h b/include/dict0mem.h index 603ecfda3f9..ee3107a3be1 100644 --- a/include/dict0mem.h +++ b/include/dict0mem.h @@ -80,21 +80,39 @@ combination of types */ /** File format */ /* @{ */ #define DICT_TF_FORMAT_SHIFT 5 /* file format */ -#define DICT_TF_FORMAT_MASK (127 << DICT_TF_FORMAT_SHIFT) +#define DICT_TF_FORMAT_MASK \ +((~(~0 << (DICT_TF_BITS - DICT_TF_FORMAT_SHIFT))) << DICT_TF_FORMAT_SHIFT) #define DICT_TF_FORMAT_51 0 /*!< InnoDB/MySQL up to 5.1 */ #define DICT_TF_FORMAT_ZIP 1 /*!< InnoDB plugin for 5.1: compressed tables, new BLOB treatment */ /** Maximum supported file format */ #define DICT_TF_FORMAT_MAX DICT_TF_FORMAT_ZIP - +/* @} */ #define DICT_TF_BITS 6 /*!< number of flag bits */ #if (1 << (DICT_TF_BITS - DICT_TF_FORMAT_SHIFT)) <= DICT_TF_FORMAT_MAX # error "DICT_TF_BITS is insufficient for DICT_TF_FORMAT_MAX" #endif /* @} */ + +/** @brief Additional table flags. + +These flags will be stored in SYS_TABLES.MIX_LEN. All unused flags +will be written as 0. The column may contain garbage for tables +created with old versions of InnoDB that only implemented +ROW_FORMAT=REDUNDANT. */ +/* @{ */ +#define DICT_TF2_SHIFT DICT_TF_BITS + /*!< Shift value for + table->flags. */ +#define DICT_TF2_TEMPORARY 1 /*!< TRUE for tables from + CREATE TEMPORARY TABLE. */ +#define DICT_TF2_BITS (DICT_TF2_SHIFT + 1) + /*!< Total number of bits + in table->flags. */ /* @} */ + /**********************************************************************//** Creates a table memory object. @return own: table object */ @@ -374,7 +392,7 @@ struct dict_table_struct{ unsigned space:32; /*!< space where the clustered index of the table is placed */ - unsigned flags:DICT_TF_BITS;/*!< DICT_TF_COMPACT, ... */ + unsigned flags:DICT_TF2_BITS;/*!< DICT_TF_COMPACT, ... */ unsigned ibd_file_missing:1; /*!< TRUE if this is in a single-table tablespace and the .ibd file is missing; then diff --git a/include/fil0fil.h b/include/fil0fil.h index bacaafa1c72..163cacf2892 100644 --- a/include/fil0fil.h +++ b/include/fil0fil.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -110,9 +110,10 @@ extern fil_addr_t fil_addr_null; contents of this field is valid for all uncompressed pages. */ #define FIL_PAGE_FILE_FLUSH_LSN 26 /*!< this is only defined for the - first page in a data file: the file - has been flushed to disk at least up - to this lsn */ + first page in a system tablespace + data file (ibdata*, not *.ibd): + the file has been flushed to disk + at least up to this lsn */ #define FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID 34 /*!< starting from 4.1.x this contains the space id of the page */ #define FIL_PAGE_DATA 38 /*!< start of the data on the page */ diff --git a/include/hash0hash.h b/include/hash0hash.h index 977cb829f35..b17c21a45ef 100644 --- a/include/hash0hash.h +++ b/include/hash0hash.h @@ -434,11 +434,12 @@ struct hash_table_struct { these heaps */ #endif /* !UNIV_HOTBACKUP */ mem_heap_t* heap; +#ifdef UNIV_DEBUG ulint magic_n; +# define HASH_TABLE_MAGIC_N 76561114 +#endif /* UNIV_DEBUG */ }; -#define HASH_TABLE_MAGIC_N 76561114 - #ifndef UNIV_NONINL #include "hash0hash.ic" #endif diff --git a/include/hash0hash.ic b/include/hash0hash.ic index 19da2d50701..0b437894e2e 100644 --- a/include/hash0hash.ic +++ b/include/hash0hash.ic @@ -35,6 +35,8 @@ hash_get_nth_cell( hash_table_t* table, /*!< in: hash table */ ulint n) /*!< in: cell index */ { + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); ut_ad(n < table->n_cells); return(table->array + n); @@ -48,6 +50,8 @@ hash_table_clear( /*=============*/ hash_table_t* table) /*!< in/out: hash table */ { + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); memset(table->array, 0x0, table->n_cells * sizeof(*table->array)); } @@ -61,6 +65,8 @@ hash_get_n_cells( /*=============*/ hash_table_t* table) /*!< in: table */ { + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); return(table->n_cells); } @@ -74,6 +80,8 @@ hash_calc_hash( ulint fold, /*!< in: folded value */ hash_table_t* table) /*!< in: hash table */ { + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); return(ut_hash_ulint(fold, table->n_cells)); } @@ -88,6 +96,8 @@ hash_get_mutex_no( hash_table_t* table, /*!< in: hash table */ ulint fold) /*!< in: fold */ { + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); ut_ad(ut_is_2pow(table->n_mutexes)); return(ut_2pow_remainder(hash_calc_hash(fold, table), table->n_mutexes)); @@ -103,6 +113,8 @@ hash_get_nth_heap( hash_table_t* table, /*!< in: hash table */ ulint i) /*!< in: index of the heap */ { + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); ut_ad(i < table->n_mutexes); return(table->heaps[i]); @@ -120,6 +132,9 @@ hash_get_heap( { ulint i; + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); + if (table->heap) { return(table->heap); } @@ -139,6 +154,8 @@ hash_get_nth_mutex( hash_table_t* table, /*!< in: hash table */ ulint i) /*!< in: index of the mutex */ { + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); ut_ad(i < table->n_mutexes); return(table->mutexes + i); @@ -156,6 +173,9 @@ hash_get_mutex( { ulint i; + ut_ad(table); + ut_ad(table->magic_n == HASH_TABLE_MAGIC_N); + i = hash_get_mutex_no(table, fold); return(hash_get_nth_mutex(table, i)); diff --git a/include/lock0lock.h b/include/lock0lock.h index 82e4c9bd976..89a6977b589 100644 --- a/include/lock0lock.h +++ b/include/lock0lock.h @@ -43,6 +43,7 @@ extern ibool lock_print_waits; #endif /* UNIV_DEBUG */ /* Buffer for storing information about the most recent deadlock error */ extern FILE* lock_latest_err_file; +extern ulint srv_n_lock_deadlock_count; /*********************************************************************//** Gets the size of a lock struct. @@ -613,13 +614,16 @@ lock_rec_print( FILE* file, /*!< in: file where to print */ const lock_t* lock); /*!< in: record type lock */ /*********************************************************************//** -Prints info of locks for all transactions. */ +Prints info of locks for all transactions. +@return FALSE if not able to obtain kernel mutex +and exits without printing info */ UNIV_INTERN -void +ibool lock_print_info_summary( /*====================*/ - FILE* file); /*!< in: file where to print */ -/*********************************************************************//** + FILE* file, /*!< in: file where to print */ + ibool nowait);/*!< in: whether to wait for the kernel mutex */ +/************************************************************************* Prints info of locks for each transaction. */ UNIV_INTERN void diff --git a/include/log0log.h b/include/log0log.h index 135aeb69e2d..8fce4ef96bc 100644 --- a/include/log0log.h +++ b/include/log0log.h @@ -1,23 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. - -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA - -*****************************************************************************/ -/***************************************************************************** - -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2009, Google Inc. Portions of this file contain modifications contributed and copyrighted by @@ -825,7 +808,17 @@ struct log_struct{ written to some log group; for this to be advanced, it is enough that the write i/o has been completed for all - log groups */ + log groups. + Note that since InnoDB currently + has only one log group therefore + this value is redundant. Also it + is possible that this value + falls behind the + flushed_to_disk_lsn transiently. + It is appropriate to use either + flushed_to_disk_lsn or + write_lsn which are always + up-to-date and accurate. */ ib_uint64_t write_lsn; /*!< end lsn for the current running write */ ulint write_end_offset;/*!< the data in buffer has diff --git a/include/log0log.ic b/include/log0log.ic index 36d151a3064..139f4041a36 100644 --- a/include/log0log.ic +++ b/include/log0log.ic @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -314,12 +314,15 @@ log_reserve_and_write_fast( ulint data_len; #ifdef UNIV_LOG_LSN_DEBUG /* length of the LSN pseudo-record */ - ulint lsn_len = 1 - + mach_get_compressed_size(log_sys->lsn >> 32) - + mach_get_compressed_size(log_sys->lsn & 0xFFFFFFFFUL); + ulint lsn_len; #endif /* UNIV_LOG_LSN_DEBUG */ mutex_enter(&log_sys->mutex); +#ifdef UNIV_LOG_LSN_DEBUG + lsn_len = 1 + + mach_get_compressed_size(log_sys->lsn >> 32) + + mach_get_compressed_size(log_sys->lsn & 0xFFFFFFFFUL); +#endif /* UNIV_LOG_LSN_DEBUG */ data_len = len #ifdef UNIV_LOG_LSN_DEBUG diff --git a/include/log0recv.h b/include/log0recv.h index ac6b19a3f6a..15065267250 100644 --- a/include/log0recv.h +++ b/include/log0recv.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1997, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -176,6 +176,12 @@ UNIV_INTERN void recv_recovery_from_checkpoint_finish(void); /*======================================*/ +/********************************************************//** +Initiates the rollback of active transactions. */ +UNIV_INTERN +void +recv_recovery_rollback_active(void); +/*===============================*/ /*******************************************************//** Scans log from a buffer and stores new log data to the parsing buffer. Parses and hashes the log records if new data found. Unless @@ -258,12 +264,14 @@ void recv_sys_init( /*==========*/ ulint available_memory); /*!< in: available memory in bytes */ +#ifndef UNIV_HOTBACKUP /********************************************************//** Reset the state of the recovery system variables. */ UNIV_INTERN void recv_sys_var_init(void); /*===================*/ +#endif /* !UNIV_HOTBACKUP */ /*******************************************************************//** Empties the hash table of stored log records, applying them to appropriate pages. */ @@ -360,8 +368,8 @@ typedef struct recv_addr_struct recv_addr_t; struct recv_addr_struct{ enum recv_addr_state state; /*!< recovery state of the page */ - ulint space; /*!< space id */ - ulint page_no;/*!< page number */ + unsigned space:32;/*!< space id */ + unsigned page_no:32;/*!< page number */ UT_LIST_BASE_NODE_T(recv_t) rec_list;/*!< list of log records for this page */ hash_node_t addr_hash;/*!< hash node in the hash bucket chain */ diff --git a/include/mem0dbg.h b/include/mem0dbg.h index a064af5c678..d81e1418b2b 100644 --- a/include/mem0dbg.h +++ b/include/mem0dbg.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -28,6 +28,13 @@ Created 6/9/1994 Heikki Tuuri check fields whose sizes are given below */ #ifdef UNIV_MEM_DEBUG +# ifndef UNIV_HOTBACKUP +/* The mutex which protects in the debug version the hash table +containing the list of live memory heaps, and also the global +variables in mem0dbg.c. */ +extern mutex_t mem_hash_mutex; +# endif /* !UNIV_HOTBACKUP */ + #define MEM_FIELD_HEADER_SIZE ut_calc_align(2 * sizeof(ulint),\ UNIV_MEM_ALIGNMENT) #define MEM_FIELD_TRAILER_SIZE sizeof(ulint) diff --git a/include/mem0dbg.ic b/include/mem0dbg.ic index cb9245411dc..b0c8178a623 100644 --- a/include/mem0dbg.ic +++ b/include/mem0dbg.ic @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -25,9 +25,6 @@ Created 6/8/1994 Heikki Tuuri *************************************************************************/ #ifdef UNIV_MEM_DEBUG -# ifndef UNIV_HOTBACKUP -extern mutex_t mem_hash_mutex; -# endif /* !UNIV_HOTBACKUP */ extern ulint mem_current_allocated_memory; /******************************************************************//** diff --git a/include/mem0mem.h b/include/mem0mem.h index 98f8748e529..ee28cf7b225 100644 --- a/include/mem0mem.h +++ b/include/mem0mem.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -359,6 +359,9 @@ struct mem_block_info_struct { to the heap is also the first block in this list, though it also contains the base node of the list. */ ulint len; /*!< physical length of this block in bytes */ + ulint total_size; /* physical length in bytes of all blocks + in the heap. This is defined only in the base + node and is set to ULINT_UNDEFINED in others. */ ulint type; /*!< type of heap: MEM_HEAP_DYNAMIC, or MEM_HEAP_BUF possibly ORed to MEM_HEAP_BTR_SEARCH */ ulint free; /*!< offset in bytes of the first free position for diff --git a/include/mem0mem.ic b/include/mem0mem.ic index e7080d8c508..cbce2edc661 100644 --- a/include/mem0mem.ic +++ b/include/mem0mem.ic @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -579,18 +579,12 @@ mem_heap_get_size( /*==============*/ mem_heap_t* heap) /*!< in: heap */ { - mem_block_t* block; ulint size = 0; ut_ad(mem_heap_check(heap)); - block = heap; + size = heap->total_size; - while (block != NULL) { - - size += mem_block_get_len(block); - block = UT_LIST_GET_NEXT(list, block); - } #ifndef UNIV_HOTBACKUP if (heap->free_block) { size += UNIV_PAGE_SIZE; diff --git a/include/mtr0log.ic b/include/mtr0log.ic index 5c24c38b337..db017c7d16e 100644 --- a/include/mtr0log.ic +++ b/include/mtr0log.ic @@ -27,8 +27,8 @@ Created 12/7/1995 Heikki Tuuri #include "ut0lst.h" #include "buf0buf.h" #include "fsp0types.h" +#include "srv0srv.h" #include "trx0sys.h" - /********************************************************//** Opens a buffer to mlog. It must be closed with mlog_close. @return buffer, NULL if log mode MTR_LOG_NONE */ @@ -201,7 +201,8 @@ mlog_write_initial_log_record_fast( the doublewrite buffer is located in pages FSP_EXTENT_SIZE, ..., 3 * FSP_EXTENT_SIZE - 1 in the system tablespace */ - if (space == TRX_SYS_SPACE + if ((space == TRX_SYS_SPACE + || (srv_doublewrite_file && space == TRX_DOUBLEWRITE_SPACE)) && offset >= FSP_EXTENT_SIZE && offset < 3 * FSP_EXTENT_SIZE) { if (trx_doublewrite_buf_is_being_created) { /* Do nothing: we only come to this branch in an diff --git a/include/mtr0mtr.ic b/include/mtr0mtr.ic index 310c7c4117f..18f8e87b3cf 100644 --- a/include/mtr0mtr.ic +++ b/include/mtr0mtr.ic @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -70,6 +70,7 @@ mtr_memo_push( ut_ad(type <= MTR_MEMO_X_LOCK); ut_ad(mtr); ut_ad(mtr->magic_n == MTR_MAGIC_N); + ut_ad(mtr->state == MTR_ACTIVE); memo = &(mtr->memo); @@ -92,6 +93,7 @@ mtr_set_savepoint( ut_ad(mtr); ut_ad(mtr->magic_n == MTR_MAGIC_N); + ut_ad(mtr->state == MTR_ACTIVE); memo = &(mtr->memo); @@ -149,6 +151,7 @@ mtr_memo_contains( ut_ad(mtr); ut_ad(mtr->magic_n == MTR_MAGIC_N); + ut_ad(mtr->state == MTR_ACTIVE || mtr->state == MTR_COMMITTING); memo = &(mtr->memo); diff --git a/include/os0file.h b/include/os0file.h index 3eff5216867..eeab8a2b5d9 100644 --- a/include/os0file.h +++ b/include/os0file.h @@ -1,23 +1,6 @@ -/***************************************************************************** - -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. - -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA - -*****************************************************************************/ /*********************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2009, Percona Inc. Portions of this file contain modifications contributed and copyrighted diff --git a/include/que0que.h b/include/que0que.h index 420f34550e2..39f8d07af89 100644 --- a/include/que0que.h +++ b/include/que0que.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -30,6 +30,7 @@ Created 5/27/1996 Heikki Tuuri #include "data0data.h" #include "dict0types.h" #include "trx0trx.h" +#include "trx0roll.h" #include "srv0srv.h" #include "usr0types.h" #include "que0types.h" @@ -215,6 +216,16 @@ trx_t* thr_get_trx( /*========*/ que_thr_t* thr); /*!< in: query thread */ +/*******************************************************************//** +Determines if this thread is rolling back an incomplete transaction +in crash recovery. +@return TRUE if thr is rolling back an incomplete transaction in crash +recovery */ +UNIV_INLINE +ibool +thr_is_recv( +/*========*/ + const que_thr_t* thr); /*!< in: query thread */ /***********************************************************************//** Gets the type of a graph node. */ UNIV_INLINE diff --git a/include/que0que.ic b/include/que0que.ic index a1c0dc1e77a..bd936670e1e 100644 --- a/include/que0que.ic +++ b/include/que0que.ic @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -38,6 +38,20 @@ thr_get_trx( return(thr->graph->trx); } +/*******************************************************************//** +Determines if this thread is rolling back an incomplete transaction +in crash recovery. +@return TRUE if thr is rolling back an incomplete transaction in crash +recovery */ +UNIV_INLINE +ibool +thr_is_recv( +/*========*/ + const que_thr_t* thr) /*!< in: query thread */ +{ + return(trx_is_recv(thr->graph->trx)); +} + /***********************************************************************//** Gets the first thr in a fork. */ UNIV_INLINE diff --git a/include/row0mysql.h b/include/row0mysql.h index b05241f00f8..d2a8734c61f 100644 --- a/include/row0mysql.h +++ b/include/row0mysql.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2000, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 2000, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -451,6 +451,12 @@ row_drop_table_for_mysql( const char* name, /*!< in: table name */ trx_t* trx, /*!< in: transaction handle */ ibool drop_db);/*!< in: TRUE=dropping whole database */ +/*********************************************************************//** +Drop all temporary tables during crash recovery. */ +UNIV_INTERN +void +row_mysql_drop_temp_tables(void); +/*============================*/ /*********************************************************************//** Discards the tablespace of a table which stored in an .ibd file. Discarding @@ -494,14 +500,19 @@ row_rename_table_for_mysql( trx_t* trx, /*!< in: transaction handle */ ibool commit); /*!< in: if TRUE then commit trx */ /*********************************************************************//** -Checks a table for corruption. -@return DB_ERROR or DB_SUCCESS */ +Checks that the index contains entries in an ascending order, unique +constraint is not broken, and calculates the number of index entries +in the read view of the current transaction. +@return DB_SUCCESS if ok */ UNIV_INTERN ulint -row_check_table_for_mysql( +row_check_index_for_mysql( /*======================*/ - row_prebuilt_t* prebuilt); /*!< in: prebuilt struct in MySQL - handle */ + row_prebuilt_t* prebuilt, /*!< in: prebuilt struct + in MySQL handle */ + const dict_index_t* index, /*!< in: index */ + ulint* n_rows); /*!< out: number of entries + seen in the consistent read */ /*********************************************************************//** Determines if a table is a magic monitor table. diff --git a/include/row0sel.h b/include/row0sel.h index 01a5afaa23e..8544b9d08ba 100644 --- a/include/row0sel.h +++ b/include/row0sel.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1997, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -105,17 +105,6 @@ row_fetch_print( /*============*/ void* row, /*!< in: sel_node_t* */ void* user_arg); /*!< in: not used */ -/****************************************************************//** -Callback function for fetch that stores an unsigned 4 byte integer to the -location pointed. The column's type must be DATA_INT, DATA_UNSIGNED, length -= 4. -@return always returns NULL */ -UNIV_INTERN -void* -row_fetch_store_uint4( -/*==================*/ - void* row, /*!< in: sel_node_t* */ - void* user_arg); /*!< in: data pointer */ /***********************************************************//** Prints a row in a select result. @return query thread to run next or NULL */ diff --git a/include/srv0srv.h b/include/srv0srv.h index 529d7fb49ee..b3823e31e44 100644 --- a/include/srv0srv.h +++ b/include/srv0srv.h @@ -1,7 +1,8 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2008, 2009, Google Inc. +Copyright (c) 2009, Percona Inc. Portions of this file contain modifications contributed and copyrighted by Google, Inc. Those modifications are gratefully acknowledged and are described @@ -9,6 +10,13 @@ briefly in the InnoDB documentation. The contributions by Google are incorporated with their permission, and subject to the conditions contained in the file COPYING.Google. +Portions of this file contain modifications contributed and copyrighted +by Percona Inc.. Those modifications are +gratefully acknowledged and are described briefly in the InnoDB +documentation. The contributions by Percona Inc. are incorporated with +their permission, and subject to the conditions contained in the file +COPYING.Percona. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. @@ -22,32 +30,6 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *****************************************************************************/ -/*********************************************************************** - -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. -Copyright (c) 2009, Percona Inc. - -Portions of this file contain modifications contributed and copyrighted -by Percona Inc.. Those modifications are -gratefully acknowledged and are described briefly in the InnoDB -documentation. The contributions by Percona Inc. are incorporated with -their permission, and subject to the conditions contained in the file -COPYING.Percona. - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -***********************************************************************/ /**************************************************//** @file include/srv0srv.h @@ -133,9 +115,10 @@ extern char** srv_data_file_names; extern ulint* srv_data_file_sizes; extern ulint* srv_data_file_is_raw_partition; +extern char* srv_doublewrite_file; + extern ibool srv_extra_undoslots; -extern ibool srv_fast_recovery; extern ibool srv_recovery_stats; extern ulint srv_use_purge_thread; @@ -247,7 +230,6 @@ extern ulint srv_read_ahead; extern ulint srv_adaptive_checkpoint; extern ulint srv_expand_import; -extern ulint srv_relax_table_creation; extern ulint srv_pass_corrupt_table; extern ulint srv_extra_rsegments; @@ -265,7 +247,8 @@ extern ibool srv_print_innodb_tablespace_monitor; extern ibool srv_print_verbose_log; extern ibool srv_print_innodb_table_monitor; -extern ibool srv_lock_timeout_and_monitor_active; +extern ibool srv_lock_timeout_active; +extern ibool srv_monitor_active; extern ibool srv_error_monitor_active; extern ulong srv_n_spin_wait_rounds; @@ -595,15 +578,23 @@ srv_release_mysql_thread_if_suspended( MySQL OS thread */ /*********************************************************************//** A thread which wakes up threads whose lock wait may have lasted too long. -This also prints the info output by various InnoDB monitors. @return a dummy parameter */ UNIV_INTERN os_thread_ret_t -srv_lock_timeout_and_monitor_thread( -/*================================*/ +srv_lock_timeout_thread( +/*====================*/ void* arg); /*!< in: a dummy parameter required by os_thread_create */ /*********************************************************************//** +A thread which prints the info output by various InnoDB monitors. +@return a dummy parameter */ +UNIV_INTERN +os_thread_ret_t +srv_monitor_thread( +/*===============*/ + void* arg); /*!< in: a dummy parameter required by + os_thread_create */ +/************************************************************************* A thread which prints warnings about semaphore waits which have lasted too long. These can be used to track bugs which cause hangs. @return a dummy parameter */ @@ -614,12 +605,15 @@ srv_error_monitor_thread( void* arg); /*!< in: a dummy parameter required by os_thread_create */ /******************************************************************//** -Outputs to a file the output of the InnoDB Monitor. */ +Outputs to a file the output of the InnoDB Monitor. +@return FALSE if not all information printed +due to failure to obtain necessary mutex */ UNIV_INTERN -void +ibool srv_printf_innodb_monitor( /*======================*/ FILE* file, /*!< in: output stream */ + ibool nowait, /*!< in: whether to wait for kernel mutex */ ulint* trx_start, /*!< out: file position of the start of the list of active transactions */ ulint* trx_end); /*!< out: file position of the end of @@ -664,6 +658,7 @@ struct export_var_struct{ ulint innodb_buffer_pool_write_requests;/*!< srv_buf_pool_write_requests */ ulint innodb_buffer_pool_read_ahead; /*!< srv_read_ahead */ ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/ + ulint innodb_deadlocks; /* ??? */ ulint innodb_dblwr_pages_written; /*!< srv_dblwr_pages_written */ ulint innodb_dblwr_writes; /*!< srv_dblwr_writes */ ibool innodb_have_atomic_builtins; /*!< HAVE_ATOMIC_BUILTINS */ diff --git a/include/sync0rw.h b/include/sync0rw.h index 85fa014d77a..1fe517ab30a 100644 --- a/include/sync0rw.h +++ b/include/sync0rw.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2008, Google Inc. Portions of this file contain modifications contributed and copyrighted by @@ -429,8 +429,9 @@ ibool rw_lock_own( /*========*/ rw_lock_t* lock, /*!< in: rw-lock */ - ulint lock_type); /*!< in: lock type: RW_LOCK_SHARED, + ulint lock_type) /*!< in: lock type: RW_LOCK_SHARED, RW_LOCK_EX */ + __attribute__((warn_unused_result)); #endif /* UNIV_SYNC_DEBUG */ /******************************************************************//** Checks if somebody has locked the rw-lock in the specified mode. */ diff --git a/include/sync0sync.h b/include/sync0sync.h index c653e44b5bd..7e210ea82f1 100644 --- a/include/sync0sync.h +++ b/include/sync0sync.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2008, Google Inc. Portions of this file contain modifications contributed and copyrighted by @@ -206,7 +206,8 @@ UNIV_INTERN ibool mutex_own( /*======*/ - const mutex_t* mutex); /*!< in: mutex */ + const mutex_t* mutex) /*!< in: mutex */ + __attribute__((warn_unused_result)); #endif /* UNIV_DEBUG */ #ifdef UNIV_SYNC_DEBUG /******************************************************************//** @@ -238,16 +239,27 @@ ibool sync_thread_levels_empty(void); /*==========================*/ /******************************************************************//** -Checks that the level array for the current thread is empty. -@return TRUE if empty except the exceptions specified below */ +Checks if the level array for the current thread contains a +mutex or rw-latch at the specified level. +@return a matching latch, or NULL if not found */ UNIV_INTERN -ibool -sync_thread_levels_empty_gen( -/*=========================*/ +void* +sync_thread_levels_contains( +/*========================*/ + ulint level); /*!< in: latching order level + (SYNC_DICT, ...)*/ +/******************************************************************//** +Checks if the level array for the current thread is empty. +@return a latch, or NULL if empty except the exceptions specified below */ +UNIV_INTERN +void* +sync_thread_levels_nonempty_gen( +/*============================*/ ibool dict_mutex_allowed); /*!< in: TRUE if dictionary mutex is allowed to be owned by the thread, also purge_is_running mutex is allowed */ +#define sync_thread_levels_empty_gen(d) (!sync_thread_levels_nonempty_gen(d)) /******************************************************************//** Gets the debug information for a reserved mutex. */ UNIV_INTERN diff --git a/include/trx0rseg.h b/include/trx0rseg.h index 0d7dc60329f..303188f09f2 100644 --- a/include/trx0rseg.h +++ b/include/trx0rseg.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software diff --git a/include/trx0sys.h b/include/trx0sys.h index 13d93d5a77a..8b941cdd4e6 100644 --- a/include/trx0sys.h +++ b/include/trx0sys.h @@ -124,6 +124,22 @@ trx_sys_hdr_page( /*=============*/ ulint space, /*!< in: space */ ulint page_no);/*!< in: page number */ +/***************************************************************//** +Checks if a space is the system tablespaces. +@return TRUE if system tablespace */ +UNIV_INLINE +ibool +trx_sys_sys_space( +/*==============*/ + ulint space); /*!< in: space */ +/***************************************************************//** +Checks if a space is the doublewrite tablespace. +@return TRUE if doublewrite tablespace */ +UNIV_INLINE +ibool +trx_sys_doublewrite_space( +/*======================*/ + ulint space); /*!< in: space */ /*****************************************************************//** Creates and initializes the central memory structures for the transaction system. This is called when the database is started. */ @@ -137,6 +153,13 @@ UNIV_INTERN void trx_sys_create(void); /*================*/ +/*****************************************************************//** +Creates and initializes the dummy transaction system page for tablespace. */ +UNIV_INTERN +void +trx_sys_dummy_create( +/*=================*/ + ulint space); /********************************************************************* Create extra rollback segments when create_new_db */ UNIV_INTERN @@ -343,12 +366,14 @@ UNIV_INTERN void trx_sys_file_format_tag_init(void); /*==============================*/ +#ifndef UNIV_HOTBACKUP /*****************************************************************//** Shutdown/Close the transaction system. */ UNIV_INTERN void trx_sys_close(void); /*===============*/ +#endif /* !UNIV_HOTBACKUP */ /*****************************************************************//** Get the name representation of the file format from its id. @return pointer to the name */ @@ -444,6 +469,8 @@ trx_sys_file_format_id_to_name( /* Space id and page no where the trx system file copy resides */ #define TRX_SYS_SPACE 0 /* the SYSTEM tablespace */ +#define TRX_DOUBLEWRITE_SPACE 1 /* the doublewrite buffer tablespace if used */ +#define TRX_SYS_SPACE_MAX 9 /* reserved max space id for system tablespaces */ #include "fsp0fsp.h" #define TRX_SYS_PAGE_NO FSP_TRX_SYS_PAGE_NO @@ -507,7 +534,6 @@ this contains the same fields as TRX_SYS_MYSQL_LOG_INFO below */ within that file */ #define TRX_SYS_MYSQL_LOG_NAME 12 /*!< MySQL log file name */ -#ifndef UNIV_HOTBACKUP /** Doublewrite buffer */ /* @{ */ /** The offset of the doublewrite buffer header on the trx system header page */ @@ -559,6 +585,7 @@ FIL_PAGE_ARCH_LOG_NO_OR_SPACE_NO. */ #define TRX_SYS_DOUBLEWRITE_BLOCK_SIZE FSP_EXTENT_SIZE /* @} */ +#ifndef UNIV_HOTBACKUP /** File format tag */ /* @{ */ /** The offset of the file format tag on the trx system header page diff --git a/include/trx0sys.ic b/include/trx0sys.ic index 820d31d0692..c7b09d4aec2 100644 --- a/include/trx0sys.ic +++ b/include/trx0sys.ic @@ -70,6 +70,40 @@ trx_sys_hdr_page( return(FALSE); } +/***************************************************************//** +Checks if a space is the system tablespaces. +@return TRUE if system tablespace */ +UNIV_INLINE +ibool +trx_sys_sys_space( +/*==============*/ + ulint space) /*!< in: space */ +{ + if (srv_doublewrite_file) { + /* several spaces are reserved */ + return((ibool)(space <= TRX_SYS_SPACE_MAX)); + } else { + return((ibool)(space == TRX_SYS_SPACE)); + } +} + +/***************************************************************//** +Checks if a space is the doublewrite tablespace. +@return TRUE if doublewrite tablespace */ +UNIV_INLINE +ibool +trx_sys_doublewrite_space( +/*======================*/ + ulint space) /*!< in: space */ +{ + if (srv_doublewrite_file) { + /* doublewrite buffer is separated */ + return((ibool)(space == TRX_DOUBLEWRITE_SPACE)); + } else { + return((ibool)(space == TRX_SYS_SPACE)); + } +} + /***************************************************************//** Gets the pointer in the nth slot of the rseg array. @return pointer to rseg object, NULL if slot not in use */ diff --git a/include/trx0trx.h b/include/trx0trx.h index 3b845e498d0..4a4b54b93a0 100644 --- a/include/trx0trx.h +++ b/include/trx0trx.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -338,9 +338,7 @@ trx_commit_step( /**********************************************************************//** Prints info about a transaction to the given file. The caller must own the -kernel mutex and must have called -innobase_mysql_prepare_print_arbitrary_thd(), unless he knows that MySQL -or InnoDB cannot meanwhile change the info printed here. */ +kernel mutex. */ UNIV_INTERN void trx_print( @@ -351,7 +349,7 @@ trx_print( use the default max length */ /** Type of data dictionary operation */ -enum trx_dict_op { +typedef enum trx_dict_op { /** The transaction is not modifying the data dictionary. */ TRX_DICT_OP_NONE = 0, /** The transaction is creating a table or an index, or @@ -363,7 +361,7 @@ enum trx_dict_op { existing table. In crash recovery, the data dictionary must be locked, but the table must not be dropped. */ TRX_DICT_OP_INDEX = 2 -}; +} trx_dict_op_t; /**********************************************************************//** Determine if a transaction is a dictionary operation. @@ -393,6 +391,14 @@ ibool trx_is_interrupted( /*===============*/ trx_t* trx); /*!< in: transaction */ +/**********************************************************************//** +Determines if the currently running transaction is in strict mode. +@return TRUE if strict */ +UNIV_INTERN +ibool +trx_is_strict( +/*==========*/ + trx_t* trx); /*!< in: transaction */ #else /* !UNIV_HOTBACKUP */ #define trx_is_interrupted(trx) FALSE #endif /* !UNIV_HOTBACKUP */ @@ -465,69 +471,79 @@ rolling back after a database recovery */ struct trx_struct{ ulint magic_n; - /* All the next fields are protected by the kernel mutex, except the - undo logs which are protected by undo_mutex */ + + /* These fields are not protected by any mutex. */ const char* op_info; /*!< English text describing the current operation, or an empty string */ - unsigned is_purge:1; /*!< 0=user transaction, 1=purge */ - unsigned is_recovered:1; /*!< 0=normal transaction, - 1=recovered, must be rolled back */ - unsigned conc_state:2; /*!< state of the trx from the point + ulint conc_state; /*!< state of the trx from the point of view of concurrency control: TRX_ACTIVE, TRX_COMMITTED_IN_MEMORY, ... */ - unsigned que_state:2; /*!< valid when conc_state == TRX_ACTIVE: - TRX_QUE_RUNNING, TRX_QUE_LOCK_WAIT, - ... */ - unsigned isolation_level:2;/* TRX_ISO_REPEATABLE_READ, ... */ - unsigned check_foreigns:1;/* normally TRUE, but if the user + ulint isolation_level;/* TRX_ISO_REPEATABLE_READ, ... */ + ulint check_foreigns; /* normally TRUE, but if the user wants to suppress foreign key checks, (in table imports, for example) we set this FALSE */ - unsigned check_unique_secondary:1; + ulint check_unique_secondary; /* normally TRUE, but if the user wants to speed up inserts by suppressing unique key checks for secondary indexes when we decide if we can use the insert buffer for them, we set this FALSE */ - unsigned support_xa:1; /*!< normally we do the XA two-phase + ulint support_xa; /*!< normally we do the XA two-phase commit steps, but by setting this to FALSE, one can save CPU time and about 150 bytes in the undo log size as then we skip XA steps */ - unsigned flush_log_later:1;/* In 2PC, we hold the + ulint flush_log_later;/* In 2PC, we hold the prepare_commit mutex across both phases. In that case, we defer flush of the logs to disk until after we release the mutex. */ - unsigned must_flush_log_later:1;/* this flag is set to TRUE in + ulint must_flush_log_later;/* this flag is set to TRUE in trx_commit_off_kernel() if flush_log_later was TRUE, and there were modifications by the transaction; in that case we must flush the log in trx_commit_complete_for_mysql() */ - unsigned dict_operation:2;/**< @see enum trx_dict_op */ - unsigned duplicates:2; /*!< TRX_DUP_IGNORE | TRX_DUP_REPLACE */ - unsigned active_trans:2; /*!< 1 - if a transaction in MySQL + ulint duplicates; /*!< TRX_DUP_IGNORE | TRX_DUP_REPLACE */ + ulint active_trans; /*!< 1 - if a transaction in MySQL is active. 2 - if prepare_commit_mutex was taken */ - unsigned has_search_latch:1; + ulint has_search_latch; /* TRUE if this trx has latched the search system latch in S-mode */ - unsigned declared_to_be_inside_innodb:1; + ulint deadlock_mark; /*!< a mark field used in deadlock + checking algorithm. */ + trx_dict_op_t dict_operation; /**< @see enum trx_dict_op */ + + /* Fields protected by the srv_conc_mutex. */ + ulint declared_to_be_inside_innodb; /* this is TRUE if we have declared this transaction in srv_conc_enter_innodb to be inside the InnoDB engine */ - unsigned handling_signals:1;/* this is TRUE as long as the trx - is handling signals */ - unsigned dict_operation_lock_mode:2; - /* 0, RW_S_LATCH, or RW_X_LATCH: + + /* Fields protected by dict_operation_lock. The very latch + it is used to track. */ + ulint dict_operation_lock_mode; + /*!< 0, RW_S_LATCH, or RW_X_LATCH: the latch mode trx currently holds on dict_operation_lock */ + + /* All the next fields are protected by the kernel mutex, except the + undo logs which are protected by undo_mutex */ + ulint is_purge; /*!< 0=user transaction, 1=purge */ + ulint is_recovered; /*!< 0=normal transaction, + 1=recovered, must be rolled back */ + ulint que_state; /*!< valid when conc_state + == TRX_ACTIVE: TRX_QUE_RUNNING, + TRX_QUE_LOCK_WAIT, ... */ + ulint handling_signals;/* this is TRUE as long as the trx + is handling signals */ time_t start_time; /*!< time the trx object was created or the state last time became TRX_ACTIVE */ @@ -657,11 +673,6 @@ struct trx_struct{ wait_thrs; /*!< query threads belonging to this trx that are in the QUE_THR_LOCK_WAIT state */ - ulint deadlock_mark; /*!< a mark field used in deadlock - checking algorithm. This must be - in its own machine word, because - it can be changed by other - threads while holding kernel_mutex. */ /*------------------------------*/ mem_heap_t* lock_heap; /*!< memory heap for the locks of the transaction */ diff --git a/include/trx0types.h b/include/trx0types.h index 24cf57d53d5..40a7256cbfd 100644 --- a/include/trx0types.h +++ b/include/trx0types.h @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -70,6 +70,13 @@ typedef struct trx_named_savept_struct trx_named_savept_t; enum trx_rb_ctx { RB_NONE = 0, /*!< no rollback */ RB_NORMAL, /*!< normal rollback */ + RB_RECOVERY_PURGE_REC, + /*!< rolling back an incomplete transaction, + in crash recovery, rolling back an + INSERT that was performed by updating a + delete-marked record; if the delete-marked record + no longer exists in an active read view, it will + be purged */ RB_RECOVERY /*!< rolling back an incomplete transaction, in crash recovery */ }; diff --git a/include/univ.i b/include/univ.i index ff4f3f34735..0e04eceef6f 100644 --- a/include/univ.i +++ b/include/univ.i @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2008, Google Inc. Copyright (c) 2009, Sun Microsystems, Inc. @@ -46,10 +46,10 @@ Created 1/20/1994 Heikki Tuuri #define INNODB_VERSION_MAJOR 1 #define INNODB_VERSION_MINOR 0 -#define INNODB_VERSION_BUGFIX 6 +#define INNODB_VERSION_BUGFIX 8 #ifndef PERCONA_INNODB_VERSION -#define PERCONA_INNODB_VERSION unknown +#define PERCONA_INNODB_VERSION 11.2 #endif @@ -122,7 +122,7 @@ if we are compiling on Windows. */ /* Include to get S_I... macros defined for os0file.c */ # include -# if !defined(__NETWARE__) && !defined(__WIN__) +# if !defined(__NETWARE__) && !defined(__WIN__) # include /* mmap() for os0proc.c */ # endif @@ -172,6 +172,9 @@ command. Not tested on Windows. */ #define UNIV_COMPILE_TEST_FUNCS */ +#ifdef HAVE_purify +# define UNIV_DEBUG_VALGRIND +#endif /* HAVE_purify */ #if 0 #define UNIV_DEBUG_VALGRIND /* Enable extra Valgrind instrumentation */ @@ -209,6 +212,10 @@ operations (very slow); also UNIV_DEBUG must be defined */ adaptive hash index */ #define UNIV_SRV_PRINT_LATCH_WAITS /* enable diagnostic output in sync0sync.c */ +#define UNIV_BTR_AVOID_COPY /* when splitting B-tree nodes, + do not move any records when + all the records would + be moved */ #define UNIV_BTR_PRINT /* enable functions for printing B-trees */ #define UNIV_ZIP_DEBUG /* extensive consistency checks @@ -236,11 +243,6 @@ by one. */ /* the above option prevents forcing of log to disk at a buffer page write: it should be tested with this option off; also some ibuf tests are suppressed */ -/* -#define UNIV_BASIC_LOG_DEBUG -*/ - /* the above option enables basic recovery debugging: - new allocated file pages are reset */ /* Linkage specifier for non-static InnoDB symbols (variables and functions) that are only referenced from within InnoDB, not from MySQL */ diff --git a/include/ut0rbt.h b/include/ut0rbt.h new file mode 100644 index 00000000000..6fd050acfe7 --- /dev/null +++ b/include/ut0rbt.h @@ -0,0 +1,309 @@ +/***************************************************************************** +Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved. + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; version 2 of the License. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA + +*****************************************************************************/ + +/*******************************************************************//** +@file include/ut0rbt.h +Red-Black tree implementation. + +Created 2007-03-20 Sunny Bains +************************************************************************/ + +#ifndef INNOBASE_UT0RBT_H +#define INNOBASE_UT0RBT_H + +#if !defined(IB_RBT_TESTING) +#include "univ.i" +#include "ut0mem.h" +#else +#include +#include +#include +#include + +#define ut_malloc malloc +#define ut_free free +#define ulint unsigned long +#define ut_a(c) assert(c) +#define ut_error assert(0) +#define ibool unsigned int +#define TRUE 1 +#define FALSE 0 +#endif + +/* Red black tree typedefs */ +typedef struct ib_rbt_struct ib_rbt_t; +typedef struct ib_rbt_node_struct ib_rbt_node_t; +/* FIXME: Iterator is a better name than _bound_ */ +typedef struct ib_rbt_bound_struct ib_rbt_bound_t; +typedef void (*ib_rbt_print_node)(const ib_rbt_node_t* node); +typedef int (*ib_rbt_compare)(const void* p1, const void* p2); + +/* Red black tree color types */ +enum ib_rbt_color_enum { + IB_RBT_RED, + IB_RBT_BLACK +}; + +typedef enum ib_rbt_color_enum ib_rbt_color_t; + +/* Red black tree node */ +struct ib_rbt_node_struct { + ib_rbt_color_t color; /* color of this node */ + + ib_rbt_node_t* left; /* points left child */ + ib_rbt_node_t* right; /* points right child */ + ib_rbt_node_t* parent; /* points parent node */ + + char value[1]; /* Data value */ +}; + +/* Red black tree instance.*/ +struct ib_rbt_struct { + ib_rbt_node_t* nil; /* Black colored node that is + used as a sentinel. This is + pre-allocated too.*/ + + ib_rbt_node_t* root; /* Root of the tree, this is + pre-allocated and the first + data node is the left child.*/ + + ulint n_nodes; /* Total number of data nodes */ + + ib_rbt_compare compare; /* Fn. to use for comparison */ + ulint sizeof_value; /* Sizeof the item in bytes */ +}; + +/* The result of searching for a key in the tree, this is useful for +a speedy lookup and insert if key doesn't exist.*/ +struct ib_rbt_bound_struct { + const ib_rbt_node_t* + last; /* Last node visited */ + + int result; /* Result of comparing with + the last non-nil node that + was visited */ +}; + +/* Size in elements (t is an rb tree instance) */ +#define rbt_size(t) (t->n_nodes) + +/* Check whether the rb tree is empty (t is an rb tree instance) */ +#define rbt_empty(t) (rbt_size(t) == 0) + +/* Get data value (t is the data type, n is an rb tree node instance) */ +#define rbt_value(t, n) ((t*) &n->value[0]) + +/* Compare a key with the node value (t is tree, k is key, n is node)*/ +#define rbt_compare(t, k, n) (t->compare(k, n->value)) + +/****************************************************************//** +Free an instance of a red black tree */ +UNIV_INTERN +void +rbt_free( +/*=====*/ + ib_rbt_t* tree); /*!< in: rb tree to free */ +/****************************************************************//** +Create an instance of a red black tree +@return rb tree instance */ +UNIV_INTERN +ib_rbt_t* +rbt_create( +/*=======*/ + size_t sizeof_value, /*!< in: size in bytes */ + ib_rbt_compare compare); /*!< in: comparator */ +/****************************************************************//** +Delete a node from the red black tree, identified by key. +@return TRUE if success FALSE if not found */ +UNIV_INTERN +ibool +rbt_delete( +/*=======*/ + ib_rbt_t* tree, /*!< in: rb tree */ + const void* key); /*!< in: key to delete */ +/****************************************************************//** +Remove a node from the rb tree, the node is not free'd, that is the +callers responsibility. +@return the deleted node with the const. */ +UNIV_INTERN +ib_rbt_node_t* +rbt_remove_node( +/*============*/ + ib_rbt_t* tree, /*!< in: rb tree */ + const ib_rbt_node_t* + node); /*!< in: node to delete, this + is a fudge and declared const + because the caller has access + only to const nodes.*/ +/****************************************************************//** +Find a matching node in the rb tree. +@return node if found else return NULL */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_lookup( +/*=======*/ + const ib_rbt_t* tree, /*!< in: rb tree to search */ + const void* key); /*!< in: key to lookup */ +/****************************************************************//** +Generic insert of a value in the rb tree. +@return inserted node */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_insert( +/*=======*/ + ib_rbt_t* tree, /*!< in: rb tree */ + const void* key, /*!< in: key for ordering */ + const void* value); /*!< in: data that will be + copied to the node.*/ +/****************************************************************//** +Add a new node to the tree, useful for data that is pre-sorted. +@return appended node */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_add_node( +/*=========*/ + ib_rbt_t* tree, /*!< in: rb tree */ + ib_rbt_bound_t* parent, /*!< in: parent */ + const void* value); /*!< in: this value is copied + to the node */ +/****************************************************************//** +Return the left most data node in the tree +@return left most node */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_first( +/*======*/ + const ib_rbt_t* tree); /*!< in: rb tree */ +/****************************************************************//** +Return the right most data node in the tree +@return right most node */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_last( +/*=====*/ + const ib_rbt_t* tree); /*!< in: rb tree */ +/****************************************************************//** +Return the next node from current. +@return successor node to current that is passed in. */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_next( +/*=====*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + const ib_rbt_node_t* /*!< in: current node */ + current); +/****************************************************************//** +Return the prev node from current. +@return precedessor node to current that is passed in */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_prev( +/*=====*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + const ib_rbt_node_t* /*!< in: current node */ + current); +/****************************************************************//** +Find the node that has the lowest key that is >= key. +@return node that satisfies the lower bound constraint or NULL */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_lower_bound( +/*============*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + const void* key); /*!< in: key to search */ +/****************************************************************//** +Find the node that has the greatest key that is <= key. +@return node that satisifies the upper bound constraint or NULL */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_upper_bound( +/*============*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + const void* key); /*!< in: key to search */ +/****************************************************************//** +Search for the key, a node will be retuned in parent.last, whether it +was found or not. If not found then parent.last will contain the +parent node for the possibly new key otherwise the matching node. +@return result of last comparison */ +UNIV_INTERN +int +rbt_search( +/*=======*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + ib_rbt_bound_t* parent, /*!< in: search bounds */ + const void* key); /*!< in: key to search */ +/****************************************************************//** +Search for the key, a node will be retuned in parent.last, whether it +was found or not. If not found then parent.last will contain the +parent node for the possibly new key otherwise the matching node. +@return result of last comparison */ +UNIV_INTERN +int +rbt_search_cmp( +/*===========*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + ib_rbt_bound_t* parent, /*!< in: search bounds */ + const void* key, /*!< in: key to search */ + ib_rbt_compare compare); /*!< in: comparator */ +/****************************************************************//** +Clear the tree, deletes (and free's) all the nodes. */ +UNIV_INTERN +void +rbt_clear( +/*======*/ + ib_rbt_t* tree); /*!< in: rb tree */ +/****************************************************************//** +Merge the node from dst into src. Return the number of nodes merged. +@return no. of recs merged */ +UNIV_INTERN +ulint +rbt_merge_uniq( +/*===========*/ + ib_rbt_t* dst, /*!< in: dst rb tree */ + const ib_rbt_t* src); /*!< in: src rb tree */ +/****************************************************************//** +Merge the node from dst into src. Return the number of nodes merged. +Delete the nodes from src after copying node to dst. As a side effect +the duplicates will be left untouched in the src, since we don't support +duplicates (yet). NOTE: src and dst must be similar, the function doesn't +check for this condition (yet). +@return no. of recs merged */ +UNIV_INTERN +ulint +rbt_merge_uniq_destructive( +/*=======================*/ + ib_rbt_t* dst, /*!< in: dst rb tree */ + ib_rbt_t* src); /*!< in: src rb tree */ +/****************************************************************//** +Verify the integrity of the RB tree. For debugging. 0 failure else height +of tree (in count of black nodes). +@return TRUE if OK FALSE if tree invalid. */ +UNIV_INTERN +ibool +rbt_validate( +/*=========*/ + const ib_rbt_t* tree); /*!< in: tree to validate */ +/****************************************************************//** +Iterate over the tree in depth first order. */ +UNIV_INTERN +void +rbt_print( +/*======*/ + const ib_rbt_t* tree, /*!< in: tree to traverse */ + ib_rbt_print_node print); /*!< in: print function */ + +#endif /* INNOBASE_UT0RBT_H */ diff --git a/include/ut0rnd.ic b/include/ut0rnd.ic index 372b5b6d5b7..c2043660efd 100644 --- a/include/ut0rnd.ic +++ b/include/ut0rnd.ic @@ -152,6 +152,7 @@ ut_hash_ulint( ulint key, /*!< in: value to be hashed */ ulint table_size) /*!< in: hash table size */ { + ut_ad(table_size); key = key ^ UT_HASH_RANDOM_MASK2; return(key % table_size); diff --git a/lock/lock0lock.c b/lock/lock0lock.c index 59394f13766..b103ee79578 100644 --- a/lock/lock0lock.c +++ b/lock/lock0lock.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -376,6 +376,7 @@ UNIV_INTERN FILE* lock_latest_err_file; /* Flags for recursive deadlock search */ #define LOCK_VICTIM_IS_START 1 #define LOCK_VICTIM_IS_OTHER 2 +#define LOCK_EXCEED_MAX_DEPTH 3 /********************************************************************//** Checks if a lock request results in a deadlock. @@ -394,24 +395,25 @@ Looks recursively for a deadlock. deadlock and we chose 'start' as the victim, LOCK_VICTIM_IS_OTHER if a deadlock was found and we chose some other trx as a victim: we must do the search again in this last case because there may be another -deadlock! */ +deadlock! +LOCK_EXCEED_MAX_DEPTH if the lock search exceeds max steps or max depth. */ static ulint lock_deadlock_recursive( /*====================*/ trx_t* start, /*!< in: recursion starting point */ trx_t* trx, /*!< in: a transaction waiting for a lock */ - lock_t* wait_lock, /*!< in: the lock trx is waiting to be granted */ + lock_t* wait_lock, /*!< in: lock that is waiting to be granted */ ulint* cost, /*!< in/out: number of calculation steps thus far: if this exceeds LOCK_MAX_N_STEPS_... - we return LOCK_VICTIM_IS_START */ + we return LOCK_EXCEED_MAX_DEPTH */ ulint depth); /*!< in: recursion depth: if this exceeds LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK, we - return LOCK_VICTIM_IS_START */ + return LOCK_EXCEED_MAX_DEPTH */ /*********************************************************************//** Gets the nth bit of a record lock. -@return TRUE if bit set */ +@return TRUE if bit set also if i == ULINT_UNDEFINED return FALSE*/ UNIV_INLINE ibool lock_rec_get_nth_bit( @@ -1222,7 +1224,7 @@ lock_rec_get_first_on_page( /*********************************************************************//** Gets the next explicit lock request on a record. -@return next lock, NULL if none exists */ +@return next lock, NULL if none exists or if heap_no == ULINT_UNDEFINED */ UNIV_INLINE lock_t* lock_rec_get_next( @@ -2404,7 +2406,7 @@ lock_rec_inherit_to_gap( if (!lock_rec_get_insert_intention(lock) && !((srv_locks_unsafe_for_binlog || lock->trx->isolation_level - == TRX_ISO_READ_COMMITTED) + <= TRX_ISO_READ_COMMITTED) && lock_get_mode(lock) == LOCK_X)) { lock_rec_add_to_queue(LOCK_REC | LOCK_GAP @@ -3267,8 +3269,6 @@ lock_deadlock_occurs( lock_t* lock, /*!< in: lock the transaction is requesting */ trx_t* trx) /*!< in: transaction */ { - dict_table_t* table; - dict_index_t* index; trx_t* mark_trx; ulint ret; ulint cost = 0; @@ -3290,31 +3290,51 @@ retry: ret = lock_deadlock_recursive(trx, trx, lock, &cost, 0); - if (ret == LOCK_VICTIM_IS_OTHER) { + switch (ret) { + case LOCK_VICTIM_IS_OTHER: /* We chose some other trx as a victim: retry if there still is a deadlock */ - goto retry; - } - if (UNIV_UNLIKELY(ret == LOCK_VICTIM_IS_START)) { - if (lock_get_type_low(lock) & LOCK_TABLE) { - table = lock->un_member.tab_lock.table; - index = NULL; - } else { - index = lock->index; - table = index->table; - } + case LOCK_EXCEED_MAX_DEPTH: + /* If the lock search exceeds the max step + or the max depth, the current trx will be + the victim. Print its information. */ + rewind(lock_latest_err_file); + ut_print_timestamp(lock_latest_err_file); - lock_deadlock_found = TRUE; - - fputs("*** WE ROLL BACK TRANSACTION (2)\n", + fputs("TOO DEEP OR LONG SEARCH IN THE LOCK TABLE" + " WAITS-FOR GRAPH, WE WILL ROLL BACK" + " FOLLOWING TRANSACTION \n", lock_latest_err_file); - return(TRUE); + fputs("\n*** TRANSACTION:\n", lock_latest_err_file); + trx_print(lock_latest_err_file, trx, 3000); + + fputs("*** WAITING FOR THIS LOCK TO BE GRANTED:\n", + lock_latest_err_file); + + if (lock_get_type(lock) == LOCK_REC) { + lock_rec_print(lock_latest_err_file, lock); + } else { + lock_table_print(lock_latest_err_file, lock); + } + break; + + case LOCK_VICTIM_IS_START: + srv_n_lock_deadlock_count++; + fputs("*** WE ROLL BACK TRANSACTION (2)\n", + lock_latest_err_file); + break; + + default: + /* No deadlock detected*/ + return(FALSE); } - return(FALSE); + lock_deadlock_found = TRUE; + + return(TRUE); } /********************************************************************//** @@ -3323,25 +3343,26 @@ Looks recursively for a deadlock. deadlock and we chose 'start' as the victim, LOCK_VICTIM_IS_OTHER if a deadlock was found and we chose some other trx as a victim: we must do the search again in this last case because there may be another -deadlock! */ +deadlock! +LOCK_EXCEED_MAX_DEPTH if the lock search exceeds max steps or max depth. */ static ulint lock_deadlock_recursive( /*====================*/ trx_t* start, /*!< in: recursion starting point */ trx_t* trx, /*!< in: a transaction waiting for a lock */ - lock_t* wait_lock, /*!< in: the lock trx is waiting to be granted */ + lock_t* wait_lock, /*!< in: lock that is waiting to be granted */ ulint* cost, /*!< in/out: number of calculation steps thus far: if this exceeds LOCK_MAX_N_STEPS_... - we return LOCK_VICTIM_IS_START */ + we return LOCK_EXCEED_MAX_DEPTH */ ulint depth) /*!< in: recursion depth: if this exceeds LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK, we - return LOCK_VICTIM_IS_START */ + return LOCK_EXCEED_MAX_DEPTH */ { - lock_t* lock; - ulint bit_no = ULINT_UNDEFINED; - trx_t* lock_trx; ulint ret; + lock_t* lock; + trx_t* lock_trx; + ulint heap_no = ULINT_UNDEFINED; ut_a(trx); ut_a(start); @@ -3357,27 +3378,44 @@ lock_deadlock_recursive( *cost = *cost + 1; - lock = wait_lock; - if (lock_get_type_low(wait_lock) == LOCK_REC) { + ulint space; + ulint page_no; - bit_no = lock_rec_find_set_bit(wait_lock); + heap_no = lock_rec_find_set_bit(wait_lock); + ut_a(heap_no != ULINT_UNDEFINED); - ut_a(bit_no != ULINT_UNDEFINED); + space = wait_lock->un_member.rec_lock.space; + page_no = wait_lock->un_member.rec_lock.page_no; + + lock = lock_rec_get_first_on_page_addr(space, page_no); + + /* Position the iterator on the first matching record lock. */ + while (lock != NULL + && lock != wait_lock + && !lock_rec_get_nth_bit(lock, heap_no)) { + + lock = lock_rec_get_next_on_page(lock); + } + + if (lock == wait_lock) { + lock = NULL; + } + + ut_ad(lock == NULL || lock_rec_get_nth_bit(lock, heap_no)); + + } else { + lock = wait_lock; } /* Look at the locks ahead of wait_lock in the lock queue */ for (;;) { - if (lock_get_type_low(lock) & LOCK_TABLE) { + /* Get previous table lock. */ + if (heap_no == ULINT_UNDEFINED) { - lock = UT_LIST_GET_PREV(un_member.tab_lock.locks, - lock); - } else { - ut_ad(lock_get_type_low(lock) == LOCK_REC); - ut_a(bit_no != ULINT_UNDEFINED); - - lock = (lock_t*) lock_rec_get_prev(lock, bit_no); + lock = UT_LIST_GET_PREV( + un_member.tab_lock.locks, lock); } if (lock == NULL) { @@ -3395,7 +3433,7 @@ lock_deadlock_recursive( lock_trx = lock->trx; - if (lock_trx == start || too_far) { + if (lock_trx == start) { /* We came back to the recursion starting point: a deadlock detected; or we have @@ -3442,19 +3480,10 @@ lock_deadlock_recursive( } #ifdef UNIV_DEBUG if (lock_print_waits) { - fputs("Deadlock detected" - " or too long search\n", + fputs("Deadlock detected\n", stderr); } #endif /* UNIV_DEBUG */ - if (too_far) { - - fputs("TOO DEEP OR LONG SEARCH" - " IN THE LOCK TABLE" - " WAITS-FOR GRAPH\n", ef); - - return(LOCK_VICTIM_IS_START); - } if (trx_weight_cmp(wait_lock->trx, start) >= 0) { @@ -3490,6 +3519,21 @@ lock_deadlock_recursive( return(LOCK_VICTIM_IS_OTHER); } + if (too_far) { + +#ifdef UNIV_DEBUG + if (lock_print_waits) { + fputs("Deadlock search exceeds" + " max steps or depth.\n", + stderr); + } +#endif /* UNIV_DEBUG */ + /* The information about transaction/lock + to be rolled back is available in the top + level. Do not print anything here. */ + return(LOCK_EXCEED_MAX_DEPTH); + } + if (lock_trx->que_state == TRX_QUE_LOCK_WAIT) { /* Another trx ahead has requested lock in an @@ -3499,12 +3543,28 @@ lock_deadlock_recursive( ret = lock_deadlock_recursive( start, lock_trx, lock_trx->wait_lock, cost, depth + 1); + if (ret != 0) { return(ret); } } } + /* Get the next record lock to check. */ + if (heap_no != ULINT_UNDEFINED) { + + ut_a(lock != NULL); + + do { + lock = lock_rec_get_next_on_page(lock); + } while (lock != NULL + && lock != wait_lock + && !lock_rec_get_nth_bit(lock, heap_no)); + + if (lock == wait_lock) { + lock = NULL; + } + } }/* end of the 'for (;;)'-loop */ } @@ -3706,9 +3766,10 @@ lock_table_enqueue_waiting( /*********************************************************************//** Checks if other transactions have an incompatible mode lock request in -the lock queue. */ +the lock queue. +@return lock or NULL */ UNIV_INLINE -ibool +lock_t* lock_table_other_has_incompatible( /*==============================*/ trx_t* trx, /*!< in: transaction, or NULL if all @@ -3730,13 +3791,13 @@ lock_table_other_has_incompatible( && (!lock_mode_compatible(lock_get_mode(lock), mode)) && (wait || !(lock_get_wait(lock)))) { - return(TRUE); + return(lock); } lock = UT_LIST_GET_PREV(un_member.tab_lock.locks, lock); } - return(FALSE); + return(NULL); } /*********************************************************************//** @@ -4260,31 +4321,34 @@ lock_rec_print( putc('\n', file); if ( srv_show_verbose_locks ) { - block = buf_page_try_get(space, page_no, &mtr); - if (block) { - for (i = 0; i < lock_rec_get_n_bits(lock); i++) { + block = buf_page_try_get(space, page_no, &mtr); - if (lock_rec_get_nth_bit(lock, i)) { + for (i = 0; i < lock_rec_get_n_bits(lock); ++i) { - const rec_t* rec - = page_find_rec_with_heap_no( - buf_block_get_frame(block), i); - offsets = rec_get_offsets( - rec, lock->index, offsets, - ULINT_UNDEFINED, &heap); - - fprintf(file, "Record lock, heap no %lu ", - (ulong) i); - rec_print_new(file, rec, offsets); - putc('\n', file); - } - } - } else { - for (i = 0; i < lock_rec_get_n_bits(lock); i++) { - fprintf(file, "Record lock, heap no %lu\n", (ulong) i); - } + if (!lock_rec_get_nth_bit(lock, i)) { + continue; } + + fprintf(file, "Record lock, heap no %lu", (ulong) i); + + if (block) { + const rec_t* rec; + + rec = page_find_rec_with_heap_no( + buf_block_get_frame(block), i); + + offsets = rec_get_offsets( + rec, lock->index, offsets, + ULINT_UNDEFINED, &heap); + + putc(' ', file); + rec_print_new(file, rec, offsets); + } + + putc('\n', file); } + } + mtr_commit(&mtr); if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); @@ -4329,14 +4393,26 @@ lock_get_n_rec_locks(void) #endif /* PRINT_NUM_OF_LOCK_STRUCTS */ /*********************************************************************//** -Prints info of locks for all transactions. */ +Prints info of locks for all transactions. +@return FALSE if not able to obtain kernel mutex +and exits without printing info */ UNIV_INTERN -void +ibool lock_print_info_summary( /*====================*/ - FILE* file) /*!< in: file where to print */ + FILE* file, /*!< in: file where to print */ + ibool nowait) /*!< in: whether to wait for the kernel mutex */ { - lock_mutex_enter_kernel(); + /* if nowait is FALSE, wait on the kernel mutex, + otherwise return immediately if fail to obtain the + mutex. */ + if (!nowait) { + lock_mutex_enter_kernel(); + } else if (mutex_enter_nowait(&kernel_mutex)) { + fputs("FAIL TO OBTAIN KERNEL MUTEX, " + "SKIP LOCK INFO PRINTING\n", file); + return(FALSE); + } if (lock_deadlock_found) { fputs("------------------------\n" @@ -4368,6 +4444,7 @@ lock_print_info_summary( "Total number of lock structs in row lock hash table %lu\n", (ulong) lock_get_n_rec_locks()); #endif /* PRINT_NUM_OF_LOCK_STRUCTS */ + return(TRUE); } /*********************************************************************//** @@ -4648,6 +4725,7 @@ lock_rec_queue_validate( ut_a(lock_rec_has_expl(LOCK_X | LOCK_REC_NOT_GAP, block, heap_no, impl_trx)); } +#if 0 } else { /* The kernel mutex may get released temporarily in the @@ -4658,6 +4736,27 @@ lock_rec_queue_validate( (fil_space_t::latch), the following check WILL break latching order and may cause a deadlock of threads. */ + /* NOTE: This is a bogus check that would fail in the + following case: Our transaction is updating a + row. After it has updated the clustered index record, + it goes to a secondary index record and finds someone + else holding an explicit S- or X-lock on that + secondary index record, presumably from a locking + read. Our transaction cannot update the secondary + index immediately, but places a waiting X-lock request + on the secondary index record. There is nothing + illegal in this. The assertion is simply too strong. */ + + /* From the locking point of view, each secondary + index is a separate table. A lock that is held on + secondary index rec does not give any rights to modify + or read the clustered index rec. Therefore, we can + think of the sec index as a separate 'table' from the + clust index 'table'. Conversely, a transaction that + has acquired a lock on and modified a clustered index + record may need to wait for a lock on the + corresponding record in a secondary index. */ + impl_trx = lock_sec_rec_some_has_impl_off_kernel( rec, index, offsets); @@ -4668,6 +4767,7 @@ lock_rec_queue_validate( ut_a(lock_rec_has_expl(LOCK_X | LOCK_REC_NOT_GAP, block, heap_no, impl_trx)); } +#endif } lock = lock_rec_get_first(block, heap_no); @@ -4765,6 +4865,13 @@ loop: || lock->trx->conc_state == TRX_PREPARED || lock->trx->conc_state == TRX_COMMITTED_IN_MEMORY); +# ifdef UNIV_SYNC_DEBUG + /* Only validate the record queues when this thread is not + holding a space->latch. Deadlocks are possible due to + latching order violation when UNIV_DEBUG is defined while + UNIV_SYNC_DEBUG is not. */ + if (!sync_thread_levels_contains(SYNC_FSP)) +# endif /* UNIV_SYNC_DEBUG */ for (i = nth_bit; i < lock_rec_get_n_bits(lock); i++) { if (i == 1 || lock_rec_get_nth_bit(lock, i)) { @@ -4930,7 +5037,7 @@ lock_rec_insert_check_and_lock( } trx = thr_get_trx(thr); - next_rec = page_rec_get_next((rec_t*) rec); + next_rec = page_rec_get_next_const(rec); next_rec_heap_no = page_rec_get_heap_no(next_rec); lock_mutex_enter_kernel(); diff --git a/log/log0log.c b/log/log0log.c index f2487407071..03d097d1c12 100644 --- a/log/log0log.c +++ b/log/log0log.c @@ -1,23 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. - -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA - -*****************************************************************************/ -/***************************************************************************** - -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2009, Google Inc. Portions of this file contain modifications contributed and copyrighted by @@ -2045,7 +2028,7 @@ log_checkpoint( return(TRUE); } - ut_ad(log_sys->written_to_all_lsn >= oldest_lsn); + ut_ad(log_sys->flushed_to_disk_lsn >= oldest_lsn); if (log_sys->n_pending_checkpoint_writes > 0) { /* A checkpoint write is running */ @@ -3127,7 +3110,7 @@ loop: if (srv_fast_shutdown < 2 && (srv_error_monitor_active - || srv_lock_timeout_and_monitor_active)) { + || srv_lock_timeout_active || srv_monitor_active)) { mutex_exit(&kernel_mutex); diff --git a/log/log0recv.c b/log/log0recv.c index 168fa5b0cb9..cf81a15b001 100644 --- a/log/log0recv.c +++ b/log/log0recv.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1997, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -138,7 +138,9 @@ UNIV_INTERN ulint recv_max_parsed_page_no; /** This many frames must be left free in the buffer pool when we scan the log and store the scanned log records in the buffer pool: we will use these free frames to read in pages when we start applying the -log records to the database. */ +log records to the database. +This is the default value. If the actual size of the buffer pool is +larger than 10 MB we'll set this value to 512. */ UNIV_INTERN ulint recv_n_pool_free_frames; /** The maximum lsn we see for a page during the recovery process. If this @@ -242,6 +244,7 @@ recv_sys_mem_free(void) } } +#ifndef UNIV_HOTBACKUP /************************************************************ Reset the state of the recovery system variables. */ UNIV_INTERN @@ -251,7 +254,7 @@ recv_sys_var_init(void) { recv_lsn_checks_on = FALSE; - recv_n_pool_free_frames = 1024; + recv_n_pool_free_frames = 256; recv_recovery_on = FALSE; @@ -277,10 +280,11 @@ recv_sys_var_init(void) recv_max_parsed_page_no = 0; - recv_n_pool_free_frames = 1024; + recv_n_pool_free_frames = 256; recv_max_page_lsn = 0; } +#endif /* !UNIV_HOTBACKUP */ /************************************************************ Inits the recovery system for a recovery operation. */ @@ -295,20 +299,37 @@ recv_sys_init( return; } + /* Initialize red-black tree for fast insertions into the + flush_list during recovery process. + As this initialization is done while holding the buffer pool + mutex we perform it before acquiring recv_sys->mutex. */ +#ifndef UNIV_HOTBACKUP + buf_flush_init_flush_rbt(); + mutex_enter(&(recv_sys->mutex)); -#ifndef UNIV_HOTBACKUP recv_sys->heap = mem_heap_create_in_buffer(256); #else /* !UNIV_HOTBACKUP */ recv_sys->heap = mem_heap_create(256); recv_is_from_backup = TRUE; #endif /* !UNIV_HOTBACKUP */ + /* Set appropriate value of recv_n_pool_free_frames. */ + if (buf_pool_get_curr_size() >= (10 * 1024 * 1024)) { + /* Buffer pool of size greater than 10 MB. */ + recv_n_pool_free_frames = 512; + } + + if (buf_pool_get_curr_size() >= (32 * 1024 * 1024)) { + /* Buffer pool of size greater than 32 MB. */ + recv_n_pool_free_frames = 1024; + } + recv_sys->buf = ut_malloc(RECV_PARSING_BUF_SIZE); recv_sys->len = 0; recv_sys->recovered_offset = 0; - recv_sys->addr_hash = hash_create(available_memory / 64); + recv_sys->addr_hash = hash_create(available_memory / 512); recv_sys->n_addrs = 0; recv_sys->apply_log_recs = FALSE; @@ -348,7 +369,7 @@ recv_sys_empty_hash(void) hash_table_free(recv_sys->addr_hash); mem_heap_empty(recv_sys->heap); - recv_sys->addr_hash = hash_create(buf_pool_get_curr_size() / 256); + recv_sys->addr_hash = hash_create(buf_pool_get_curr_size() / 512); } #ifndef UNIV_HOTBACKUP @@ -373,6 +394,9 @@ recv_sys_debug_free(void) recv_sys->last_block_buf_start = NULL; mutex_exit(&(recv_sys->mutex)); + + /* Free up the flush_rbt. */ + buf_flush_free_flush_rbt(); } # endif /* UNIV_LOG_DEBUG */ @@ -2117,15 +2141,6 @@ recv_parse_log_rec( } #endif /* UNIV_LOG_LSN_DEBUG */ - /* Check that page_no is sensible */ - - if (UNIV_UNLIKELY(*page_no > 0x8FFFFFFFUL)) { - - recv_sys->found_corrupt_log = TRUE; - - return(0); - } - new_ptr = recv_parse_or_apply_log_rec_body(*type, new_ptr, end_ptr, NULL, NULL); if (UNIV_UNLIKELY(new_ptr == NULL)) { @@ -2234,6 +2249,14 @@ recv_report_corrupt_log( putc('\n', stderr); } +#ifndef UNIV_HOTBACKUP + if (!srv_force_recovery) { + fputs("InnoDB: Set innodb_force_recovery" + " to ignore this error.\n", stderr); + ut_error; + } +#endif /* !UNIV_HOTBACKUP */ + fputs("InnoDB: WARNING: the log file may have been corrupt and it\n" "InnoDB: is possible that the log scan did not proceed\n" "InnoDB: far enough in recovery! Please run CHECK TABLE\n" @@ -2623,7 +2646,7 @@ recv_scan_log_recs( ut_ad(start_lsn % OS_FILE_LOG_BLOCK_SIZE == 0); ut_ad(len % OS_FILE_LOG_BLOCK_SIZE == 0); - ut_ad(len > 0); + ut_ad(len >= OS_FILE_LOG_BLOCK_SIZE); ut_a(store_to_hash <= TRUE); finished = FALSE; @@ -2748,6 +2771,16 @@ recv_scan_log_recs( recv_sys->found_corrupt_log = TRUE; +#ifndef UNIV_HOTBACKUP + if (!srv_force_recovery) { + fputs("InnoDB: Set" + " innodb_force_recovery" + " to ignore this error.\n", + stderr); + ut_error; + } +#endif /* !UNIV_HOTBACKUP */ + } else if (!recv_sys->found_corrupt_log) { more_data = recv_sys_add_to_parsing_buf( log_block, scanned_lsn); @@ -3277,8 +3310,6 @@ void recv_recovery_from_checkpoint_finish(void) /*======================================*/ { - int i; - /* Apply the hashed log records to the respective file pages */ if (srv_force_recovery < SRV_FORCE_NO_LOG_REDO) { @@ -3404,9 +3435,16 @@ recv_recovery_from_checkpoint_finish(void) The data dictionary latch should guarantee that there is at most one data dictionary transaction active at a time. */ trx_rollback_or_clean_recovered(FALSE); +} - /* Drop partially created indexes. */ - row_merge_drop_temp_indexes(); +/********************************************************//** +Initiates the rollback of active transactions. */ +UNIV_INTERN +void +recv_recovery_rollback_active(void) +/*===============================*/ +{ + int i; #ifdef UNIV_SYNC_DEBUG /* Wait for a while so that created threads have time to suspend @@ -3416,6 +3454,11 @@ recv_recovery_from_checkpoint_finish(void) /* Switch latching order checks on in sync0sync.c */ sync_order_checks_on = TRUE; #endif + /* Drop partially created indexes. */ + row_merge_drop_temp_indexes(); + /* Drop temporary tables. */ + row_mysql_drop_temp_tables(); + if (srv_force_recovery < SRV_FORCE_NO_TRX_UNDO) { /* Rollback the uncommitted transactions which have no user session */ diff --git a/mem/mem0dbg.c b/mem/mem0dbg.c index 01eda20ec45..1cd2ff15bab 100644 --- a/mem/mem0dbg.c +++ b/mem/mem0dbg.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -180,6 +180,10 @@ mem_close(void) { mem_pool_free(mem_comm_pool); mem_comm_pool = NULL; +#ifdef UNIV_MEM_DEBUG + mutex_free(&mem_hash_mutex); + mem_hash_initialized = FALSE; +#endif /* UNIV_MEM_DEBUG */ } #endif /* !UNIV_HOTBACKUP */ diff --git a/mem/mem0mem.c b/mem/mem0mem.c index ccb2fd8a7b4..c0ce8a3e1ac 100644 --- a/mem/mem0mem.c +++ b/mem/mem0mem.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -383,6 +383,20 @@ mem_heap_create_block( mem_block_set_free(block, MEM_BLOCK_HEADER_SIZE); mem_block_set_start(block, MEM_BLOCK_HEADER_SIZE); + if (UNIV_UNLIKELY(heap == NULL)) { + /* This is the first block of the heap. The field + total_size should be initialized here */ + block->total_size = len; + } else { + /* Not the first allocation for the heap. This block's + total_length field should be set to undefined. */ + ut_d(block->total_size = ULINT_UNDEFINED); + UNIV_MEM_INVALID(&block->total_size, + sizeof block->total_size); + + heap->total_size += len; + } + ut_ad((ulint)MEM_BLOCK_HEADER_SIZE < len); return(block); @@ -471,6 +485,10 @@ mem_heap_block_free( mem_pool_mutex_exit(); #endif + + ut_ad(heap->total_size >= block->len); + heap->total_size -= block->len; + type = heap->type; len = block->len; block->magic_n = MEM_FREED_BLOCK_MAGIC_N; diff --git a/os/os0file.c b/os/os0file.c index d3b3edea29f..c79a41626c9 100644 --- a/os/os0file.c +++ b/os/os0file.c @@ -1,23 +1,6 @@ -/***************************************************************************** - -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. - -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA - -*****************************************************************************/ /*********************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2009, Percona Inc. Portions of this file contain modifications contributed and copyrighted @@ -846,7 +829,15 @@ next_file: #ifdef HAVE_READDIR_R ret = readdir_r(dir, (struct dirent*)dirent_buf, &ent); - if (ret != 0) { + if (ret != 0 +#ifdef UNIV_AIX + /* On AIX, only if we got non-NULL 'ent' (result) value and + a non-zero 'ret' (return) value, it indicates a failed + readdir_r() call. An NULL 'ent' with an non-zero 'ret' + would indicate the "end of the directory" is reached. */ + && ent != NULL +#endif + ) { fprintf(stderr, "InnoDB: cannot read directory %s, error %lu\n", dirname, (ulong)ret); @@ -4030,6 +4021,9 @@ os_aio_simulated_handle( ulint i; time_t now; + /* Fix compiler warning */ + *consecutive_ios = NULL; + segment = os_aio_get_array_and_local_segment(&array, global_segment); restart: diff --git a/page/page0page.c b/page/page0page.c index ab2ba60570e..10008f9ac25 100644 --- a/page/page0page.c +++ b/page/page0page.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -658,6 +658,14 @@ page_copy_rec_list_end( index, mtr); } + /* Update PAGE_MAX_TRX_ID on the uncompressed page. + Modifications will be redo logged and copied to the compressed + page in page_zip_compress() or page_zip_reorganize() below. */ + if (dict_index_is_sec_or_ibuf(index) && page_is_leaf(page)) { + page_update_max_trx_id(new_block, NULL, + page_get_max_trx_id(page), mtr); + } + if (UNIV_LIKELY_NULL(new_page_zip)) { mtr_set_log_mode(mtr, log_mode); @@ -696,15 +704,10 @@ page_copy_rec_list_end( } } - /* Update the lock table, MAX_TRX_ID, and possible hash index */ + /* Update the lock table and possible hash index */ lock_move_rec_list_end(new_block, block, rec); - if (dict_index_is_sec_or_ibuf(index) && page_is_leaf(page)) { - page_update_max_trx_id(new_block, new_page_zip, - page_get_max_trx_id(page), mtr); - } - btr_search_move_or_delete_hash_entries(new_block, block, index); return(ret); @@ -772,6 +775,16 @@ page_copy_rec_list_start( mem_heap_free(heap); } + /* Update PAGE_MAX_TRX_ID on the uncompressed page. + Modifications will be redo logged and copied to the compressed + page in page_zip_compress() or page_zip_reorganize() below. */ + if (dict_index_is_sec_or_ibuf(index) + && page_is_leaf(page_align(rec))) { + page_update_max_trx_id(new_block, NULL, + page_get_max_trx_id(page_align(rec)), + mtr); + } + if (UNIV_LIKELY_NULL(new_page_zip)) { mtr_set_log_mode(mtr, log_mode); @@ -809,14 +822,7 @@ page_copy_rec_list_start( } } - /* Update MAX_TRX_ID, the lock table, and possible hash index */ - - if (dict_index_is_sec_or_ibuf(index) - && page_is_leaf(page_align(rec))) { - page_update_max_trx_id(new_block, new_page_zip, - page_get_max_trx_id(page_align(rec)), - mtr); - } + /* Update the lock table and possible hash index */ lock_move_rec_list_start(new_block, block, rec, ret); @@ -2408,8 +2414,13 @@ page_validate( } offs = page_offset(rec_get_start(rec, offsets)); + i = rec_offs_size(offsets); + if (UNIV_UNLIKELY(offs + i >= UNIV_PAGE_SIZE)) { + fputs("InnoDB: record offset out of bounds\n", stderr); + goto func_exit; + } - for (i = rec_offs_size(offsets); i--; ) { + while (i--) { if (UNIV_UNLIKELY(buf[offs + i])) { /* No other record may overlap this */ @@ -2517,8 +2528,13 @@ n_owned_zero: count++; offs = page_offset(rec_get_start(rec, offsets)); + i = rec_offs_size(offsets); + if (UNIV_UNLIKELY(offs + i >= UNIV_PAGE_SIZE)) { + fputs("InnoDB: record offset out of bounds\n", stderr); + goto func_exit; + } - for (i = rec_offs_size(offsets); i--; ) { + while (i--) { if (UNIV_UNLIKELY(buf[offs + i])) { fputs("InnoDB: Record overlaps another" diff --git a/percona-suite/percona_innodb_deadlock_count.result b/percona-suite/percona_innodb_deadlock_count.result new file mode 100644 index 00000000000..4ad6fd433fe --- /dev/null +++ b/percona-suite/percona_innodb_deadlock_count.result @@ -0,0 +1,28 @@ +# Establish connection con1 (user=root) +# Establish connection con2 (user=root) +# Establish connection con3 (user=root) +# Drop test table +drop table if exists t; +# Create test table +create table t(a INT PRIMARY KEY, b INT) engine=InnoDB; +# Insert two rows to test table +insert into t values(2,1); +insert into t values(1,2); +# Switch to connection con1 +BEGIN; +SELECT b FROM t WHERE a=1 FOR UPDATE; +b +2 +# Switch to connection con2 +BEGIN; +SELECT b FROM t WHERE a=2 FOR UPDATE; +b +1 +# Switch to connection con1 +SELECT b FROM t WHERE a=2 FOR UPDATE; +# Switch to connection con2 +SELECT b FROM t WHERE a=1 FOR UPDATE; +# Switch to connection con3 +1 +# Drop test table +drop table t; diff --git a/percona-suite/percona_innodb_deadlock_count.test b/percona-suite/percona_innodb_deadlock_count.test new file mode 100644 index 00000000000..b0882a18dc1 --- /dev/null +++ b/percona-suite/percona_innodb_deadlock_count.test @@ -0,0 +1,49 @@ +--source include/have_innodb.inc +--echo # Establish connection con1 (user=root) +connect (con1,localhost,root,,); +--echo # Establish connection con2 (user=root) +connect (con2,localhost,root,,); +--echo # Establish connection con3 (user=root) +connect (con3,localhost,root,,); +--echo # Drop test table +--disable_warnings +drop table if exists t; +--enable_warnings +disable_abort_on_error; + +--echo # Create test table +create table t(a INT PRIMARY KEY, b INT) engine=InnoDB; +--echo # Insert two rows to test table +insert into t values(2,1); +insert into t values(1,2); + +#--echo # Save current deadlock count +let $current = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_deadlocks'`; + +--echo # Switch to connection con1 +connection con1; +BEGIN; SELECT b FROM t WHERE a=1 FOR UPDATE; + +#show engine innodb status; + +--echo # Switch to connection con2 +connection con2; +BEGIN; SELECT b FROM t WHERE a=2 FOR UPDATE; + +--echo # Switch to connection con1 +connection con1; +SEND SELECT b FROM t WHERE a=2 FOR UPDATE; + +--echo # Switch to connection con2 +connection con2; +SEND SELECT b FROM t WHERE a=1 FOR UPDATE; + +SLEEP 0.2; +--echo # Switch to connection con3 +connection con3; +let $result = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_deadlocks'`; + +let $diff = `SELECT $result - $current`; +echo $diff; +--echo # Drop test table +drop table t; diff --git a/percona-suite/percona_innodb_doublewrite_file-master.opt b/percona-suite/percona_innodb_doublewrite_file-master.opt new file mode 100644 index 00000000000..0f4d0c45410 --- /dev/null +++ b/percona-suite/percona_innodb_doublewrite_file-master.opt @@ -0,0 +1 @@ +--innodb_doublewrite_file=ib_doublewrite diff --git a/percona-suite/percona_innodb_doublewrite_file.result b/percona-suite/percona_innodb_doublewrite_file.result new file mode 100644 index 00000000000..4d086cc4498 --- /dev/null +++ b/percona-suite/percona_innodb_doublewrite_file.result @@ -0,0 +1,4 @@ +show variables like 'innodb_doublewrite%'; +Variable_name Value +innodb_doublewrite ON +innodb_doublewrite_file ib_doublewrite diff --git a/percona-suite/percona_innodb_doublewrite_file.test b/percona-suite/percona_innodb_doublewrite_file.test new file mode 100644 index 00000000000..8068d561190 --- /dev/null +++ b/percona-suite/percona_innodb_doublewrite_file.test @@ -0,0 +1,2 @@ +--source include/have_innodb.inc +show variables like 'innodb_doublewrite%'; diff --git a/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time-master.opt b/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time-master.opt new file mode 100644 index 00000000000..d600400af08 --- /dev/null +++ b/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time-master.opt @@ -0,0 +1 @@ +--slow-query-log-file=percona_log_slow_slave_statements-master.log --long-query-time=1 \ No newline at end of file diff --git a/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time-slave.opt b/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time-slave.opt new file mode 100644 index 00000000000..c79e637317b --- /dev/null +++ b/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time-slave.opt @@ -0,0 +1 @@ +--slow-query-log-file=percona_log_slow_slave_statements-slave.log --long-query-time=1 \ No newline at end of file diff --git a/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time.result b/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time.result new file mode 100644 index 00000000000..c17e7a3f508 --- /dev/null +++ b/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time.result @@ -0,0 +1,103 @@ +# Activate master-slave replication +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +# Make table t for test +DROP TABLE IF EXISTS t; +CREATE TABLE t(id INT); +# Start slave replication +START SLAVE; +INSERT INTO t VALUES (1); +# Read information about master binlog +# Sync(1) slave thread +# Read and change log_slow_slave_statements to ON on slave +show variables like 'log_slow_slave_statements'; +Variable_name Value +log_slow_slave_statements OFF +set global log_slow_slave_statements=ON; +show variables like 'log_slow_slave_statements'; +Variable_name Value +log_slow_slave_statements ON +INSERT INTO t VALUES (2); +# Read information about master binlog +# Sync slave(2) thread +# Restart slave +STOP SLAVE; +START SLAVE; +INSERT INTO t VALUES (3); +# Read information about master binlog +# Sync(3) slave thread +show variables like 'long_query_time'; +Variable_name Value +long_query_time 1.000000 +show global variables like 'long_query_time'; +Variable_name Value +long_query_time 1.000000 +show global variables like 'use_global_long_query_time'; +Variable_name Value +use_global_long_query_time OFF +set global long_query_time=0; +show variables like 'long_query_time'; +Variable_name Value +long_query_time 1.000000 +show global variables like 'long_query_time'; +Variable_name Value +long_query_time 0.000000 +show global variables like 'use_global_long_query_time'; +Variable_name Value +use_global_long_query_time OFF +INSERT INTO t VALUES (4); +# Read information about master binlog +# Sync slave(4) thread +show variables like 'long_query_time'; +Variable_name Value +long_query_time 1.000000 +show global variables like 'long_query_time'; +Variable_name Value +long_query_time 0.000000 +show global variables like 'use_global_long_query_time'; +Variable_name Value +use_global_long_query_time OFF +set global use_global_long_query_time=1; +show variables like 'long_query_time'; +Variable_name Value +long_query_time 0.000000 +show global variables like 'long_query_time'; +Variable_name Value +long_query_time 0.000000 +show global variables like 'use_global_long_query_time'; +Variable_name Value +use_global_long_query_time ON +INSERT INTO t VALUES (5); +# Read information about master binlog +# Sync slave(5) thread +show variables like 'long_query_time'; +Variable_name Value +long_query_time 0.000000 +show global variables like 'long_query_time'; +Variable_name Value +long_query_time 0.000000 +show global variables like 'use_global_long_query_time'; +Variable_name Value +use_global_long_query_time ON +set global long_query_time=1; +set global use_global_long_query_time=0; +# Analyse master slow_query_log +0 +0 +0 +0 +0 +# Analyse slave slow_query_log +0 +0 +0 +0 +1 +set global log_slow_slave_statements=OFF; +DROP TABLE t; +# Read information about master binlog +# Sync slave(6) thread diff --git a/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time.test b/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time.test new file mode 100644 index 00000000000..46548537853 --- /dev/null +++ b/percona-suite/percona_log_slow_slave_statements-and-use_global_long_query_time.test @@ -0,0 +1,137 @@ +-- echo # Activate master-slave replication +-- source include/master-slave.inc + +connection master; +-- echo # Make table t for test +-- disable_warnings +DROP TABLE IF EXISTS t; +-- enable_warnings +CREATE TABLE t(id INT); + + +-- echo # Start slave replication +-- disable_warnings +connection slave; +START SLAVE; +-- source include/wait_for_slave_to_start.inc +-- enable_warnings + +#-- echo # Make insert(1) on master +connection master; +INSERT INTO t VALUES (1); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync(1) slave thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; + +-- echo # Read and change log_slow_slave_statements to ON on slave +show variables like 'log_slow_slave_statements'; +set global log_slow_slave_statements=ON; +show variables like 'log_slow_slave_statements'; + +#-- echo # Make insert(2) on master +connection master; +INSERT INTO t VALUES (2); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync slave(2) thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; +-- echo # Restart slave +STOP SLAVE; +-- source include/wait_for_slave_to_stop.inc +START SLAVE; +-- source include/wait_for_slave_to_start.inc + +#-- echo # Make insert(3) on master +connection master; +INSERT INTO t VALUES (3); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync(3) slave thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; +show variables like 'long_query_time'; +show global variables like 'long_query_time'; +show global variables like 'use_global_long_query_time'; +set global long_query_time=0; +show variables like 'long_query_time'; +show global variables like 'long_query_time'; +show global variables like 'use_global_long_query_time'; + +#-- echo # Make insert(4) on master +connection master; +INSERT INTO t VALUES (4); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync slave(4) thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; +show variables like 'long_query_time'; +show global variables like 'long_query_time'; +show global variables like 'use_global_long_query_time'; +set global use_global_long_query_time=1; +show variables like 'long_query_time'; +show global variables like 'long_query_time'; +show global variables like 'use_global_long_query_time'; + +#-- echo # Make insert(5) on master +connection master; +INSERT INTO t VALUES (5); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync slave(5) thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; +show variables like 'long_query_time'; +show global variables like 'long_query_time'; +show global variables like 'use_global_long_query_time'; +set global long_query_time=1; +set global use_global_long_query_time=0; + +-- echo # Analyse master slow_query_log +let $i=5; +let $k=1; +let $cmd=cat ./var/mysqld.1/data/percona_log_slow_slave_statements-master.log | grep; +while($i) +{ + let $current_cmd = $cmd "INSERT INTO t VALUES ($k)" | wc -l; + exec $current_cmd; + dec $i; + inc $k; +} + +-- echo # Analyse slave slow_query_log +let $i=5; +let $k=1; +let $cmd=cat ./var/mysqld.2/data/percona_log_slow_slave_statements-slave.log | grep; +while($i) +{ + let $current_cmd = $cmd "INSERT INTO t VALUES ($k)" | wc -l; + exec $current_cmd; + dec $i; + inc $k; +} +set global log_slow_slave_statements=OFF; + +connection master; +DROP TABLE t; + +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync slave(6) thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; diff --git a/percona-suite/percona_log_slow_slave_statements-master.opt b/percona-suite/percona_log_slow_slave_statements-master.opt new file mode 100644 index 00000000000..dd94fd90a57 --- /dev/null +++ b/percona-suite/percona_log_slow_slave_statements-master.opt @@ -0,0 +1 @@ +--slow-query-log-file=percona_log_slow_slave_statements-master.log --long-query-time=0 \ No newline at end of file diff --git a/percona-suite/percona_log_slow_slave_statements-slave.opt b/percona-suite/percona_log_slow_slave_statements-slave.opt new file mode 100644 index 00000000000..e276b0bcfc8 --- /dev/null +++ b/percona-suite/percona_log_slow_slave_statements-slave.opt @@ -0,0 +1 @@ +--slow-query-log-file=percona_log_slow_slave_statements-slave.log --long-query-time=0 \ No newline at end of file diff --git a/percona-suite/percona_log_slow_slave_statements.result b/percona-suite/percona_log_slow_slave_statements.result new file mode 100644 index 00000000000..e3bf3e92c94 --- /dev/null +++ b/percona-suite/percona_log_slow_slave_statements.result @@ -0,0 +1,86 @@ +# Activate master-slave replication +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +# Make table t for test +DROP TABLE IF EXISTS t; +CREATE TABLE t(id INT); +# Start slave replication +START SLAVE; +INSERT INTO t VALUES (1); +# Read information about master binlog +# Sync(1) slave thread +# Read and change log_slow_slave_statements to ON on slave +show variables like 'log_slow_slave_statements'; +Variable_name Value +log_slow_slave_statements OFF +set global log_slow_slave_statements=ON; +show variables like 'log_slow_slave_statements'; +Variable_name Value +log_slow_slave_statements ON +INSERT INTO t VALUES (2); +# Read information about master binlog +# Sync slave(2) thread +# Restart slave +STOP SLAVE; +START SLAVE; +INSERT INTO t VALUES (3); +# Read information about master binlog +# Sync(3) slave thread +# Read and change log_slow_slave_statements to OFF on slave +show variables like 'log_slow_slave_statements'; +Variable_name Value +log_slow_slave_statements ON +set global log_slow_slave_statements=OFF; +show variables like 'log_slow_slave_statements'; +Variable_name Value +log_slow_slave_statements OFF +INSERT INTO t VALUES (4); +# Read information about master binlog +# Sync slave(4) thread +# Restart slave +STOP SLAVE; +START SLAVE; +INSERT INTO t VALUES (5); +# Read information about master binlog +# Sync slave(5) thread +# Read and change log_slow_slave_statements to ON on slave +show variables like 'log_slow_slave_statements'; +Variable_name Value +log_slow_slave_statements OFF +set global log_slow_slave_statements=ON; +show variables like 'log_slow_slave_statements'; +Variable_name Value +log_slow_slave_statements ON +INSERT INTO t VALUES (6); +# Read information about master binlog +# Sync slave(6) thread +# Restart slave +STOP SLAVE; +START SLAVE; +INSERT INTO t VALUES (7); +# Read information about master binlog +# Sync slave(7) thread +# Analyse master slow_query_log +1 +1 +1 +1 +1 +1 +1 +# Analyse slave slow_query_log +0 +0 +1 +0 +0 +0 +1 +set global log_slow_slave_statements=OFF; +DROP TABLE t; +# Read information about master binlog +# Sync slave(8) thread diff --git a/percona-suite/percona_log_slow_slave_statements.test b/percona-suite/percona_log_slow_slave_statements.test new file mode 100644 index 00000000000..93956bf7505 --- /dev/null +++ b/percona-suite/percona_log_slow_slave_statements.test @@ -0,0 +1,158 @@ +-- echo # Activate master-slave replication +-- source include/master-slave.inc + +connection master; +-- echo # Make table t for test +-- disable_warnings +DROP TABLE IF EXISTS t; +-- enable_warnings +CREATE TABLE t(id INT); + + +-- echo # Start slave replication +-- disable_warnings +connection slave; +START SLAVE; +-- source include/wait_for_slave_to_start.inc +-- enable_warnings + +#-- echo # Make insert(1) on master +connection master; +INSERT INTO t VALUES (1); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync(1) slave thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; + +-- echo # Read and change log_slow_slave_statements to ON on slave +show variables like 'log_slow_slave_statements'; +set global log_slow_slave_statements=ON; +show variables like 'log_slow_slave_statements'; + +#-- echo # Make insert(2) on master +connection master; +INSERT INTO t VALUES (2); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync slave(2) thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; +-- echo # Restart slave +STOP SLAVE; +-- source include/wait_for_slave_to_stop.inc +START SLAVE; +-- source include/wait_for_slave_to_start.inc + +#-- echo # Make insert(3) on master +connection master; +INSERT INTO t VALUES (3); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync(3) slave thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; +-- echo # Read and change log_slow_slave_statements to OFF on slave +show variables like 'log_slow_slave_statements'; +set global log_slow_slave_statements=OFF; +show variables like 'log_slow_slave_statements'; + +#-- echo # Make insert(4) on master +connection master; +INSERT INTO t VALUES (4); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync slave(4) thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; +-- echo # Restart slave +STOP SLAVE; +-- source include/wait_for_slave_to_stop.inc +START SLAVE; +-- source include/wait_for_slave_to_start.inc + +#-- echo # Make insert(5) on master +connection master; +INSERT INTO t VALUES (5); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync slave(5) thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; +-- echo # Read and change log_slow_slave_statements to ON on slave +show variables like 'log_slow_slave_statements'; +set global log_slow_slave_statements=ON; +show variables like 'log_slow_slave_statements'; + +#-- echo # Make insert(6) on master +connection master; +INSERT INTO t VALUES (6); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync slave(6) thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; +-- echo # Restart slave +STOP SLAVE; +-- source include/wait_for_slave_to_stop.inc +START SLAVE; +-- source include/wait_for_slave_to_start.inc + +#-- echo # Make insert(7) on master +connection master; +INSERT INTO t VALUES (7); +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync slave(7) thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; + +-- echo # Analyse master slow_query_log +let $i=7; +let $k=1; +let $cmd=cat ./var/mysqld.1/data/percona_log_slow_slave_statements-master.log | grep; +while($i) +{ + let $current_cmd = $cmd "INSERT INTO t VALUES ($k)" | wc -l; + exec $current_cmd; + dec $i; + inc $k; +} + +-- echo # Analyse slave slow_query_log +let $i=7; +let $k=1; +let $cmd=cat ./var/mysqld.2/data/percona_log_slow_slave_statements-slave.log | grep; +while($i) +{ + let $current_cmd = $cmd "INSERT INTO t VALUES ($k)" | wc -l; + exec $current_cmd; + dec $i; + inc $k; +} +set global log_slow_slave_statements=OFF; + +connection master; +DROP TABLE t; + +-- echo # Read information about master binlog +let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1); +let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1); + +-- echo # Sync slave(8) thread +connection slave; +let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; diff --git a/percona-suite/percona_query_cache_with_comments.inc b/percona-suite/percona_query_cache_with_comments.inc new file mode 100644 index 00000000000..bed87bd4c22 --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments.inc @@ -0,0 +1,95 @@ +--source include/percona_query_cache_with_comments_clear.inc +let $query=/* with comment first */select * from t1; +eval $query; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=# with comment first +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=-- with comment first +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=/* with comment first and "quote" */select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=# with comment first and "quote" +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=-- with comment first and "quote" +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query= + /* with comment and whitespaces first */select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query= + # with comment and whitespaces first +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query= + -- with comment and whitespaces first +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $internal=* internal comment *; + +let $query=select * /$internal/ from t1; +--source include/percona_query_cache_with_comments_eval.inc +let $query=select */$internal/ from t1; +--source include/percona_query_cache_with_comments_eval.inc +let $query=select */$internal/from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $internal=* internal comment with "quote" *; + +let $query=select * /$internal/ from t1; +--source include/percona_query_cache_with_comments_eval.inc +let $query=select */$internal/ from t1; +--source include/percona_query_cache_with_comments_eval.inc +let $query=select */$internal/from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 +; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 ; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 ; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 +/* comment in the end */; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 +/* *\/ */; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 +/* comment in the end */ +; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 #comment in the end; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 #comment in the end +; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 -- comment in the end; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 -- comment in the end +; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select ' \' ' from t1; +--source include/percona_query_cache_with_comments_eval.inc diff --git a/percona-suite/percona_query_cache_with_comments.inc.backup b/percona-suite/percona_query_cache_with_comments.inc.backup new file mode 100644 index 00000000000..4b5b31e9239 --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments.inc.backup @@ -0,0 +1,88 @@ +--source include/percona_query_cache_with_comments_clear.inc +let $query=/* with comment first */select * from t1; +eval $query; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=# with comment first +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=-- with comment first +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=/* with comment first and "quote" */select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=# with comment first and "quote" +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=-- with comment first and "quote" +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query= + /* with comment and whitespaces first */select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query= + # with comment and whitespaces first +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query= + -- with comment and whitespaces first +select * from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $internal=* internal comment *; + +let $query=select * /$internal/ from t1; +--source include/percona_query_cache_with_comments_eval.inc +let $query=select */$internal/ from t1; +--source include/percona_query_cache_with_comments_eval.inc +let $query=select */$internal/from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $internal=* internal comment with "quote" *; + +let $query=select * /$internal/ from t1; +--source include/percona_query_cache_with_comments_eval.inc +let $query=select */$internal/ from t1; +--source include/percona_query_cache_with_comments_eval.inc +let $query=select */$internal/from t1; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 +; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 ; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 ; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 +/* comment in the end */; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 +/* comment in the end */ +; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 #comment in the end; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 #comment in the end +; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 -- comment in the end; +--source include/percona_query_cache_with_comments_eval.inc + +let $query=select * from t1 -- comment in the end +; +--source include/percona_query_cache_with_comments_eval.inc diff --git a/percona-suite/percona_query_cache_with_comments.result b/percona-suite/percona_query_cache_with_comments.result new file mode 100644 index 00000000000..169fdf80fef --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments.result @@ -0,0 +1,866 @@ +set global query_cache_strip_comments=ON; +set GLOBAL query_cache_size=1355776; +drop table if exists t1; +create table t1 (a int not null); +insert into t1 values (1),(2),(3); +flush query cache; +flush query cache; +reset query cache; +flush status; +flush query cache; +flush query cache; +reset query cache; +flush status; +/* with comment first */select * from t1; +a +1 +2 +3 +----------------------------------------------------- +/* with comment first */select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 0 +/* with comment first */select * from t1; +a +1 +2 +3 +/* with comment first */select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 2 +----------------------------------------------------- +# with comment first +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 2 +# with comment first +select * from t1; +a +1 +2 +3 +# with comment first +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 4 +----------------------------------------------------- +-- with comment first +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 4 +-- with comment first +select * from t1; +a +1 +2 +3 +-- with comment first +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 6 +----------------------------------------------------- +/* with comment first and "quote" */select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 6 +/* with comment first and "quote" */select * from t1; +a +1 +2 +3 +/* with comment first and "quote" */select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 8 +----------------------------------------------------- +# with comment first and "quote" +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 8 +# with comment first and "quote" +select * from t1; +a +1 +2 +3 +# with comment first and "quote" +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 10 +----------------------------------------------------- +-- with comment first and "quote" +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 10 +-- with comment first and "quote" +select * from t1; +a +1 +2 +3 +-- with comment first and "quote" +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 12 +----------------------------------------------------- +/* with comment and whitespaces first */select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 12 +/* with comment and whitespaces first */select * from t1; +a +1 +2 +3 +/* with comment and whitespaces first */select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 14 +----------------------------------------------------- +# with comment and whitespaces first +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 14 +# with comment and whitespaces first +select * from t1; +a +1 +2 +3 +# with comment and whitespaces first +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 16 +----------------------------------------------------- +-- with comment and whitespaces first +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 16 +-- with comment and whitespaces first +select * from t1; +a +1 +2 +3 +-- with comment and whitespaces first +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 18 +----------------------------------------------------- +select * /* internal comment */ from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 18 +select * /* internal comment */ from t1; +a +1 +2 +3 +select * /* internal comment */ from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 20 +----------------------------------------------------- +select */* internal comment */ from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 20 +select */* internal comment */ from t1; +a +1 +2 +3 +select */* internal comment */ from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 22 +----------------------------------------------------- +select */* internal comment */from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 22 +select */* internal comment */from t1; +a +1 +2 +3 +select */* internal comment */from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 24 +----------------------------------------------------- +select * /* internal comment with "quote" */ from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 24 +select * /* internal comment with "quote" */ from t1; +a +1 +2 +3 +select * /* internal comment with "quote" */ from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 26 +----------------------------------------------------- +select */* internal comment with "quote" */ from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 26 +select */* internal comment with "quote" */ from t1; +a +1 +2 +3 +select */* internal comment with "quote" */ from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 28 +----------------------------------------------------- +select */* internal comment with "quote" */from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 28 +select */* internal comment with "quote" */from t1; +a +1 +2 +3 +select */* internal comment with "quote" */from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 30 +----------------------------------------------------- +select * from t1 + +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 30 +select * from t1 +; +a +1 +2 +3 +select * from t1 +; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 32 +----------------------------------------------------- +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 32 +select * from t1 ; +a +1 +2 +3 +select * from t1 ; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 34 +----------------------------------------------------- +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 34 +select * from t1 ; +a +1 +2 +3 +select * from t1 ; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 36 +----------------------------------------------------- +select * from t1 +/* comment in the end */ +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 36 +select * from t1 +/* comment in the end */; +a +1 +2 +3 +select * from t1 +/* comment in the end */; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 38 +----------------------------------------------------- +select * from t1 +/* *\/ */ +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 38 +select * from t1 +/* *\/ */; +a +1 +2 +3 +select * from t1 +/* *\/ */; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 40 +----------------------------------------------------- +select * from t1 +/* comment in the end */ + +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 40 +select * from t1 +/* comment in the end */ +; +a +1 +2 +3 +select * from t1 +/* comment in the end */ +; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 42 +----------------------------------------------------- +select * from t1 #comment in the end +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 42 +select * from t1 #comment in the end; +a +1 +2 +3 +select * from t1 #comment in the end; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 44 +----------------------------------------------------- +select * from t1 #comment in the end + +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 44 +select * from t1 #comment in the end +; +a +1 +2 +3 +select * from t1 #comment in the end +; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 46 +----------------------------------------------------- +select * from t1 -- comment in the end +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 46 +select * from t1 -- comment in the end; +a +1 +2 +3 +select * from t1 -- comment in the end; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 48 +----------------------------------------------------- +select * from t1 -- comment in the end + +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 48 +select * from t1 -- comment in the end +; +a +1 +2 +3 +select * from t1 -- comment in the end +; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 50 +----------------------------------------------------- +select ' \' ' from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 50 +select ' \' ' from t1; +' + ' + ' + ' +select ' \' ' from t1; +' + ' + ' + ' +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 2 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 2 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 51 +DROP TABLE t1; +SET GLOBAL query_cache_size=default; +set global query_cache_strip_comments=OFF; diff --git a/percona-suite/percona_query_cache_with_comments.test b/percona-suite/percona_query_cache_with_comments.test new file mode 100644 index 00000000000..0190f54d104 --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments.test @@ -0,0 +1,4 @@ +set global query_cache_strip_comments=ON; +-- source include/percona_query_cache_with_comments_begin.inc +-- source include/percona_query_cache_with_comments.inc +-- source include/percona_query_cache_with_comments_end.inc diff --git a/percona-suite/percona_query_cache_with_comments_begin.inc b/percona-suite/percona_query_cache_with_comments_begin.inc new file mode 100644 index 00000000000..38bfce20263 --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments_begin.inc @@ -0,0 +1,12 @@ +-- source include/have_query_cache.inc + +set GLOBAL query_cache_size=1355776; + +--disable_warnings +drop table if exists t1; +--enable_warnings + +create table t1 (a int not null); +insert into t1 values (1),(2),(3); + +--source include/percona_query_cache_with_comments_clear.inc diff --git a/percona-suite/percona_query_cache_with_comments_clear.inc b/percona-suite/percona_query_cache_with_comments_clear.inc new file mode 100644 index 00000000000..728a19a3c97 --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments_clear.inc @@ -0,0 +1,5 @@ +# Reset query cache variables. +flush query cache; # This crashed in some versions +flush query cache; # This crashed in some versions +reset query cache; +flush status; diff --git a/percona-suite/percona_query_cache_with_comments_crash.result b/percona-suite/percona_query_cache_with_comments_crash.result new file mode 100644 index 00000000000..32bd3645ec4 --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments_crash.result @@ -0,0 +1,21 @@ +set GLOBAL query_cache_size=1355776; +drop table if exists t1; +create table t1 (a int not null); +insert into t1 values (1),(2),(3); +flush query cache; +flush query cache; +reset query cache; +flush status; +( select * from t1 ); +a +1 +2 +3 +/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */; +/* only comment */; +# only comment +; +-- only comment +; +DROP TABLE t1; +SET GLOBAL query_cache_size= default; diff --git a/percona-suite/percona_query_cache_with_comments_crash.test b/percona-suite/percona_query_cache_with_comments_crash.test new file mode 100644 index 00000000000..e125c75c3de --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments_crash.test @@ -0,0 +1,22 @@ +-- source include/have_query_cache.inc +set GLOBAL query_cache_size=1355776; +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int not null); +insert into t1 values (1),(2),(3); +flush query cache; # This crashed in some versions +flush query cache; # This crashed in some versions +reset query cache; +flush status; +( select * from t1 ); +/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */; +/* only comment */; +let query=# only comment +; +eval $query; +let query=-- only comment +; +eval $query; +DROP TABLE t1; +SET GLOBAL query_cache_size= default; diff --git a/percona-suite/percona_query_cache_with_comments_disable.result b/percona-suite/percona_query_cache_with_comments_disable.result new file mode 100644 index 00000000000..a13a44d9a1c --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments_disable.result @@ -0,0 +1,865 @@ +set GLOBAL query_cache_size=1355776; +drop table if exists t1; +create table t1 (a int not null); +insert into t1 values (1),(2),(3); +flush query cache; +flush query cache; +reset query cache; +flush status; +flush query cache; +flush query cache; +reset query cache; +flush status; +/* with comment first */select * from t1; +a +1 +2 +3 +----------------------------------------------------- +/* with comment first */select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 0 +/* with comment first */select * from t1; +a +1 +2 +3 +/* with comment first */select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 2 +----------------------------------------------------- +# with comment first +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 2 +# with comment first +select * from t1; +a +1 +2 +3 +# with comment first +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 2 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 2 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 2 +----------------------------------------------------- +-- with comment first +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 2 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 2 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 2 +-- with comment first +select * from t1; +a +1 +2 +3 +-- with comment first +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 3 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 3 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 2 +----------------------------------------------------- +/* with comment first and "quote" */select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 3 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 3 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 2 +/* with comment first and "quote" */select * from t1; +a +1 +2 +3 +/* with comment first and "quote" */select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 4 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 4 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 3 +----------------------------------------------------- +# with comment first and "quote" +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 4 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 4 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 3 +# with comment first and "quote" +select * from t1; +a +1 +2 +3 +# with comment first and "quote" +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 5 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 5 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 3 +----------------------------------------------------- +-- with comment first and "quote" +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 5 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 5 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 3 +-- with comment first and "quote" +select * from t1; +a +1 +2 +3 +-- with comment first and "quote" +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 6 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 6 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 3 +----------------------------------------------------- +/* with comment and whitespaces first */select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 6 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 6 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 3 +/* with comment and whitespaces first */select * from t1; +a +1 +2 +3 +/* with comment and whitespaces first */select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 7 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 7 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 4 +----------------------------------------------------- +# with comment and whitespaces first +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 7 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 7 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 4 +# with comment and whitespaces first +select * from t1; +a +1 +2 +3 +# with comment and whitespaces first +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 8 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 8 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 4 +----------------------------------------------------- +-- with comment and whitespaces first +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 8 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 8 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 4 +-- with comment and whitespaces first +select * from t1; +a +1 +2 +3 +-- with comment and whitespaces first +select * from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 9 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 9 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 4 +----------------------------------------------------- +select * /* internal comment */ from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 9 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 9 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 4 +select * /* internal comment */ from t1; +a +1 +2 +3 +select * /* internal comment */ from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 10 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 10 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 5 +----------------------------------------------------- +select */* internal comment */ from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 10 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 10 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 5 +select */* internal comment */ from t1; +a +1 +2 +3 +select */* internal comment */ from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 11 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 11 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 6 +----------------------------------------------------- +select */* internal comment */from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 11 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 11 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 6 +select */* internal comment */from t1; +a +1 +2 +3 +select */* internal comment */from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 12 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 12 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 7 +----------------------------------------------------- +select * /* internal comment with "quote" */ from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 12 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 12 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 7 +select * /* internal comment with "quote" */ from t1; +a +1 +2 +3 +select * /* internal comment with "quote" */ from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 13 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 13 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 8 +----------------------------------------------------- +select */* internal comment with "quote" */ from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 13 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 13 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 8 +select */* internal comment with "quote" */ from t1; +a +1 +2 +3 +select */* internal comment with "quote" */ from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 14 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 14 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 9 +----------------------------------------------------- +select */* internal comment with "quote" */from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 14 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 14 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 9 +select */* internal comment with "quote" */from t1; +a +1 +2 +3 +select */* internal comment with "quote" */from t1; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 15 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 15 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 10 +----------------------------------------------------- +select * from t1 + +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 15 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 15 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 10 +select * from t1 +; +a +1 +2 +3 +select * from t1 +; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 16 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 16 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 11 +----------------------------------------------------- +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 16 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 16 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 11 +select * from t1 ; +a +1 +2 +3 +select * from t1 ; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 16 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 16 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 13 +----------------------------------------------------- +select * from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 16 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 16 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 13 +select * from t1 ; +a +1 +2 +3 +select * from t1 ; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 16 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 16 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 15 +----------------------------------------------------- +select * from t1 +/* comment in the end */ +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 16 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 16 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 15 +select * from t1 +/* comment in the end */; +a +1 +2 +3 +select * from t1 +/* comment in the end */; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 17 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 17 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 16 +----------------------------------------------------- +select * from t1 +/* *\/ */ +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 17 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 17 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 16 +select * from t1 +/* *\/ */; +a +1 +2 +3 +select * from t1 +/* *\/ */; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 18 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 18 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 17 +----------------------------------------------------- +select * from t1 +/* comment in the end */ + +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 18 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 18 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 17 +select * from t1 +/* comment in the end */ +; +a +1 +2 +3 +select * from t1 +/* comment in the end */ +; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 18 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 18 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 19 +----------------------------------------------------- +select * from t1 #comment in the end +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 18 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 18 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 19 +select * from t1 #comment in the end; +a +1 +2 +3 +select * from t1 #comment in the end; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 19 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 19 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 20 +----------------------------------------------------- +select * from t1 #comment in the end + +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 19 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 19 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 20 +select * from t1 #comment in the end +; +a +1 +2 +3 +select * from t1 #comment in the end +; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 19 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 19 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 22 +----------------------------------------------------- +select * from t1 -- comment in the end +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 19 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 19 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 22 +select * from t1 -- comment in the end; +a +1 +2 +3 +select * from t1 -- comment in the end; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 20 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 20 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 23 +----------------------------------------------------- +select * from t1 -- comment in the end + +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 20 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 20 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 23 +select * from t1 -- comment in the end +; +a +1 +2 +3 +select * from t1 -- comment in the end +; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 20 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 20 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 25 +----------------------------------------------------- +select ' \' ' from t1 +----------------------------------------------------- +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 20 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 20 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 25 +select ' \' ' from t1; +' + ' + ' + ' +select ' \' ' from t1; +' + ' + ' + ' +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 21 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 21 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 26 +DROP TABLE t1; +SET GLOBAL query_cache_size=default; +set global query_cache_strip_comments=OFF; diff --git a/percona-suite/percona_query_cache_with_comments_disable.test b/percona-suite/percona_query_cache_with_comments_disable.test new file mode 100644 index 00000000000..ad59ac3566c --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments_disable.test @@ -0,0 +1,3 @@ +-- source include/percona_query_cache_with_comments_begin.inc +-- source include/percona_query_cache_with_comments.inc +-- source include/percona_query_cache_with_comments_end.inc diff --git a/percona-suite/percona_query_cache_with_comments_end.inc b/percona-suite/percona_query_cache_with_comments_end.inc new file mode 100644 index 00000000000..d5356359d7e --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments_end.inc @@ -0,0 +1,3 @@ +DROP TABLE t1; +SET GLOBAL query_cache_size=default; +set global query_cache_strip_comments=OFF; diff --git a/percona-suite/percona_query_cache_with_comments_eval.inc b/percona-suite/percona_query_cache_with_comments_eval.inc new file mode 100644 index 00000000000..a409786d554 --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments_eval.inc @@ -0,0 +1,7 @@ +echo -----------------------------------------------------; +echo $query; +echo -----------------------------------------------------; +--source include/percona_query_cache_with_comments_show.inc +eval $query; +eval $query; +--source include/percona_query_cache_with_comments_show.inc diff --git a/percona-suite/percona_query_cache_with_comments_prepared_statements.result b/percona-suite/percona_query_cache_with_comments_prepared_statements.result new file mode 100644 index 00000000000..9b28b7f0b62 --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments_prepared_statements.result @@ -0,0 +1,396 @@ +set GLOBAL query_cache_size=1355776; +flush query cache; +flush query cache; +reset query cache; +flush status; +drop table if exists t1; +create table t1 (a int not null); +insert into t1 values (1),(2),(3); +set global query_cache_strip_comments=ON; +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 0 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 0 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 0 +prepare stmt from '/* with comment */ select * from t1'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 0 +execute stmt; +a +1 +2 +3 +execute stmt; +a +1 +2 +3 +execute stmt; +a +1 +2 +3 +execute stmt; +a +1 +2 +3 +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 5 +prepare stmt from 'select * from t1'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 6 +prepare stmt from 'select * /*internal comment*/from t1'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 7 +prepare stmt from 'select * /*internal comment*/ from t1'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 8 +prepare stmt from 'select * from t1 /* at the end */'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 9 +prepare stmt from 'select * from t1 /* with "quote" */'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 10 +prepare stmt from 'select * from t1 /* with \'quote\' */'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 11 +prepare stmt from 'select * from t1 # 123 +'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 12 +prepare stmt from 'select * from t1 # 123 with "quote" +'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 13 +prepare stmt from 'select * from t1 # 123 with \'quote\' +'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 14 +prepare stmt from 'select * from t1 +# 123 +'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 15 +prepare stmt from '#456 +select * from t1 +# 123 +'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 16 +prepare stmt from 'select * from t1 -- 123 +'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 17 +prepare stmt from 'select * from t1 +-- 123 +'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 18 +prepare stmt from '-- comment in first +select * from t1 +# 123 +'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 1 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 19 +prepare stmt from '(#456( +select * from t1 +# 123( +)'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 2 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 2 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 19 +prepare stmt from '/*test*/(-- comment in first( +select * from t1 +-- 123 asdasd +/* test */)'; +execute stmt; +a +1 +2 +3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 2 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 2 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 20 +prepare stmt from 'select "test",a from t1'; +execute stmt; +test a +test 1 +test 2 +test 3 +execute stmt; +test a +test 1 +test 2 +test 3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 3 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 3 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 21 +prepare stmt from 'select "test /* internal \'comment\' */",a from t1'; +execute stmt; +test /* internal 'comment' */ a +test /* internal 'comment' */ 1 +test /* internal 'comment' */ 2 +test /* internal 'comment' */ 3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 4 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 4 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 21 +prepare stmt from 'select "test #internal comment" ,a from t1'; +execute stmt; +test #internal comment a +test #internal comment 1 +test #internal comment 2 +test #internal comment 3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 5 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 5 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 21 +prepare stmt from 'select "test #internal comment" #external comment +,a from t1'; +execute stmt; +test #internal comment a +test #internal comment 1 +test #internal comment 2 +test #internal comment 3 +show status like "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 5 +show status like "Qcache_inserts"; +Variable_name Value +Qcache_inserts 5 +show status like "Qcache_hits"; +Variable_name Value +Qcache_hits 22 +DROP TABLE t1; +SET GLOBAL query_cache_size= default; +set global query_cache_strip_comments=OFF; diff --git a/percona-suite/percona_query_cache_with_comments_prepared_statements.test b/percona-suite/percona_query_cache_with_comments_prepared_statements.test new file mode 100644 index 00000000000..78cb7220aff --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments_prepared_statements.test @@ -0,0 +1,208 @@ +-- source include/have_query_cache.inc + +set GLOBAL query_cache_size=1355776; + +# Reset query cache variables. +flush query cache; # This crashed in some versions +flush query cache; # This crashed in some versions +reset query cache; +flush status; +--disable_warnings +drop table if exists t1; +--enable_warnings + +# +# First simple test +# + +create table t1 (a int not null); +insert into t1 values (1),(2),(3); + +set global query_cache_strip_comments=ON; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from '/* with comment */ select * from t1'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +execute stmt; +execute stmt; +execute stmt; +execute stmt; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * from t1'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * /*internal comment*/from t1'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * /*internal comment*/ from t1'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * from t1 /* at the end */'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * from t1 /* with "quote" */'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * from t1 /* with \'quote\' */'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * from t1 # 123 +'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * from t1 # 123 with "quote" +'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * from t1 # 123 with \'quote\' +'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * from t1 +# 123 +'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from '#456 +select * from t1 +# 123 +'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * from t1 -- 123 +'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select * from t1 +-- 123 +'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from '-- comment in first +select * from t1 +# 123 +'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from '(#456( +select * from t1 +# 123( +)'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from '/*test*/(-- comment in first( +select * from t1 +-- 123 asdasd +/* test */)'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select "test",a from t1'; +execute stmt; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select "test /* internal \'comment\' */",a from t1'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select "test #internal comment" ,a from t1'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +prepare stmt from 'select "test #internal comment" #external comment +,a from t1'; +execute stmt; + +show status like "Qcache_queries_in_cache"; +show status like "Qcache_inserts"; +show status like "Qcache_hits"; + +DROP TABLE t1; +SET GLOBAL query_cache_size= default; +set global query_cache_strip_comments=OFF; diff --git a/percona-suite/percona_query_cache_with_comments_show.inc b/percona-suite/percona_query_cache_with_comments_show.inc new file mode 100644 index 00000000000..71aa5211cfd --- /dev/null +++ b/percona-suite/percona_query_cache_with_comments_show.inc @@ -0,0 +1,8 @@ +let $show=show status like "Qcache_queries_in_cache"; +eval $show; +let $show=show status like "Qcache_inserts"; +eval $show; +let $show=show status like "Qcache_hits"; +eval $show; + + diff --git a/percona-suite/percona_show_temp_tables.result b/percona-suite/percona_show_temp_tables.result new file mode 100644 index 00000000000..cbcb0331896 --- /dev/null +++ b/percona-suite/percona_show_temp_tables.result @@ -0,0 +1,58 @@ +drop table if exists t1,t2,t3; +drop database if exists showtemp; +create database if not exists showtemp; +use test; +create temporary table t1(id int); +create temporary table t2(id int); +create temporary table showtemp.t3(id int); +insert into t1 values(10),(20),(30),(40); +insert into showtemp.t3 values(999); +show temporary tables; +Temp_tables_in_test +t2 +t1 +show temporary tables from test; +Temp_tables_in_test +t2 +t1 +show temporary tables in showtemp; +Temp_tables_in_showtemp +t3 +select table_schema, table_name, engine, table_rows from Information_schema.temporary_tables; +table_schema table_name engine table_rows +showtemp t3 MyISAM 1 +test t2 MyISAM 0 +test t1 MyISAM 4 +select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables; +table_schema table_name engine table_rows +showtemp t3 MyISAM 1 +test t2 MyISAM 0 +test t1 MyISAM 4 +select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='showtemp'; +table_schema table_name engine table_rows +showtemp t3 MyISAM 1 +select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='temp'; +table_schema table_name engine table_rows +drop table if exists showtemp.t2; +create temporary table t1(id int); +create temporary table showtemp.t2(id int); +show temporary tables; +Temp_tables_in_test +t1 +select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables; +table_schema table_name engine table_rows +showtemp t2 MyISAM 0 +test t1 MyISAM 0 +showtemp t3 MyISAM 1 +test t2 MyISAM 0 +test t1 MyISAM 4 +drop table showtemp.t2; +drop table t1; +select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables; +table_schema table_name engine table_rows +showtemp t3 MyISAM 1 +test t2 MyISAM 0 +test t1 MyISAM 4 +drop table t1, t2; +drop table showtemp.t3; +drop database showtemp; diff --git a/percona-suite/percona_show_temp_tables.test b/percona-suite/percona_show_temp_tables.test new file mode 100644 index 00000000000..8837df199c5 --- /dev/null +++ b/percona-suite/percona_show_temp_tables.test @@ -0,0 +1,65 @@ +# Uses GRANT commands that usually disabled in embedded server +-- source include/not_embedded.inc + +# Save the initial number of concurrent sessions +--source include/count_sessions.inc + +# +# Test of SHOW [GLOBAL] TEMPORARY TABLES [FROM/IN] DB and +# Information_schema.temporary_tables and global_temporary_tables +# + +connect(stcon1,localhost,root,,test); +connect(stcon2,localhost,root,,test); + +connection stcon1; + +--disable_warnings +drop table if exists t1,t2,t3; +drop database if exists showtemp; +create database if not exists showtemp; +--enable_warnings + +use test; +create temporary table t1(id int); +create temporary table t2(id int); +create temporary table showtemp.t3(id int); +insert into t1 values(10),(20),(30),(40); +insert into showtemp.t3 values(999); + +show temporary tables; +# "Session" is not same value always. mysql-test cannot test it always. +#show global temporary tables; +show temporary tables from test; +show temporary tables in showtemp; +select table_schema, table_name, engine, table_rows from Information_schema.temporary_tables; +select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables; +select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='showtemp'; +select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='temp'; + +connection stcon2; + +--disable_warnings +drop table if exists showtemp.t2; +--enable_warnings +create temporary table t1(id int); +create temporary table showtemp.t2(id int); +show temporary tables; +select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables; +drop table showtemp.t2; +drop table t1; + +disconnect stcon2; + +connection stcon1; +select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables; + +drop table t1, t2; +drop table showtemp.t3; +drop database showtemp; + +connection default; +disconnect stcon1; + +# Wait till all disconnects are completed +--source include/wait_until_count_sessions.inc diff --git a/percona-suite/percona_slow_query_log-control_global_slow-master.opt b/percona-suite/percona_slow_query_log-control_global_slow-master.opt new file mode 100644 index 00000000000..91dd41305cd --- /dev/null +++ b/percona-suite/percona_slow_query_log-control_global_slow-master.opt @@ -0,0 +1 @@ +--slow-query-log-file=percona_slow_query_log-control_global_slow.log --long-query-time=1 \ No newline at end of file diff --git a/percona-suite/percona_slow_query_log-control_global_slow.result b/percona-suite/percona_slow_query_log-control_global_slow.result new file mode 100644 index 00000000000..15463408878 --- /dev/null +++ b/percona-suite/percona_slow_query_log-control_global_slow.result @@ -0,0 +1,12 @@ +SELECT sleep(2); +sleep(2) +0 +set global log_slow_verbosity=innodb; +set global use_global_log_slow_control="log_slow_verbosity,long_query_time"; +SELECT sleep(2); +sleep(2) +0 +set global use_global_log_slow_control=none; +set global log_slow_verbosity=microtime; +cat var/mysqld.1/data/percona_slow_query_log-control_global_slow.log | grep "No InnoDB statistics available for this query" | wc -l +1 diff --git a/percona-suite/percona_slow_query_log-control_global_slow.test b/percona-suite/percona_slow_query_log-control_global_slow.test new file mode 100644 index 00000000000..bfe49d09563 --- /dev/null +++ b/percona-suite/percona_slow_query_log-control_global_slow.test @@ -0,0 +1,10 @@ +source include/have_innodb.inc; +SELECT sleep(2); +set global log_slow_verbosity=innodb; +set global use_global_log_slow_control="log_slow_verbosity,long_query_time"; +SELECT sleep(2); +set global use_global_log_slow_control=none; +set global log_slow_verbosity=microtime; +let $cmd = cat var/mysqld.1/data/percona_slow_query_log-control_global_slow.log | grep "No InnoDB statistics available for this query" | wc -l; +echo $cmd; +exec $cmd; diff --git a/percona-suite/percona_slow_query_log-log_slow_filter-master.opt b/percona-suite/percona_slow_query_log-log_slow_filter-master.opt new file mode 100644 index 00000000000..cb93f7abf05 --- /dev/null +++ b/percona-suite/percona_slow_query_log-log_slow_filter-master.opt @@ -0,0 +1 @@ +--slow-query-log-file=percona_slow_query_log-log_slow_filter.log --long-query-time=1 \ No newline at end of file diff --git a/percona-suite/percona_slow_query_log-log_slow_filter.result b/percona-suite/percona_slow_query_log-log_slow_filter.result new file mode 100644 index 00000000000..07c90fa05a3 --- /dev/null +++ b/percona-suite/percona_slow_query_log-log_slow_filter.result @@ -0,0 +1,25 @@ +SET GLOBAL SLOW_QUERY_LOG=OFF; +drop table if exists t; +# Create test table +create table t(id INT PRIMARY KEY) engine=InnoDB; +# Insert two rows to test table +insert into t values(1); +insert into t values(2); +insert into t values(3); +SET GLOBAL SLOW_QUERY_LOG=ON; +SELECT sleep(2); +sleep(2) +0 +set log_slow_filter=full_join; +SELECT sleep(2) union select t2.id from t as t1,t as t2; +sleep(2) +0 +1 +2 +3 +SELECT sleep(2); +sleep(2) +0 +drop table if exists t; +cat var/mysqld.1/data/percona_slow_query_log-log_slow_filter.log | grep Query_time | wc -l +2 diff --git a/percona-suite/percona_slow_query_log-log_slow_filter.test b/percona-suite/percona_slow_query_log-log_slow_filter.test new file mode 100644 index 00000000000..bd903e88050 --- /dev/null +++ b/percona-suite/percona_slow_query_log-log_slow_filter.test @@ -0,0 +1,31 @@ +source include/have_innodb.inc; + +SET GLOBAL SLOW_QUERY_LOG=OFF; + +--disable_warnings +drop table if exists t; +--enable_warnings + +--echo # Create test table +create table t(id INT PRIMARY KEY) engine=InnoDB; +--echo # Insert two rows to test table +insert into t values(1); +insert into t values(2); +insert into t values(3); + +SET GLOBAL SLOW_QUERY_LOG=ON; + +SELECT sleep(2); + +set log_slow_filter=full_join; + +SELECT sleep(2) union select t2.id from t as t1,t as t2; +SELECT sleep(2); + +--disable_warnings +drop table if exists t; +--enable_warnings + +let $cmd = cat var/mysqld.1/data/percona_slow_query_log-log_slow_filter.log | grep Query_time | wc -l; +echo $cmd; +exec $cmd; diff --git a/percona-suite/percona_slow_query_log-log_slow_verbosity-master.opt b/percona-suite/percona_slow_query_log-log_slow_verbosity-master.opt new file mode 100644 index 00000000000..8d21f40a34f --- /dev/null +++ b/percona-suite/percona_slow_query_log-log_slow_verbosity-master.opt @@ -0,0 +1 @@ +--slow-query-log-file=percona_slow_query_log-log_slow_verbosity.log --long-query-time=1 \ No newline at end of file diff --git a/percona-suite/percona_slow_query_log-log_slow_verbosity.result b/percona-suite/percona_slow_query_log-log_slow_verbosity.result new file mode 100644 index 00000000000..75f842f22a0 --- /dev/null +++ b/percona-suite/percona_slow_query_log-log_slow_verbosity.result @@ -0,0 +1,9 @@ +SELECT sleep(2); +sleep(2) +0 +set log_slow_verbosity=innodb; +SELECT sleep(2); +sleep(2) +0 +cat var/mysqld.1/data/percona_slow_query_log-log_slow_verbosity.log | grep "No InnoDB statistics available for this query" | wc -l +1 diff --git a/percona-suite/percona_slow_query_log-log_slow_verbosity.test b/percona-suite/percona_slow_query_log-log_slow_verbosity.test new file mode 100644 index 00000000000..56d14e33513 --- /dev/null +++ b/percona-suite/percona_slow_query_log-log_slow_verbosity.test @@ -0,0 +1,11 @@ +source include/have_innodb.inc; + +SELECT sleep(2); + +set log_slow_verbosity=innodb; + +SELECT sleep(2); + +let $cmd = cat var/mysqld.1/data/percona_slow_query_log-log_slow_verbosity.log | grep "No InnoDB statistics available for this query" | wc -l; +echo $cmd; +exec $cmd; diff --git a/percona-suite/percona_slow_query_log-long_query_time-master.opt b/percona-suite/percona_slow_query_log-long_query_time-master.opt new file mode 100644 index 00000000000..473323e0bd9 --- /dev/null +++ b/percona-suite/percona_slow_query_log-long_query_time-master.opt @@ -0,0 +1 @@ +--slow-query-log-file=percona_slow_query_log-long_query_time.log --long-query-time=2 \ No newline at end of file diff --git a/percona-suite/percona_slow_query_log-long_query_time.result b/percona-suite/percona_slow_query_log-long_query_time.result new file mode 100644 index 00000000000..ed934610211 --- /dev/null +++ b/percona-suite/percona_slow_query_log-long_query_time.result @@ -0,0 +1,22 @@ +SELECT sleep(1); +sleep(1) +0 +SELECT sleep(3); +sleep(3) +0 +SELECT sleep(5); +sleep(5) +0 +set long_query_time=4; +SELECT sleep(1); +sleep(1) +0 +SELECT sleep(3); +sleep(3) +0 +SELECT sleep(5); +sleep(5) +0 +set long_query_time=2; +cat var/mysqld.1/data/percona_slow_query_log-long_query_time.log | grep Query_time | wc -l +3 diff --git a/percona-suite/percona_slow_query_log-long_query_time.test b/percona-suite/percona_slow_query_log-long_query_time.test new file mode 100644 index 00000000000..9954ef4ee40 --- /dev/null +++ b/percona-suite/percona_slow_query_log-long_query_time.test @@ -0,0 +1,17 @@ +source include/have_innodb.inc; + +SELECT sleep(1); +SELECT sleep(3); +SELECT sleep(5); + +set long_query_time=4; + +SELECT sleep(1); +SELECT sleep(3); +SELECT sleep(5); + +set long_query_time=2; + +let $cmd = cat var/mysqld.1/data/percona_slow_query_log-long_query_time.log | grep Query_time | wc -l; +echo $cmd; +exec $cmd; diff --git a/percona-suite/percona_slow_query_log-microseconds_in_slow_query_log-master.opt b/percona-suite/percona_slow_query_log-microseconds_in_slow_query_log-master.opt new file mode 100644 index 00000000000..6433539d3d1 --- /dev/null +++ b/percona-suite/percona_slow_query_log-microseconds_in_slow_query_log-master.opt @@ -0,0 +1 @@ +--slow-query-log-file=percona_slow_query_log-microseconds_in_slow_query_log.log --long-query-time=1 \ No newline at end of file diff --git a/percona-suite/percona_slow_query_log-microseconds_in_slow_query_log.result b/percona-suite/percona_slow_query_log-microseconds_in_slow_query_log.result new file mode 100644 index 00000000000..3cdab58aad0 --- /dev/null +++ b/percona-suite/percona_slow_query_log-microseconds_in_slow_query_log.result @@ -0,0 +1,12 @@ +SELECT sleep(2); +sleep(2) +0 +set global slow_query_log_microseconds_timestamp=ON; +SELECT sleep(2); +sleep(2) +0 +set global slow_query_log_microseconds_timestamp=OFF; +cat var/mysqld.1/data/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+.[0-9]+' | wc -l +1 +cat var/mysqld.1/data/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+' | wc -l +2 diff --git a/percona-suite/percona_slow_query_log-microseconds_in_slow_query_log.test b/percona-suite/percona_slow_query_log-microseconds_in_slow_query_log.test new file mode 100644 index 00000000000..18eb6830405 --- /dev/null +++ b/percona-suite/percona_slow_query_log-microseconds_in_slow_query_log.test @@ -0,0 +1,17 @@ +source include/have_innodb.inc; + +SELECT sleep(2); + +set global slow_query_log_microseconds_timestamp=ON; + +SELECT sleep(2); + +set global slow_query_log_microseconds_timestamp=OFF; + +let $cmd = cat var/mysqld.1/data/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+.[0-9]+' | wc -l; +echo $cmd; +exec $cmd; + +let $cmd = cat var/mysqld.1/data/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+' | wc -l; +echo $cmd; +exec $cmd; diff --git a/percona-suite/percona_slow_query_log-min_examined_row_limit-master.opt b/percona-suite/percona_slow_query_log-min_examined_row_limit-master.opt new file mode 100644 index 00000000000..6f82556fb0c --- /dev/null +++ b/percona-suite/percona_slow_query_log-min_examined_row_limit-master.opt @@ -0,0 +1 @@ +--slow-query-log-file=percona_slow_query_log-min_examined_row_limit.log --long-query-time=1 \ No newline at end of file diff --git a/percona-suite/percona_slow_query_log-min_examined_row_limit.result b/percona-suite/percona_slow_query_log-min_examined_row_limit.result new file mode 100644 index 00000000000..bf5a2131826 --- /dev/null +++ b/percona-suite/percona_slow_query_log-min_examined_row_limit.result @@ -0,0 +1,25 @@ +SET GLOBAL SLOW_QUERY_LOG=OFF; +drop table if exists t; +# Create test table +create table t(id INT PRIMARY KEY) engine=InnoDB; +# Insert two rows to test table +insert into t values(1); +insert into t values(2); +insert into t values(3); +SET GLOBAL SLOW_QUERY_LOG=ON; +SELECT sleep(2); +sleep(2) +0 +set min_examined_row_limit=5; +SELECT sleep(2) union select t2.id from t as t1,t as t2; +sleep(2) +0 +1 +2 +3 +SELECT sleep(2); +sleep(2) +0 +drop table if exists t; +cat var/mysqld.1/data/percona_slow_query_log-min_examined_row_limit.log | grep Query_time | wc -l +2 diff --git a/percona-suite/percona_slow_query_log-min_examined_row_limit.test b/percona-suite/percona_slow_query_log-min_examined_row_limit.test new file mode 100644 index 00000000000..83edb1c366f --- /dev/null +++ b/percona-suite/percona_slow_query_log-min_examined_row_limit.test @@ -0,0 +1,31 @@ +source include/have_innodb.inc; + +SET GLOBAL SLOW_QUERY_LOG=OFF; + +--disable_warnings +drop table if exists t; +--enable_warnings + +--echo # Create test table +create table t(id INT PRIMARY KEY) engine=InnoDB; +--echo # Insert two rows to test table +insert into t values(1); +insert into t values(2); +insert into t values(3); + +SET GLOBAL SLOW_QUERY_LOG=ON; + +SELECT sleep(2); + +set min_examined_row_limit=5; + +SELECT sleep(2) union select t2.id from t as t1,t as t2; +SELECT sleep(2); + +--disable_warnings +drop table if exists t; +--enable_warnings + +let $cmd = cat var/mysqld.1/data/percona_slow_query_log-min_examined_row_limit.log | grep Query_time | wc -l; +echo $cmd; +exec $cmd; diff --git a/percona-suite/percona_slow_query_log-use_global_long_query_time-master.opt b/percona-suite/percona_slow_query_log-use_global_long_query_time-master.opt new file mode 100644 index 00000000000..e2f3b6f2041 --- /dev/null +++ b/percona-suite/percona_slow_query_log-use_global_long_query_time-master.opt @@ -0,0 +1 @@ +--slow-query-log-file=percona_slow_query_log-use_global_long_query_time.log --long-query-time=2 \ No newline at end of file diff --git a/percona-suite/percona_slow_query_log-use_global_long_query_time.result b/percona-suite/percona_slow_query_log-use_global_long_query_time.result new file mode 100644 index 00000000000..7c1e840e137 --- /dev/null +++ b/percona-suite/percona_slow_query_log-use_global_long_query_time.result @@ -0,0 +1,24 @@ +SELECT sleep(1); +sleep(1) +0 +SELECT sleep(3); +sleep(3) +0 +SELECT sleep(5); +sleep(5) +0 +set global long_query_time=4; +set global use_global_long_query_time=1; +SELECT sleep(1); +sleep(1) +0 +SELECT sleep(3); +sleep(3) +0 +SELECT sleep(5); +sleep(5) +0 +set global long_query_time=2; +set global use_global_long_query_time=0; +cat var/mysqld.1/data/percona_slow_query_log-use_global_long_query_time.log | grep Query_time | wc -l +3 diff --git a/percona-suite/percona_slow_query_log-use_global_long_query_time.test b/percona-suite/percona_slow_query_log-use_global_long_query_time.test new file mode 100644 index 00000000000..81fd8f7082c --- /dev/null +++ b/percona-suite/percona_slow_query_log-use_global_long_query_time.test @@ -0,0 +1,19 @@ +source include/have_innodb.inc; + +SELECT sleep(1); +SELECT sleep(3); +SELECT sleep(5); + +set global long_query_time=4; +set global use_global_long_query_time=1; + +SELECT sleep(1); +SELECT sleep(3); +SELECT sleep(5); + +set global long_query_time=2; +set global use_global_long_query_time=0; + +let $cmd = cat var/mysqld.1/data/percona_slow_query_log-use_global_long_query_time.log | grep Query_time | wc -l; +echo $cmd; +exec $cmd; diff --git a/percona-suite/percona_suppress_log_warning_1592-master.opt b/percona-suite/percona_suppress_log_warning_1592-master.opt new file mode 100644 index 00000000000..4658d62af60 --- /dev/null +++ b/percona-suite/percona_suppress_log_warning_1592-master.opt @@ -0,0 +1 @@ +--log-error diff --git a/percona-suite/percona_suppress_log_warning_1592.result b/percona-suite/percona_suppress_log_warning_1592.result new file mode 100644 index 00000000000..4715499b08f --- /dev/null +++ b/percona-suite/percona_suppress_log_warning_1592.result @@ -0,0 +1,28 @@ +SET @old_log_warnings = @@log_warnings; +SET @old_suppress_log_warning_1592 = @@suppress_log_warning_1592; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(20)); +SET GLOBAL SUPPRESS_LOG_WARNING_1592 = 0; +SET GLOBAL LOG_WARNINGS = 0; +INSERT INTO t1 VALUES(UUID(), 'suppress_1592'); +Warnings: +Note 1592 Statement may not be safe to log in statement format. +SET GLOBAL LOG_WARNINGS = 1; +INSERT INTO t1 VALUES(UUID(), 'suppress_1592'); +Warnings: +Note 1592 Statement may not be safe to log in statement format. +SET GLOBAL SUPPRESS_LOG_WARNING_1592 = 1; +SET GLOBAL LOG_WARNINGS = 0; +INSERT INTO t1 VALUES(UUID(), 'suppress_1592'); +Warnings: +Note 1592 Statement may not be safe to log in statement format. +SET GLOBAL LOG_WARNINGS = 1; +INSERT INTO t1 VALUES(UUID(), 'suppress_1592'); +Warnings: +Note 1592 Statement may not be safe to log in statement format. +DROP TABLE t1; +SET GLOBAL log_warnings = @old_log_warnings; +SET GLOBAL suppress_log_warning_1592 = @old_suppress_log_warning_1592; +# Count the number of times the "Unsafe" message was printed +# to the error log. +Occurrences: 1 diff --git a/percona-suite/percona_suppress_log_warning_1592.test b/percona-suite/percona_suppress_log_warning_1592.test new file mode 100644 index 00000000000..97fe40469fc --- /dev/null +++ b/percona-suite/percona_suppress_log_warning_1592.test @@ -0,0 +1,46 @@ +-- source include/have_log_bin.inc +-- source include/have_binlog_format_statement.inc + +SET @old_log_warnings = @@log_warnings; +SET @old_suppress_log_warning_1592 = @@suppress_log_warning_1592; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings +CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(20)); +SET GLOBAL SUPPRESS_LOG_WARNING_1592 = 0; +SET GLOBAL LOG_WARNINGS = 0; +INSERT INTO t1 VALUES(UUID(), 'suppress_1592'); +SET GLOBAL LOG_WARNINGS = 1; +INSERT INTO t1 VALUES(UUID(), 'suppress_1592'); +SET GLOBAL SUPPRESS_LOG_WARNING_1592 = 1; +SET GLOBAL LOG_WARNINGS = 0; +INSERT INTO t1 VALUES(UUID(), 'suppress_1592'); +SET GLOBAL LOG_WARNINGS = 1; +INSERT INTO t1 VALUES(UUID(), 'suppress_1592'); +DROP TABLE t1; + +SET GLOBAL log_warnings = @old_log_warnings; +SET GLOBAL suppress_log_warning_1592 = @old_suppress_log_warning_1592; + +let $log_error_= `SELECT @@GLOBAL.log_error`; +if(!`select LENGTH('$log_error_')`) +{ + # MySQL Server on windows is started with --console and thus + # does not know the location of its .err log, use default location + let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err; +} +# Assign env variable LOG_ERROR +let LOG_ERROR=$log_error_; + +--echo # Count the number of times the "Unsafe" message was printed +--echo # to the error log. + +perl; + use strict; + my $log_error= $ENV{'LOG_ERROR'} or die "LOG_ERROR not set"; + open(FILE, "$log_error") or die("Unable to open $log_error: $!\n"); + my $count = () = grep(/suppress_1592/g,); + print "Occurrences: $count\n"; + close(FILE); +EOF diff --git a/percona-suite/percona_xtradb_admin_command.result b/percona-suite/percona_xtradb_admin_command.result new file mode 100644 index 00000000000..26ba14f2f3b --- /dev/null +++ b/percona-suite/percona_xtradb_admin_command.result @@ -0,0 +1,6 @@ +select * from information_schema.XTRADB_ADMIN_COMMAND; +result_message +No XTRA_* command in the SQL statement. Please add /*!XTRA_xxxx*/ to the SQL. +select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_HELLO*/; +result_message +Hello! diff --git a/percona-suite/percona_xtradb_admin_command.test b/percona-suite/percona_xtradb_admin_command.test new file mode 100644 index 00000000000..5dc3fb2b33a --- /dev/null +++ b/percona-suite/percona_xtradb_admin_command.test @@ -0,0 +1,3 @@ +--source include/have_innodb.inc +select * from information_schema.XTRADB_ADMIN_COMMAND; +select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_HELLO*/; diff --git a/percona-suite/percona_xtradb_bug317074.result b/percona-suite/percona_xtradb_bug317074.result new file mode 100644 index 00000000000..82a98844652 --- /dev/null +++ b/percona-suite/percona_xtradb_bug317074.result @@ -0,0 +1,4 @@ +SET @old_innodb_file_format=@@innodb_file_format; +SET @old_innodb_file_per_table=@@innodb_file_per_table; +SET GLOBAL innodb_file_format='Barracuda'; +SET GLOBAL innodb_file_per_table=ON; diff --git a/percona-suite/percona_xtradb_bug317074.test b/percona-suite/percona_xtradb_bug317074.test new file mode 100644 index 00000000000..757ac87bf18 --- /dev/null +++ b/percona-suite/percona_xtradb_bug317074.test @@ -0,0 +1,44 @@ +-- source include/have_innodb.inc + +SET @old_innodb_file_format=@@innodb_file_format; +SET @old_innodb_file_per_table=@@innodb_file_per_table; +let $innodb_file_format_check_orig=`select @@innodb_file_format_check`; +SET GLOBAL innodb_file_format='Barracuda'; +SET GLOBAL innodb_file_per_table=ON; + +-- disable_query_log +-- disable_result_log + +DROP TABLE IF EXISTS `test1`; +CREATE TABLE IF NOT EXISTS `test1` ( + `a` int primary key auto_increment, + `b` int default 0, + `c` char(100) default 'testtest' +) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; + +delimiter |; +CREATE PROCEDURE insert_many(p1 int) +BEGIN +SET @x = 0; +SET @y = 0; +REPEAT + insert into test1 set b=1; + SET @x = @x + 1; + SET @y = @y + 1; + IF @y >= 100 THEN + commit; + SET @y = 0; + END IF; +UNTIL @x >= p1 END REPEAT; +END| +delimiter ;| +call insert_many(100000); +DROP PROCEDURE insert_many; + +# The bug is hangup at the following statement +ALTER TABLE test1 ENGINE=MyISAM; + +DROP TABLE test1; +SET GLOBAL innodb_file_format=@old_innodb_file_format; +SET GLOBAL innodb_file_per_table=@old_innodb_file_per_table; +eval set global innodb_file_format_check=$innodb_file_format_check_orig; diff --git a/plug.in b/plug.in index 09a95ecc157..d5d4fa1d557 100644 --- a/plug.in +++ b/plug.in @@ -1,5 +1,5 @@ # -# Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved. +# Copyright (c) 2006, 2010, Innobase Oy. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software @@ -14,12 +14,12 @@ # Place, Suite 330, Boston, MA 02111-1307 USA # -MYSQL_STORAGE_ENGINE(innobase, innodb, [InnoDB Storage Engine], +MYSQL_STORAGE_ENGINE(innodb_plugin,, [InnoDB Storage Engine], [Transactional Tables using InnoDB], [max,max-no-ndb]) -MYSQL_PLUGIN_DIRECTORY(innobase, [storage/innobase]) -MYSQL_PLUGIN_STATIC(innobase, [libinnobase.a]) -MYSQL_PLUGIN_DYNAMIC(innobase, [ha_innodb.la]) -MYSQL_PLUGIN_ACTIONS(innobase, [ +MYSQL_PLUGIN_DIRECTORY(innodb_plugin, [storage/innodb_plugin]) +MYSQL_PLUGIN_STATIC(innodb_plugin, [libinnobase.a]) +MYSQL_PLUGIN_DYNAMIC(innodb_plugin, [ha_innodb_plugin.la]) +MYSQL_PLUGIN_ACTIONS(innodb_plugin, [ AC_CHECK_HEADERS(sched.h) AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(long, 4) diff --git a/rem/rem0rec.c b/rem/rem0rec.c index 1c8b3fd8c1e..37ba8ca2ffe 100644 --- a/rem/rem0rec.c +++ b/rem/rem0rec.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -212,6 +212,13 @@ rec_get_n_extern_new( const dict_col_t* col = dict_field_get_col(field); len = *lens--; + /* If the maximum length of the field is up + to 255 bytes, the actual length is always + stored in one byte. If the maximum length is + more than 255 bytes, the actual length is + stored in one byte for 0..127. The length + will be encoded in two bytes when it is 128 or + more, or when the field is stored externally. */ if (UNIV_UNLIKELY(col->len > 255) || UNIV_UNLIKELY(col->mtype == DATA_BLOB)) { if (len & 0x80) { @@ -294,6 +301,13 @@ rec_init_offsets_comp_ordinary( const dict_col_t* col = dict_field_get_col(field); len = *lens--; + /* If the maximum length of the field is up + to 255 bytes, the actual length is always + stored in one byte. If the maximum length is + more than 255 bytes, the actual length is + stored in one byte for 0..127. The length + will be encoded in two bytes when it is 128 or + more, or when the field is stored externally. */ if (UNIV_UNLIKELY(col->len > 255) || UNIV_UNLIKELY(col->mtype == DATA_BLOB)) { @@ -425,6 +439,15 @@ rec_init_offsets( const dict_col_t* col = dict_field_get_col(field); len = *lens--; + /* If the maximum length of the field + is up to 255 bytes, the actual length + is always stored in one byte. If the + maximum length is more than 255 bytes, + the actual length is stored in one + byte for 0..127. The length will be + encoded in two bytes when it is 128 or + more, or when the field is stored + externally. */ if (UNIV_UNLIKELY(col->len > 255) || UNIV_UNLIKELY(col->mtype == DATA_BLOB)) { @@ -647,6 +670,13 @@ rec_get_offsets_reverse( const dict_col_t* col = dict_field_get_col(field); len = *lens++; + /* If the maximum length of the field is up + to 255 bytes, the actual length is always + stored in one byte. If the maximum length is + more than 255 bytes, the actual length is + stored in one byte for 0..127. The length + will be encoded in two bytes when it is 128 or + more, or when the field is stored externally. */ if (UNIV_UNLIKELY(col->len > 255) || UNIV_UNLIKELY(col->mtype == DATA_BLOB)) { if (len & 0x80) { @@ -695,19 +725,9 @@ rec_get_nth_field_offs_old( ulint os; ulint next_os; - ut_ad(rec && len); - ut_ad(n < rec_get_n_fields_old(rec)); - - if (UNIV_UNLIKELY(n > REC_MAX_N_FIELDS)) { - fprintf(stderr, "Error: trying to access field %lu in rec\n", - (ulong) n); - ut_error; - } - - if (UNIV_UNLIKELY(rec == NULL)) { - fputs("Error: rec is NULL pointer\n", stderr); - ut_error; - } + ut_ad(len); + ut_a(rec); + ut_a(n < rec_get_n_fields_old(rec)); if (rec_get_1byte_offs_flag(rec)) { os = rec_1_get_field_start_offs(rec, n); @@ -791,12 +811,20 @@ rec_get_converted_size_comp_prefix( ut_ad(len <= col->len || col->mtype == DATA_BLOB); + /* If the maximum length of a variable-length field + is up to 255 bytes, the actual length is always stored + in one byte. If the maximum length is more than 255 + bytes, the actual length is stored in one byte for + 0..127. The length will be encoded in two bytes when + it is 128 or more, or when the field is stored externally. */ + if (field->fixed_len) { ut_ad(len == field->fixed_len); /* dict_index_add_col() should guarantee this */ ut_ad(!field->prefix_len || field->fixed_len == field->prefix_len); } else if (dfield_is_ext(&fields[i])) { + ut_ad(col->len >= 256 || col->mtype == DATA_BLOB); extra_size += 2; } else if (len < 128 || (col->len < 256 && col->mtype != DATA_BLOB)) { @@ -1096,6 +1124,8 @@ rec_convert_dtuple_to_rec_comp( /* Store the data and the offsets */ for (i = 0, field = fields; i < n_fields; i++, field++) { + const dict_field_t* ifield; + type = dfield_get_type(field); len = dfield_get_len(field); @@ -1130,12 +1160,20 @@ rec_convert_dtuple_to_rec_comp( /* only nullable fields can be null */ ut_ad(!dfield_is_null(field)); - fixed_len = dict_index_get_nth_field(index, i)->fixed_len; - + ifield = dict_index_get_nth_field(index, i); + fixed_len = ifield->fixed_len; + /* If the maximum length of a variable-length field + is up to 255 bytes, the actual length is always stored + in one byte. If the maximum length is more than 255 + bytes, the actual length is stored in one byte for + 0..127. The length will be encoded in two bytes when + it is 128 or more, or when the field is stored externally. */ if (fixed_len) { ut_ad(len == fixed_len); ut_ad(!dfield_is_ext(field)); } else if (dfield_is_ext(field)) { + ut_ad(ifield->col->len >= 256 + || ifield->col->mtype == DATA_BLOB); ut_ad(len <= REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE); *lens-- = (byte) (len >> 8) | 0xc0; @@ -1225,11 +1263,20 @@ rec_convert_dtuple_to_rec( mem_heap_t* heap = NULL; ulint offsets_[REC_OFFS_NORMAL_SIZE]; const ulint* offsets; + ulint i; rec_offs_init(offsets_); offsets = rec_get_offsets(rec, index, offsets_, ULINT_UNDEFINED, &heap); ut_ad(rec_validate(rec, offsets)); + ut_ad(dtuple_get_n_fields(dtuple) + == rec_offs_n_fields(offsets)); + + for (i = 0; i < rec_offs_n_fields(offsets); i++) { + ut_ad(!dfield_is_ext(dtuple_get_nth_field(dtuple, i)) + == !rec_offs_nth_extern(offsets, i)); + } + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -1412,6 +1459,13 @@ rec_copy_prefix_to_buf( prefix_len += field->fixed_len; } else { ulint len = *lens--; + /* If the maximum length of the column is up + to 255 bytes, the actual length is always + stored in one byte. If the maximum length is + more than 255 bytes, the actual length is + stored in one byte for 0..127. The length + will be encoded in two bytes when it is 128 or + more, or when the column is stored externally. */ if (col->len > 255 || col->mtype == DATA_BLOB) { if (len & 0x80) { /* 1exxxxxx */ diff --git a/row/row0ins.c b/row/row0ins.c index 4b104ced649..d7475d613ad 100644 --- a/row/row0ins.c +++ b/row/row0ins.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -1997,7 +1997,7 @@ row_ins_index_entry_low( btr_cur_search_to_nth_level(index, 0, entry, PAGE_CUR_LE, mode | BTR_INSERT | ignore_sec_unique, - &cursor, 0, &mtr); + &cursor, 0, __FILE__, __LINE__, &mtr); if (cursor.flag == BTR_CUR_INSERT_TO_IBUF) { /* The insertion was made to the insert buffer already during @@ -2055,7 +2055,8 @@ row_ins_index_entry_low( btr_cur_search_to_nth_level(index, 0, entry, PAGE_CUR_LE, mode | BTR_INSERT, - &cursor, 0, &mtr); + &cursor, 0, + __FILE__, __LINE__, &mtr); } } @@ -2110,7 +2111,8 @@ function_exit: mtr_start(&mtr); btr_cur_search_to_nth_level(index, 0, entry, PAGE_CUR_LE, - BTR_MODIFY_TREE, &cursor, 0, &mtr); + BTR_MODIFY_TREE, &cursor, 0, + __FILE__, __LINE__, &mtr); rec = btr_cur_get_rec(&cursor); offsets = rec_get_offsets(rec, index, NULL, ULINT_UNDEFINED, &heap); diff --git a/row/row0merge.c b/row/row0merge.c index 93b2095dc26..6ee93d24ed3 100644 --- a/row/row0merge.c +++ b/row/row0merge.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2005, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 2005, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -424,14 +424,13 @@ row_merge_dup_report( row_merge_dup_t* dup, /*!< in/out: for reporting duplicates */ const dfield_t* entry) /*!< in: duplicate index entry */ { - mrec_buf_t buf; + mrec_buf_t* buf; const dtuple_t* tuple; dtuple_t tuple_store; const rec_t* rec; const dict_index_t* index = dup->index; ulint n_fields= dict_index_get_n_fields(index); - mem_heap_t* heap = NULL; - ulint offsets_[REC_OFFS_NORMAL_SIZE]; + mem_heap_t* heap; ulint* offsets; ulint n_ext; @@ -441,22 +440,22 @@ row_merge_dup_report( return; } - rec_offs_init(offsets_); - /* Convert the tuple to a record and then to MySQL format. */ + heap = mem_heap_create((1 + REC_OFFS_HEADER_SIZE + n_fields) + * sizeof *offsets + + sizeof *buf); + + buf = mem_heap_alloc(heap, sizeof *buf); tuple = dtuple_from_fields(&tuple_store, entry, n_fields); n_ext = dict_index_is_clust(index) ? dtuple_get_n_ext(tuple) : 0; - rec = rec_convert_dtuple_to_rec(buf, index, tuple, n_ext); - offsets = rec_get_offsets(rec, index, offsets_, ULINT_UNDEFINED, - &heap); + rec = rec_convert_dtuple_to_rec(*buf, index, tuple, n_ext); + offsets = rec_get_offsets(rec, index, NULL, ULINT_UNDEFINED, &heap); innobase_rec_to_mysql(dup->table, rec, index, offsets); - if (UNIV_LIKELY_NULL(heap)) { - mem_heap_free(heap); - } + mem_heap_free(heap); } /*************************************************************//** @@ -627,22 +626,26 @@ row_merge_buf_write( } /******************************************************//** -Create a memory heap and allocate space for row_merge_rec_offsets(). +Create a memory heap and allocate space for row_merge_rec_offsets() +and mrec_buf_t[3]. @return memory heap */ static mem_heap_t* row_merge_heap_create( /*==================*/ const dict_index_t* index, /*!< in: record descriptor */ + mrec_buf_t** buf, /*!< out: 3 buffers */ ulint** offsets1, /*!< out: offsets */ ulint** offsets2) /*!< out: offsets */ { ulint i = 1 + REC_OFFS_HEADER_SIZE + dict_index_get_n_fields(index); - mem_heap_t* heap = mem_heap_create(2 * i * sizeof *offsets1); + mem_heap_t* heap = mem_heap_create(2 * i * sizeof **offsets1 + + 3 * sizeof **buf); - *offsets1 = mem_heap_alloc(heap, i * sizeof *offsets1); - *offsets2 = mem_heap_alloc(heap, i * sizeof *offsets2); + *buf = mem_heap_alloc(heap, 3 * sizeof **buf); + *offsets1 = mem_heap_alloc(heap, i * sizeof **offsets1); + *offsets2 = mem_heap_alloc(heap, i * sizeof **offsets2); (*offsets1)[0] = (*offsets2)[0] = i; (*offsets1)[1] = (*offsets2)[1] = dict_index_get_n_fields(index); @@ -1401,7 +1404,8 @@ row_merge_blocks( { mem_heap_t* heap; /*!< memory heap for offsets0, offsets1 */ - mrec_buf_t buf[3]; /*!< buffer for handling split mrec in block[] */ + mrec_buf_t* buf; /*!< buffer for handling + split mrec in block[] */ const byte* b0; /*!< pointer to block[0] */ const byte* b1; /*!< pointer to block[1] */ byte* b2; /*!< pointer to block[2] */ @@ -1421,7 +1425,7 @@ row_merge_blocks( } #endif /* UNIV_DEBUG */ - heap = row_merge_heap_create(index, &offsets0, &offsets1); + heap = row_merge_heap_create(index, &buf, &offsets0, &offsets1); /* Write a record and read the next record. Split the output file in two halves, which can be merged on the following pass. */ @@ -1507,7 +1511,7 @@ row_merge_blocks_copy( { mem_heap_t* heap; /*!< memory heap for offsets0, offsets1 */ - mrec_buf_t buf[3]; /*!< buffer for handling + mrec_buf_t* buf; /*!< buffer for handling split mrec in block[] */ const byte* b0; /*!< pointer to block[0] */ byte* b2; /*!< pointer to block[2] */ @@ -1525,7 +1529,7 @@ row_merge_blocks_copy( } #endif /* UNIV_DEBUG */ - heap = row_merge_heap_create(index, &offsets0, &offsets1); + heap = row_merge_heap_create(index, &buf, &offsets0, &offsets1); /* Write a record and read the next record. Split the output file in two halves, which can be merged on the following pass. */ @@ -1767,7 +1771,6 @@ row_merge_insert_index_tuples( int fd, /*!< in: file descriptor */ row_merge_block_t* block) /*!< in/out: file buffer */ { - mrec_buf_t buf; const byte* b; que_thr_t* thr; ins_node_t* node; @@ -1786,7 +1789,7 @@ row_merge_insert_index_tuples( trx->op_info = "inserting index entries"; - graph_heap = mem_heap_create(500); + graph_heap = mem_heap_create(500 + sizeof(mrec_buf_t)); node = ins_node_create(INS_DIRECT, table, graph_heap); thr = pars_complete_graph_for_exec(node, trx, graph_heap); @@ -1808,12 +1811,14 @@ row_merge_insert_index_tuples( if (!row_merge_read(fd, foffs, block)) { error = DB_CORRUPTION; } else { + mrec_buf_t* buf = mem_heap_alloc(graph_heap, sizeof *buf); + for (;;) { const mrec_t* mrec; dtuple_t* dtuple; ulint n_ext; - b = row_merge_read_rec(block, &buf, b, index, + b = row_merge_read_rec(block, buf, b, index, fd, &foffs, &mrec, offsets); if (UNIV_UNLIKELY(!b)) { /* End of list, or I/O error */ @@ -1984,14 +1989,12 @@ row_merge_drop_index( /* Drop the field definitions of the index. */ "DELETE FROM SYS_FIELDS WHERE INDEX_ID = :indexid;\n" /* Drop the index definition and the B-tree. */ - "DELETE FROM SYS_INDEXES WHERE ID = :indexid\n" - " AND TABLE_ID = :tableid;\n" + "DELETE FROM SYS_INDEXES WHERE ID = :indexid;\n" "END;\n"; ut_ad(index && table && trx); pars_info_add_dulint_literal(info, "indexid", index->id); - pars_info_add_dulint_literal(info, "tableid", table->id); trx_start_if_not_started(trx); trx->op_info = "dropping index"; @@ -2040,47 +2043,79 @@ row_merge_drop_temp_indexes(void) /*=============================*/ { trx_t* trx; - ulint err; - - /* We use the private SQL parser of Innobase to generate the - query graphs needed in deleting the dictionary data from system - tables in Innobase. Deleting a row from SYS_INDEXES table also - frees the file segments of the B-tree associated with the index. */ - static const char drop_temp_indexes[] = - "PROCEDURE DROP_TEMP_INDEXES_PROC () IS\n" - "indexid CHAR;\n" - "DECLARE CURSOR c IS SELECT ID FROM SYS_INDEXES\n" - "WHERE SUBSTR(NAME,0,1)='" TEMP_INDEX_PREFIX_STR "';\n" - "BEGIN\n" - "\tOPEN c;\n" - "\tWHILE 1=1 LOOP\n" - "\t\tFETCH c INTO indexid;\n" - "\t\tIF (SQL % NOTFOUND) THEN\n" - "\t\t\tEXIT;\n" - "\t\tEND IF;\n" - "\t\tDELETE FROM SYS_FIELDS WHERE INDEX_ID = indexid;\n" - "\t\tDELETE FROM SYS_INDEXES WHERE ID = indexid;\n" - "\tEND LOOP;\n" - "\tCLOSE c;\n" - "\tCOMMIT WORK;\n" - "END;\n"; + btr_pcur_t pcur; + mtr_t mtr; + /* Load the table definitions that contain partially defined + indexes, so that the data dictionary information can be checked + when accessing the tablename.ibd files. */ trx = trx_allocate_for_background(); trx->op_info = "dropping partially created indexes"; row_mysql_lock_data_dictionary(trx); - /* Incomplete transactions may be holding some locks on the - data dictionary tables. However, they should never have been - able to lock the records corresponding to the partially - created indexes that we are attempting to delete, because the - table was locked when the indexes were being created. We will - drop the partially created indexes before the rollback of - incomplete transactions is initiated. Thus, this should not - interfere with the incomplete transactions. */ - trx->isolation_level = TRX_ISO_READ_UNCOMMITTED; - err = que_eval_sql(NULL, drop_temp_indexes, FALSE, trx); - ut_a(err == DB_SUCCESS); + mtr_start(&mtr); + btr_pcur_open_at_index_side( + TRUE, + dict_table_get_first_index(dict_sys->sys_indexes), + BTR_SEARCH_LEAF, &pcur, TRUE, &mtr); + + for (;;) { + const rec_t* rec; + const byte* field; + ulint len; + dulint table_id; + dict_table_t* table; + + btr_pcur_move_to_next_user_rec(&pcur, &mtr); + + if (!btr_pcur_is_on_user_rec(&pcur)) { + break; + } + + rec = btr_pcur_get_rec(&pcur); + field = rec_get_nth_field_old(rec, DICT_SYS_INDEXES_NAME_FIELD, + &len); + if (len == UNIV_SQL_NULL || len == 0 + || (char) *field != TEMP_INDEX_PREFIX) { + continue; + } + + /* This is a temporary index. */ + + field = rec_get_nth_field_old(rec, 0/*TABLE_ID*/, &len); + if (len != 8) { + /* Corrupted TABLE_ID */ + continue; + } + + table_id = mach_read_from_8(field); + + btr_pcur_store_position(&pcur, &mtr); + btr_pcur_commit_specify_mtr(&pcur, &mtr); + + table = dict_load_table_on_id(table_id); + + if (table) { + dict_index_t* index; + + for (index = dict_table_get_first_index(table); + index; index = dict_table_get_next_index(index)) { + + if (*index->name == TEMP_INDEX_PREFIX) { + row_merge_drop_index(index, table, trx); + trx_commit_for_mysql(trx); + } + } + } + + mtr_start(&mtr); + btr_pcur_restore_position(BTR_SEARCH_LEAF, + &pcur, &mtr); + } + + btr_pcur_close(&pcur); + mtr_commit(&mtr); row_mysql_unlock_data_dictionary(trx); trx_free_for_background(trx); } diff --git a/row/row0mysql.c b/row/row0mysql.c index 8585b816911..e520065ea04 100644 --- a/row/row0mysql.c +++ b/row/row0mysql.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2000, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 2000, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -485,7 +485,7 @@ next_column: /****************************************************************//** Handles user errors and lock waits detected by the database engine. @return TRUE if it was a lock wait and we should continue running the -query thread */ +query thread and in that case the thr is ALREADY in the running state. */ UNIV_INTERN ibool row_mysql_handle_errors( @@ -1461,7 +1461,7 @@ row_unlock_for_mysql( if (UNIV_UNLIKELY (!srv_locks_unsafe_for_binlog - && trx->isolation_level != TRX_ISO_READ_COMMITTED)) { + && trx->isolation_level > TRX_ISO_READ_COMMITTED)) { fprintf(stderr, "InnoDB: Error: calling row_unlock_for_mysql though\n" @@ -3258,19 +3258,13 @@ check_next_foreign: "END;\n" , FALSE, trx); - if (err != DB_SUCCESS) { - ut_a(err == DB_OUT_OF_FILE_SPACE); - - err = DB_MUST_GET_MORE_FILE_SPACE; - - row_mysql_handle_errors(&err, trx, NULL, NULL); - - ut_error; - } else { - ibool is_path; + switch (err) { + ibool is_temp; const char* name_or_path; mem_heap_t* heap; + case DB_SUCCESS: + heap = mem_heap_create(200); /* Clone the name, in case it has been allocated @@ -3280,12 +3274,13 @@ check_next_foreign: space_id = table->space; if (table->dir_path_of_temp_table != NULL) { - is_path = TRUE; name_or_path = mem_heap_strdup( heap, table->dir_path_of_temp_table); + is_temp = TRUE; } else { - is_path = FALSE; name_or_path = name; + is_temp = (table->flags >> DICT_TF2_SHIFT) + & DICT_TF2_TEMPORARY; } dict_table_remove_from_cache(table); @@ -3302,11 +3297,11 @@ check_next_foreign: /* Do not drop possible .ibd tablespace if something went wrong: we do not want to delete valuable data of the user */ - if (err == DB_SUCCESS && space_id > 0) { + if (err == DB_SUCCESS && !trx_sys_sys_space(space_id)) { if (!fil_space_for_table_exists_in_mem(space_id, name_or_path, - is_path, - FALSE, TRUE)) { + is_temp, FALSE, + !is_temp)) { err = DB_SUCCESS; fprintf(stderr, @@ -3335,7 +3330,27 @@ check_next_foreign: } mem_heap_free(heap); + break; + + case DB_TOO_MANY_CONCURRENT_TRXS: + /* Cannot even find a free slot for the + the undo log. We can directly exit here + and return the DB_TOO_MANY_CONCURRENT_TRXS + error. */ + break; + + case DB_OUT_OF_FILE_SPACE: + err = DB_MUST_GET_MORE_FILE_SPACE; + + row_mysql_handle_errors(&err, trx, NULL, NULL); + + /* Fall through to raise error */ + + default: + /* No other possible error returns */ + ut_error; } + funct_exit: if (locked_dictionary) { @@ -3351,6 +3366,90 @@ funct_exit: return((int) err); } +/*********************************************************************//** +Drop all temporary tables during crash recovery. */ +UNIV_INTERN +void +row_mysql_drop_temp_tables(void) +/*============================*/ +{ + trx_t* trx; + btr_pcur_t pcur; + mtr_t mtr; + mem_heap_t* heap; + + trx = trx_allocate_for_background(); + trx->op_info = "dropping temporary tables"; + row_mysql_lock_data_dictionary(trx); + + heap = mem_heap_create(200); + + mtr_start(&mtr); + + btr_pcur_open_at_index_side( + TRUE, + dict_table_get_first_index(dict_sys->sys_tables), + BTR_SEARCH_LEAF, &pcur, TRUE, &mtr); + + for (;;) { + const rec_t* rec; + const byte* field; + ulint len; + const char* table_name; + dict_table_t* table; + + btr_pcur_move_to_next_user_rec(&pcur, &mtr); + + if (!btr_pcur_is_on_user_rec(&pcur)) { + break; + } + + rec = btr_pcur_get_rec(&pcur); + field = rec_get_nth_field_old(rec, 4/*N_COLS*/, &len); + if (len != 4 || !(mach_read_from_4(field) & 0x80000000UL)) { + continue; + } + + /* Because this is not a ROW_FORMAT=REDUNDANT table, + the is_temp flag is valid. Examine it. */ + + field = rec_get_nth_field_old(rec, 7/*MIX_LEN*/, &len); + if (len != 4 + || !(mach_read_from_4(field) & DICT_TF2_TEMPORARY)) { + continue; + } + + /* This is a temporary table. */ + field = rec_get_nth_field_old(rec, 0/*NAME*/, &len); + if (len == UNIV_SQL_NULL || len == 0) { + /* Corrupted SYS_TABLES.NAME */ + continue; + } + + table_name = mem_heap_strdupl(heap, (const char*) field, len); + + btr_pcur_store_position(&pcur, &mtr); + btr_pcur_commit_specify_mtr(&pcur, &mtr); + + table = dict_load_table(table_name); + + if (table) { + row_drop_table_for_mysql(table_name, trx, FALSE); + trx_commit_for_mysql(trx); + } + + mtr_start(&mtr); + btr_pcur_restore_position(BTR_SEARCH_LEAF, + &pcur, &mtr); + } + + btr_pcur_close(&pcur); + mtr_commit(&mtr); + mem_heap_free(heap); + row_mysql_unlock_data_dictionary(trx); + trx_free_for_background(trx); +} + /*******************************************************************//** Drop all foreign keys in a database, see Bug#18942. Called at the end of row_drop_database_for_mysql(). @@ -3902,14 +4001,15 @@ Checks that the index contains entries in an ascending order, unique constraint is not broken, and calculates the number of index entries in the read view of the current transaction. @return TRUE if ok */ -static +UNIV_INTERN ibool -row_scan_and_check_index( -/*=====================*/ - row_prebuilt_t* prebuilt, /*!< in: prebuilt struct in MySQL */ - dict_index_t* index, /*!< in: index */ - ulint* n_rows) /*!< out: number of entries seen in the - current consistent read */ +row_check_index_for_mysql( +/*======================*/ + row_prebuilt_t* prebuilt, /*!< in: prebuilt struct + in MySQL handle */ + const dict_index_t* index, /*!< in: index */ + ulint* n_rows) /*!< out: number of entries + seen in the consistent read */ { dtuple_t* prev_entry = NULL; ulint matched_fields; @@ -3930,31 +4030,9 @@ row_scan_and_check_index( *n_rows = 0; - if (!row_merge_is_index_usable(prebuilt->trx, index)) { - /* A newly created index may lack some delete-marked - records that may exist in the read view of - prebuilt->trx. Thus, such indexes must not be - accessed by consistent read. */ - return(is_ok); - } - buf = mem_alloc(UNIV_PAGE_SIZE); heap = mem_heap_create(100); - /* Make a dummy template in prebuilt, which we will use - in scanning the index entries */ - - prebuilt->index = index; - /* row_merge_is_index_usable() was already checked above. */ - prebuilt->index_usable = TRUE; - prebuilt->sql_stat_start = TRUE; - prebuilt->template_type = ROW_MYSQL_DUMMY_TEMPLATE; - prebuilt->n_template = 0; - prebuilt->need_to_access_clustered = FALSE; - - dtuple_set_n_fields(prebuilt->search_tuple, 0); - - prebuilt->select_lock_type = LOCK_NONE; cnt = 1000; ret = row_search_for_mysql(buf, PAGE_CUR_G, prebuilt, 0, 0); @@ -4072,119 +4150,6 @@ not_ok: goto loop; } -/*********************************************************************//** -Checks a table for corruption. -@return DB_ERROR or DB_SUCCESS */ -UNIV_INTERN -ulint -row_check_table_for_mysql( -/*======================*/ - row_prebuilt_t* prebuilt) /*!< in: prebuilt struct in MySQL - handle */ -{ - dict_table_t* table = prebuilt->table; - dict_index_t* index; - ulint n_rows; - ulint n_rows_in_table = ULINT_UNDEFINED; - ulint ret = DB_SUCCESS; - ulint old_isolation_level; - - if (table->ibd_file_missing) { - ut_print_timestamp(stderr); - fprintf(stderr, " InnoDB: Error:\n" - "InnoDB: MySQL is trying to use a table handle" - " but the .ibd file for\n" - "InnoDB: table %s does not exist.\n" - "InnoDB: Have you deleted the .ibd file" - " from the database directory under\n" - "InnoDB: the MySQL datadir, or have you" - " used DISCARD TABLESPACE?\n" - "InnoDB: Look from\n" - "InnoDB: " REFMAN "innodb-troubleshooting.html\n" - "InnoDB: how you can resolve the problem.\n", - table->name); - return(DB_ERROR); - } - - prebuilt->trx->op_info = "checking table"; - - old_isolation_level = prebuilt->trx->isolation_level; - - /* We must run the index record counts at an isolation level - >= READ COMMITTED, because a dirty read can see a wrong number - of records in some index; to play safe, we use always - REPEATABLE READ here */ - - prebuilt->trx->isolation_level = TRX_ISO_REPEATABLE_READ; - - /* Enlarge the fatal lock wait timeout during CHECK TABLE. */ - mutex_enter(&kernel_mutex); - srv_fatal_semaphore_wait_threshold += 7200; /* 2 hours */ - mutex_exit(&kernel_mutex); - - index = dict_table_get_first_index(table); - - while (index != NULL) { - /* fputs("Validating index ", stderr); - ut_print_name(stderr, trx, FALSE, index->name); - putc('\n', stderr); */ - - if (!btr_validate_index(index, prebuilt->trx)) { - ret = DB_ERROR; - } else { - if (!row_scan_and_check_index(prebuilt,index, &n_rows)){ - ret = DB_ERROR; - } - - if (trx_is_interrupted(prebuilt->trx)) { - ret = DB_INTERRUPTED; - break; - } - - /* fprintf(stderr, "%lu entries in index %s\n", n_rows, - index->name); */ - - if (index == dict_table_get_first_index(table)) { - n_rows_in_table = n_rows; - } else if (n_rows != n_rows_in_table) { - - ret = DB_ERROR; - - fputs("Error: ", stderr); - dict_index_name_print(stderr, - prebuilt->trx, index); - fprintf(stderr, - " contains %lu entries," - " should be %lu\n", - (ulong) n_rows, - (ulong) n_rows_in_table); - } - } - - index = dict_table_get_next_index(index); - } - - /* Restore the original isolation level */ - prebuilt->trx->isolation_level = old_isolation_level; - - /* We validate also the whole adaptive hash index for all tables - at every CHECK TABLE */ - - if (!btr_search_validate()) { - - ret = DB_ERROR; - } - - /* Restore the fatal lock wait timeout after CHECK TABLE. */ - mutex_enter(&kernel_mutex); - srv_fatal_semaphore_wait_threshold -= 7200; /* 2 hours */ - mutex_exit(&kernel_mutex); - - prebuilt->trx->op_info = ""; - - return(ret); -} - /*********************************************************************//** Determines if a table is a magic monitor table. @return TRUE if monitor table */ diff --git a/row/row0row.c b/row/row0row.c index 128ac3ba3e8..cb7dfa2b7c9 100644 --- a/row/row0row.c +++ b/row/row0row.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -915,6 +915,10 @@ row_raw_format( ret = row_raw_format_int(data, data_len, prtype, buf, buf_size, &format_in_hex); + if (format_in_hex) { + + goto format_in_hex; + } break; case DATA_CHAR: case DATA_VARCHAR: @@ -923,14 +927,15 @@ row_raw_format( ret = row_raw_format_str(data, data_len, prtype, buf, buf_size, &format_in_hex); + if (format_in_hex) { + + goto format_in_hex; + } + break; /* XXX support more data types */ default: - - format_in_hex = TRUE; - } - - if (format_in_hex) { + format_in_hex: if (UNIV_LIKELY(buf_size > 2)) { diff --git a/row/row0sel.c b/row/row0sel.c index 6dbffa34cbb..000cc3586fd 100644 --- a/row/row0sel.c +++ b/row/row0sel.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1997, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2008, Google Inc. Portions of this file contain modifications contributed and copyrighted by @@ -132,7 +132,8 @@ index record. NOTE: the comparison is NOT done as a binary comparison, but character fields are compared with collation! @return TRUE if the secondary record is equal to the corresponding -fields in the clustered record, when compared with collation */ +fields in the clustered record, when compared with collation; +FALSE if not equal or if the clustered record has been marked for deletion */ static ibool row_sel_sec_rec_is_for_clust_rec( @@ -431,10 +432,6 @@ row_sel_fetch_columns( data = rec_get_nth_field(rec, offsets, field_no, &len); - if (len == UNIV_SQL_NULL) { - len = UNIV_SQL_NULL; - } - needs_copy = column->copy_val; } @@ -855,7 +852,7 @@ row_sel_get_clust_rec( trx = thr_get_trx(thr); if (srv_locks_unsafe_for_binlog - || trx->isolation_level == TRX_ISO_READ_COMMITTED) { + || trx->isolation_level <= TRX_ISO_READ_COMMITTED) { lock_type = LOCK_REC_NOT_GAP; } else { lock_type = LOCK_ORDINARY; @@ -1468,7 +1465,7 @@ rec_loop: if (srv_locks_unsafe_for_binlog || trx->isolation_level - == TRX_ISO_READ_COMMITTED) { + <= TRX_ISO_READ_COMMITTED) { if (page_rec_is_supremum(next_rec)) { @@ -1525,7 +1522,7 @@ skip_lock: trx = thr_get_trx(thr); if (srv_locks_unsafe_for_binlog - || trx->isolation_level == TRX_ISO_READ_COMMITTED) { + || trx->isolation_level <= TRX_ISO_READ_COMMITTED) { if (page_rec_is_supremum(rec)) { @@ -2170,36 +2167,6 @@ row_fetch_print( return((void*)42); } -/****************************************************************//** -Callback function for fetch that stores an unsigned 4 byte integer to the -location pointed. The column's type must be DATA_INT, DATA_UNSIGNED, length -= 4. -@return always returns NULL */ -UNIV_INTERN -void* -row_fetch_store_uint4( -/*==================*/ - void* row, /*!< in: sel_node_t* */ - void* user_arg) /*!< in: data pointer */ -{ - sel_node_t* node = row; - ib_uint32_t* val = user_arg; - ulint tmp; - - dfield_t* dfield = que_node_get_val(node->select_list); - const dtype_t* type = dfield_get_type(dfield); - ulint len = dfield_get_len(dfield); - - ut_a(dtype_get_mtype(type) == DATA_INT); - ut_a(dtype_get_prtype(type) & DATA_UNSIGNED); - ut_a(len == 4); - - tmp = mach_read_from_4(dfield_get_data(dfield)); - *val = (ib_uint32_t) tmp; - - return(NULL); -} - /***********************************************************//** Prints a row in a select result. @return query thread to run next or NULL */ @@ -2981,6 +2948,7 @@ row_sel_get_clust_rec_for_mysql( if (clust_rec && (old_vers + || trx->isolation_level <= TRX_ISO_READ_UNCOMMITTED || rec_get_deleted_flag(rec, dict_table_is_comp( sec_index->table))) && !row_sel_sec_rec_is_for_clust_rec( @@ -3202,14 +3170,17 @@ row_sel_try_search_shortcut_for_mysql( ut_ad(dict_index_is_clust(index)); ut_ad(!prebuilt->templ_contains_blob); +#ifndef UNIV_SEARCH_DEBUG btr_pcur_open_with_no_init(index, search_tuple, PAGE_CUR_GE, BTR_SEARCH_LEAF, pcur, -#ifndef UNIV_SEARCH_DEBUG RW_S_LATCH, -#else - 0, -#endif mtr); +#else /* UNIV_SEARCH_DEBUG */ + btr_pcur_open_with_no_init(index, search_tuple, PAGE_CUR_GE, + BTR_SEARCH_LEAF, pcur, + 0, + mtr); +#endif /* UNIV_SEARCH_DEBUG */ rec = btr_pcur_get_rec(pcur); if (!page_rec_is_user_rec(rec)) { @@ -3694,7 +3665,7 @@ shortcut_fails_too_big_rec: && !page_rec_is_supremum(rec) && set_also_gap_locks && !(srv_locks_unsafe_for_binlog - || trx->isolation_level == TRX_ISO_READ_COMMITTED) + || trx->isolation_level <= TRX_ISO_READ_COMMITTED) && prebuilt->select_lock_type != LOCK_NONE) { /* Try to place a gap lock on the next index record @@ -3797,7 +3768,7 @@ rec_loop: if (set_also_gap_locks && !(srv_locks_unsafe_for_binlog - || trx->isolation_level == TRX_ISO_READ_COMMITTED) + || trx->isolation_level <= TRX_ISO_READ_COMMITTED) && prebuilt->select_lock_type != LOCK_NONE) { /* Try to place a lock on the index record */ @@ -3931,7 +3902,7 @@ wrong_offs: if (set_also_gap_locks && !(srv_locks_unsafe_for_binlog || trx->isolation_level - == TRX_ISO_READ_COMMITTED) + <= TRX_ISO_READ_COMMITTED) && prebuilt->select_lock_type != LOCK_NONE) { /* Try to place a gap lock on the index @@ -3967,7 +3938,7 @@ wrong_offs: if (set_also_gap_locks && !(srv_locks_unsafe_for_binlog || trx->isolation_level - == TRX_ISO_READ_COMMITTED) + <= TRX_ISO_READ_COMMITTED) && prebuilt->select_lock_type != LOCK_NONE) { /* Try to place a gap lock on the index @@ -4015,7 +3986,7 @@ wrong_offs: if (!set_also_gap_locks || srv_locks_unsafe_for_binlog - || trx->isolation_level == TRX_ISO_READ_COMMITTED + || trx->isolation_level <= TRX_ISO_READ_COMMITTED || (unique_search && !UNIV_UNLIKELY(rec_get_deleted_flag(rec, comp)))) { @@ -4054,7 +4025,7 @@ no_gap_lock: const rec_t* old_vers; case DB_SUCCESS: if (srv_locks_unsafe_for_binlog - || trx->isolation_level == TRX_ISO_READ_COMMITTED) { + || trx->isolation_level <= TRX_ISO_READ_COMMITTED) { /* Note that a record of prebuilt->index was locked. */ prebuilt->new_rec_locks = 1; @@ -4063,6 +4034,7 @@ no_gap_lock: case DB_LOCK_WAIT: if (UNIV_LIKELY(prebuilt->row_read_type != ROW_READ_TRY_SEMI_CONSISTENT) + || unique_search || index != clust_index) { goto lock_wait_or_error; @@ -4186,7 +4158,7 @@ no_gap_lock: /* The record is delete-marked: we can skip it */ if ((srv_locks_unsafe_for_binlog - || trx->isolation_level == TRX_ISO_READ_COMMITTED) + || trx->isolation_level <= TRX_ISO_READ_COMMITTED) && prebuilt->select_lock_type != LOCK_NONE && !did_semi_consistent_read) { @@ -4253,7 +4225,7 @@ requires_clust_rec: } if ((srv_locks_unsafe_for_binlog - || trx->isolation_level == TRX_ISO_READ_COMMITTED) + || trx->isolation_level <= TRX_ISO_READ_COMMITTED) && prebuilt->select_lock_type != LOCK_NONE) { /* Note that both the secondary index record and the clustered index record were locked. */ @@ -4266,7 +4238,7 @@ requires_clust_rec: /* The record is delete marked: we can skip it */ if ((srv_locks_unsafe_for_binlog - || trx->isolation_level == TRX_ISO_READ_COMMITTED) + || trx->isolation_level <= TRX_ISO_READ_COMMITTED) && prebuilt->select_lock_type != LOCK_NONE) { /* No need to keep a lock on a delete-marked @@ -4477,7 +4449,7 @@ lock_wait_or_error: moves_up, &mtr); if ((srv_locks_unsafe_for_binlog - || trx->isolation_level == TRX_ISO_READ_COMMITTED) + || trx->isolation_level <= TRX_ISO_READ_COMMITTED) && !same_user_rec) { /* Since we were not able to restore the cursor @@ -4623,6 +4595,7 @@ row_search_autoinc_read_column( dict_index_t* index, /*!< in: index to read from */ const rec_t* rec, /*!< in: current rec */ ulint col_no, /*!< in: column number */ + ulint mtype, /*!< in: column main type */ ibool unsigned_type) /*!< in: signed or unsigned flag */ { ulint len; @@ -4639,10 +4612,26 @@ row_search_autoinc_read_column( data = rec_get_nth_field(rec, offsets, col_no, &len); ut_a(len != UNIV_SQL_NULL); - ut_a(len <= sizeof value); - /* we assume AUTOINC value cannot be negative */ - value = mach_read_int_type(data, len, unsigned_type); + switch (mtype) { + case DATA_INT: + ut_a(len <= sizeof value); + value = mach_read_int_type(data, len, unsigned_type); + break; + + case DATA_FLOAT: + ut_a(len == sizeof(float)); + value = (ib_uint64_t) mach_float_read(data); + break; + + case DATA_DOUBLE: + ut_a(len == sizeof(double)); + value = (ib_uint64_t) mach_double_read(data); + break; + + default: + ut_error; + } if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); @@ -4728,7 +4717,8 @@ row_search_max_autoinc( dfield->col->prtype & DATA_UNSIGNED); *value = row_search_autoinc_read_column( - index, rec, i, unsigned_type); + index, rec, i, + dfield->col->mtype, unsigned_type); } } diff --git a/row/row0umod.c b/row/row0umod.c index 6be475d8c78..e7245dbee41 100644 --- a/row/row0umod.c +++ b/row/row0umod.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1997, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -144,13 +144,17 @@ row_undo_mod_clust_low( /***********************************************************//** Removes a clustered index record after undo if possible. +This is attempted when the record was inserted by updating a +delete-marked record and there no longer exist transactions +that would see the delete-marked record. In other words, we +roll back the insert by purging the record. @return DB_SUCCESS, DB_FAIL, or error code: we may run out of file space */ static ulint row_undo_mod_remove_clust_low( /*==========================*/ undo_node_t* node, /*!< in: row undo node */ - que_thr_t* thr __attribute__((unused)), /*!< in: query thread */ + que_thr_t* thr, /*!< in: query thread */ mtr_t* mtr, /*!< in: mtr */ ulint mode) /*!< in: BTR_MODIFY_LEAF or BTR_MODIFY_TREE */ { @@ -159,6 +163,7 @@ row_undo_mod_remove_clust_low( ulint err; ibool success; + ut_ad(node->rec_type == TRX_UNDO_UPD_DEL_REC); pcur = &(node->pcur); btr_cur = btr_pcur_get_btr_cur(pcur); @@ -190,11 +195,13 @@ row_undo_mod_remove_clust_low( } else { ut_ad(mode == BTR_MODIFY_TREE); - /* Note that since this operation is analogous to purge, - we can free also inherited externally stored fields: - hence the RB_NONE in the call below */ + /* This operation is analogous to purge, we can free also + inherited externally stored fields */ - btr_cur_pessimistic_delete(&err, FALSE, btr_cur, RB_NONE, mtr); + btr_cur_pessimistic_delete(&err, FALSE, btr_cur, + thr_is_recv(thr) + ? RB_RECOVERY_PURGE_REC + : RB_NONE, mtr); /* The delete operation may fail if we have little file space left: TODO: easiest to crash the database @@ -370,10 +377,11 @@ row_undo_mod_del_mark_or_remove_sec_low( } else { ut_ad(mode == BTR_MODIFY_TREE); - /* No need to distinguish RB_RECOVERY here, because we - are deleting a secondary index record: the distinction - between RB_NORMAL and RB_RECOVERY only matters when - deleting a record that contains externally stored + /* No need to distinguish RB_RECOVERY_PURGE here, + because we are deleting a secondary index record: + the distinction between RB_NORMAL and + RB_RECOVERY_PURGE only matters when deleting a + record that contains externally stored columns. */ ut_ad(!dict_index_is_clust(index)); btr_cur_pessimistic_delete(&err, FALSE, btr_cur, @@ -438,7 +446,7 @@ row_undo_mod_del_unmark_sec_and_undo_update( BTR_MODIFY_TREE */ que_thr_t* thr, /*!< in: query thread */ dict_index_t* index, /*!< in: index */ - dtuple_t* entry) /*!< in: index entry */ + const dtuple_t* entry) /*!< in: index entry */ { mem_heap_t* heap; btr_pcur_t pcur; @@ -533,6 +541,7 @@ row_undo_mod_upd_del_sec( dict_index_t* index; ulint err = DB_SUCCESS; + ut_ad(node->rec_type == TRX_UNDO_UPD_DEL_REC); heap = mem_heap_create(1024); while (node->index != NULL) { @@ -550,7 +559,7 @@ row_undo_mod_upd_del_sec( does not exist. However, this situation may only occur during the rollback of incomplete transactions. */ - ut_a(trx_is_recv(thr_get_trx(thr))); + ut_a(thr_is_recv(thr)); } else { err = row_undo_mod_del_mark_or_remove_sec( node, thr, index, entry); diff --git a/row/row0upd.c b/row/row0upd.c index 58dfd43ead9..95d1d00aeef 100644 --- a/row/row0upd.c +++ b/row/row0upd.c @@ -1344,9 +1344,6 @@ row_upd_copy_columns( data = rec_get_nth_field(rec, offsets, column->field_nos[SYM_CLUST_FIELD_NO], &len); - if (len == UNIV_SQL_NULL) { - len = UNIV_SQL_NULL; - } eval_node_copy_and_alloc_val(column, data, len); column = UT_LIST_GET_NEXT(col_var_list, column); diff --git a/srv/srv0srv.c b/srv/srv0srv.c index 4ed465997e5..56107db60d8 100644 --- a/srv/srv0srv.c +++ b/srv/srv0srv.c @@ -1,7 +1,8 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2008, 2009 Google Inc. +Copyright (c) 2009, Percona Inc. Portions of this file contain modifications contributed and copyrighted by Google, Inc. Those modifications are gratefully acknowledged and are described @@ -9,6 +10,13 @@ briefly in the InnoDB documentation. The contributions by Google are incorporated with their permission, and subject to the conditions contained in the file COPYING.Google. +Portions of this file contain modifications contributed and copyrighted +by Percona Inc.. Those modifications are +gratefully acknowledged and are described briefly in the InnoDB +documentation. The contributions by Percona Inc. are incorporated with +their permission, and subject to the conditions contained in the file +COPYING.Percona. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. @@ -22,32 +30,6 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *****************************************************************************/ -/*********************************************************************** - -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. -Copyright (c) 2009, Percona Inc. - -Portions of this file contain modifications contributed and copyrighted -by Percona Inc.. Those modifications are -gratefully acknowledged and are described briefly in the InnoDB -documentation. The contributions by Percona Inc. are incorporated with -their permission, and subject to the conditions contained in the file -COPYING.Percona. - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -***********************************************************************/ /**************************************************//** @file srv/srv0srv.c @@ -122,7 +104,8 @@ UNIV_INTERN ulint srv_fatal_semaphore_wait_threshold = 600; in microseconds, in order to reduce the lagging of the purge thread. */ UNIV_INTERN ulint srv_dml_needed_delay = 0; -UNIV_INTERN ibool srv_lock_timeout_and_monitor_active = FALSE; +UNIV_INTERN ibool srv_lock_timeout_active = FALSE; +UNIV_INTERN ibool srv_monitor_active = FALSE; UNIV_INTERN ibool srv_error_monitor_active = FALSE; UNIV_INTERN const char* srv_main_thread_op_info = ""; @@ -162,9 +145,10 @@ UNIV_INTERN char** srv_data_file_names = NULL; /* size in database pages */ UNIV_INTERN ulint* srv_data_file_sizes = NULL; +UNIV_INTERN char* srv_doublewrite_file = NULL; + UNIV_INTERN ibool srv_extra_undoslots = FALSE; -UNIV_INTERN ibool srv_fast_recovery = FALSE; UNIV_INTERN ibool srv_recovery_stats = FALSE; UNIV_INTERN ulint srv_use_purge_thread = 0; @@ -198,11 +182,20 @@ UNIV_INTERN ulong srv_flush_log_at_trx_commit = 1; the checkpoints. */ UNIV_INTERN char srv_adaptive_flushing = TRUE; -UNIV_INTERN ulint srv_show_locks_held = 10; -UNIV_INTERN ulint srv_show_verbose_locks = 0; +UNIV_INTERN ulint srv_show_locks_held = 10; +UNIV_INTERN ulint srv_show_verbose_locks = 0; +/** Maximum number of times allowed to conditionally acquire +mutex before switching to blocking wait on the mutex */ +#define MAX_MUTEX_NOWAIT 20 -/* The sort order table of the MySQL latin1_swedish_ci character set +/** Check whether the number of failed nonblocking mutex +acquisition attempts exceeds maximum allowed value. If so, +srv_printf_innodb_monitor() will request mutex acquisition +with mutex_enter(), which will wait until it gets the mutex. */ +#define MUTEX_NOWAIT(mutex_skipped) ((mutex_skipped) < MAX_MUTEX_NOWAIT) + +/** The sort order table of the MySQL latin1_swedish_ci character set collation */ UNIV_INTERN const byte* srv_latin1_ordering; @@ -410,7 +403,6 @@ UNIV_INTERN ulint srv_read_ahead = 3; /* 1: random 2: linear 3: Both */ UNIV_INTERN ulint srv_adaptive_checkpoint = 0; /* 0: none 1: reflex 2: estimate */ UNIV_INTERN ulint srv_expand_import = 0; /* 0:disable 1:enable */ -UNIV_INTERN ulint srv_relax_table_creation = 0; /* 0:disable 1:enable */ UNIV_INTERN ulint srv_pass_corrupt_table = 0; /* 0:disable 1:enable */ UNIV_INTERN ulint srv_extra_rsegments = 0; /* extra rseg for users */ @@ -439,7 +431,7 @@ static ulint srv_n_rows_inserted_old = 0; static ulint srv_n_rows_updated_old = 0; static ulint srv_n_rows_deleted_old = 0; static ulint srv_n_rows_read_old = 0; - +UNIV_INTERN ulint srv_n_lock_deadlock_count = 0; UNIV_INTERN ulint srv_n_lock_wait_count = 0; UNIV_INTERN ulint srv_n_lock_wait_current_count = 0; UNIV_INTERN ib_int64_t srv_n_lock_wait_time = 0; @@ -1766,8 +1758,9 @@ srv_suspend_mysql_thread( innodb_lock_wait_timeout, because trx->mysql_thd == NULL. */ lock_wait_timeout = thd_lock_wait_timeout(trx->mysql_thd); - if (lock_wait_timeout < 100000000 - && wait_time > (double) lock_wait_timeout) { + if (trx_is_interrupted(trx) + || (lock_wait_timeout < 100000000 + && wait_time > (double) lock_wait_timeout)) { trx->error_state = DB_LOCK_WAIT_TIMEOUT; } @@ -1833,12 +1826,15 @@ srv_refresh_innodb_monitor_stats(void) } /******************************************************************//** -Outputs to a file the output of the InnoDB Monitor. */ +Outputs to a file the output of the InnoDB Monitor. +@return FALSE if not all information printed +due to failure to obtain necessary mutex */ UNIV_INTERN -void +ibool srv_printf_innodb_monitor( /*======================*/ FILE* file, /*!< in: output stream */ + ibool nowait, /*!< in: whether to wait for kernel mutex */ ulint* trx_start, /*!< out: file position of the start of the list of active transactions */ ulint* trx_end) /*!< out: file position of the end of @@ -1847,6 +1843,7 @@ srv_printf_innodb_monitor( double time_elapsed; time_t current_time; ulint n_reserved; + ibool ret; ulint btr_search_sys_subtotal; ulint lock_sys_subtotal; @@ -1878,9 +1875,9 @@ srv_printf_innodb_monitor( "Per second averages calculated from the last %lu seconds\n", (ulong)time_elapsed); - fputs("----------\n" - "BACKGROUND THREAD\n" - "----------\n", file); + fputs("-----------------\n" + "BACKGROUND THREAD\n" + "-----------------\n", file); srv_print_master_thread_info(file); fputs("----------\n" @@ -2070,22 +2067,28 @@ srv_printf_innodb_monitor( srv_n_rows_deleted_old = srv_n_rows_deleted; srv_n_rows_read_old = srv_n_rows_read; - lock_print_info_summary(file); - if (trx_start) { - long t = ftell(file); - if (t < 0) { - *trx_start = ULINT_UNDEFINED; - } else { - *trx_start = (ulint) t; + /* Only if lock_print_info_summary proceeds correctly, + before we call the lock_print_info_all_transactions + to print all the lock information. */ + ret = lock_print_info_summary(file, nowait); + + if (ret) { + if (trx_start) { + long t = ftell(file); + if (t < 0) { + *trx_start = ULINT_UNDEFINED; + } else { + *trx_start = (ulint) t; + } } - } - lock_print_info_all_transactions(file); - if (trx_end) { - long t = ftell(file); - if (t < 0) { - *trx_end = ULINT_UNDEFINED; - } else { - *trx_end = (ulint) t; + lock_print_info_all_transactions(file); + if (trx_end) { + long t = ftell(file); + if (t < 0) { + *trx_end = ULINT_UNDEFINED; + } else { + *trx_end = (ulint) t; + } } } @@ -2094,6 +2097,8 @@ srv_printf_innodb_monitor( "============================\n", file); mutex_exit(&srv_innodb_monitor_mutex); fflush(file); + + return(ret); } /******************************************************************//** @@ -2134,6 +2139,8 @@ srv_export_innodb_status(void) = UT_LIST_GET_LEN(buf_pool->flush_list); export_vars.innodb_buffer_pool_pages_free = UT_LIST_GET_LEN(buf_pool->free); + export_vars.innodb_deadlocks + = srv_n_lock_deadlock_count; #ifdef UNIV_DEBUG export_vars.innodb_buffer_pool_pages_latched = buf_get_latched_pages_number(); @@ -2182,26 +2189,23 @@ srv_export_innodb_status(void) } /*********************************************************************//** -A thread which wakes up threads whose lock wait may have lasted too long. -This also prints the info output by various InnoDB monitors. +A thread which prints the info output by various InnoDB monitors. @return a dummy parameter */ UNIV_INTERN os_thread_ret_t -srv_lock_timeout_and_monitor_thread( -/*================================*/ +srv_monitor_thread( +/*===============*/ void* arg __attribute__((unused))) /*!< in: a dummy parameter required by os_thread_create */ { - srv_slot_t* slot; double time_elapsed; time_t current_time; time_t last_table_monitor_time; time_t last_tablespace_monitor_time; time_t last_monitor_time; - ibool some_waits; - double wait_time; - ulint i; + ulint mutex_skipped; + ibool last_srv_print_monitor; #ifdef UNIV_DEBUG_THREAD_CREATION fprintf(stderr, "Lock timeout thread starts, id %lu\n", @@ -2212,13 +2216,15 @@ srv_lock_timeout_and_monitor_thread( last_table_monitor_time = time(NULL); last_tablespace_monitor_time = time(NULL); last_monitor_time = time(NULL); + mutex_skipped = 0; + last_srv_print_monitor = srv_print_innodb_monitor; loop: - srv_lock_timeout_and_monitor_active = TRUE; + srv_monitor_active = TRUE; - /* When someone is waiting for a lock, we wake up every second - and check if a timeout has passed for a lock wait */ + /* Wake up every 5 seconds to see if we need to print + monitor information. */ - os_thread_sleep(1000000); + os_thread_sleep(5000000); current_time = time(NULL); @@ -2228,14 +2234,40 @@ loop: last_monitor_time = time(NULL); if (srv_print_innodb_monitor) { - srv_printf_innodb_monitor(stderr, NULL, NULL); + /* Reset mutex_skipped counter everytime + srv_print_innodb_monitor changes. This is to + ensure we will not be blocked by kernel_mutex + for short duration information printing, + such as requested by sync_array_print_long_waits() */ + if (!last_srv_print_monitor) { + mutex_skipped = 0; + last_srv_print_monitor = TRUE; + } + + if (!srv_printf_innodb_monitor(stderr, + MUTEX_NOWAIT(mutex_skipped), + NULL, NULL)) { + mutex_skipped++; + } else { + /* Reset the counter */ + mutex_skipped = 0; + } + } else { + last_srv_print_monitor = FALSE; } + if (srv_innodb_status) { mutex_enter(&srv_monitor_file_mutex); rewind(srv_monitor_file); - srv_printf_innodb_monitor(srv_monitor_file, NULL, - NULL); + if (!srv_printf_innodb_monitor(srv_monitor_file, + MUTEX_NOWAIT(mutex_skipped), + NULL, NULL)) { + mutex_skipped++; + } else { + mutex_skipped = 0; + } + os_file_set_eof(srv_monitor_file); mutex_exit(&srv_monitor_file_mutex); } @@ -2288,6 +2320,56 @@ loop: } } + if (srv_shutdown_state >= SRV_SHUTDOWN_CLEANUP) { + goto exit_func; + } + + if (srv_print_innodb_monitor + || srv_print_innodb_lock_monitor + || srv_print_innodb_tablespace_monitor + || srv_print_innodb_table_monitor) { + goto loop; + } + + srv_monitor_active = FALSE; + + goto loop; + +exit_func: + srv_monitor_active = FALSE; + + /* We count the number of threads in os_thread_exit(). A created + thread should always use that to exit and not use return() to exit. */ + + os_thread_exit(NULL); + + OS_THREAD_DUMMY_RETURN; +} + +/*********************************************************************//** +A thread which wakes up threads whose lock wait may have lasted too long. +@return a dummy parameter */ +UNIV_INTERN +os_thread_ret_t +srv_lock_timeout_thread( +/*====================*/ + void* arg __attribute__((unused))) + /* in: a dummy parameter required by + os_thread_create */ +{ + srv_slot_t* slot; + ibool some_waits; + double wait_time; + ulint i; + +loop: + /* When someone is waiting for a lock, we wake up every second + and check if a timeout has passed for a lock wait */ + + os_thread_sleep(1000000); + + srv_lock_timeout_active = TRUE; + mutex_enter(&kernel_mutex); some_waits = FALSE; @@ -2311,9 +2393,10 @@ loop: lock_wait_timeout = thd_lock_wait_timeout( trx->mysql_thd); - if (lock_wait_timeout < 100000000 - && (wait_time > (double) lock_wait_timeout - || wait_time < 0)) { + if (trx_is_interrupted(trx) + || (lock_wait_timeout < 100000000 + && (wait_time > (double) lock_wait_timeout + || wait_time < 0))) { /* Timeout exceeded or a wrap-around in system time counter: cancel the lock request queued @@ -2338,17 +2421,11 @@ loop: goto exit_func; } - if (some_waits || srv_print_innodb_monitor - || srv_print_innodb_lock_monitor - || srv_print_innodb_tablespace_monitor - || srv_print_innodb_table_monitor) { + if (some_waits) { goto loop; } - /* No one was waiting for a lock and no monitor was active: - suspend this thread */ - - srv_lock_timeout_and_monitor_active = FALSE; + srv_lock_timeout_active = FALSE; #if 0 /* The following synchronisation is disabled, since @@ -2358,7 +2435,7 @@ loop: goto loop; exit_func: - srv_lock_timeout_and_monitor_active = FALSE; + srv_lock_timeout_active = FALSE; /* We count the number of threads in os_thread_exit(). A created thread should always use that to exit and not use return() to exit. */ @@ -2707,7 +2784,10 @@ loop: BUF_FLUSH_LIST, n_flush, IB_ULONGLONG_MAX); - skip_sleep = TRUE; + + if (n_flush == PCT_IO(100)) { + skip_sleep = TRUE; + } } mutex_enter(&(log_sys->mutex)); diff --git a/srv/srv0start.c b/srv/srv0start.c index 26ece813c59..ef638058326 100644 --- a/srv/srv0start.c +++ b/srv/srv0start.c @@ -1,7 +1,8 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2008, Google Inc. +Copyright (c) 2009, Percona Inc. Portions of this file contain modifications contributed and copyrighted by Google, Inc. Those modifications are gratefully acknowledged and are described @@ -9,6 +10,13 @@ briefly in the InnoDB documentation. The contributions by Google are incorporated with their permission, and subject to the conditions contained in the file COPYING.Google. +Portions of this file contain modifications contributed and copyrighted +by Percona Inc.. Those modifications are +gratefully acknowledged and are described briefly in the InnoDB +documentation. The contributions by Percona Inc. are incorporated with +their permission, and subject to the conditions contained in the file +COPYING.Percona. + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. @@ -22,32 +30,6 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *****************************************************************************/ -/*********************************************************************** - -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. -Copyright (c) 2009, Percona Inc. - -Portions of this file contain modifications contributed and copyrighted -by Percona Inc.. Those modifications are -gratefully acknowledged and are described briefly in the InnoDB -documentation. The contributions by Percona Inc. are incorporated with -their permission, and subject to the conditions contained in the file -COPYING.Percona. - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU General Public License as published by the -Free Software Foundation; version 2 of the License. - -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -***********************************************************************/ /********************************************************************//** @file srv/srv0start.c @@ -105,6 +87,7 @@ Created 2/16/1996 Heikki Tuuri # include "btr0pcur.h" # include "thr0loc.h" # include "os0sync.h" /* for INNODB_RW_LOCKS_USE_ATOMICS */ +# include "zlib.h" /* for ZLIB_VERSION */ /** Log sequence number immediately after startup */ UNIV_INTERN ib_uint64_t srv_start_lsn; @@ -143,9 +126,9 @@ static mutex_t ios_mutex; static ulint ios; /** io_handler_thread parameters for thread identification */ -static ulint n[SRV_MAX_N_IO_THREADS + 5 + 64]; +static ulint n[SRV_MAX_N_IO_THREADS + 6 + 64]; /** io_handler_thread identifiers */ -static os_thread_id_t thread_ids[SRV_MAX_N_IO_THREADS + 5 + 64]; +static os_thread_id_t thread_ids[SRV_MAX_N_IO_THREADS + 6 + 64]; /** We use this mutex to test the return value of pthread_mutex_trylock on successful locking. HP-UX does NOT return 0, though Linux et al do. */ @@ -728,6 +711,7 @@ open_or_create_data_files( /*======================*/ ibool* create_new_db, /*!< out: TRUE if new database should be created */ + ibool* create_new_doublewrite_file, #ifdef UNIV_LOG_ARCHIVE ulint* min_arch_log_no,/*!< out: min of archived log numbers in data files */ @@ -760,6 +744,7 @@ open_or_create_data_files( *sum_of_new_sizes = 0; *create_new_db = FALSE; + *create_new_doublewrite_file = FALSE; srv_normalize_path_for_win(srv_data_home); @@ -992,6 +977,142 @@ skip_size_check: srv_data_file_is_raw_partition[i] != 0); } + /* special file for doublewrite buffer */ + if (srv_doublewrite_file) + { + srv_normalize_path_for_win(srv_doublewrite_file); + + fprintf(stderr, + "InnoDB: Notice: innodb_doublewrite_file is specified.\n" + "InnoDB: This is for expert only. Don't use if you don't understand what is it 'WELL'.\n" + "InnoDB: ### Don't specify older file than the last checkpoint ###\n" + "InnoDB: otherwise the older doublewrite buffer will break your data during recovery!\n"); + + strcpy(name, srv_doublewrite_file); + + /* First we try to create the file: if it already + exists, ret will get value FALSE */ + + files[i] = os_file_create(name, OS_FILE_CREATE, + OS_FILE_NORMAL, + OS_DATA_FILE, &ret); + + if (ret == FALSE && os_file_get_last_error(FALSE) + != OS_FILE_ALREADY_EXISTS +#ifdef UNIV_AIX + /* AIX 5.1 after security patch ML7 may have + errno set to 0 here, which causes our function + to return 100; work around that AIX problem */ + && os_file_get_last_error(FALSE) != 100 +#endif + ) { + fprintf(stderr, + "InnoDB: Error in creating" + " or opening %s\n", + name); + + return(DB_ERROR); + } + + if (ret == FALSE) { + /* We open the data file */ + + files[i] = os_file_create( + name, OS_FILE_OPEN, OS_FILE_NORMAL, + OS_DATA_FILE, &ret); + + if (!ret) { + fprintf(stderr, + "InnoDB: Error in opening %s\n", name); + os_file_get_last_error(TRUE); + + return(DB_ERROR); + } + + ret = os_file_get_size(files[i], &size, &size_high); + ut_a(ret); + /* Round size downward to megabytes */ + + rounded_size_pages + = (size / (1024 * 1024) + 4096 * size_high) + << (20 - UNIV_PAGE_SIZE_SHIFT); + + if (rounded_size_pages != TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9) { + + fprintf(stderr, + "InnoDB: Warning: doublewrite buffer file %s" + " is of a different size\n" + "InnoDB: %lu pages" + " (rounded down to MB)\n" + "InnoDB: than intended size" + " %lu pages...\n", + name, + (ulong) rounded_size_pages, + (ulong) TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9); + } + + fil_read_flushed_lsn_and_arch_log_no( + files[i], one_opened, +#ifdef UNIV_LOG_ARCHIVE + min_arch_log_no, max_arch_log_no, +#endif /* UNIV_LOG_ARCHIVE */ + min_flushed_lsn, max_flushed_lsn); + one_opened = TRUE; + } else { + /* We created the data file and now write it full of + zeros */ + + *create_new_doublewrite_file = TRUE; + + ut_print_timestamp(stderr); + fprintf(stderr, + " InnoDB: Doublewrite buffer file %s did not" + " exist: new to be created\n", + name); + + if (*create_new_db == FALSE) { + fprintf(stderr, + "InnoDB: Warning: Previous version's ibdata files may cause crash.\n" + " If you use that, please use the ibdata files of this version.\n"); + } + + ut_print_timestamp(stderr); + fprintf(stderr, + " InnoDB: Setting file %s size to %lu MB\n", + name, + (ulong) ((TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9) + >> (20 - UNIV_PAGE_SIZE_SHIFT))); + + fprintf(stderr, + "InnoDB: Database physically writes the" + " file full: wait...\n"); + + ret = os_file_set_size( + name, files[i], + srv_calc_low32(TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9), + srv_calc_high32(TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9)); + + if (!ret) { + fprintf(stderr, + "InnoDB: Error in creating %s:" + " probably out of disk space\n", name); + + return(DB_ERROR); + } + } + + ret = os_file_close(files[i]); + ut_a(ret); + + fil_space_create(name, TRX_DOUBLEWRITE_SPACE, 0, FIL_TABLESPACE); + + ut_a(fil_validate()); + + fil_node_create(name, TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9, TRX_DOUBLEWRITE_SPACE, FALSE); + + i++; + } + ios = 0; mutex_create(&ios_mutex, SYNC_NO_ORDER_CHECK); @@ -1010,6 +1131,7 @@ innobase_start_or_create_for_mysql(void) { buf_pool_t* ret; ibool create_new_db; + ibool create_new_doublewrite_file; ibool log_file_created; ibool log_created = FALSE; ibool log_opened = FALSE; @@ -1074,7 +1196,11 @@ innobase_start_or_create_for_mysql(void) #ifdef UNIV_IBUF_DEBUG fprintf(stderr, "InnoDB: !!!!!!!! UNIV_IBUF_DEBUG switched on !!!!!!!!!\n" - "InnoDB: Crash recovery will fail with UNIV_IBUF_DEBUG\n"); +# ifdef UNIV_IBUF_COUNT_DEBUG + "InnoDB: !!!!!!!! UNIV_IBUF_COUNT_DEBUG switched on !!!!!!!!!\n" + "InnoDB: Crash recovery will fail with UNIV_IBUF_COUNT_DEBUG\n" +# endif + ); #endif #ifdef UNIV_SYNC_DEBUG @@ -1101,7 +1227,15 @@ innobase_start_or_create_for_mysql(void) "InnoDB: The InnoDB memory heap is disabled\n"); } - fprintf(stderr, "InnoDB: %s\n", IB_ATOMICS_STARTUP_MSG); + fputs("InnoDB: " IB_ATOMICS_STARTUP_MSG + "\nInnoDB: Compressed tables use zlib " ZLIB_VERSION +#ifdef UNIV_ZIP_DEBUG + " with validation" +#endif /* UNIV_ZIP_DEBUG */ +#ifdef UNIV_ZIP_COPY + " and extra copying" +#endif /* UNIV_ZIP_COPY */ + "\n" , stderr); /* Since InnoDB does not currently clean up all its internal data structures in MySQL Embedded Server Library server_end(), we @@ -1388,6 +1522,7 @@ innobase_start_or_create_for_mysql(void) } err = open_or_create_data_files(&create_new_db, + &create_new_doublewrite_file, #ifdef UNIV_LOG_ARCHIVE &min_arch_log_no, &max_arch_log_no, #endif /* UNIV_LOG_ARCHIVE */ @@ -1504,6 +1639,14 @@ innobase_start_or_create_for_mysql(void) trx_sys_file_format_init(); + if (create_new_doublewrite_file) { + mtr_start(&mtr); + fsp_header_init(TRX_DOUBLEWRITE_SPACE, TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9, &mtr); + mtr_commit(&mtr); + + trx_sys_dummy_create(TRX_DOUBLEWRITE_SPACE); + } + if (create_new_db) { mtr_start(&mtr); fsp_header_init(0, sum_of_new_sizes, &mtr); @@ -1596,6 +1739,14 @@ innobase_start_or_create_for_mysql(void) dict_boot(); trx_sys_init_at_db_start(); + /* Initialize the fsp free limit global variable in the log + system */ + fsp_header_get_free_limit(); + + /* recv_recovery_from_checkpoint_finish needs trx lists which + are initialized in trx_sys_init_at_db_start(). */ + + recv_recovery_from_checkpoint_finish(); if (srv_force_recovery < SRV_FORCE_NO_IBUF_MERGE) { /* The following call is necessary for the insert buffer to work with multiple tablespaces. We must @@ -1611,26 +1762,14 @@ innobase_start_or_create_for_mysql(void) every table in the InnoDB data dictionary that has an .ibd file. - We also determine the maximum tablespace id used. - - TODO: We may have incomplete transactions in the - data dictionary tables. Does that harm the scanning of - the data dictionary below? */ + We also determine the maximum tablespace id used. */ dict_check_tablespaces_and_store_max_id( recv_needed_recovery); } srv_startup_is_before_trx_rollback_phase = FALSE; - - /* Initialize the fsp free limit global variable in the log - system */ - fsp_header_get_free_limit(); - - /* recv_recovery_from_checkpoint_finish needs trx lists which - are initialized in trx_sys_init_at_db_start(). */ - - recv_recovery_from_checkpoint_finish(); + recv_recovery_rollback_active(); /* It is possible that file_format tag has never been set. In this case we initialize it to minimum @@ -1679,15 +1818,18 @@ innobase_start_or_create_for_mysql(void) /* fprintf(stderr, "Max allowed record size %lu\n", page_get_free_space_of_empty() / 2); */ - /* Create the thread which watches the timeouts for lock waits - and prints InnoDB monitor info */ - - os_thread_create(&srv_lock_timeout_and_monitor_thread, NULL, + /* Create the thread which watches the timeouts for lock waits */ + os_thread_create(&srv_lock_timeout_thread, NULL, thread_ids + 2 + SRV_MAX_N_IO_THREADS); /* Create the thread which warns of long semaphore waits */ os_thread_create(&srv_error_monitor_thread, NULL, thread_ids + 3 + SRV_MAX_N_IO_THREADS); + + /* Create the thread which prints InnoDB monitor info */ + os_thread_create(&srv_monitor_thread, NULL, + thread_ids + 4 + SRV_MAX_N_IO_THREADS); + srv_is_being_started = FALSE; if (trx_doublewrite == NULL) { @@ -1712,13 +1854,13 @@ innobase_start_or_create_for_mysql(void) ulint i; os_thread_create(&srv_purge_thread, NULL, thread_ids - + (4 + SRV_MAX_N_IO_THREADS)); + + (5 + SRV_MAX_N_IO_THREADS)); for (i = 0; i < srv_use_purge_thread - 1; i++) { - n[5 + i + SRV_MAX_N_IO_THREADS] = i; /* using as index for arrays in purge_sys */ + n[6 + i + SRV_MAX_N_IO_THREADS] = i; /* using as index for arrays in purge_sys */ os_thread_create(&srv_purge_worker_thread, - n + (5 + i + SRV_MAX_N_IO_THREADS), - thread_ids + (5 + i + SRV_MAX_N_IO_THREADS)); + n + (6 + i + SRV_MAX_N_IO_THREADS), + thread_ids + (6 + i + SRV_MAX_N_IO_THREADS)); } } #ifdef UNIV_DEBUG @@ -1821,7 +1963,7 @@ innobase_start_or_create_for_mysql(void) if (srv_print_verbose_log) { ut_print_timestamp(stderr); fprintf(stderr, - " InnoDB Plugin %s started; " + " Percona XtraDB (http://www.percona.com) %s started; " "log sequence number %llu\n", INNODB_VERSION_STR, srv_start_lsn); } diff --git a/sync/sync0sync.c b/sync/sync0sync.c index 272492cb3e4..f23ece9805a 100644 --- a/sync/sync0sync.c +++ b/sync/sync0sync.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved. Copyright (c) 2008, Google Inc. Portions of this file contain modifications contributed and copyrighted by @@ -317,6 +317,15 @@ mutex_free( ut_a(mutex_get_lock_word(mutex) == 0); ut_a(mutex_get_waiters(mutex) == 0); +#ifdef UNIV_MEM_DEBUG + if (mutex == &mem_hash_mutex) { + ut_ad(UT_LIST_GET_LEN(mutex_list) == 1); + ut_ad(UT_LIST_GET_FIRST(mutex_list) == &mem_hash_mutex); + UT_LIST_REMOVE(list, mutex_list, mutex); + goto func_exit; + } +#endif /* UNIV_MEM_DEBUG */ + if (mutex != &mutex_list_mutex #ifdef UNIV_SYNC_DEBUG && mutex != &sync_thread_mutex @@ -338,7 +347,9 @@ mutex_free( } os_event_free(mutex->event); - +#ifdef UNIV_MEM_DEBUG +func_exit: +#endif /* UNIV_MEM_DEBUG */ #if !defined(HAVE_ATOMIC_BUILTINS) os_fast_mutex_free(&(mutex->os_fast_mutex)); #endif @@ -956,12 +967,62 @@ sync_thread_levels_contain( } /******************************************************************//** -Checks that the level array for the current thread is empty. -@return TRUE if empty except the exceptions specified below */ +Checks if the level array for the current thread contains a +mutex or rw-latch at the specified level. +@return a matching latch, or NULL if not found */ UNIV_INTERN -ibool -sync_thread_levels_empty_gen( -/*=========================*/ +void* +sync_thread_levels_contains( +/*========================*/ + ulint level) /*!< in: latching order level + (SYNC_DICT, ...)*/ +{ + sync_level_t* arr; + sync_thread_t* thread_slot; + sync_level_t* slot; + ulint i; + + if (!sync_order_checks_on) { + + return(NULL); + } + + mutex_enter(&sync_thread_mutex); + + thread_slot = sync_thread_level_arrays_find_slot(); + + if (thread_slot == NULL) { + + mutex_exit(&sync_thread_mutex); + + return(NULL); + } + + arr = thread_slot->levels; + + for (i = 0; i < SYNC_THREAD_N_LEVELS; i++) { + + slot = sync_thread_levels_get_nth(arr, i); + + if (slot->latch != NULL && slot->level == level) { + + mutex_exit(&sync_thread_mutex); + return(slot->latch); + } + } + + mutex_exit(&sync_thread_mutex); + + return(NULL); +} + +/******************************************************************//** +Checks that the level array for the current thread is empty. +@return a latch, or NULL if empty except the exceptions specified below */ +UNIV_INTERN +void* +sync_thread_levels_nonempty_gen( +/*============================*/ ibool dict_mutex_allowed) /*!< in: TRUE if dictionary mutex is allowed to be owned by the thread, also purge_is_running mutex is @@ -974,7 +1035,7 @@ sync_thread_levels_empty_gen( if (!sync_order_checks_on) { - return(TRUE); + return(NULL); } mutex_enter(&sync_thread_mutex); @@ -985,7 +1046,7 @@ sync_thread_levels_empty_gen( mutex_exit(&sync_thread_mutex); - return(TRUE); + return(NULL); } arr = thread_slot->levels; @@ -1002,13 +1063,13 @@ sync_thread_levels_empty_gen( mutex_exit(&sync_thread_mutex); ut_error; - return(FALSE); + return(slot->latch); } } mutex_exit(&sync_thread_mutex); - return(TRUE); + return(NULL); } /******************************************************************//** @@ -1385,6 +1446,12 @@ sync_close(void) mutex = UT_LIST_GET_FIRST(mutex_list); while (mutex) { +#ifdef UNIV_MEM_DEBUG + if (mutex == &mem_hash_mutex) { + mutex = UT_LIST_GET_NEXT(list, mutex); + continue; + } +#endif /* UNIV_MEM_DEBUG */ mutex_free(mutex); mutex = UT_LIST_GET_FIRST(mutex_list); } diff --git a/trx/trx0i_s.c b/trx/trx0i_s.c index 1b20eaabf42..c160eb2942a 100644 --- a/trx/trx0i_s.c +++ b/trx/trx0i_s.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2007, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 2007, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -28,11 +28,18 @@ table cache" for later retrieval. Created July 17, 2007 Vasil Dimov *******************************************************/ +/* Found during the build of 5.5.3 on Linux 2.4 and early 2.6 kernels: + The includes "univ.i" -> "my_global.h" cause a different path + to be taken further down with pthread functions and types, + so they must come first. + From the symptoms, this is related to bug#46587 in the MySQL bug DB. +*/ +#include "univ.i" + #include #include "mysql_addons.h" -#include "univ.i" #include "buf0buf.h" #include "dict0dict.h" #include "ha0storage.h" diff --git a/trx/trx0rec.c b/trx/trx0rec.c index 5097cf18dcd..f50e10ed756 100644 --- a/trx/trx0rec.c +++ b/trx/trx0rec.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -350,8 +350,13 @@ trx_undo_rec_get_col_val( ut_ad(*orig_len >= BTR_EXTERN_FIELD_REF_SIZE); ut_ad(*len > *orig_len); - ut_ad(*len >= REC_MAX_INDEX_COL_LEN + /* @see dtuple_convert_big_rec() */ + ut_ad(*len >= BTR_EXTERN_FIELD_REF_SIZE * 2); + /* we do not have access to index->table here + ut_ad(dict_table_get_format(index->table) >= DICT_TF_FORMAT_ZIP + || *len >= REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE); + */ *len += UNIV_EXTERN_STORAGE_FIELD; break; @@ -977,6 +982,7 @@ trx_undo_update_rec_get_update( fprintf(stderr, "\n" "InnoDB: n_fields = %lu, i = %lu, ptr %p\n", (ulong) n_fields, (ulong) i, ptr); + *upd = NULL; return(NULL); } @@ -1074,11 +1080,15 @@ trx_undo_rec_get_partial_row( /* If the prefix of this column is indexed, ensure that enough prefix is stored in the undo log record. */ - ut_a(ignore_prefix - || !col->ord_part - || dfield_get_len(dfield) - >= REC_MAX_INDEX_COL_LEN - + BTR_EXTERN_FIELD_REF_SIZE); + if (!ignore_prefix && col->ord_part) { + ut_a(dfield_get_len(dfield) + >= 2 * BTR_EXTERN_FIELD_REF_SIZE); + ut_a(dict_table_get_format(index->table) + >= DICT_TF_FORMAT_ZIP + || dfield_get_len(dfield) + >= REC_MAX_INDEX_COL_LEN + + BTR_EXTERN_FIELD_REF_SIZE); + } } } diff --git a/trx/trx0rseg.c b/trx/trx0rseg.c index 8d754788e2a..57b5611d624 100644 --- a/trx/trx0rseg.c +++ b/trx/trx0rseg.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software diff --git a/trx/trx0sys.c b/trx/trx0sys.c index 8ea34a8c81c..7f50973d65e 100644 --- a/trx/trx0sys.c +++ b/trx/trx0sys.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -402,6 +402,149 @@ start_again: goto start_again; } + + if (srv_doublewrite_file) { + /* the same doublewrite buffer to TRX_SYS_SPACE should exist. + check and create if not exist.*/ + + mtr_start(&mtr); + trx_doublewrite_buf_is_being_created = TRUE; + + block = buf_page_get(TRX_DOUBLEWRITE_SPACE, 0, TRX_SYS_PAGE_NO, + RW_X_LATCH, &mtr); + buf_block_dbg_add_level(block, SYNC_NO_ORDER_CHECK); + + doublewrite = buf_block_get_frame(block) + TRX_SYS_DOUBLEWRITE; + + if (mach_read_from_4(doublewrite + TRX_SYS_DOUBLEWRITE_MAGIC) + == TRX_SYS_DOUBLEWRITE_MAGIC_N) { + /* The doublewrite buffer has already been created: + just read in some numbers */ + + mtr_commit(&mtr); + } else { + fprintf(stderr, + "InnoDB: Doublewrite buffer not found in the doublewrite file:" + " creating new\n"); + + if (buf_pool_get_curr_size() + < ((2 * TRX_SYS_DOUBLEWRITE_BLOCK_SIZE + + FSP_EXTENT_SIZE / 2 + 100) + * UNIV_PAGE_SIZE)) { + fprintf(stderr, + "InnoDB: Cannot create doublewrite buffer:" + " you must\n" + "InnoDB: increase your buffer pool size.\n" + "InnoDB: Cannot continue operation.\n"); + + exit(1); + } + + block2 = fseg_create(TRX_DOUBLEWRITE_SPACE, TRX_SYS_PAGE_NO, + TRX_SYS_DOUBLEWRITE + + TRX_SYS_DOUBLEWRITE_FSEG, &mtr); + + /* fseg_create acquires a second latch on the page, + therefore we must declare it: */ + + buf_block_dbg_add_level(block2, SYNC_NO_ORDER_CHECK); + + if (block2 == NULL) { + fprintf(stderr, + "InnoDB: Cannot create doublewrite buffer:" + " you must\n" + "InnoDB: increase your tablespace size.\n" + "InnoDB: Cannot continue operation.\n"); + + /* We exit without committing the mtr to prevent + its modifications to the database getting to disk */ + + exit(1); + } + + fseg_header = buf_block_get_frame(block) + + TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_FSEG; + prev_page_no = 0; + + for (i = 0; i < 2 * TRX_SYS_DOUBLEWRITE_BLOCK_SIZE + + FSP_EXTENT_SIZE / 2; i++) { + page_no = fseg_alloc_free_page(fseg_header, + prev_page_no + 1, + FSP_UP, &mtr); + if (page_no == FIL_NULL) { + fprintf(stderr, + "InnoDB: Cannot create doublewrite" + " buffer: you must\n" + "InnoDB: increase your" + " tablespace size.\n" + "InnoDB: Cannot continue operation.\n" + ); + + exit(1); + } + + /* We read the allocated pages to the buffer pool; + when they are written to disk in a flush, the space + id and page number fields are also written to the + pages. When we at database startup read pages + from the doublewrite buffer, we know that if the + space id and page number in them are the same as + the page position in the tablespace, then the page + has not been written to in doublewrite. */ + + new_block = buf_page_get(TRX_DOUBLEWRITE_SPACE, 0, page_no, + RW_X_LATCH, &mtr); + buf_block_dbg_add_level(new_block, + SYNC_NO_ORDER_CHECK); + + if (i == FSP_EXTENT_SIZE / 2) { + ut_a(page_no == FSP_EXTENT_SIZE); + mlog_write_ulint(doublewrite + + TRX_SYS_DOUBLEWRITE_BLOCK1, + page_no, MLOG_4BYTES, &mtr); + mlog_write_ulint(doublewrite + + TRX_SYS_DOUBLEWRITE_REPEAT + + TRX_SYS_DOUBLEWRITE_BLOCK1, + page_no, MLOG_4BYTES, &mtr); + } else if (i == FSP_EXTENT_SIZE / 2 + + TRX_SYS_DOUBLEWRITE_BLOCK_SIZE) { + ut_a(page_no == 2 * FSP_EXTENT_SIZE); + mlog_write_ulint(doublewrite + + TRX_SYS_DOUBLEWRITE_BLOCK2, + page_no, MLOG_4BYTES, &mtr); + mlog_write_ulint(doublewrite + + TRX_SYS_DOUBLEWRITE_REPEAT + + TRX_SYS_DOUBLEWRITE_BLOCK2, + page_no, MLOG_4BYTES, &mtr); + } else if (i > FSP_EXTENT_SIZE / 2) { + ut_a(page_no == prev_page_no + 1); + } + + prev_page_no = page_no; + } + + mlog_write_ulint(doublewrite + TRX_SYS_DOUBLEWRITE_MAGIC, + TRX_SYS_DOUBLEWRITE_MAGIC_N, + MLOG_4BYTES, &mtr); + mlog_write_ulint(doublewrite + TRX_SYS_DOUBLEWRITE_MAGIC + + TRX_SYS_DOUBLEWRITE_REPEAT, + TRX_SYS_DOUBLEWRITE_MAGIC_N, + MLOG_4BYTES, &mtr); + + mlog_write_ulint(doublewrite + + TRX_SYS_DOUBLEWRITE_SPACE_ID_STORED, + TRX_SYS_DOUBLEWRITE_SPACE_ID_STORED_N, + MLOG_4BYTES, &mtr); + mtr_commit(&mtr); + + /* Flush the modified pages to disk and make a checkpoint */ + log_make_checkpoint_at(IB_ULONGLONG_MAX, TRUE); + + fprintf(stderr, "InnoDB: Doublewrite buffer created in the doublewrite file\n"); + } + + trx_doublewrite_buf_is_being_created = FALSE; + } } /****************************************************************//** @@ -425,10 +568,19 @@ trx_sys_doublewrite_init_or_restore_pages( ulint source_page_no; byte* page; byte* doublewrite; + ulint doublewrite_space_id; ulint space_id; ulint page_no; ulint i; + doublewrite_space_id = (srv_doublewrite_file ? TRX_DOUBLEWRITE_SPACE : TRX_SYS_SPACE); + + if (srv_doublewrite_file) { + fprintf(stderr, + "InnoDB: doublewrite file '%s' is used.\n", + srv_doublewrite_file); + } + /* We do the file i/o past the buffer pool */ unaligned_read_buf = ut_malloc(2 * UNIV_PAGE_SIZE); @@ -437,7 +589,7 @@ trx_sys_doublewrite_init_or_restore_pages( /* Read the trx sys header to check if we are using the doublewrite buffer */ - fil_io(OS_FILE_READ, TRUE, TRX_SYS_SPACE, 0, TRX_SYS_PAGE_NO, 0, + fil_io(OS_FILE_READ, TRUE, doublewrite_space_id, 0, TRX_SYS_PAGE_NO, 0, UNIV_PAGE_SIZE, read_buf, NULL); doublewrite = read_buf + TRX_SYS_DOUBLEWRITE; @@ -475,10 +627,10 @@ trx_sys_doublewrite_init_or_restore_pages( /* Read the pages from the doublewrite buffer to memory */ - fil_io(OS_FILE_READ, TRUE, TRX_SYS_SPACE, 0, block1, 0, + fil_io(OS_FILE_READ, TRUE, doublewrite_space_id, 0, block1, 0, TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE, buf, NULL); - fil_io(OS_FILE_READ, TRUE, TRX_SYS_SPACE, 0, block2, 0, + fil_io(OS_FILE_READ, TRUE, doublewrite_space_id, 0, block2, 0, TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE, buf + TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE, NULL); @@ -534,7 +686,8 @@ trx_sys_doublewrite_init_or_restore_pages( " doublewrite buf.\n", (ulong) space_id, (ulong) page_no, (ulong) i); - } else if (space_id == TRX_SYS_SPACE + } else if ((space_id == TRX_SYS_SPACE + || (srv_doublewrite_file && space_id == TRX_DOUBLEWRITE_SPACE)) && ((page_no >= block1 && page_no < block1 + TRX_SYS_DOUBLEWRITE_BLOCK_SIZE) @@ -594,8 +747,8 @@ trx_sys_doublewrite_init_or_restore_pages( " recover the database" " with the my.cnf\n" "InnoDB: option:\n" - "InnoDB: set-variable=" - "innodb_force_recovery=6\n"); + "InnoDB:" + " innodb_force_recovery=6\n"); exit(1); } @@ -981,6 +1134,87 @@ trx_sysf_create( mutex_exit(&kernel_mutex); } +/*****************************************************************//** +Creates dummy of the file page for the transaction system. */ +static +void +trx_sysf_dummy_create( +/*==================*/ + ulint space, + mtr_t* mtr) +{ + trx_sysf_t* sys_header; + ulint slot_no; + buf_block_t* block; + page_t* page; + ulint page_no; + ulint i; + + ut_ad(mtr); + + /* Note that below we first reserve the file space x-latch, and + then enter the kernel: we must do it in this order to conform + to the latching order rules. */ + + mtr_x_lock(fil_space_get_latch(space, NULL), mtr); + mutex_enter(&kernel_mutex); + + /* Create the trx sys file block in a new allocated file segment */ + block = fseg_create(space, 0, TRX_SYS + TRX_SYS_FSEG_HEADER, + mtr); + buf_block_dbg_add_level(block, SYNC_TRX_SYS_HEADER); + + fprintf(stderr, "%lu\n", buf_block_get_page_no(block)); + ut_a(buf_block_get_page_no(block) == TRX_SYS_PAGE_NO); + + page = buf_block_get_frame(block); + + mlog_write_ulint(page + FIL_PAGE_TYPE, FIL_PAGE_TYPE_TRX_SYS, + MLOG_2BYTES, mtr); + + /* Reset the doublewrite buffer magic number to zero so that we + know that the doublewrite buffer has not yet been created (this + suppresses a Valgrind warning) */ + + mlog_write_ulint(page + TRX_SYS_DOUBLEWRITE + + TRX_SYS_DOUBLEWRITE_MAGIC, 0, MLOG_4BYTES, mtr); + +#ifdef UNDEFINED + /* TODO: REMOVE IT: The bellow is not needed, I think */ + sys_header = trx_sysf_get(mtr); + + /* Start counting transaction ids from number 1 up */ + mlog_write_dulint(sys_header + TRX_SYS_TRX_ID_STORE, + ut_dulint_create(0, 1), mtr); + + /* Reset the rollback segment slots */ + for (i = 0; i < TRX_SYS_N_RSEGS; i++) { + + trx_sysf_rseg_set_space(sys_header, i, ULINT_UNDEFINED, mtr); + trx_sysf_rseg_set_page_no(sys_header, i, FIL_NULL, mtr); + } + + /* The remaining area (up to the page trailer) is uninitialized. + Silence Valgrind warnings about it. */ + UNIV_MEM_VALID(sys_header + (TRX_SYS_RSEGS + + TRX_SYS_N_RSEGS * TRX_SYS_RSEG_SLOT_SIZE + + TRX_SYS_RSEG_SPACE), + (UNIV_PAGE_SIZE - FIL_PAGE_DATA_END + - (TRX_SYS_RSEGS + + TRX_SYS_N_RSEGS * TRX_SYS_RSEG_SLOT_SIZE + + TRX_SYS_RSEG_SPACE)) + + page - sys_header); + + /* Create the first rollback segment in the SYSTEM tablespace */ + page_no = trx_rseg_header_create(space, 0, ULINT_MAX, &slot_no, + mtr); + ut_a(slot_no == TRX_SYS_SYSTEM_RSEG_ID); + ut_a(page_no != FIL_NULL); +#endif + + mutex_exit(&kernel_mutex); +} + /*****************************************************************//** Creates and initializes the central memory structures for the transaction system. This is called when the database is started. */ @@ -1087,6 +1321,26 @@ trx_sys_create(void) trx_sys_init_at_db_start(); } +/*****************************************************************//** +Creates and initializes the dummy transaction system page for tablespace. */ +UNIV_INTERN +void +trx_sys_dummy_create( +/*=================*/ + ulint space) +{ + mtr_t mtr; + + /* This function is only for doublewrite file for now */ + ut_a(space == TRX_DOUBLEWRITE_SPACE); + + mtr_start(&mtr); + + trx_sysf_dummy_create(space, &mtr); + + mtr_commit(&mtr); +} + /********************************************************************* Create extra rollback segments when create_new_db */ UNIV_INTERN @@ -1608,6 +1862,7 @@ trx_sys_file_format_id_to_name( #endif /* !UNIV_HOTBACKUP */ +#ifndef UNIV_HOTBACKUP /********************************************************************* Shutdown/Close the transaction system. */ UNIV_INTERN @@ -1684,3 +1939,4 @@ trx_sys_close(void) trx_sys = NULL; mutex_exit(&kernel_mutex); } +#endif /* !UNIV_HOTBACKUP */ diff --git a/trx/trx0trx.c b/trx/trx0trx.c index e81daf4cad9..f150d64f8dc 100644 --- a/trx/trx0trx.c +++ b/trx/trx0trx.c @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. +Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -455,6 +455,7 @@ trx_lists_init_at_db_start(void) trx_undo_t* undo; trx_t* trx; + ut_ad(mutex_own(&kernel_mutex)); UT_LIST_INIT(trx_sys->trx_list); /* Look from the rollback segments if there exist undo logs for @@ -885,7 +886,7 @@ trx_commit_off_kernel( recovery i.e.: back ground rollback thread is still active then there is a chance that the rollback thread may see this trx as COMMITTED_IN_MEMORY and goes adhead to clean it - up calling trx_cleanup_at_db_startup(). This can happen + up calling trx_cleanup_at_db_startup(). This can happen in the case we are committing a trx here that is left in PREPARED state during the crash. Note that commit of the rollback of a PREPARED trx happens in the recovery thread diff --git a/ut/ut0rbt.c b/ut/ut0rbt.c new file mode 100644 index 00000000000..3d7bc91e714 --- /dev/null +++ b/ut/ut0rbt.c @@ -0,0 +1,1249 @@ +/***************************************************************************** + +Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved. + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; version 2 of the License. + +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA + +*****************************************************************************/ + +/*******************************************************************//** +@file ut/ut0rbt.c +Red-Black tree implementation + +Created 2007-03-20 Sunny Bains +***********************************************************************/ + +#include "ut0rbt.h" + +/************************************************************************ +Definition of a red-black tree +============================== + +A red-black tree is a binary search tree which has the following +red-black properties: + + 1. Every node is either red or black. + 2. Every leaf (NULL - in our case tree->nil) is black. + 3. If a node is red, then both its children are black. + 4. Every simple path from a node to a descendant leaf contains the + same number of black nodes. + + from (3) above, the implication is that on any path from the root + to a leaf, red nodes must not be adjacent. + + However, any number of black nodes may appear in a sequence. */ + +#if defined(IB_RBT_TESTING) +#warning "Testing enabled!" +#endif + +#define ROOT(t) (t->root->left) +#define SIZEOF_NODE(t) ((sizeof(ib_rbt_node_t) + t->sizeof_value) - 1) + +/****************************************************************//** +Print out the sub-tree recursively. */ +static +void +rbt_print_subtree( +/*==============*/ + const ib_rbt_t* tree, /*!< in: tree to traverse */ + const ib_rbt_node_t* node, /*!< in: node to print */ + ib_rbt_print_node print) /*!< in: print key function */ +{ + /* FIXME: Doesn't do anything yet */ + if (node != tree->nil) { + print(node); + rbt_print_subtree(tree, node->left, print); + rbt_print_subtree(tree, node->right, print); + } +} + +/****************************************************************//** +Verify that the keys are in order. +@return TRUE of OK. FALSE if not ordered */ +static +ibool +rbt_check_ordering( +/*===============*/ + const ib_rbt_t* tree) /*!< in: tree to verfify */ +{ + const ib_rbt_node_t* node; + const ib_rbt_node_t* prev = NULL; + + /* Iterate over all the nodes, comparing each node with the prev */ + for (node = rbt_first(tree); node; node = rbt_next(tree, prev)) { + + if (prev && tree->compare(prev->value, node->value) >= 0) { + return(FALSE); + } + + prev = node; + } + + return(TRUE); +} + +/****************************************************************//** +Check that every path from the root to the leaves has the same count. +Count is expressed in the number of black nodes. +@return 0 on failure else black height of the subtree */ +static +ibool +rbt_count_black_nodes( +/*==================*/ + const ib_rbt_t* tree, /*!< in: tree to verify */ + const ib_rbt_node_t* node) /*!< in: start of sub-tree */ +{ + ulint result; + + if (node != tree->nil) { + ulint left_height = rbt_count_black_nodes(tree, node->left); + + ulint right_height = rbt_count_black_nodes(tree, node->right); + + if (left_height == 0 + || right_height == 0 + || left_height != right_height) { + + result = 0; + } else if (node->color == IB_RBT_RED) { + + /* Case 3 */ + if (node->left->color != IB_RBT_BLACK + || node->right->color != IB_RBT_BLACK) { + + result = 0; + } else { + result = left_height; + } + /* Check if it's anything other than RED or BLACK. */ + } else if (node->color != IB_RBT_BLACK) { + + result = 0; + } else { + + result = right_height + 1; + } + } else { + result = 1; + } + + return(result); +} + +/****************************************************************//** +Turn the node's right child's left sub-tree into node's right sub-tree. +This will also make node's right child it's parent. */ +static +void +rbt_rotate_left( +/*============*/ + const ib_rbt_node_t* nil, /*!< in: nil node of the tree */ + ib_rbt_node_t* node) /*!< in: node to rotate */ +{ + ib_rbt_node_t* right = node->right; + + node->right = right->left; + + if (right->left != nil) { + right->left->parent = node; + } + + /* Right's new parent was node's parent. */ + right->parent = node->parent; + + /* Since root's parent is tree->nil and root->parent->left points + back to root, we can avoid the check. */ + if (node == node->parent->left) { + /* Node was on the left of its parent. */ + node->parent->left = right; + } else { + /* Node must have been on the right. */ + node->parent->right = right; + } + + /* Finally, put node on right's left. */ + right->left = node; + node->parent = right; +} + +/****************************************************************//** +Turn the node's left child's right sub-tree into node's left sub-tree. +This also make node's left child it's parent. */ +static +void +rbt_rotate_right( +/*=============*/ + const ib_rbt_node_t* nil, /*!< in: nil node of tree */ + ib_rbt_node_t* node) /*!< in: node to rotate */ +{ + ib_rbt_node_t* left = node->left; + + node->left = left->right; + + if (left->right != nil) { + left->right->parent = node; + } + + /* Left's new parent was node's parent. */ + left->parent = node->parent; + + /* Since root's parent is tree->nil and root->parent->left points + back to root, we can avoid the check. */ + if (node == node->parent->right) { + /* Node was on the left of its parent. */ + node->parent->right = left; + } else { + /* Node must have been on the left. */ + node->parent->left = left; + } + + /* Finally, put node on left's right. */ + left->right = node; + node->parent = left; +} + +/****************************************************************//** +Append a node to the tree. +@return inserted node */ +static +ib_rbt_node_t* +rbt_tree_add_child( +/*===============*/ + const ib_rbt_t* tree, /*!< in: rbt tree */ + ib_rbt_bound_t* parent, /*!< in: node's parent */ + ib_rbt_node_t* node) /*!< in: node to add */ +{ + /* Cast away the const. */ + ib_rbt_node_t* last = (ib_rbt_node_t*) parent->last; + + if (last == tree->root || parent->result < 0) { + last->left = node; + } else { + /* FIXME: We don't handle duplicates (yet)! */ + ut_a(parent->result != 0); + + last->right = node; + } + + node->parent = last; + + return(node); +} + +/****************************************************************//** +Generic binary tree insert +@return inserted node */ +static +ib_rbt_node_t* +rbt_tree_insert( +/*============*/ + ib_rbt_t* tree, /*!< in: rb tree */ + const void* key, /*!< in: key for ordering */ + ib_rbt_node_t* node) /*!< in: node hold the insert value */ +{ + ib_rbt_bound_t parent; + ib_rbt_node_t* current = ROOT(tree); + + parent.result = 0; + parent.last = tree->root; + + /* Regular binary search. */ + while (current != tree->nil) { + + parent.last = current; + parent.result = tree->compare(key, current->value); + + if (parent.result < 0) { + current = current->left; + } else { + current = current->right; + } + } + + ut_a(current == tree->nil); + + rbt_tree_add_child(tree, &parent, node); + + return(node); +} + +/****************************************************************//** +Balance a tree after inserting a node. */ +static +void +rbt_balance_tree( +/*=============*/ + const ib_rbt_t* tree, /*!< in: tree to balance */ + ib_rbt_node_t* node) /*!< in: node that was inserted */ +{ + const ib_rbt_node_t* nil = tree->nil; + ib_rbt_node_t* parent = node->parent; + + /* Restore the red-black property. */ + node->color = IB_RBT_RED; + + while (node != ROOT(tree) && parent->color == IB_RBT_RED) { + ib_rbt_node_t* grand_parent = parent->parent; + + if (parent == grand_parent->left) { + ib_rbt_node_t* uncle = grand_parent->right; + + if (uncle->color == IB_RBT_RED) { + + /* Case 1 - change the colors. */ + uncle->color = IB_RBT_BLACK; + parent->color = IB_RBT_BLACK; + grand_parent->color = IB_RBT_RED; + + /* Move node up the tree. */ + node = grand_parent; + + } else { + + if (node == parent->right) { + /* Right is a black node and node is + to the right, case 2 - move node + up and rotate. */ + node = parent; + rbt_rotate_left(nil, node); + } + + grand_parent = node->parent->parent; + + /* Case 3. */ + node->parent->color = IB_RBT_BLACK; + grand_parent->color = IB_RBT_RED; + + rbt_rotate_right(nil, grand_parent); + } + + } else { + ib_rbt_node_t* uncle = grand_parent->left; + + if (uncle->color == IB_RBT_RED) { + + /* Case 1 - change the colors. */ + uncle->color = IB_RBT_BLACK; + parent->color = IB_RBT_BLACK; + grand_parent->color = IB_RBT_RED; + + /* Move node up the tree. */ + node = grand_parent; + + } else { + + if (node == parent->left) { + /* Left is a black node and node is to + the right, case 2 - move node up and + rotate. */ + node = parent; + rbt_rotate_right(nil, node); + } + + grand_parent = node->parent->parent; + + /* Case 3. */ + node->parent->color = IB_RBT_BLACK; + grand_parent->color = IB_RBT_RED; + + rbt_rotate_left(nil, grand_parent); + } + } + + parent = node->parent; + } + + /* Color the root black. */ + ROOT(tree)->color = IB_RBT_BLACK; +} + +/****************************************************************//** +Find the given node's successor. +@return successor node or NULL if no successor */ +static +ib_rbt_node_t* +rbt_find_successor( +/*===============*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + const ib_rbt_node_t* current)/*!< in: this is declared const + because it can be called via + rbt_next() */ +{ + const ib_rbt_node_t* nil = tree->nil; + ib_rbt_node_t* next = current->right; + + /* Is there a sub-tree to the right that we can follow. */ + if (next != nil) { + + /* Follow the left most links of the current right child. */ + while (next->left != nil) { + next = next->left; + } + + } else { /* We will have to go up the tree to find the successor. */ + ib_rbt_node_t* parent = current->parent; + + /* Cast away the const. */ + next = (ib_rbt_node_t*) current; + + while (parent != tree->root && next == parent->right) { + next = parent; + parent = next->parent; + } + + next = (parent == tree->root) ? NULL : parent; + } + + return(next); +} + +/****************************************************************//** +Find the given node's precedecessor. +@return predecessor node or NULL if no predecesor */ +static +ib_rbt_node_t* +rbt_find_predecessor( +/*=================*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + const ib_rbt_node_t* current) /*!< in: this is declared const + because it can be called via + rbt_prev() */ +{ + const ib_rbt_node_t* nil = tree->nil; + ib_rbt_node_t* prev = current->left; + + /* Is there a sub-tree to the left that we can follow. */ + if (prev != nil) { + + /* Follow the right most links of the current left child. */ + while (prev->right != nil) { + prev = prev->right; + } + + } else { /* We will have to go up the tree to find the precedecessor. */ + ib_rbt_node_t* parent = current->parent; + + /* Cast away the const. */ + prev = (ib_rbt_node_t*)current; + + while (parent != tree->root && prev == parent->left) { + prev = parent; + parent = prev->parent; + } + + prev = (parent == tree->root) ? NULL : parent; + } + + return(prev); +} + +/****************************************************************//** +Replace node with child. After applying transformations eject becomes +an orphan. */ +static +void +rbt_eject_node( +/*===========*/ + ib_rbt_node_t* eject, /*!< in: node to eject */ + ib_rbt_node_t* node) /*!< in: node to replace with */ +{ + /* Update the to be ejected node's parent's child pointers. */ + if (eject->parent->left == eject) { + eject->parent->left = node; + } else if (eject->parent->right == eject) { + eject->parent->right = node; + } else { + ut_a(0); + } + /* eject is now an orphan but otherwise its pointers + and color are left intact. */ + + node->parent = eject->parent; +} + +/****************************************************************//** +Replace a node with another node. */ +static +void +rbt_replace_node( +/*=============*/ + ib_rbt_node_t* replace, /*!< in: node to replace */ + ib_rbt_node_t* node) /*!< in: node to replace with */ +{ + ib_rbt_color_t color = node->color; + + /* Update the node pointers. */ + node->left = replace->left; + node->right = replace->right; + + /* Update the child node pointers. */ + node->left->parent = node; + node->right->parent = node; + + /* Make the parent of replace point to node. */ + rbt_eject_node(replace, node); + + /* Swap the colors. */ + node->color = replace->color; + replace->color = color; +} + +/****************************************************************//** +Detach node from the tree replacing it with one of it's children. +@return the child node that now occupies the position of the detached node */ +static +ib_rbt_node_t* +rbt_detach_node( +/*============*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + ib_rbt_node_t* node) /*!< in: node to detach */ +{ + ib_rbt_node_t* child; + const ib_rbt_node_t* nil = tree->nil; + + if (node->left != nil && node->right != nil) { + /* Case where the node to be deleted has two children. */ + ib_rbt_node_t* successor = rbt_find_successor(tree, node); + + ut_a(successor != nil); + ut_a(successor->parent != nil); + ut_a(successor->left == nil); + + child = successor->right; + + /* Remove the successor node and replace with its child. */ + rbt_eject_node(successor, child); + + /* Replace the node to delete with its successor node. */ + rbt_replace_node(node, successor); + } else { + ut_a(node->left == nil || node->right == nil); + + child = (node->left != nil) ? node->left : node->right; + + /* Replace the node to delete with one of it's children. */ + rbt_eject_node(node, child); + } + + /* Reset the node links. */ + node->parent = node->right = node->left = tree->nil; + + return(child); +} + +/****************************************************************//** +Rebalance the right sub-tree after deletion. +@return node to rebalance if more rebalancing required else NULL */ +static +ib_rbt_node_t* +rbt_balance_right( +/*==============*/ + const ib_rbt_node_t* nil, /*!< in: rb tree nil node */ + ib_rbt_node_t* parent, /*!< in: parent node */ + ib_rbt_node_t* sibling)/*!< in: sibling node */ +{ + ib_rbt_node_t* node = NULL; + + ut_a(sibling != nil); + + /* Case 3. */ + if (sibling->color == IB_RBT_RED) { + + parent->color = IB_RBT_RED; + sibling->color = IB_RBT_BLACK; + + rbt_rotate_left(nil, parent); + + sibling = parent->right; + + ut_a(sibling != nil); + } + + /* Since this will violate case 3 because of the change above. */ + if (sibling->left->color == IB_RBT_BLACK + && sibling->right->color == IB_RBT_BLACK) { + + node = parent; /* Parent needs to be rebalanced too. */ + sibling->color = IB_RBT_RED; + + } else { + if (sibling->right->color == IB_RBT_BLACK) { + + ut_a(sibling->left->color == IB_RBT_RED); + + sibling->color = IB_RBT_RED; + sibling->left->color = IB_RBT_BLACK; + + rbt_rotate_right(nil, sibling); + + sibling = parent->right; + ut_a(sibling != nil); + } + + sibling->color = parent->color; + sibling->right->color = IB_RBT_BLACK; + + parent->color = IB_RBT_BLACK; + + rbt_rotate_left(nil, parent); + } + + return(node); +} + +/****************************************************************//** +Rebalance the left sub-tree after deletion. +@return node to rebalance if more rebalancing required else NULL */ +static +ib_rbt_node_t* +rbt_balance_left( +/*=============*/ + const ib_rbt_node_t* nil, /*!< in: rb tree nil node */ + ib_rbt_node_t* parent, /*!< in: parent node */ + ib_rbt_node_t* sibling)/*!< in: sibling node */ +{ + ib_rbt_node_t* node = NULL; + + ut_a(sibling != nil); + + /* Case 3. */ + if (sibling->color == IB_RBT_RED) { + + parent->color = IB_RBT_RED; + sibling->color = IB_RBT_BLACK; + + rbt_rotate_right(nil, parent); + sibling = parent->left; + + ut_a(sibling != nil); + } + + /* Since this will violate case 3 because of the change above. */ + if (sibling->right->color == IB_RBT_BLACK + && sibling->left->color == IB_RBT_BLACK) { + + node = parent; /* Parent needs to be rebalanced too. */ + sibling->color = IB_RBT_RED; + + } else { + if (sibling->left->color == IB_RBT_BLACK) { + + ut_a(sibling->right->color == IB_RBT_RED); + + sibling->color = IB_RBT_RED; + sibling->right->color = IB_RBT_BLACK; + + rbt_rotate_left(nil, sibling); + + sibling = parent->left; + + ut_a(sibling != nil); + } + + sibling->color = parent->color; + sibling->left->color = IB_RBT_BLACK; + + parent->color = IB_RBT_BLACK; + + rbt_rotate_right(nil, parent); + } + + return(node); +} + +/****************************************************************//** +Delete the node and rebalance the tree if necessary */ +static +void +rbt_remove_node_and_rebalance( +/*==========================*/ + ib_rbt_t* tree, /*!< in: rb tree */ + ib_rbt_node_t* node) /*!< in: node to remove */ +{ + /* Detach node and get the node that will be used + as rebalance start. */ + ib_rbt_node_t* child = rbt_detach_node(tree, node); + + if (node->color == IB_RBT_BLACK) { + ib_rbt_node_t* last = child; + + ROOT(tree)->color = IB_RBT_RED; + + while (child && child->color == IB_RBT_BLACK) { + ib_rbt_node_t* parent = child->parent; + + /* Did the deletion cause an imbalance in the + parents left sub-tree. */ + if (parent->left == child) { + + child = rbt_balance_right( + tree->nil, parent, parent->right); + + } else if (parent->right == child) { + + child = rbt_balance_left( + tree->nil, parent, parent->left); + + } else { + ut_error; + } + + if (child) { + last = child; + } + } + + ut_a(last); + + last->color = IB_RBT_BLACK; + ROOT(tree)->color = IB_RBT_BLACK; + } + + /* Note that we have removed a node from the tree. */ + --tree->n_nodes; +} + +/****************************************************************//** +Recursively free the nodes. */ +static +void +rbt_free_node( +/*==========*/ + ib_rbt_node_t* node, /*!< in: node to free */ + ib_rbt_node_t* nil) /*!< in: rb tree nil node */ +{ + if (node != nil) { + rbt_free_node(node->left, nil); + rbt_free_node(node->right, nil); + + ut_free(node); + } +} + +/****************************************************************//** +Free all the nodes and free the tree. */ +UNIV_INTERN +void +rbt_free( +/*=====*/ + ib_rbt_t* tree) /*!< in: rb tree to free */ +{ + rbt_free_node(tree->root, tree->nil); + ut_free(tree->nil); + ut_free(tree); +} + +/****************************************************************//** +Create an instance of a red black tree. +@return an empty rb tree */ +UNIV_INTERN +ib_rbt_t* +rbt_create( +/*=======*/ + size_t sizeof_value, /*!< in: sizeof data item */ + ib_rbt_compare compare) /*!< in: fn to compare items */ +{ + ib_rbt_t* tree; + ib_rbt_node_t* node; + + tree = (ib_rbt_t*) ut_malloc(sizeof(*tree)); + memset(tree, 0, sizeof(*tree)); + + tree->sizeof_value = sizeof_value; + + /* Create the sentinel (NIL) node. */ + node = tree->nil = (ib_rbt_node_t*) ut_malloc(sizeof(*node)); + memset(node, 0, sizeof(*node)); + + node->color = IB_RBT_BLACK; + node->parent = node->left = node->right = node; + + /* Create the "fake" root, the real root node will be the + left child of this node. */ + node = tree->root = (ib_rbt_node_t*) ut_malloc(sizeof(*node)); + memset(node, 0, sizeof(*node)); + + node->color = IB_RBT_BLACK; + node->parent = node->left = node->right = tree->nil; + + tree->compare = compare; + + return(tree); +} + +/****************************************************************//** +Generic insert of a value in the rb tree. +@return inserted node */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_insert( +/*=======*/ + ib_rbt_t* tree, /*!< in: rb tree */ + const void* key, /*!< in: key for ordering */ + const void* value) /*!< in: value of key, this value + is copied to the node */ +{ + ib_rbt_node_t* node; + + /* Create the node that will hold the value data. */ + node = (ib_rbt_node_t*) ut_malloc(SIZEOF_NODE(tree)); + + memcpy(node->value, value, tree->sizeof_value); + node->parent = node->left = node->right = tree->nil; + + /* Insert in the tree in the usual way. */ + rbt_tree_insert(tree, key, node); + rbt_balance_tree(tree, node); + + ++tree->n_nodes; + + return(node); +} + +/****************************************************************//** +Add a new node to the tree, useful for data that is pre-sorted. +@return appended node */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_add_node( +/*=========*/ + ib_rbt_t* tree, /*!< in: rb tree */ + ib_rbt_bound_t* parent, /*!< in: bounds */ + const void* value) /*!< in: this value is copied + to the node */ +{ + ib_rbt_node_t* node; + + /* Create the node that will hold the value data */ + node = (ib_rbt_node_t*) ut_malloc(SIZEOF_NODE(tree)); + + memcpy(node->value, value, tree->sizeof_value); + node->parent = node->left = node->right = tree->nil; + + /* If tree is empty */ + if (parent->last == NULL) { + parent->last = tree->root; + } + + /* Append the node, the hope here is that the caller knows + what s/he is doing. */ + rbt_tree_add_child(tree, parent, node); + rbt_balance_tree(tree, node); + + ++tree->n_nodes; + +#if defined(IB_RBT_TESTING) + ut_a(rbt_validate(tree)); +#endif + return(node); +} + +/****************************************************************//** +Find a matching node in the rb tree. +@return NULL if not found else the node where key was found */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_lookup( +/*=======*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + const void* key) /*!< in: key to use for search */ +{ + const ib_rbt_node_t* current = ROOT(tree); + + /* Regular binary search. */ + while (current != tree->nil) { + int result = tree->compare(key, current->value); + + if (result < 0) { + current = current->left; + } else if (result > 0) { + current = current->right; + } else { + break; + } + } + + return(current != tree->nil ? current : NULL); +} + +/****************************************************************//** +Delete a node from the red black tree, identified by key. +@return TRUE if success FALSE if not found */ +UNIV_INTERN +ibool +rbt_delete( +/*=======*/ + ib_rbt_t* tree, /*!< in: rb tree */ + const void* key) /*!< in: key to delete */ +{ + ibool deleted = FALSE; + ib_rbt_node_t* node = (ib_rbt_node_t*) rbt_lookup(tree, key); + + if (node) { + rbt_remove_node_and_rebalance(tree, node); + + ut_free(node); + deleted = TRUE; + } + + return(deleted); +} + +/****************************************************************//** +Remove a node from the rb tree, the node is not free'd, that is the +callers responsibility. +@return deleted node but without the const */ +UNIV_INTERN +ib_rbt_node_t* +rbt_remove_node( +/*============*/ + ib_rbt_t* tree, /*!< in: rb tree */ + const ib_rbt_node_t* const_node) /*!< in: node to delete, this + is a fudge and declared const + because the caller can access + only const nodes */ +{ + /* Cast away the const. */ + rbt_remove_node_and_rebalance(tree, (ib_rbt_node_t*) const_node); + + /* This is to make it easier to do something like this: + ut_free(rbt_remove_node(node)); + */ + + return((ib_rbt_node_t*) const_node); +} + +/****************************************************************//** +Find the node that has the lowest key that is >= key. +@return node satisfying the lower bound constraint or NULL */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_lower_bound( +/*============*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + const void* key) /*!< in: key to search */ +{ + ib_rbt_node_t* lb_node = NULL; + ib_rbt_node_t* current = ROOT(tree); + + while (current != tree->nil) { + int result = tree->compare(key, current->value); + + if (result > 0) { + + current = current->right; + + } else if (result < 0) { + + lb_node = current; + current = current->left; + + } else { + lb_node = current; + break; + } + } + + return(lb_node); +} + +/****************************************************************//** +Find the node that has the greatest key that is <= key. +@return node satisfying the upper bound constraint or NULL */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_upper_bound( +/*============*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + const void* key) /*!< in: key to search */ +{ + ib_rbt_node_t* ub_node = NULL; + ib_rbt_node_t* current = ROOT(tree); + + while (current != tree->nil) { + int result = tree->compare(key, current->value); + + if (result > 0) { + + ub_node = current; + current = current->right; + + } else if (result < 0) { + + current = current->left; + + } else { + ub_node = current; + break; + } + } + + return(ub_node); +} + +/****************************************************************//** +Find the node that has the greatest key that is <= key. +@return value of result */ +UNIV_INTERN +int +rbt_search( +/*=======*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + ib_rbt_bound_t* parent, /*!< in: search bounds */ + const void* key) /*!< in: key to search */ +{ + ib_rbt_node_t* current = ROOT(tree); + + /* Every thing is greater than the NULL root. */ + parent->result = 1; + parent->last = NULL; + + while (current != tree->nil) { + + parent->last = current; + parent->result = tree->compare(key, current->value); + + if (parent->result > 0) { + current = current->right; + } else if (parent->result < 0) { + current = current->left; + } else { + break; + } + } + + return(parent->result); +} + +/****************************************************************//** +Find the node that has the greatest key that is <= key. But use the +supplied comparison function. +@return value of result */ +UNIV_INTERN +int +rbt_search_cmp( +/*===========*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + ib_rbt_bound_t* parent, /*!< in: search bounds */ + const void* key, /*!< in: key to search */ + ib_rbt_compare compare) /*!< in: fn to compare items */ +{ + ib_rbt_node_t* current = ROOT(tree); + + /* Every thing is greater than the NULL root. */ + parent->result = 1; + parent->last = NULL; + + while (current != tree->nil) { + + parent->last = current; + parent->result = compare(key, current->value); + + if (parent->result > 0) { + current = current->right; + } else if (parent->result < 0) { + current = current->left; + } else { + break; + } + } + + return(parent->result); +} + +/****************************************************************//** +Get the leftmost node. +Return the left most node in the tree. */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_first( +/*======*/ + const ib_rbt_t* tree) /* in: rb tree */ +{ + ib_rbt_node_t* first = NULL; + ib_rbt_node_t* current = ROOT(tree); + + while (current != tree->nil) { + first = current; + current = current->left; + } + + return(first); +} + +/****************************************************************//** +Return the right most node in the tree. +@return the rightmost node or NULL */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_last( +/*=====*/ + const ib_rbt_t* tree) /*!< in: rb tree */ +{ + ib_rbt_node_t* last = NULL; + ib_rbt_node_t* current = ROOT(tree); + + while (current != tree->nil) { + last = current; + current = current->right; + } + + return(last); +} + +/****************************************************************//** +Return the next node. +@return node next from current */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_next( +/*=====*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + const ib_rbt_node_t* current)/*!< in: current node */ +{ + return(current ? rbt_find_successor(tree, current) : NULL); +} + +/****************************************************************//** +Return the previous node. +@return node prev from current */ +UNIV_INTERN +const ib_rbt_node_t* +rbt_prev( +/*=====*/ + const ib_rbt_t* tree, /*!< in: rb tree */ + const ib_rbt_node_t* current)/*!< in: current node */ +{ + return(current ? rbt_find_predecessor(tree, current) : NULL); +} + +/****************************************************************//** +Reset the tree. Delete all the nodes. */ +UNIV_INTERN +void +rbt_clear( +/*======*/ + ib_rbt_t* tree) /*!< in: rb tree */ +{ + rbt_free_node(ROOT(tree), tree->nil); + + tree->n_nodes = 0; + tree->root->left = tree->root->right = tree->nil; +} + +/****************************************************************//** +Merge the node from dst into src. Return the number of nodes merged. +@return no. of recs merged */ +UNIV_INTERN +ulint +rbt_merge_uniq( +/*===========*/ + ib_rbt_t* dst, /*!< in: dst rb tree */ + const ib_rbt_t* src) /*!< in: src rb tree */ +{ + ib_rbt_bound_t parent; + ulint n_merged = 0; + const ib_rbt_node_t* src_node = rbt_first(src); + + if (rbt_empty(src) || dst == src) { + return(0); + } + + for (/* No op */; src_node; src_node = rbt_next(src, src_node)) { + + if (rbt_search(dst, &parent, src_node->value) != 0) { + rbt_add_node(dst, &parent, src_node->value); + ++n_merged; + } + } + + return(n_merged); +} + +/****************************************************************//** +Merge the node from dst into src. Return the number of nodes merged. +Delete the nodes from src after copying node to dst. As a side effect +the duplicates will be left untouched in the src. +@return no. of recs merged */ +UNIV_INTERN +ulint +rbt_merge_uniq_destructive( +/*=======================*/ + ib_rbt_t* dst, /*!< in: dst rb tree */ + ib_rbt_t* src) /*!< in: src rb tree */ +{ + ib_rbt_bound_t parent; + ib_rbt_node_t* src_node; + ulint old_size = rbt_size(dst); + + if (rbt_empty(src) || dst == src) { + return(0); + } + + for (src_node = (ib_rbt_node_t*) rbt_first(src); src_node; /* */) { + ib_rbt_node_t* prev = src_node; + + src_node = (ib_rbt_node_t*)rbt_next(src, prev); + + /* Skip duplicates. */ + if (rbt_search(dst, &parent, prev->value) != 0) { + + /* Remove and reset the node but preserve + the node (data) value. */ + rbt_remove_node_and_rebalance(src, prev); + + /* The nil should be taken from the dst tree. */ + prev->parent = prev->left = prev->right = dst->nil; + rbt_tree_add_child(dst, &parent, prev); + rbt_balance_tree(dst, prev); + + ++dst->n_nodes; + } + } + +#if defined(IB_RBT_TESTING) + ut_a(rbt_validate(dst)); + ut_a(rbt_validate(src)); +#endif + return(rbt_size(dst) - old_size); +} + +/****************************************************************//** +Check that every path from the root to the leaves has the same count and +the tree nodes are in order. +@return TRUE if OK FALSE otherwise */ +UNIV_INTERN +ibool +rbt_validate( +/*=========*/ + const ib_rbt_t* tree) /*!< in: RB tree to validate */ +{ + if (rbt_count_black_nodes(tree, ROOT(tree)) > 0) { + return(rbt_check_ordering(tree)); + } + + return(FALSE); +} + +/****************************************************************//** +Iterate over the tree in depth first order. */ +UNIV_INTERN +void +rbt_print( +/*======*/ + const ib_rbt_t* tree, /*!< in: tree to traverse */ + ib_rbt_print_node print) /*!< in: print function */ +{ + rbt_print_subtree(tree, ROOT(tree), print); +} From 60ddf6f2b70f8349e9cac9bab2ad62217cd957be Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 4 Aug 2010 00:26:17 +0300 Subject: [PATCH 346/461] Fixes to allow one to compile and test innodb_plugin If one compiles innodb_plugin, then the tests in suite/innodb_plugin will use the plugin. If not and xtradb is used, the tests will use xtradb. mysql-test/include/have_innodb_plugin.inc: Test both for innodb_plugin and xtradb mysql-test/include/have_real_innodb_plugin.inc: Test if we are using innodb_plugin (but not xtradb) mysql-test/include/have_xtradb.inc: Test if xtradb is used mysql-test/lib/mtr_cases.pm: Enable easy testing of innodb_plugin mysql-test/mysql-test-run.pl: Added supression for difference between xtradb & innodb_plugin mysql-test/suite/innodb_plugin/r/innodb-index-ip.result: Tests from innodb-index that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/r/innodb-index-xb.result: Tests from innodb-index that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/r/innodb-index.result: Move tests away that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/r/innodb-ip.result: Tests from innodb-index that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/r/innodb-xb.result: Tests from innodb-index that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/r/innodb.result: Move tests away that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/r/innodb_bug21704-xb.result: Test result differ for xtradb mysql-test/suite/innodb_plugin/r/innodb_bug46000.result: Remove (not needed) error message not given by MariaDB mysql-test/suite/innodb_plugin/r/innodb_bug49164-xb.result: Test result differs for xtradb mysql-test/suite/innodb_plugin/r/innodb_bug49164.result: Update results mysql-test/suite/innodb_plugin/r/innodb_bug53591.result: Remove (not needed) error message not given by MariaDB mysql-test/suite/innodb_plugin/r/innodb_bug54679.result: Updated result file mysql-test/suite/innodb_plugin/r/innodb_mysql.result: Updated result file mysql-test/suite/innodb_plugin/t/disabled.def: Disable some tests that depends on newer version of XtraDB mysql-test/suite/innodb_plugin/t/innodb-index-ip.test: Tests from innodb-index that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/t/innodb-index-xb.test: Tests from innodb-index that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/t/innodb-index.test: Move tests away that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/t/innodb-ip.test: Tests from innodb-index that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/t/innodb-xb.test: Tests from innodb-index that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/t/innodb.test: Move tests away that gave different results for innodb_plugin and xtradb mysql-test/suite/innodb_plugin/t/innodb_bug21704-xb.test: Test result differ for xtradb mysql-test/suite/innodb_plugin/t/innodb_bug21704.test: Test result differ for xtradb mysql-test/suite/innodb_plugin/t/innodb_bug53591.test: Test results only makes sence for innodb_plugin (things works ok for xtradb) sql/sql_table.cc: Don't set HA_CREATE_USED_ROW_FORMAT for create table (only for update_create_info) if ROW_FORMAT is not used. storage/innodb_plugin/handler/ha_innodb.cc: Fixed wrong error message from innodb. This is needed as MariaDB properly handles errors from ha_index_init() storage/xtradb/handler/ha_innodb.cc: Update base information for XtraDB so that one can use informationschema.plugins to check if one is using XtraDB --- mysql-test/include/have_innodb_plugin.inc | 2 +- .../include/have_real_innodb_plugin.inc | 4 + mysql-test/include/have_xtradb.inc | 4 + mysql-test/lib/mtr_cases.pm | 44 ++++++++- mysql-test/mysql-test-run.pl | 1 + .../innodb_plugin/r/innodb-index-ip.result | 18 ++++ .../innodb_plugin/r/innodb-index-xb.result | 18 ++++ .../suite/innodb_plugin/r/innodb-index.result | 18 ---- .../suite/innodb_plugin/r/innodb-ip.result | 31 ++++++ .../suite/innodb_plugin/r/innodb-xb.result | 30 ++++++ .../suite/innodb_plugin/r/innodb.result | 36 ++----- .../innodb_plugin/r/innodb_bug21704-xb.result | 55 +++++++++++ .../innodb_plugin/r/innodb_bug46000.result | 1 - .../innodb_plugin/r/innodb_bug49164-xb.result | 42 ++++++++ .../innodb_plugin/r/innodb_bug49164.result | 2 +- .../innodb_plugin/r/innodb_bug53591.result | 1 - .../innodb_plugin/r/innodb_bug54679.result | 4 +- .../suite/innodb_plugin/r/innodb_mysql.result | 4 +- mysql-test/suite/innodb_plugin/t/disabled.def | 11 ++- .../innodb_plugin/t/innodb-index-ip.test | 18 ++++ .../innodb_plugin/t/innodb-index-xb.test | 18 ++++ .../suite/innodb_plugin/t/innodb-index.test | 12 --- .../suite/innodb_plugin/t/innodb-ip.test | 35 +++++++ .../suite/innodb_plugin/t/innodb-xb.test | 35 +++++++ mysql-test/suite/innodb_plugin/t/innodb.test | 10 -- .../innodb_plugin/t/innodb_bug21704-xb.test | 96 +++++++++++++++++++ .../innodb_plugin/t/innodb_bug21704.test | 2 +- .../innodb_plugin/t/innodb_bug53591.test | 5 +- sql/sql_table.cc | 5 + storage/innodb_plugin/handler/ha_innodb.cc | 3 +- storage/xtradb/handler/ha_innodb.cc | 4 +- 31 files changed, 488 insertions(+), 81 deletions(-) create mode 100644 mysql-test/include/have_real_innodb_plugin.inc create mode 100644 mysql-test/include/have_xtradb.inc create mode 100644 mysql-test/suite/innodb_plugin/r/innodb-index-ip.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb-index-xb.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb-ip.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb-xb.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug21704-xb.result create mode 100644 mysql-test/suite/innodb_plugin/r/innodb_bug49164-xb.result create mode 100644 mysql-test/suite/innodb_plugin/t/innodb-index-ip.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb-index-xb.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb-ip.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb-xb.test create mode 100644 mysql-test/suite/innodb_plugin/t/innodb_bug21704-xb.test diff --git a/mysql-test/include/have_innodb_plugin.inc b/mysql-test/include/have_innodb_plugin.inc index 99a79465f52..6b5fc29d459 100644 --- a/mysql-test/include/have_innodb_plugin.inc +++ b/mysql-test/include/have_innodb_plugin.inc @@ -1,4 +1,4 @@ disable_query_log; --require r/true.require -SELECT (plugin_library LIKE 'ha_innodb_plugin%') AS `TRUE` FROM information_schema.plugins WHERE LOWER(plugin_name) = 'innodb' AND LOWER(plugin_status) = 'active'; +SELECT (plugin_library LIKE 'ha_innodb_plugin%' OR plugin_description LIKE '%xtradb%') AS `TRUE` FROM information_schema.plugins WHERE LOWER(plugin_name) = 'innodb' AND LOWER(plugin_status) = 'active'; enable_query_log; diff --git a/mysql-test/include/have_real_innodb_plugin.inc b/mysql-test/include/have_real_innodb_plugin.inc new file mode 100644 index 00000000000..99a79465f52 --- /dev/null +++ b/mysql-test/include/have_real_innodb_plugin.inc @@ -0,0 +1,4 @@ +disable_query_log; +--require r/true.require +SELECT (plugin_library LIKE 'ha_innodb_plugin%') AS `TRUE` FROM information_schema.plugins WHERE LOWER(plugin_name) = 'innodb' AND LOWER(plugin_status) = 'active'; +enable_query_log; diff --git a/mysql-test/include/have_xtradb.inc b/mysql-test/include/have_xtradb.inc new file mode 100644 index 00000000000..6c2fc5155a9 --- /dev/null +++ b/mysql-test/include/have_xtradb.inc @@ -0,0 +1,4 @@ +disable_query_log; +--require r/true.require +SELECT (plugin_description LIKE '%xtradb%') AS `TRUE` FROM information_schema.plugins WHERE LOWER(plugin_name) = 'innodb' AND LOWER(plugin_status) = 'active'; +enable_query_log; diff --git a/mysql-test/lib/mtr_cases.pm b/mysql-test/lib/mtr_cases.pm index d794de2e92d..b068b2e542e 100644 --- a/mysql-test/lib/mtr_cases.pm +++ b/mysql-test/lib/mtr_cases.pm @@ -68,9 +68,22 @@ require "mtr_misc.pl"; my $do_test_reg; my $skip_test_reg; +# Related to adding InnoDB plugin combinations +my $lib_innodb_plugin; + # If "Quick collect", set to 1 once a test to run has been found. my $some_test_found; +sub find_innodb_plugin { + $lib_innodb_plugin= + my_find_file($::basedir, + ["storage/innodb_plugin", "storage/innodb_plugin/.libs", + "lib/mysql/plugin", "lib/plugin"], + ["ha_innodb_plugin.dll", "ha_innodb_plugin.so", + "ha_innodb_plugin.sl"], + NOT_REQUIRED); +} + sub init_pattern { my ($from, $what)= @_; return undef unless defined $from; @@ -103,6 +116,8 @@ sub collect_test_cases ($$$) { $do_test_reg= init_pattern($do_test, "--do-test"); $skip_test_reg= init_pattern($skip_test, "--skip-test"); + &find_innodb_plugin; + # If not reordering, we also shouldn't group by suites, unless # no test cases were named. # This also effects some logic in the loop following this. @@ -953,6 +968,30 @@ sub collect_one_test_case { return $tinfo; } } + elsif ( $tinfo->{'innodb_plugin_test'} ) + { + # This is a test that needs the innodb plugin + if (&find_innodb_plugin) + { + my $sep= (IS_WINDOWS) ? ';' : ':'; + my $plugin_filename= basename($lib_innodb_plugin); + my $plugin_list= + "innodb=$plugin_filename$sep" . + "innodb_trx=$plugin_filename$sep" . + "innodb_locks=$plugin_filename$sep" . + "innodb_lock_waits=$plugin_filename$sep" . + "innodb_cmp=$plugin_filename$sep" . + "innodb_cmp_reset=$plugin_filename$sep" . + "innodb_cmpmem=$plugin_filename$sep" . + "innodb_cmpmem_reset=$plugin_filename"; + + foreach my $k ('master_opt', 'slave_opt') { + push(@{$tinfo->{$k}}, '--ignore-builtin-innodb'); + push(@{$tinfo->{$k}}, '--plugin-dir=' . dirname($lib_innodb_plugin)); + push(@{$tinfo->{$k}}, "--plugin-load=$plugin_list"); + } + } + } else { push(@{$tinfo->{'master_opt'}}, "--loose-skip-innodb"); @@ -1121,8 +1160,11 @@ my @tags= ["include/have_log_bin.inc", "need_binlog", 1], ["include/have_innodb.inc", "innodb_test", 1], + ["include/have_innodb_plugin.inc", "innodb_plugin_test", 1], + ["include/have_real.inc", "innodb_test", 1], + ["include/have_real_innodb_plugin.inc", "innodb_plugin_test", 1], + ["include/have_xtradb.inc", "innodb_test", 1], ["include/have_pbxt.inc", "pbxt_test", 1], - ["include/have_innodb_plugin.inc", "innodb_test", 1], ["include/big_test.inc", "big_test", 1], ["include/have_debug.inc", "need_debug", 1], ["include/have_ndb.inc", "ndb_test", 1], diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 5fcee4d8861..1ebf554e1fd 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -4044,6 +4044,7 @@ sub extract_warning_lines ($) { qr/Slave: Can't drop database.* database doesn't exist/, qr/Slave: Operation DROP USER failed for 'create_rout_db'/, qr|Checking table: '\./mtr/test_suppressions'|, + qr|Table \./test/bug53592 has a primary key in InnoDB data dictionary, but not in MySQL|, qr|mysqld: Table '\./mtr/test_suppressions' is marked as crashed and should be repaired| ); diff --git a/mysql-test/suite/innodb_plugin/r/innodb-index-ip.result b/mysql-test/suite/innodb_plugin/r/innodb-index-ip.result new file mode 100644 index 00000000000..765399e7f96 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb-index-ip.result @@ -0,0 +1,18 @@ +drop table if exists t1; +drop database if exists mysqltest; +create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb; +insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,3,'ac','ac'),(4,4,'afe','afe'),(5,4,'affe','affe'); +alter table t1 add unique index (b), add unique index (c), add unique index (d); +ERROR 23000: Duplicate entry '4' for key 'b' +alter table t1 add unique index (c), add unique index (b), add index (d); +ERROR 23000: Duplicate entry 'ac' for key 'c' +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL, + `b` int(11) DEFAULT NULL, + `c` char(10) DEFAULT NULL, + `d` varchar(20) DEFAULT NULL, + PRIMARY KEY (`a`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +drop table t1; diff --git a/mysql-test/suite/innodb_plugin/r/innodb-index-xb.result b/mysql-test/suite/innodb_plugin/r/innodb-index-xb.result new file mode 100644 index 00000000000..ff6dcd9a561 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb-index-xb.result @@ -0,0 +1,18 @@ +drop table if exists t1; +drop database if exists mysqltest; +create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb; +insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,3,'ac','ac'),(4,4,'afe','afe'),(5,4,'affe','affe'); +alter table t1 add unique index (b), add unique index (c), add unique index (d); +ERROR 23000: Duplicate entry 'ac' for key 'c' +alter table t1 add unique index (c), add unique index (b), add index (d); +ERROR 23000: Duplicate entry 'ac' for key 'c' +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL, + `b` int(11) DEFAULT NULL, + `c` char(10) DEFAULT NULL, + `d` varchar(20) DEFAULT NULL, + PRIMARY KEY (`a`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +drop table t1; diff --git a/mysql-test/suite/innodb_plugin/r/innodb-index.result b/mysql-test/suite/innodb_plugin/r/innodb-index.result index f86fcd4a8ef..29ca50beb4d 100644 --- a/mysql-test/suite/innodb_plugin/r/innodb-index.result +++ b/mysql-test/suite/innodb_plugin/r/innodb-index.result @@ -440,8 +440,6 @@ t3 CREATE TABLE `t3` ( PRIMARY KEY (`a`), KEY `c` (`c`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 -alter table t2 drop index b, add index (b); -ERROR 42000: Incorrect index name 'b' show create table t2; Table Create Table t2 CREATE TABLE `t2` ( @@ -625,22 +623,6 @@ t1 CREATE TABLE `t1` ( KEY `b` (`b`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 drop table t1; -create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb; -insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,3,'ac','ac'),(4,4,'afe','afe'),(5,4,'affe','affe'); -alter table t1 add unique index (b), add unique index (c), add unique index (d); -ERROR 23000: Duplicate entry '4' for key 'b' -alter table t1 add unique index (c), add unique index (b), add index (d); -ERROR 23000: Duplicate entry 'ac' for key 'c' -show create table t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` int(11) NOT NULL, - `b` int(11) DEFAULT NULL, - `c` char(10) DEFAULT NULL, - `d` varchar(20) DEFAULT NULL, - PRIMARY KEY (`a`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 -drop table t1; create table t1(a int not null, b int not null, c int, primary key (a), key(c)) engine=innodb; insert into t1 values (5,1,5),(4,2,4),(3,3,3),(2,4,2),(1,5,1); alter table t1 add unique index (b); diff --git a/mysql-test/suite/innodb_plugin/r/innodb-ip.result b/mysql-test/suite/innodb_plugin/r/innodb-ip.result new file mode 100644 index 00000000000..fa779aa05a5 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb-ip.result @@ -0,0 +1,31 @@ +drop table if exists t1; +drop database if exists mysqltest; +CREATE TABLE t1 ( +sca_code char(6) NOT NULL, +cat_code char(6) NOT NULL, +sca_desc varchar(50), +lan_code char(2) NOT NULL, +sca_pic varchar(100), +sca_sdesc varchar(50), +sca_sch_desc varchar(16), +PRIMARY KEY (sca_code, cat_code, lan_code), +INDEX sca_pic (sca_pic) +) engine = innodb ; +INSERT INTO t1 ( sca_code, cat_code, sca_desc, lan_code, sca_pic, sca_sdesc, sca_sch_desc) VALUES ( 'PD', 'J', 'PENDANT', 'EN', NULL, NULL, 'PENDANT'),( 'RI', 'J', 'RING', 'EN', NULL, NULL, 'RING'),( 'QQ', 'N', 'RING', 'EN', 'not null', NULL, 'RING'); +alter table t1 drop index sca_pic, add index (sca_pic, cat_code); +ERROR 42000: Incorrect index name 'sca_pic' +alter table t1 drop index sca_pic; +alter table t1 add index (sca_pic, cat_code); +select count(*) from t1 where sca_code='PD' and sca_pic is null; +count(*) +1 +select count(*) from t1 where sca_pic >= 'n'; +count(*) +1 +select sca_pic from t1 where sca_pic is null; +sca_pic +NULL +NULL +update t1 set sca_pic="test" where sca_pic is null; +delete from t1 where sca_code='pd'; +drop table t1; diff --git a/mysql-test/suite/innodb_plugin/r/innodb-xb.result b/mysql-test/suite/innodb_plugin/r/innodb-xb.result new file mode 100644 index 00000000000..ffee100f3b6 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb-xb.result @@ -0,0 +1,30 @@ +drop table if exists t1; +drop database if exists mysqltest; +CREATE TABLE t1 ( +sca_code char(6) NOT NULL, +cat_code char(6) NOT NULL, +sca_desc varchar(50), +lan_code char(2) NOT NULL, +sca_pic varchar(100), +sca_sdesc varchar(50), +sca_sch_desc varchar(16), +PRIMARY KEY (sca_code, cat_code, lan_code), +INDEX sca_pic (sca_pic) +) engine = innodb ; +INSERT INTO t1 ( sca_code, cat_code, sca_desc, lan_code, sca_pic, sca_sdesc, sca_sch_desc) VALUES ( 'PD', 'J', 'PENDANT', 'EN', NULL, NULL, 'PENDANT'),( 'RI', 'J', 'RING', 'EN', NULL, NULL, 'RING'),( 'QQ', 'N', 'RING', 'EN', 'not null', NULL, 'RING'); +alter table t1 drop index sca_pic, add index (sca_pic, cat_code); +alter table t1 drop index sca_pic; +alter table t1 add index (sca_pic, cat_code); +select count(*) from t1 where sca_code='PD' and sca_pic is null; +count(*) +1 +select count(*) from t1 where sca_pic >= 'n'; +count(*) +1 +select sca_pic from t1 where sca_pic is null; +sca_pic +NULL +NULL +update t1 set sca_pic="test" where sca_pic is null; +delete from t1 where sca_code='pd'; +drop table t1; diff --git a/mysql-test/suite/innodb_plugin/r/innodb.result b/mysql-test/suite/innodb_plugin/r/innodb.result index 75a7023f9d0..c691f6bf208 100644 --- a/mysql-test/suite/innodb_plugin/r/innodb.result +++ b/mysql-test/suite/innodb_plugin/r/innodb.result @@ -700,22 +700,6 @@ count(*) select count(*) from t1 where cat_code='E'; count(*) 0 -alter table t1 drop index sca_pic, add index (sca_pic, cat_code); -ERROR 42000: Incorrect index name 'sca_pic' -alter table t1 drop index sca_pic; -alter table t1 add index (sca_pic, cat_code); -select count(*) from t1 where sca_code='PD' and sca_pic is null; -count(*) -1 -select count(*) from t1 where sca_pic >= 'n'; -count(*) -1 -select sca_pic from t1 where sca_pic is null; -sca_pic -NULL -NULL -update t1 set sca_pic="test" where sca_pic is null; -delete from t1 where sca_code='pd'; drop table t1; set @a:=now(); CREATE TABLE t1 (a int not null, b timestamp not null, primary key (a)) engine=innodb; @@ -1362,7 +1346,7 @@ insert t2 select * from t1; insert t3 select * from t1; checksum table t1, t2, t3, t4 quick; Table Checksum -test.t1 2948697075 +test.t1 3442722830 test.t2 NULL test.t3 NULL test.t4 NULL @@ -1370,17 +1354,17 @@ Warnings: Error 1146 Table 'test.t4' doesn't exist checksum table t1, t2, t3, t4; Table Checksum -test.t1 2948697075 -test.t2 2948697075 -test.t3 2948697075 +test.t1 3442722830 +test.t2 3442722830 +test.t3 3442722830 test.t4 NULL Warnings: Error 1146 Table 'test.t4' doesn't exist checksum table t1, t2, t3, t4 extended; Table Checksum -test.t1 2948697075 -test.t2 2948697075 -test.t3 2948697075 +test.t1 3442722830 +test.t2 3442722830 +test.t3 3442722830 test.t4 NULL Warnings: Error 1146 Table 'test.t4' doesn't exist @@ -1673,13 +1657,13 @@ variable_value 16384 SELECT variable_value - @innodb_rows_deleted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted'; variable_value - @innodb_rows_deleted_orig -71 +70 SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted'; variable_value - @innodb_rows_inserted_orig -1066 +1063 SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated'; variable_value - @innodb_rows_updated_orig -865 +863 SELECT variable_value - @innodb_row_lock_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits'; variable_value - @innodb_row_lock_waits_orig 0 diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug21704-xb.result b/mysql-test/suite/innodb_plugin/r/innodb_bug21704-xb.result new file mode 100644 index 00000000000..b8e0b15d50d --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug21704-xb.result @@ -0,0 +1,55 @@ +# +# Bug#21704: Renaming column does not update FK definition. +# + +# Test that it's not possible to rename columns participating in a +# foreign key (either in the referencing or referenced table). + +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t3; +CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ROW_FORMAT=COMPACT ENGINE=INNODB; +CREATE TABLE t2 (a INT PRIMARY KEY, b INT, +CONSTRAINT fk1 FOREIGN KEY (a) REFERENCES t1(a)) +ROW_FORMAT=COMPACT ENGINE=INNODB; +CREATE TABLE t3 (a INT PRIMARY KEY, b INT, KEY(b), C INT, +CONSTRAINT fk2 FOREIGN KEY (b) REFERENCES t3 (a)) +ROW_FORMAT=COMPACT ENGINE=INNODB; +INSERT INTO t1 VALUES (1,1),(2,2),(3,3); +INSERT INTO t2 VALUES (1,1),(2,2),(3,3); +INSERT INTO t3 VALUES (1,1,1),(2,2,2),(3,3,3); + +# Test renaming the column in the referenced table. + +ALTER TABLE t1 CHANGE a c INT; +ERROR HY000: Error on rename of '#sql-temporary' to './test/t1' (errno: 150) +# Ensure that online column rename works. +ALTER TABLE t1 CHANGE b c INT; +affected rows: 0 +info: Records: 0 Duplicates: 0 Warnings: 0 + +# Test renaming the column in the referencing table + +ALTER TABLE t2 CHANGE a c INT; +ERROR HY000: Error on rename of '#sql-temporary' to './test/t2' (errno: 150) +# Ensure that online column rename works. +ALTER TABLE t2 CHANGE b c INT; +affected rows: 0 +info: Records: 0 Duplicates: 0 Warnings: 0 + +# Test with self-referential constraints + +ALTER TABLE t3 CHANGE a d INT; +ERROR HY000: Error on rename of '#sql-temporary' to './test/t3' (errno: 150) +ALTER TABLE t3 CHANGE b d INT; +ERROR HY000: Error on rename of '#sql-temporary' to './test/t3' (errno: 150) +# Ensure that online column rename works. +ALTER TABLE t3 CHANGE c d INT; +affected rows: 0 +info: Records: 0 Duplicates: 0 Warnings: 0 + +# Cleanup. + +DROP TABLE t3; +DROP TABLE t2; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug46000.result b/mysql-test/suite/innodb_plugin/r/innodb_bug46000.result index c8e3db8d641..b27b3d7443b 100644 --- a/mysql-test/suite/innodb_plugin/r/innodb_bug46000.result +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug46000.result @@ -14,6 +14,5 @@ show warnings; Level Code Message Warning 1280 Cannot Create Index with name 'GEN_CLUST_INDEX'. The name is reserved for the system default primary index. Error 1280 Incorrect index name 'GEN_CLUST_INDEX' -Error 1030 Got error -1 from storage engine create index idx on bug46000(id); drop table bug46000; diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug49164-xb.result b/mysql-test/suite/innodb_plugin/r/innodb_bug49164-xb.result new file mode 100644 index 00000000000..9456702e1d0 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug49164-xb.result @@ -0,0 +1,42 @@ +SET tx_isolation = 'READ-COMMITTED'; +CREATE TABLE bug49164 (a INT, b BIGINT, c TINYINT, PRIMARY KEY (a, b)) +ENGINE=InnoDB; +insert into bug49164 values (1,1,1), (2,2,2), (3,3,3); +begin; +update bug49164 set c=7; +select * from bug49164; +a b c +1 1 7 +2 2 7 +3 3 7 +rollback; +select * from bug49164; +a b c +1 1 1 +2 2 2 +3 3 3 +begin; +update bug49164 set c=7; +SET tx_isolation = 'READ-COMMITTED'; +begin; +select * from bug49164; +a b c +1 1 1 +2 2 2 +3 3 3 +commit; +begin; +update bug49164 set c=6 where a=1 and b=1; +rollback; +select * from bug49164; +a b c +1 1 1 +2 2 2 +3 3 3 +commit; +select * from bug49164; +a b c +1 1 6 +2 2 2 +3 3 3 +drop table bug49164; diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug49164.result b/mysql-test/suite/innodb_plugin/r/innodb_bug49164.result index 9456702e1d0..6241509b7e7 100644 --- a/mysql-test/suite/innodb_plugin/r/innodb_bug49164.result +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug49164.result @@ -36,7 +36,7 @@ a b c commit; select * from bug49164; a b c -1 1 6 +1 1 1 2 2 2 3 3 3 drop table bug49164; diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug53591.result b/mysql-test/suite/innodb_plugin/r/innodb_bug53591.result index 1f05b6d2a57..99dd0d837ae 100644 --- a/mysql-test/suite/innodb_plugin/r/innodb_bug53591.result +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug53591.result @@ -9,7 +9,6 @@ SHOW WARNINGS; Level Code Message Error 139 Too big row Error 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs -Error 1030 Got error 139 from storage engine DROP TABLE bug53591; SET GLOBAL innodb_file_format=Antelope; SET GLOBAL innodb_file_format_check=Antelope; diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug54679.result b/mysql-test/suite/innodb_plugin/r/innodb_bug54679.result index 14fd32ca469..f98f0474233 100644 --- a/mysql-test/suite/innodb_plugin/r/innodb_bug54679.result +++ b/mysql-test/suite/innodb_plugin/r/innodb_bug54679.result @@ -21,7 +21,7 @@ ALTER TABLE bug54679 KEY_BLOCK_SIZE=1; SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME='bug54679'; TABLE_NAME ROW_FORMAT CREATE_OPTIONS -bug54679 Compressed KEY_BLOCK_SIZE=1 +bug54679 Compressed key_block_size=1 ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT; ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) SHOW WARNINGS; @@ -38,7 +38,7 @@ ALTER TABLE bug54679 KEY_BLOCK_SIZE=2; SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME='bug54679'; TABLE_NAME ROW_FORMAT CREATE_OPTIONS -bug54679 Compressed row_format=REDUNDANT KEY_BLOCK_SIZE=2 +bug54679 Compressed row_format=REDUNDANT key_block_size=2 SET GLOBAL innodb_file_format=Antelope; ALTER TABLE bug54679 KEY_BLOCK_SIZE=4; ERROR HY000: Can't create table '#sql-temporary' (errno: 1478) diff --git a/mysql-test/suite/innodb_plugin/r/innodb_mysql.result b/mysql-test/suite/innodb_plugin/r/innodb_mysql.result index b4ac88fc1c3..53e979c350f 100644 --- a/mysql-test/suite/innodb_plugin/r/innodb_mysql.result +++ b/mysql-test/suite/innodb_plugin/r/innodb_mysql.result @@ -2311,8 +2311,8 @@ select_type SIMPLE table t1 type index possible_keys NULL -key b -key_len 10 +key PRIMARY +key_len 4 ref NULL rows 10 Extra Using index diff --git a/mysql-test/suite/innodb_plugin/t/disabled.def b/mysql-test/suite/innodb_plugin/t/disabled.def index 87cf2454f81..58de79e4afb 100644 --- a/mysql-test/suite/innodb_plugin/t/disabled.def +++ b/mysql-test/suite/innodb_plugin/t/disabled.def @@ -10,4 +10,13 @@ # ############################################################################## -innodb-use-sys-malloc : Waiting for buyfix from Percona for LP#612600 +innodb-use-sys-malloc : Waiting for bugfix from Percona for LP#612600 +innodb_plugin.innodb-autoinc-44030 : Waiting for merge with XtraDB +innodb_bug48024 : Waiting for merge with XtraDB +innodb_bug49164 : Waiting for merge with XtraDB +innodb_bug51378 : Waiting for merge with XtraDB +innodb_bug51920 : Waiting for merge with XtraDB +innodb_bug52663 : Waiting for merge with XtraDB +innodb_bug54044 : Waiting for merge with XtraDB +innodb_bug52745 : Waiting for merge with XtraDB +innodb_bug54679 : Waiting for merge with XtraDB diff --git a/mysql-test/suite/innodb_plugin/t/innodb-index-ip.test b/mysql-test/suite/innodb_plugin/t/innodb-index-ip.test new file mode 100644 index 00000000000..d7775cbabc0 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb-index-ip.test @@ -0,0 +1,18 @@ +# +# Tests from innodb.test that has different results for innodb_plugin & xtradb. + +-- source include/have_real_innodb_plugin.inc + +--disable_warnings +drop table if exists t1; +drop database if exists mysqltest; +--enable_warnings + +create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb; +insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,3,'ac','ac'),(4,4,'afe','afe'),(5,4,'affe','affe'); +--error ER_DUP_ENTRY +alter table t1 add unique index (b), add unique index (c), add unique index (d); +--error ER_DUP_ENTRY +alter table t1 add unique index (c), add unique index (b), add index (d); +show create table t1; +drop table t1; diff --git a/mysql-test/suite/innodb_plugin/t/innodb-index-xb.test b/mysql-test/suite/innodb_plugin/t/innodb-index-xb.test new file mode 100644 index 00000000000..c82ff7c2024 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb-index-xb.test @@ -0,0 +1,18 @@ +# +# Tests from innodb.test that has different results for innodb_plugin & xtradb. + +-- source include/have_xtradb.inc + +--disable_warnings +drop table if exists t1; +drop database if exists mysqltest; +--enable_warnings + +create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb; +insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,3,'ac','ac'),(4,4,'afe','afe'),(5,4,'affe','affe'); +--error ER_DUP_ENTRY +alter table t1 add unique index (b), add unique index (c), add unique index (d); +--error ER_DUP_ENTRY +alter table t1 add unique index (c), add unique index (b), add index (d); +show create table t1; +drop table t1; diff --git a/mysql-test/suite/innodb_plugin/t/innodb-index.test b/mysql-test/suite/innodb_plugin/t/innodb-index.test index 717c7d4e032..e6f39bab216 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb-index.test +++ b/mysql-test/suite/innodb_plugin/t/innodb-index.test @@ -141,9 +141,6 @@ show create table t4; --error ER_CANT_CREATE_TABLE alter table t3 add constraint dc foreign key (a) references t1(a); show create table t3; -# this should be fixed by MySQL (see Bug #51451) ---error ER_WRONG_NAME_FOR_INDEX -alter table t2 drop index b, add index (b); show create table t2; --error ER_ROW_IS_REFERENCED_2 delete from t1; @@ -186,15 +183,6 @@ alter table t1 add index (b); show create table t1; drop table t1; -create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb; -insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,3,'ac','ac'),(4,4,'afe','afe'),(5,4,'affe','affe'); ---error ER_DUP_ENTRY -alter table t1 add unique index (b), add unique index (c), add unique index (d); ---error ER_DUP_ENTRY -alter table t1 add unique index (c), add unique index (b), add index (d); -show create table t1; -drop table t1; - create table t1(a int not null, b int not null, c int, primary key (a), key(c)) engine=innodb; insert into t1 values (5,1,5),(4,2,4),(3,3,3),(2,4,2),(1,5,1); alter table t1 add unique index (b); diff --git a/mysql-test/suite/innodb_plugin/t/innodb-ip.test b/mysql-test/suite/innodb_plugin/t/innodb-ip.test new file mode 100644 index 00000000000..e6dd2e99a95 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb-ip.test @@ -0,0 +1,35 @@ +# +# Tests from innodb.test that has different results for innodb_plugin. + +-- source include/have_real_innodb_plugin.inc + +--disable_warnings +drop table if exists t1; +drop database if exists mysqltest; +--enable_warnings + +CREATE TABLE t1 ( + sca_code char(6) NOT NULL, + cat_code char(6) NOT NULL, + sca_desc varchar(50), + lan_code char(2) NOT NULL, + sca_pic varchar(100), + sca_sdesc varchar(50), + sca_sch_desc varchar(16), + PRIMARY KEY (sca_code, cat_code, lan_code), + INDEX sca_pic (sca_pic) +) engine = innodb ; + +INSERT INTO t1 ( sca_code, cat_code, sca_desc, lan_code, sca_pic, sca_sdesc, sca_sch_desc) VALUES ( 'PD', 'J', 'PENDANT', 'EN', NULL, NULL, 'PENDANT'),( 'RI', 'J', 'RING', 'EN', NULL, NULL, 'RING'),( 'QQ', 'N', 'RING', 'EN', 'not null', NULL, 'RING'); + +# this should be fixed by MySQL (see Bug #51451) +--error ER_WRONG_NAME_FOR_INDEX +alter table t1 drop index sca_pic, add index (sca_pic, cat_code); +alter table t1 drop index sca_pic; +alter table t1 add index (sca_pic, cat_code); +select count(*) from t1 where sca_code='PD' and sca_pic is null; +select count(*) from t1 where sca_pic >= 'n'; +select sca_pic from t1 where sca_pic is null; +update t1 set sca_pic="test" where sca_pic is null; +delete from t1 where sca_code='pd'; +drop table t1; diff --git a/mysql-test/suite/innodb_plugin/t/innodb-xb.test b/mysql-test/suite/innodb_plugin/t/innodb-xb.test new file mode 100644 index 00000000000..37b5414ce64 --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb-xb.test @@ -0,0 +1,35 @@ +# +# Tests from innodb.test that has different results for innodb_plugin. + +-- source include/have_xtradb.inc + +--disable_warnings +drop table if exists t1; +drop database if exists mysqltest; +--enable_warnings + +CREATE TABLE t1 ( + sca_code char(6) NOT NULL, + cat_code char(6) NOT NULL, + sca_desc varchar(50), + lan_code char(2) NOT NULL, + sca_pic varchar(100), + sca_sdesc varchar(50), + sca_sch_desc varchar(16), + PRIMARY KEY (sca_code, cat_code, lan_code), + INDEX sca_pic (sca_pic) +) engine = innodb ; + +INSERT INTO t1 ( sca_code, cat_code, sca_desc, lan_code, sca_pic, sca_sdesc, sca_sch_desc) VALUES ( 'PD', 'J', 'PENDANT', 'EN', NULL, NULL, 'PENDANT'),( 'RI', 'J', 'RING', 'EN', NULL, NULL, 'RING'),( 'QQ', 'N', 'RING', 'EN', 'not null', NULL, 'RING'); + +# this should be fixed by MySQL (see Bug #51451) +#--error ER_WRONG_NAME_FOR_INDEX +alter table t1 drop index sca_pic, add index (sca_pic, cat_code); +alter table t1 drop index sca_pic; +alter table t1 add index (sca_pic, cat_code); +select count(*) from t1 where sca_code='PD' and sca_pic is null; +select count(*) from t1 where sca_pic >= 'n'; +select sca_pic from t1 where sca_pic is null; +update t1 set sca_pic="test" where sca_pic is null; +delete from t1 where sca_code='pd'; +drop table t1; diff --git a/mysql-test/suite/innodb_plugin/t/innodb.test b/mysql-test/suite/innodb_plugin/t/innodb.test index 60ba7d1e3bf..5be5e6c4837 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb.test +++ b/mysql-test/suite/innodb_plugin/t/innodb.test @@ -437,16 +437,6 @@ alter table t1 add index sca_pic (cat_code, sca_pic); select count(*) from t1 where sca_code='PD' and sca_pic is null; select count(*) from t1 where cat_code='E'; -# this should be fixed by MySQL (see Bug #51451) ---error ER_WRONG_NAME_FOR_INDEX -alter table t1 drop index sca_pic, add index (sca_pic, cat_code); -alter table t1 drop index sca_pic; -alter table t1 add index (sca_pic, cat_code); -select count(*) from t1 where sca_code='PD' and sca_pic is null; -select count(*) from t1 where sca_pic >= 'n'; -select sca_pic from t1 where sca_pic is null; -update t1 set sca_pic="test" where sca_pic is null; -delete from t1 where sca_code='pd'; drop table t1; # diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug21704-xb.test b/mysql-test/suite/innodb_plugin/t/innodb_bug21704-xb.test new file mode 100644 index 00000000000..1015eed334f --- /dev/null +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug21704-xb.test @@ -0,0 +1,96 @@ +-- source include/have_xtradb.inc + +--echo # +--echo # Bug#21704: Renaming column does not update FK definition. +--echo # + +--echo +--echo # Test that it's not possible to rename columns participating in a +--echo # foreign key (either in the referencing or referenced table). +--echo + +--disable_warnings +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t3; +--enable_warnings + +CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ROW_FORMAT=COMPACT ENGINE=INNODB; + +CREATE TABLE t2 (a INT PRIMARY KEY, b INT, + CONSTRAINT fk1 FOREIGN KEY (a) REFERENCES t1(a)) +ROW_FORMAT=COMPACT ENGINE=INNODB; + +CREATE TABLE t3 (a INT PRIMARY KEY, b INT, KEY(b), C INT, + CONSTRAINT fk2 FOREIGN KEY (b) REFERENCES t3 (a)) +ROW_FORMAT=COMPACT ENGINE=INNODB; + +INSERT INTO t1 VALUES (1,1),(2,2),(3,3); +INSERT INTO t2 VALUES (1,1),(2,2),(3,3); +INSERT INTO t3 VALUES (1,1,1),(2,2,2),(3,3,3); + +--echo +--echo # Test renaming the column in the referenced table. +--echo + +# mysqltest first does replace_regex, then replace_result +--replace_regex /'[^']*test\/#sql-[0-9a-f_]*'/'#sql-temporary'/ +# Embedded server doesn't chdir to data directory +--replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ '' +--error ER_ERROR_ON_RENAME +ALTER TABLE t1 CHANGE a c INT; + +--echo # Ensure that online column rename works. + +--enable_info +ALTER TABLE t1 CHANGE b c INT; +--disable_info + +--echo +--echo # Test renaming the column in the referencing table +--echo + +# mysqltest first does replace_regex, then replace_result +--replace_regex /'[^']*test\/#sql-[0-9a-f_]*'/'#sql-temporary'/ +# Embedded server doesn't chdir to data directory +--replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ '' +--error ER_ERROR_ON_RENAME +ALTER TABLE t2 CHANGE a c INT; + +--echo # Ensure that online column rename works. + +--enable_info +ALTER TABLE t2 CHANGE b c INT; +--disable_info + +--echo +--echo # Test with self-referential constraints +--echo + +# mysqltest first does replace_regex, then replace_result +--replace_regex /'[^']*test\/#sql-[0-9a-f_]*'/'#sql-temporary'/ +# Embedded server doesn't chdir to data directory +--replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ '' +--error ER_ERROR_ON_RENAME +ALTER TABLE t3 CHANGE a d INT; + +# mysqltest first does replace_regex, then replace_result +--replace_regex /'[^']*test\/#sql-[0-9a-f_]*'/'#sql-temporary'/ +# Embedded server doesn't chdir to data directory +--replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ '' +--error ER_ERROR_ON_RENAME +ALTER TABLE t3 CHANGE b d INT; + +--echo # Ensure that online column rename works. + +--enable_info +ALTER TABLE t3 CHANGE c d INT; +--disable_info + +--echo +--echo # Cleanup. +--echo + +DROP TABLE t3; +DROP TABLE t2; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug21704.test b/mysql-test/suite/innodb_plugin/t/innodb_bug21704.test index 9adf3239dcd..318c5e6f84b 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb_bug21704.test +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug21704.test @@ -1,4 +1,4 @@ --- source include/have_innodb_plugin.inc +-- source include/have_real_innodb_plugin.inc --echo # --echo # Bug#21704: Renaming column does not update FK definition. diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53591.test b/mysql-test/suite/innodb_plugin/t/innodb_bug53591.test index 760b4630383..7220633f7aa 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb_bug53591.test +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53591.test @@ -1,4 +1,7 @@ --- source include/have_innodb_plugin.inc +# +# XtraDB doesn't have this problem +# +-- source include/have_real_innodb_plugin.inc let $file_format=`select @@innodb_file_format`; let $file_format_check=`select @@innodb_file_format_check`; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 3c1fbff6617..88bcd092dfa 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -6537,6 +6537,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, uint *index_add_buffer= NULL; uint candidate_key_count= 0; bool no_pk; + ulong explicit_used_fields= 0; DBUG_ENTER("mysql_alter_table"); /* @@ -6807,6 +6808,7 @@ view_err: change the row format in update_create_info(). */ create_info->used_fields|= HA_CREATE_USED_ROW_FORMAT; + explicit_used_fields|= HA_CREATE_USED_ROW_FORMAT; } DBUG_PRINT("info", ("old type: %s new type: %s", @@ -6967,6 +6969,9 @@ view_err: if (mysql_prepare_alter_table(thd, table, create_info, alter_info)) goto err; + /* Remove markers set for update_create_info */ + create_info->used_fields&= ~explicit_used_fields; + if (need_copy_table == ALTER_TABLE_METADATA_ONLY) need_copy_table= alter_info->change_level; diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index ceb50516659..1c2a880c070 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -5577,7 +5577,8 @@ ha_innobase::change_active_index( keynr); /* The caller seems to ignore this. Thus, we must check this again in row_search_for_mysql(). */ - DBUG_RETURN(2); + DBUG_RETURN(convert_error_code_to_mysql(DB_MISSING_HISTORY, + 0, NULL)); } ut_a(prebuilt->search_tuple != 0); diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc index 5a5e04bc9d7..ce89d4ef57c 100644 --- a/storage/xtradb/handler/ha_innodb.cc +++ b/storage/xtradb/handler/ha_innodb.cc @@ -10925,8 +10925,8 @@ mysql_declare_plugin(xtradb) MYSQL_STORAGE_ENGINE_PLUGIN, &innobase_storage_engine, innobase_hton_name, - "Innobase Oy", - "Supports transactions, row-level locking, and foreign keys", + "Percona", + "XtraDB engine based on InnoDB plugin. Supports transactions, row-level locking, and foreign keys", PLUGIN_LICENSE_GPL, innobase_init, /* Plugin Init */ NULL, /* Plugin Deinit */ From 3e610bc58d0ba325fdca3b06dfa976ecc513dc1e Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Aug 2010 12:43:51 +0300 Subject: [PATCH 347/461] Check of maria engine presence added. Comment fixed. --- mysql-test/suite/vcol/t/vcol_handler_maria.test | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/vcol/t/vcol_handler_maria.test b/mysql-test/suite/vcol/t/vcol_handler_maria.test index e23b44ebe9a..9b69e600767 100644 --- a/mysql-test/suite/vcol/t/vcol_handler_maria.test +++ b/mysql-test/suite/vcol/t/vcol_handler_maria.test @@ -14,8 +14,10 @@ # Change: # ################################################################################ +--source include/have_maria.inc + # -# NOTE: PLEASE DO NOT ADD NOT MYISAM SPECIFIC TESTCASES HERE ! +# NOTE: PLEASE DO NOT ADD NOT MARIA SPECIFIC TESTCASES HERE ! # TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN # THE SOURCED FILES ONLY. # From 34e0c8f4c598e88a46eedea879e6a5b42b8606b5 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Aug 2010 12:17:44 +0200 Subject: [PATCH 348/461] Fix mysql-test/suite/percona missing from `make dist`. --- mysql-test/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 8dce3ab2df5..4ea634688fe 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -104,6 +104,7 @@ TEST_DIRS = t r include std_data std_data/parts collections \ suite/pbxt/t suite/pbxt/r \ suite/innodb suite/innodb/t suite/innodb/r suite/innodb/include \ suite/innodb_plugin suite/innodb_plugin/t suite/innodb_plugin/r suite/innodb_plugin/include \ + suite/percona \ suite/engines suite/engines/funcs suite/engines/iuds suite/engines/rr_trx \ suite/engines/funcs/r suite/engines/funcs/t suite/engines/iuds/r \ suite/engines/iuds/t suite/engines/rr_trx/include suite/engines/rr_trx/r \ From 7b4bd6dfce0068d65adfbefc5d5dc887bc887c73 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 4 Aug 2010 13:19:18 +0300 Subject: [PATCH 349/461] Fixed some test failures after last push (failing tests and valgrind warnings) Added --strace support to mysql-test-run mysql-test/mysql-test-run.pl: Added support for --strace (usefull for example to check how much memory mysqld was using) mysql-test/suite/funcs_1/t/is_engines_innodb.test: Fixed test case to also work with xtradb mysql-test/suite/innodb_plugin/t/innodb.test: Don't run if we don't have the used character sets. mysql-test/suite/innodb_plugin/t/innodb_mysql.test: Don't run if we don't have the used character sets. sql/sql_show.cc: Extended comment to 160 characters to get full comment from xtradb storage/xtradb/handler/ha_innodb.cc: Fixed valgrind warning. --- mysql-test/mysql-test-run.pl | 60 ++++++++++++++++--- .../suite/funcs_1/t/is_engines_innodb.test | 1 + mysql-test/suite/innodb_plugin/t/innodb.test | 2 + .../suite/innodb_plugin/t/innodb_mysql.test | 4 +- sql/sql_show.cc | 2 +- storage/xtradb/handler/ha_innodb.cc | 5 +- 6 files changed, 63 insertions(+), 11 deletions(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 1ebf554e1fd..f4274b7a474 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -234,10 +234,12 @@ my $opt_strace_client; our $opt_user = "root"; my $opt_valgrind= 0; -our $opt_valgrind_mysqld= 0; -my $opt_valgrind_mysqltest= 0; my @default_valgrind_args= ("--show-reachable=yes"); my @valgrind_args; +our $opt_valgrind_mysqld= 0; +my $opt_valgrind_mysqltest= 0; +my $opt_strace= 0; +my @strace_args; my $opt_valgrind_path; my $opt_callgrind; my %mysqld_logs; @@ -929,7 +931,9 @@ sub command_line_setup { 'manual-ddd' => \$opt_manual_ddd, 'debugger=s' => \$opt_debugger, 'client-debugger=s' => \$opt_client_debugger, + 'strace' => \$opt_strace, 'strace-client:s' => \$opt_strace_client, + 'strace-option=s' => \@strace_args, 'max-save-core=i' => \$opt_max_save_core, 'max-save-datadir=i' => \$opt_max_save_datadir, 'max-test-fail=i' => \$opt_max_test_fail, @@ -1473,6 +1477,11 @@ sub command_line_setup { join(" ", @valgrind_args), "\""); } + if (@strace_args) + { + $opt_strace=1; + } + # InnoDB does not bother to do individual de-allocations at exit. Instead it # relies on a custom allocator to track every allocation, and frees all at # once during exit. @@ -1724,9 +1733,9 @@ sub executable_setup () { if ( -x "../libtool") { $exe_libtool= "../libtool"; - if ($opt_valgrind or $glob_debugger) + if ($opt_valgrind or $glob_debugger or $opt_strace) { - mtr_report("Using \"$exe_libtool\" when running valgrind or debugger"); + mtr_report("Using \"$exe_libtool\" when running valgrind, strace or debugger"); } } @@ -4636,6 +4645,10 @@ sub mysqld_start ($$) { { valgrind_arguments($args, \$exe); } + if ( $opt_strace) + { + strace_arguments($args, \$exe, $mysqld->name()); + } mtr_add_arg($args, "--defaults-group-suffix=%s", $mysqld->after('mysqld')); mysqld_arguments($args,$mysqld,$extra_opts); @@ -5575,6 +5588,33 @@ sub valgrind_arguments { } } +# +# Modify the exe and args so that program is run in strace +# +sub strace_arguments { + my $args= shift; + my $exe= shift; + my $mysqld_name= shift; + + mtr_add_arg($args, "-f"); + mtr_add_arg($args, "-o%s/var/log/%s.strace", $glob_mysql_test_dir, $mysqld_name); + + # Add strace options, can be overriden by user + mtr_add_arg($args, '%s', $_) for (@strace_args); + + mtr_add_arg($args, $$exe); + + $$exe= "strace"; + + if ($exe_libtool) + { + # Add "libtool --mode-execute" before the test to execute + # if running in valgrind(to avoid valgrinding bash) + unshift(@$args, "--mode=execute", $$exe); + $$exe= $exe_libtool; + } +} + # # Usage @@ -5702,9 +5742,6 @@ Options for debugging the product test(s) manual-ddd Let user manually start mysqld in ddd, before running test(s) - strace-client=[path] Create strace output for mysqltest client, optionally - specifying name and path to the trace program to use. - Example: $0 --strace-client=ktrace max-save-core Limit the number of core files saved (to avoid filling up disks for heavily crashing server). Defaults to $opt_max_save_core, set to 0 for no limit. Set @@ -5732,6 +5769,15 @@ Options for valgrind valgrind-path= Path to the valgrind executable callgrind Instruct valgrind to use callgrind +Options for strace + + strace Run the "mysqld" executables using strace. Default + options are -f -o var/log/'mysqld-name'.strace + strace-option=ARGS Option to give strace, replaces default option(s), + strace-client=[path] Create strace output for mysqltest client, optionally + specifying name and path to the trace program to use. + Example: $0 --strace-client=ktrace + Misc options user=USER User for connecting to mysqld(default: $opt_user) comment=STR Write STR to the output diff --git a/mysql-test/suite/funcs_1/t/is_engines_innodb.test b/mysql-test/suite/funcs_1/t/is_engines_innodb.test index 6c20b9697f0..44c7d7652d7 100644 --- a/mysql-test/suite/funcs_1/t/is_engines_innodb.test +++ b/mysql-test/suite/funcs_1/t/is_engines_innodb.test @@ -11,5 +11,6 @@ let $engine_type= InnoDB; --source include/have_innodb.inc --vertical_results +--replace_regex /XtraDB engine based on InnoDB plugin. // eval SELECT * FROM information_schema.engines WHERE ENGINE = '$engine_type'; diff --git a/mysql-test/suite/innodb_plugin/t/innodb.test b/mysql-test/suite/innodb_plugin/t/innodb.test index 5be5e6c4837..c6ae49d6e3b 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb.test +++ b/mysql-test/suite/innodb_plugin/t/innodb.test @@ -16,6 +16,8 @@ -- source include/have_innodb_plugin.inc let $MYSQLD_DATADIR= `select @@datadir`; +let collation=utf8_unicode_ci; +--source include/have_collation.inc # Save the original values of some variables in order to be able to # estimate how much they have changed during the tests. Previously this diff --git a/mysql-test/suite/innodb_plugin/t/innodb_mysql.test b/mysql-test/suite/innodb_plugin/t/innodb_mysql.test index 3f6d9d96bb8..5adaba43050 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb_mysql.test +++ b/mysql-test/suite/innodb_plugin/t/innodb_mysql.test @@ -2,10 +2,12 @@ # # Last update: # 2006-07-26 ML test refactored (MySQL 5.1) -# main testing code t/innodb_mysql.test -> include/mix1.inc +# main testing code t/innodb_mysql.test -> include/mix1.inc # -- source include/have_innodb_plugin.inc +-- source include/have_query_cache.inc + let $engine_type= InnoDB; let $other_engine_type= MEMORY; # InnoDB does support FOREIGN KEYFOREIGN KEYs diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 7db10019c97..b79e01f5ef4 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -6331,7 +6331,7 @@ ST_FIELD_INFO engines_fields_info[]= { {"ENGINE", 64, MYSQL_TYPE_STRING, 0, 0, "Engine", SKIP_OPEN_TABLE}, {"SUPPORT", 8, MYSQL_TYPE_STRING, 0, 0, "Support", SKIP_OPEN_TABLE}, - {"COMMENT", 80, MYSQL_TYPE_STRING, 0, 0, "Comment", SKIP_OPEN_TABLE}, + {"COMMENT", 160, MYSQL_TYPE_STRING, 0, 0, "Comment", SKIP_OPEN_TABLE}, {"TRANSACTIONS", 3, MYSQL_TYPE_STRING, 0, 1, "Transactions", SKIP_OPEN_TABLE}, {"XA", 3, MYSQL_TYPE_STRING, 0, 1, "XA", SKIP_OPEN_TABLE}, {"SAVEPOINTS", 3 ,MYSQL_TYPE_STRING, 0, 1, "Savepoints", SKIP_OPEN_TABLE}, diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc index ce89d4ef57c..cbac193a0cc 100644 --- a/storage/xtradb/handler/ha_innodb.cc +++ b/storage/xtradb/handler/ha_innodb.cc @@ -3502,7 +3502,7 @@ retry: sql_print_error("Table %s has a primary key in InnoDB data " "dictionary, but not in MySQL!", name); } - + prebuilt->clust_index_was_generated = FALSE; /* MySQL allocates the buffer for ref. key_info->key_length @@ -3511,7 +3511,8 @@ retry: save space, because all row reference buffers are allocated based on ref_length. */ - ref_length = table->key_info[primary_key].key_length; + if (primary_key < MAX_KEY) + ref_length = table->key_info[primary_key].key_length; } else { if (primary_key != MAX_KEY) { sql_print_error("Table %s has no primary key in InnoDB data " From cd9706b27ee113e0d448cb9c509fa9a4d553c5ee Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 4 Aug 2010 16:01:13 +0300 Subject: [PATCH 350/461] Fixes bug when we run bcmp() on row when the storage engine hasn't filled in all fields in the row. This was triggered by innodb.innodb_multi_update, where we had a static length row without nulls and xtradb didn't fill in the delete-marker byte include/my_bitmap.h: Added prototype for bitmap_union_is_set_all() mysys/my_bitmap.c: Added function to check if union of two bit maps covers all bits. sql/mysql_priv.h: Updated protype for compare_record() sql/sql_insert.cc: Send to compare_record() flag if all fields are used. sql/sql_select.cc: Set share->null_bytes_for_compare. sql/sql_update.cc: In compare_record() don't use the fast cmp_record() (which is basically memcmp) if we don't know that all fields exists. Don't compare the null_bytes if there is no data there. sql/table.cc: Store in share->null_bytes_for_compare the number of bytes that has null or bit fields (but not delete marker) Store in can_cmp_whole_record if we can use memcmp() (assuming all rows are read) to compare rows in compare_record() sql/table.h: Added two elements in table->share to speed up checking how updated rows can be compared. --- include/my_bitmap.h | 2 ++ mysys/my_bitmap.c | 18 ++++++++++++++++++ sql/mysql_priv.h | 2 +- sql/sql_insert.cc | 5 +++-- sql/sql_select.cc | 4 ++-- sql/sql_update.cc | 33 ++++++++++++++++++++++----------- sql/table.cc | 10 ++++++++++ sql/table.h | 6 ++++++ 8 files changed, 64 insertions(+), 16 deletions(-) diff --git a/include/my_bitmap.h b/include/my_bitmap.h index 78642df3362..2c50ca3ec75 100644 --- a/include/my_bitmap.h +++ b/include/my_bitmap.h @@ -53,6 +53,8 @@ extern my_bool bitmap_is_overlapping(const MY_BITMAP *map1, extern my_bool bitmap_test_and_set(MY_BITMAP *map, uint bitmap_bit); extern my_bool bitmap_test_and_clear(MY_BITMAP *map, uint bitmap_bit); extern my_bool bitmap_fast_test_and_set(MY_BITMAP *map, uint bitmap_bit); +extern my_bool bitmap_union_is_set_all(const MY_BITMAP *map1, + const MY_BITMAP *map2); extern uint bitmap_set_next(MY_BITMAP *map); extern uint bitmap_get_first(const MY_BITMAP *map); extern uint bitmap_get_first_set(const MY_BITMAP *map); diff --git a/mysys/my_bitmap.c b/mysys/my_bitmap.c index 137127a2fda..69e0ca18cb8 100644 --- a/mysys/my_bitmap.c +++ b/mysys/my_bitmap.c @@ -378,6 +378,24 @@ void bitmap_intersect(MY_BITMAP *map, const MY_BITMAP *map2) } } +/* True if union of bitmaps have all bits set */ + +my_bool bitmap_union_is_set_all(const MY_BITMAP *map1, const MY_BITMAP *map2) +{ + my_bitmap_map *m1= map1->bitmap, *m2= map2->bitmap, *end; + + DBUG_ASSERT(map1->bitmap && map2->bitmap && + map1->n_bits==map2->n_bits); + *map1->last_word_ptr|= map1->last_word_mask; + + end= map1->last_word_ptr; + while ( m1 <= end) + if ((*m1++ | *m2++) != 0xFFFFFFFF) + return FALSE; + return TRUE; +} + + /* Set/clear all bits above a bit. diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index bf973b7bfa0..46a4cf3cf06 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1064,7 +1064,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, char* packet, uint packet_length); void log_slow_statement(THD *thd); bool check_dup(const char *db, const char *name, TABLE_LIST *tables); -bool compare_record(TABLE *table); +bool compare_record(TABLE *table, bool all_columns_exists); bool append_file_to_dir(THD *thd, const char **filename_ptr, const char *table_name); void wait_while_table_is_used(THD *thd, TABLE *table, diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 100bda421b2..6dd19f6e203 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -1509,9 +1509,10 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) table->file->adjust_next_insert_id_after_explicit_value( table->next_number_field->val_int()); info->touched++; - if ((table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ && + if (((table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ) && !bitmap_is_subset(table->write_set, table->read_set)) || - compare_record(table)) + compare_record(table, bitmap_union_is_set_all(table->write_set, + table->read_set))) { if ((error=table->file->ha_update_row(table->record[1], table->record[0])) && diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 932a8d51af3..60da06fadf1 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -10396,7 +10396,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List &fields, table->null_flags= (uchar*) table->record[0]; share->null_fields= null_count+ hidden_null_count; - share->null_bytes= null_pack_length; + share->null_bytes= share->null_bytes_for_compare= null_pack_length; } null_count= (blob_count == 0) ? 1 : 0; hidden_field_count=param->hidden_field_count; @@ -10762,7 +10762,7 @@ TABLE *create_virtual_tmp_table(THD *thd, List &field_list) { table->null_flags= (uchar*) table->record[0]; share->null_fields= null_count; - share->null_bytes= null_pack_length; + share->null_bytes= share->null_bytes_for_compare= null_pack_length; } table->in_use= thd; /* field->reset() may access table->in_use */ diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 9dd48ca2010..cce6d612fba 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -27,14 +27,14 @@ /* Return 0 if row hasn't changed */ -bool compare_record(TABLE *table) +bool compare_record(TABLE *table, bool all_columns_exists) { - if (table->s->blob_fields + table->s->varchar_fields == 0) + if (table->s->can_cmp_whole_record && all_columns_exists) return cmp_record(table,record[1]); /* Compare null bits */ if (memcmp(table->null_flags, table->null_flags+table->s->rec_buff_length, - table->s->null_bytes)) + table->s->null_bytes_for_compare)) return TRUE; // Diff in NULL value /* Compare updated fields */ for (Field **ptr= table->field ; *ptr ; ptr++) @@ -186,7 +186,7 @@ int mysql_update(THD *thd, bool using_limit= limit != HA_POS_ERROR; bool safe_update= test(thd->options & OPTION_SAFE_UPDATES); bool used_key_is_modified, transactional_table, will_batch; - bool can_compare_record; + bool can_compare_record, all_columns_exists; int res; int error, loc_error; uint used_index= MAX_KEY, dup_key_found; @@ -574,6 +574,9 @@ int mysql_update(THD *thd, can_compare_record= (!(table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ) || bitmap_is_subset(table->write_set, table->read_set)); + all_columns_exists= (can_compare_record && + bitmap_union_is_set_all(table->write_set, + table->read_set)); while (!(error=info.read_record(&info)) && !thd->killed) { @@ -591,7 +594,7 @@ int mysql_update(THD *thd, found++; - if (!can_compare_record || compare_record(table)) + if (!can_compare_record || compare_record(table, all_columns_exists)) { if ((res= table_list->view_check_option(thd, ignore)) != VIEW_CHECK_OK) @@ -1758,11 +1761,14 @@ bool multi_update::send_data(List ¬_used_values) */ if (table == table_to_update) { - bool can_compare_record; + bool can_compare_record, all_columns_exists; can_compare_record= (!(table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ) || bitmap_is_subset(table->write_set, table->read_set)); + all_columns_exists= (can_compare_record && + bitmap_union_is_set_all(table->write_set, + table->read_set)); table->status|= STATUS_UPDATED; store_record(table,record[1]); if (fill_record_n_invoke_before_triggers(thd, *fields_for_table[offset], @@ -1777,7 +1783,7 @@ bool multi_update::send_data(List ¬_used_values) */ table->auto_increment_field_not_null= FALSE; found++; - if (!can_compare_record || compare_record(table)) + if (!can_compare_record || compare_record(table, all_columns_exists)) { int error; if ((error= cur_table->view_check_option(thd, ignore)) != @@ -1964,7 +1970,7 @@ int multi_update::do_updates() DBUG_RETURN(0); for (cur_table= update_tables; cur_table; cur_table= cur_table->next_local) { - bool can_compare_record; + bool can_compare_record, all_columns_exists; uint offset= cur_table->shared; table = cur_table->table; @@ -1988,9 +1994,11 @@ int multi_update::do_updates() Setup copy functions to copy fields from temporary table */ List_iterator_fast field_it(*fields_for_table[offset]); - Field **field= tmp_table->field + - 1 + unupdated_check_opt_tables.elements; // Skip row pointers + Field **field; Copy_field *copy_field_ptr= copy_field, *copy_field_end; + + /* Skip row pointers */ + field= tmp_table->field + 1 + unupdated_check_opt_tables.elements; for ( ; *field ; field++) { Item_field *item= (Item_field* ) field_it++; @@ -2005,6 +2013,9 @@ int multi_update::do_updates() HA_PARTIAL_COLUMN_READ) || bitmap_is_subset(table->write_set, table->read_set)); + all_columns_exists= (can_compare_record && + bitmap_union_is_set_all(table->write_set, + table->read_set)); for (;;) { @@ -2046,7 +2057,7 @@ int multi_update::do_updates() TRG_ACTION_BEFORE, TRUE)) goto err2; - if (!can_compare_record || compare_record(table)) + if (!can_compare_record || compare_record(table, all_columns_exists)) { int error; if ((error= cur_table->view_check_option(thd, ignore)) != diff --git a/sql/table.cc b/sql/table.cc index d77d09b9b6f..736fb77d7a3 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -687,6 +687,7 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, const char **interval_array; enum legacy_db_type legacy_db_type; my_bitmap_map *bitmaps; + bool null_bits_are_used; DBUG_ENTER("open_binary_frm"); new_field_pack_flag= head[27]; @@ -1134,6 +1135,7 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, goto err; record= share->default_values-1; /* Fieldstart = 1 */ + null_bits_are_used= share->null_fields != 0; if (share->null_field_first) { null_flags= null_pos= (uchar*) record+1; @@ -1306,6 +1308,7 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, reg_field->comment=comment; if (field_type == MYSQL_TYPE_BIT && !f_bit_as_char(pack_flag)) { + null_bits_are_used= 1; if ((null_bit_pos+= field_length & 7) > 7) { null_pos++; @@ -1594,6 +1597,13 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, share->null_bytes= (null_pos - (uchar*) null_flags + (null_bit_pos + 7) / 8); share->last_null_bit_pos= null_bit_pos; + share->null_bytes_for_compare= null_bits_are_used ? share->null_bytes : 0; + share->can_cmp_whole_record= (share->blob_fields == 0 && + share->varchar_fields == 0 && + (share->null_bytes_for_compare == + share->null_bytes || + !(handler_file->ha_table_flags() & + HA_PARTIAL_COLUMN_READ))); share->db_low_byte_first= handler_file->low_byte_first(); share->column_bitmap_size= bitmap_buffer_size(share->fields); diff --git a/sql/table.h b/sql/table.h index 4d2b0b6fe91..0a25ee75d4e 100644 --- a/sql/table.h +++ b/sql/table.h @@ -401,6 +401,11 @@ typedef struct st_table_share uint blob_ptr_size; /* 4 or 8 */ uint key_block_size; /* create key_block_size, if used */ uint null_bytes, last_null_bit_pos; + /* + Same as null_bytes, except that if there is only a 'delete-marker' in + the record then this value is 0. + */ + uint null_bytes_for_compare; uint fields; /* Number of fields */ uint rec_buff_length; /* Size of table->record[] buffer */ uint keys, key_parts; @@ -432,6 +437,7 @@ typedef struct st_table_share bool name_lock, replace_with_name_lock; bool waiting_on_cond; /* Protection against free */ bool deleting; /* going to delete this table */ + bool can_cmp_whole_record; ulong table_map_id; /* for row-based replication */ /* From 1f5b93e7720874c2b4a31e11af3fd8729d2beea7 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 4 Aug 2010 21:36:11 +0300 Subject: [PATCH 351/461] Fixed compiler warnings Fixed some wrong test cases Fixed bug in null handling in XtraDB extra/comp_err.c: Fixed compiler warnings extra/my_print_defaults.c: Fixed compiler warnings mysql-test/suite/binlog/t/binlog_killed.test: Added support for timeouts mysql-test/suite/funcs_1/r/is_columns_is.result: Updated results (INNODB_SYS_TABLES had got new column) scripts/mysql_install_db.sh: Fixed typo sql/mysql_priv.h: Removed not needed argument for compare_record() sql/sql_insert.cc: Removed not needed argument for compare_record() sql/sql_update.cc: Removed not needed argument for compare_record() The argument is not needed becasue we copy the full record[0] to record[1] and the comparison should work even if all columns are not read sql/table.cc: The comparison of rows is independent of HA_PARTIAL_COLUMN_READ storage/maria/maria_chk.c: Fixed compiler warnings storage/maria/maria_read_log.c: Fixed compiler warnings storage/myisam/myisamchk.c: Fixed compiler warnings storage/myisam/myisampack.c: Fixed compiler warnings storage/xtradb/dict/dict0load.c: Fixed compiler warnings storage/xtradb/row/row0sel.c: Fixed null handling in XtraDB. (See comment) storage/xtradb/trx/trx0sys.c: Fixed compiler warnings support-files/compiler_warnings.supp: Fixed compiler warnings --- extra/comp_err.c | 3 ++- extra/my_print_defaults.c | 6 ++--- mysql-test/suite/binlog/t/binlog_killed.test | 2 +- .../suite/funcs_1/r/is_columns_is.result | 18 +++++++------ mysql-test/suite/funcs_1/t/is_columns_is.test | 1 + scripts/mysql_install_db.sh | 2 +- sql/mysql_priv.h | 2 +- sql/sql_insert.cc | 3 +-- sql/sql_update.cc | 25 ++++++------------- sql/table.cc | 6 +---- storage/maria/maria_chk.c | 15 ++++++----- storage/maria/maria_read_log.c | 4 +-- storage/myisam/myisamchk.c | 12 ++++----- storage/myisam/myisampack.c | 4 +-- storage/xtradb/dict/dict0load.c | 1 + storage/xtradb/row/row0sel.c | 6 +++++ storage/xtradb/trx/trx0sys.c | 6 +++-- support-files/compiler_warnings.supp | 1 + 18 files changed, 58 insertions(+), 59 deletions(-) diff --git a/extra/comp_err.c b/extra/comp_err.c index 1571efec448..58395cd6344 100644 --- a/extra/comp_err.c +++ b/extra/comp_err.c @@ -108,7 +108,8 @@ static struct my_option my_long_options[]= NO_ARG, 0, 0, 0, 0, 0, 0}, {"version", 'V', "Prints version", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"charset", 'C', "Charset dir", &charsets_dir, &charsets_dir, + {"charset", 'C', "Charset dir", + (char**) &charsets_dir, (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"in_file", 'F', "Input file", &TXTFILE, &TXTFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, diff --git a/extra/my_print_defaults.c b/extra/my_print_defaults.c index cc74208b783..da7061471fa 100644 --- a/extra/my_print_defaults.c +++ b/extra/my_print_defaults.c @@ -49,7 +49,7 @@ static struct my_option my_long_options[] = {"config-file", 'c', "Deprecated, please use --defaults-file instead. " "Name of config file to read; if no extension is given, default " "extension (e.g., .ini or .cnf) will be added", - &config_file, &config_file, 0, GET_STR, REQUIRED_ARG, + (char**) &config_file, (char**) &config_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #ifdef DBUG_OFF {"debug", '#', "This is a non-debug version. Catch this and exit", @@ -61,7 +61,7 @@ static struct my_option my_long_options[] = {"defaults-file", 'c', "Like --config-file, except: if first option, " "then read this file only, do not read global or per-user config " "files; should be the first option", - &config_file, &config_file, 0, GET_STR, REQUIRED_ARG, + (char**) &config_file, (char*) &config_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"defaults-extra-file", 'e', "Read this file after the global config file and before the config " @@ -70,7 +70,7 @@ static struct my_option my_long_options[] = GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"defaults-group-suffix", 'g', "In addition to the given groups, read also groups with this suffix", - &my_defaults_group_suffix, &my_defaults_group_suffix, + (char**) &my_defaults_group_suffix, (char**) &my_defaults_group_suffix, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"extra-file", 'e', "Deprecated. Synonym for --defaults-extra-file.", diff --git a/mysql-test/suite/binlog/t/binlog_killed.test b/mysql-test/suite/binlog/t/binlog_killed.test index e2db326129d..ce6d344af32 100644 --- a/mysql-test/suite/binlog/t/binlog_killed.test +++ b/mysql-test/suite/binlog/t/binlog_killed.test @@ -202,7 +202,7 @@ eval kill query $ID; rollback; connection con2; ---error 0,ER_QUERY_INTERRUPTED +--error 0,ER_QUERY_INTERRUPTED,ER_LOCK_WAIT_TIMEOUT reap; # todo 1,2 above rollback; diff --git a/mysql-test/suite/funcs_1/r/is_columns_is.result b/mysql-test/suite/funcs_1/r/is_columns_is.result index 42e0d70d719..7460359b87d 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_is.result +++ b/mysql-test/suite/funcs_1/r/is_columns_is.result @@ -198,14 +198,15 @@ NULL information_schema INNODB_SYS_INDEXES PAGE_NO 7 0 NO bigint NULL NULL 19 0 NULL information_schema INNODB_SYS_INDEXES SPACE 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select NULL information_schema INNODB_SYS_INDEXES TABLE_ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select NULL information_schema INNODB_SYS_INDEXES TYPE 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema INNODB_SYS_TABLES CLUSTER_NAME 7 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select -NULL information_schema INNODB_SYS_TABLES ID 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema INNODB_SYS_TABLES MIX_ID 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema INNODB_SYS_TABLES MIX_LEN 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema INNODB_SYS_TABLES NAME 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select -NULL information_schema INNODB_SYS_TABLES N_COLS 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema INNODB_SYS_TABLES SPACE 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select -NULL information_schema INNODB_SYS_TABLES TYPE 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema INNODB_SYS_TABLES CLUSTER_NAME 8 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select +NULL information_schema INNODB_SYS_TABLES ID 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema INNODB_SYS_TABLES MIX_ID 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema INNODB_SYS_TABLES MIX_LEN 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema INNODB_SYS_TABLES NAME 2 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select +NULL information_schema INNODB_SYS_TABLES N_COLS 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema INNODB_SYS_TABLES SCHEMA 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select +NULL information_schema INNODB_SYS_TABLES SPACE 9 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select +NULL information_schema INNODB_SYS_TABLES TYPE 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select NULL information_schema INNODB_TABLE_STATS clust_size 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select NULL information_schema INNODB_TABLE_STATS modified 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select NULL information_schema INNODB_TABLE_STATS other_size 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select @@ -670,6 +671,7 @@ NULL information_schema INNODB_SYS_INDEXES N_FIELDS bigint NULL NULL NULL NULL b NULL information_schema INNODB_SYS_INDEXES TYPE bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema INNODB_SYS_INDEXES SPACE bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema INNODB_SYS_INDEXES PAGE_NO bigint NULL NULL NULL NULL bigint(21) unsigned +3.0000 information_schema INNODB_SYS_TABLES SCHEMA varchar 192 576 utf8 utf8_general_ci varchar(192) 3.0000 information_schema INNODB_SYS_TABLES NAME varchar 192 576 utf8 utf8_general_ci varchar(192) NULL information_schema INNODB_SYS_TABLES ID bigint NULL NULL NULL NULL bigint(21) unsigned NULL information_schema INNODB_SYS_TABLES N_COLS bigint NULL NULL NULL NULL bigint(21) unsigned diff --git a/mysql-test/suite/funcs_1/t/is_columns_is.test b/mysql-test/suite/funcs_1/t/is_columns_is.test index eb5c119baf4..c34bb968cc9 100644 --- a/mysql-test/suite/funcs_1/t/is_columns_is.test +++ b/mysql-test/suite/funcs_1/t/is_columns_is.test @@ -18,6 +18,7 @@ --source include/not_embedded.inc # This test depends on having the PBXT information_schema stuff. --source include/have_pbxt.inc +#--source include/have_xtradb.inc let $my_where = WHERE table_schema = 'information_schema' AND table_name <> 'profiling'; diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh index ea00b3a183b..8bae2ec9db1 100644 --- a/scripts/mysql_install_db.sh +++ b/scripts/mysql_install_db.sh @@ -479,7 +479,7 @@ then echo "Support MariaDB development by buying support/new features from" echo "Monty Program Ab. You can contact us about this at sales@askmonty.org". echo "Alternatively consider joining our community based development effort:" - echo "http://askmonty.org/wiki/index.php/MariaDB#How_can_I_participate_in_the_development_of_MariaDB.3F" + echo "http://askmonty.org/wiki/index.php/MariaDB#How_can_I_participate_in_the_development_of_MariaDB" echo fi diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 46a4cf3cf06..bf973b7bfa0 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1064,7 +1064,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, char* packet, uint packet_length); void log_slow_statement(THD *thd); bool check_dup(const char *db, const char *name, TABLE_LIST *tables); -bool compare_record(TABLE *table, bool all_columns_exists); +bool compare_record(TABLE *table); bool append_file_to_dir(THD *thd, const char **filename_ptr, const char *table_name); void wait_while_table_is_used(THD *thd, TABLE *table, diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 6dd19f6e203..6b5d60d8613 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -1511,8 +1511,7 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) info->touched++; if (((table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ) && !bitmap_is_subset(table->write_set, table->read_set)) || - compare_record(table, bitmap_union_is_set_all(table->write_set, - table->read_set))) + compare_record(table)) { if ((error=table->file->ha_update_row(table->record[1], table->record[0])) && diff --git a/sql/sql_update.cc b/sql/sql_update.cc index cce6d612fba..fc45b3d31a2 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -27,9 +27,9 @@ /* Return 0 if row hasn't changed */ -bool compare_record(TABLE *table, bool all_columns_exists) +bool compare_record(TABLE *table) { - if (table->s->can_cmp_whole_record && all_columns_exists) + if (table->s->can_cmp_whole_record) return cmp_record(table,record[1]); /* Compare null bits */ if (memcmp(table->null_flags, @@ -186,7 +186,7 @@ int mysql_update(THD *thd, bool using_limit= limit != HA_POS_ERROR; bool safe_update= test(thd->options & OPTION_SAFE_UPDATES); bool used_key_is_modified, transactional_table, will_batch; - bool can_compare_record, all_columns_exists; + bool can_compare_record; int res; int error, loc_error; uint used_index= MAX_KEY, dup_key_found; @@ -574,9 +574,6 @@ int mysql_update(THD *thd, can_compare_record= (!(table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ) || bitmap_is_subset(table->write_set, table->read_set)); - all_columns_exists= (can_compare_record && - bitmap_union_is_set_all(table->write_set, - table->read_set)); while (!(error=info.read_record(&info)) && !thd->killed) { @@ -594,7 +591,7 @@ int mysql_update(THD *thd, found++; - if (!can_compare_record || compare_record(table, all_columns_exists)) + if (!can_compare_record || compare_record(table)) { if ((res= table_list->view_check_option(thd, ignore)) != VIEW_CHECK_OK) @@ -1761,14 +1758,11 @@ bool multi_update::send_data(List ¬_used_values) */ if (table == table_to_update) { - bool can_compare_record, all_columns_exists; + bool can_compare_record; can_compare_record= (!(table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ) || bitmap_is_subset(table->write_set, table->read_set)); - all_columns_exists= (can_compare_record && - bitmap_union_is_set_all(table->write_set, - table->read_set)); table->status|= STATUS_UPDATED; store_record(table,record[1]); if (fill_record_n_invoke_before_triggers(thd, *fields_for_table[offset], @@ -1783,7 +1777,7 @@ bool multi_update::send_data(List ¬_used_values) */ table->auto_increment_field_not_null= FALSE; found++; - if (!can_compare_record || compare_record(table, all_columns_exists)) + if (!can_compare_record || compare_record(table)) { int error; if ((error= cur_table->view_check_option(thd, ignore)) != @@ -1970,7 +1964,7 @@ int multi_update::do_updates() DBUG_RETURN(0); for (cur_table= update_tables; cur_table; cur_table= cur_table->next_local) { - bool can_compare_record, all_columns_exists; + bool can_compare_record; uint offset= cur_table->shared; table = cur_table->table; @@ -2013,9 +2007,6 @@ int multi_update::do_updates() HA_PARTIAL_COLUMN_READ) || bitmap_is_subset(table->write_set, table->read_set)); - all_columns_exists= (can_compare_record && - bitmap_union_is_set_all(table->write_set, - table->read_set)); for (;;) { @@ -2057,7 +2048,7 @@ int multi_update::do_updates() TRG_ACTION_BEFORE, TRUE)) goto err2; - if (!can_compare_record || compare_record(table, all_columns_exists)) + if (!can_compare_record || compare_record(table)) { int error; if ((error= cur_table->view_check_option(thd, ignore)) != diff --git a/sql/table.cc b/sql/table.cc index 736fb77d7a3..2129da90a29 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1599,11 +1599,7 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, share->last_null_bit_pos= null_bit_pos; share->null_bytes_for_compare= null_bits_are_used ? share->null_bytes : 0; share->can_cmp_whole_record= (share->blob_fields == 0 && - share->varchar_fields == 0 && - (share->null_bytes_for_compare == - share->null_bytes || - !(handler_file->ha_table_flags() & - HA_PARTIAL_COLUMN_READ))); + share->varchar_fields == 0); share->db_low_byte_first= handler_file->low_byte_first(); share->column_bitmap_size= bitmap_buffer_size(share->fields); diff --git a/storage/maria/maria_chk.c b/storage/maria/maria_chk.c index cee736c4552..169bc4e853c 100644 --- a/storage/maria/maria_chk.c +++ b/storage/maria/maria_chk.c @@ -213,7 +213,7 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR, "Directory where character sets are.", - &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (char**) &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"check", 'c', "Check table for errors.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -265,7 +265,7 @@ static struct my_option my_long_options[] = 0, 0, 0, 0, 0, 0}, {"log-dir", OPT_LOG_DIR, "Path for log files.", - &opt_log_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (char**) &opt_log_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"max-record-length", OPT_MAX_RECORD_LENGTH, "Skip rows bigger than this if maria_chk can't allocate memory to hold it", &check_param.max_record_length, @@ -307,7 +307,8 @@ static struct my_option my_long_options[] = 0, GET_ULL, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"set-collation", OPT_SET_COLLATION, "Change the collation used by the index", - &set_collation_name, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (char**) &set_collation_name, 0, 0, GET_STR, REQUIRED_ARG, + 0, 0, 0, 0, 0, 0}, {"set-variable", 'O', "Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -329,9 +330,7 @@ static struct my_option my_long_options[] = &check_param.opt_sort_key, &check_param.opt_sort_key, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"tmpdir", 't', - "Path for temporary files.", - &opt_tmpdir, + {"tmpdir", 't', "Path for temporary files.", (char**) &opt_tmpdir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"transaction-log", OPT_TRANSACTION_LOG, "Log repair command to transaction log", @@ -385,13 +384,13 @@ static struct my_option my_long_options[] = HA_FT_MAXCHARLEN, 0, 1, 0}, { "maria_ft_stopword_file", OPT_FT_STOPWORD_FILE, "Use stopwords from this file instead of built-in list.", - &ft_stopword_file, &ft_stopword_file, 0, GET_STR, + (char**) &ft_stopword_file, (char**) &ft_stopword_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, { "stats_method", OPT_STATS_METHOD, "Specifies how index statistics collection code should treat NULLs. " "Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), " "\"nulls_equal\" (emulate 4.0 behavior), and \"nulls_ignored\".", - &maria_stats_method_str, &maria_stats_method_str, 0, + (char**) &maria_stats_method_str, (char**) &maria_stats_method_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, { "zerofill", 'z', "Fill empty space in data and index files with zeroes", diff --git a/storage/maria/maria_read_log.c b/storage/maria/maria_read_log.c index a90cfdce004..56247535af8 100644 --- a/storage/maria/maria_read_log.c +++ b/storage/maria/maria_read_log.c @@ -164,7 +164,7 @@ static struct my_option my_long_options[] = GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR, "Directory where character sets are.", - &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (char**) &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"check", 'c', "if --display-only, check if record is fully readable (for debugging)", (uchar **) &opt_check, (uchar **) &opt_check, 0, @@ -200,7 +200,7 @@ static struct my_option my_long_options[] = #else "colon (:)" #endif - , &opt_tmpdir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + , (char**) &opt_tmpdir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"undo", 'u', "Apply UNDO records to tables. (disable with --disable-undo)", (uchar **) &opt_apply_undo, (uchar **) &opt_apply_undo, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, diff --git a/storage/myisam/myisamchk.c b/storage/myisam/myisamchk.c index 86ddd03fc30..9ecbe76369f 100644 --- a/storage/myisam/myisamchk.c +++ b/storage/myisam/myisamchk.c @@ -168,7 +168,7 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR, "Directory where character sets are.", - &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (char**) &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"check", 'c', "Check table for errors.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -251,7 +251,8 @@ static struct my_option my_long_options[] = 0, GET_ULL, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"set-collation", OPT_SET_COLLATION, "Change the collation used by the index", - &set_collation_name, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + (char**) &set_collation_name, 0, 0, GET_STR, REQUIRED_ARG, + 0, 0, 0, 0, 0, 0}, {"set-variable", 'O', "Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -267,8 +268,7 @@ static struct my_option my_long_options[] = &check_param.opt_sort_key, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"tmpdir", 't', - "Path for temporary files.", - &opt_tmpdir, + "Path for temporary files.", (char**) &opt_tmpdir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"update-state", 'U', "Mark tables as crashed if any errors were found.", @@ -327,13 +327,13 @@ static struct my_option my_long_options[] = HA_FT_MAXCHARLEN, 0, 1, 0}, { "ft_stopword_file", OPT_FT_STOPWORD_FILE, "Use stopwords from this file instead of built-in list.", - &ft_stopword_file, &ft_stopword_file, 0, GET_STR, + (char**) &ft_stopword_file, (char**) &ft_stopword_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"stats_method", OPT_STATS_METHOD, "Specifies how index statistics collection code should treat NULLs. " "Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), " "\"nulls_equal\" (emulate 4.0 behavior), and \"nulls_ignored\".", - &myisam_stats_method_str, &myisam_stats_method_str, 0, + (char**) &myisam_stats_method_str, (char**) &myisam_stats_method_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/storage/myisam/myisampack.c b/storage/myisam/myisampack.c index 255d8f39479..f2b28a008fc 100644 --- a/storage/myisam/myisampack.c +++ b/storage/myisam/myisampack.c @@ -259,8 +259,8 @@ static struct my_option my_long_options[] = {"backup", 'b', "Make a backup of the table as table_name.OLD.", &backup, &backup, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR_MP, - "Directory where character sets are.", &charsets_dir, - &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory where character sets are.", (char**) &charsets_dir, + (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"force", 'f', diff --git a/storage/xtradb/dict/dict0load.c b/storage/xtradb/dict/dict0load.c index ba0374595ce..528c3786254 100644 --- a/storage/xtradb/dict/dict0load.c +++ b/storage/xtradb/dict/dict0load.c @@ -40,6 +40,7 @@ Created 4/24/1996 Heikki Tuuri #include "rem0cmp.h" #include "srv0start.h" #include "srv0srv.h" +#include "trx0sys.h" /****************************************************************//** Compare the name of an index column. diff --git a/storage/xtradb/row/row0sel.c b/storage/xtradb/row/row0sel.c index 000cc3586fd..43e67ff6ded 100644 --- a/storage/xtradb/row/row0sel.c +++ b/storage/xtradb/row/row0sel.c @@ -2663,6 +2663,12 @@ row_sel_store_mysql_rec( prebuilt->blob_heap = NULL; } + /* init null bytes with default values as they might be + left uninitialized in some cases and these uninited bytes + might be copied into mysql record buffer that leads to + valgrind warnings */ + memcpy(mysql_rec, prebuilt->default_rec, prebuilt->null_bitmap_len); + for (i = 0; i < prebuilt->n_template; i++) { templ = prebuilt->mysql_template + i; diff --git a/storage/xtradb/trx/trx0sys.c b/storage/xtradb/trx/trx0sys.c index 7f50973d65e..47a21c3a318 100644 --- a/storage/xtradb/trx/trx0sys.c +++ b/storage/xtradb/trx/trx0sys.c @@ -1143,12 +1143,14 @@ trx_sysf_dummy_create( ulint space, mtr_t* mtr) { +#ifdef UNDEFINED trx_sysf_t* sys_header; ulint slot_no; - buf_block_t* block; - page_t* page; ulint page_no; ulint i; +#endif + page_t* page; + buf_block_t* block; ut_ad(mtr); diff --git a/support-files/compiler_warnings.supp b/support-files/compiler_warnings.supp index c8d2926145d..7651ae5aee4 100644 --- a/support-files/compiler_warnings.supp +++ b/support-files/compiler_warnings.supp @@ -70,6 +70,7 @@ term\.c : .* # .*/extra/libevent/.* : .*unused parameter.* .*/extra/libevent/select\.c : .*comparison between signed and unsigned.* : 270-280 +signal\.c : .*unused parameter.* # # Ignore warnings from system libraries From 09241387bdcf945ae9fc80fd8030a8154822fa8c Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 5 Aug 2010 12:28:19 +0300 Subject: [PATCH 352/461] Fixed test failures (bugs in test suite) mysql-test/suite/percona/percona_log_slow_slave_statements.test: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-control_global_slow.result: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.result: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.result: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-long_query_time.result: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-long_query_time.test: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.result: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.result: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.result: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test: Replaced 'grep | wc -l' with 'grep -c' as output of wc -l is not portable (for example on Mac) mysql-test/suite/rpl/r/rpl_stm_until.result: Updated results mysql-test/suite/rpl/t/rpl_stm_until.test: Fixed random failure in test suite: master could be reading data from master-bin.00001 at the same time as test suite was changing it. --- .../suite/percona/percona_log_slow_slave_statements.test | 8 ++++---- .../percona_slow_query_log-control_global_slow.result | 2 +- .../percona_slow_query_log-control_global_slow.test | 2 +- .../percona/percona_slow_query_log-log_slow_filter.result | 2 +- .../percona/percona_slow_query_log-log_slow_filter.test | 2 +- .../percona_slow_query_log-log_slow_verbosity.result | 2 +- .../percona_slow_query_log-log_slow_verbosity.test | 2 +- .../percona/percona_slow_query_log-long_query_time.result | 2 +- .../percona/percona_slow_query_log-long_query_time.test | 2 +- ...a_slow_query_log-microseconds_in_slow_query_log.result | 4 ++-- ...ona_slow_query_log-microseconds_in_slow_query_log.test | 4 ++-- .../percona_slow_query_log-min_examined_row_limit.result | 2 +- .../percona_slow_query_log-min_examined_row_limit.test | 2 +- ...rcona_slow_query_log-use_global_long_query_time.result | 2 +- ...percona_slow_query_log-use_global_long_query_time.test | 2 +- mysql-test/suite/rpl/r/rpl_stm_until.result | 3 ++- mysql-test/suite/rpl/t/rpl_stm_until.test | 7 ++++++- 17 files changed, 28 insertions(+), 22 deletions(-) diff --git a/mysql-test/suite/percona/percona_log_slow_slave_statements.test b/mysql-test/suite/percona/percona_log_slow_slave_statements.test index 10a030616c6..37cb1ad2419 100644 --- a/mysql-test/suite/percona/percona_log_slow_slave_statements.test +++ b/mysql-test/suite/percona/percona_log_slow_slave_statements.test @@ -126,10 +126,10 @@ let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`; -- echo # Analyse master slow_query_log let $i=7; let $k=1; -let $cmd=cat $MASTER_DATADIR/percona_log_slow_slave_statements-master.log | grep; +let $cmd=cat $MASTER_DATADIR/percona_log_slow_slave_statements-master.log | grep -c; while($i) { - let $current_cmd = $cmd "INSERT INTO t VALUES ($k)" | wc -l; + let $current_cmd = $cmd "INSERT INTO t VALUES ($k)"; exec $current_cmd; dec $i; inc $k; @@ -138,10 +138,10 @@ while($i) -- echo # Analyse slave slow_query_log let $i=7; let $k=1; -let $cmd=cat $SLAVE_DATADIR/percona_log_slow_slave_statements-slave.log | grep; +let $cmd=cat $SLAVE_DATADIR/percona_log_slow_slave_statements-slave.log | grep -c; while($i) { - let $current_cmd = $cmd "INSERT INTO t VALUES ($k)" | wc -l; + let $current_cmd = $cmd "INSERT INTO t VALUES ($k)"; exec $current_cmd; dec $i; inc $k; diff --git a/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.result b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.result index ced47a700f7..bc6ce100b35 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.result +++ b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.result @@ -8,5 +8,5 @@ sleep(2) 0 set global use_global_log_slow_control=none; set global log_slow_verbosity=microtime; -cat MYSQLD_DATADIR/percona_slow_query_log-control_global_slow.log | grep "No InnoDB statistics available for this query" | wc -l +cat MYSQLD_DATADIR/percona_slow_query_log-control_global_slow.log | grep -c "No InnoDB statistics available for this query" 1 diff --git a/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test index d60a2a83a1c..79b94825821 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test +++ b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test @@ -6,7 +6,7 @@ SELECT sleep(2); set global use_global_log_slow_control=none; set global log_slow_verbosity=microtime; let $MYSQLD_DATADIR= `select @@datadir`; -let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-control_global_slow.log | grep "No InnoDB statistics available for this query" | wc -l; +let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-control_global_slow.log | grep -c "No InnoDB statistics available for this query"; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR exec echo '$cmd'; exec $cmd; diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.result b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.result index da46efb8b63..9c8f69745a7 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.result +++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.result @@ -21,5 +21,5 @@ SELECT sleep(2); sleep(2) 0 drop table if exists t; -cat MYSQLD_DATADIR/percona_slow_query_log-log_slow_filter.log | grep Query_time | wc -l +cat MYSQLD_DATADIR/percona_slow_query_log-log_slow_filter.log | grep -c Query_time 2 diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test index e2f9f56ca04..843567ae11a 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test +++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test @@ -27,7 +27,7 @@ drop table if exists t; --enable_warnings let $MYSQLD_DATADIR= `select @@datadir`; -let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-log_slow_filter.log | grep Query_time | wc -l; +let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-log_slow_filter.log | grep -c Query_time; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR exec echo '$cmd'; exec $cmd; diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.result b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.result index e2fba41787d..ff42937fa4a 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.result +++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.result @@ -5,5 +5,5 @@ set log_slow_verbosity=innodb; SELECT sleep(2); sleep(2) 0 -cat MYSQLD_DATADIR/percona_slow_query_log-log_slow_verbosity.log | grep "No InnoDB statistics available for this query" | wc -l +cat MYSQLD_DATADIR/percona_slow_query_log-log_slow_verbosity.log | grep -c "No InnoDB statistics available for this query" 1 diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test index 3a2589a8eb9..62717c4ed6e 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test +++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test @@ -7,7 +7,7 @@ set log_slow_verbosity=innodb; SELECT sleep(2); let $MYSQLD_DATADIR= `select @@datadir`; -let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-log_slow_verbosity.log | grep "No InnoDB statistics available for this query" | wc -l; +let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-log_slow_verbosity.log | grep -c "No InnoDB statistics available for this query"; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR exec echo '$cmd'; exec $cmd; diff --git a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.result b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.result index 87881558392..abc9c1d9994 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.result +++ b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.result @@ -18,5 +18,5 @@ SELECT sleep(5); sleep(5) 0 set long_query_time=2; -cat MYSQLD_DATADIR/percona_slow_query_log-long_query_time.log | grep Query_time | wc -l +cat MYSQLD_DATADIR/percona_slow_query_log-long_query_time.log | grep -c Query_time 3 diff --git a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test index 06abf75782f..9c034a75fa8 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test +++ b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test @@ -13,7 +13,7 @@ SELECT sleep(5); set long_query_time=2; let $MYSQLD_DATADIR= `select @@datadir`; -let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-long_query_time.log | grep Query_time | wc -l; +let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-long_query_time.log | grep -c Query_time; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR exec echo '$cmd'; exec $cmd; diff --git a/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.result b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.result index 79258fddb41..fbfc954481e 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.result +++ b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.result @@ -6,7 +6,7 @@ SELECT sleep(2); sleep(2) 0 set global slow_query_log_microseconds_timestamp=OFF; -cat MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+.[0-9]+' | wc -l +cat MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E -c '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+.[0-9]+' 1 -cat MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+' | wc -l +cat MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E -c '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+' 2 diff --git a/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test index 294f291b292..67bf49400fa 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test +++ b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test @@ -9,12 +9,12 @@ SELECT sleep(2); set global slow_query_log_microseconds_timestamp=OFF; let $MYSQLD_DATADIR= `select @@datadir`; -let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+.[0-9]+' | wc -l; +let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E -c '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+.[0-9]+'; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR exec echo "$cmd"; exec $cmd; -let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+' | wc -l; +let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E -c '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+'; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR exec echo "$cmd"; exec $cmd; diff --git a/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.result b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.result index 2032c07966e..32698a59837 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.result +++ b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.result @@ -21,5 +21,5 @@ SELECT sleep(2); sleep(2) 0 drop table if exists t; -cat MYSQLD_DATADIR/percona_slow_query_log-min_examined_row_limit.log | grep Query_time | wc -l +cat MYSQLD_DATADIR/percona_slow_query_log-min_examined_row_limit.log | grep -c Query_time 2 diff --git a/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test index c728e38c3b6..28287c4bcb2 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test +++ b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test @@ -27,7 +27,7 @@ drop table if exists t; --enable_warnings let $MYSQLD_DATADIR= `select @@datadir`; -let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-min_examined_row_limit.log | grep Query_time | wc -l; +let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-min_examined_row_limit.log | grep -c Query_time; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR exec echo '$cmd'; exec $cmd; diff --git a/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.result b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.result index 60052540faf..759f0636b5c 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.result +++ b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.result @@ -20,5 +20,5 @@ sleep(5) 0 set global long_query_time=2; set global use_global_long_query_time=0; -cat MYSQLD_DATADIR/percona_slow_query_log-use_global_long_query_time.log | grep Query_time | wc -l +cat MYSQLD_DATADIR/percona_slow_query_log-use_global_long_query_time.log | grep -c Query_time 3 diff --git a/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test index c025554f0c6..397526fccdd 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test +++ b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test @@ -15,7 +15,7 @@ set global long_query_time=2; set global use_global_long_query_time=0; let $MYSQLD_DATADIR= `select @@datadir`; -let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-use_global_long_query_time.log | grep Query_time | wc -l; +let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-use_global_long_query_time.log | grep -c Query_time; --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR exec echo '$cmd'; exec $cmd; diff --git a/mysql-test/suite/rpl/r/rpl_stm_until.result b/mysql-test/suite/rpl/r/rpl_stm_until.result index 118d31d78c8..0094c143e38 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_until.result +++ b/mysql-test/suite/rpl/r/rpl_stm_until.result @@ -93,8 +93,9 @@ start slave; drop table if exists t1; Warnings: Note 1051 Unknown table 't1' -flush logs; stop slave; +flush logs; +flush logs; reset slave; start slave until master_log_file='master-bin.000001', master_log_pos=294 /* to stop right before DROP */; show tables /* t1 must exist */; diff --git a/mysql-test/suite/rpl/t/rpl_stm_until.test b/mysql-test/suite/rpl/t/rpl_stm_until.test index ee9501681a1..f5e57ec2bd6 100644 --- a/mysql-test/suite/rpl/t/rpl_stm_until.test +++ b/mysql-test/suite/rpl/t/rpl_stm_until.test @@ -196,13 +196,18 @@ sync_with_master; connection master; drop table if exists t1; # there is create table t1 in bug47142_master-bin.000001 +sync_slave_with_master; +connection slave; +stop slave; +connection master; + flush logs; let $MYSQLD_DATADIR= `select @@datadir`; --remove_file $MYSQLD_DATADIR/master-bin.000001 --copy_file $MYSQL_TEST_DIR/std_data/bug47142_master-bin.000001 $MYSQLD_DATADIR/master-bin.000001 +flush logs; connection slave; -stop slave; reset slave; start slave until master_log_file='master-bin.000001', master_log_pos=294 /* to stop right before DROP */; --source include/wait_for_slave_sql_to_stop.inc From 7d1ce2e8324581b7f60e377b92bff86da1c53c34 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 5 Aug 2010 18:38:06 +0300 Subject: [PATCH 353/461] Fixed test failures mysql-test/suite/funcs_1/r/is_columns_is.result: Update after change of comment length mysql-test/suite/funcs_1/r/is_engines.result: Update after change of comment length mysql-test/suite/innodb_plugin/t/disabled.def: Disable a test that gives valgrind warnings for xtradb mysql-test/suite/innodb_plugin/t/innodb_bug52745.test: Test requires persian collation --- mysql-test/suite/funcs_1/r/is_columns_is.result | 4 ++-- mysql-test/suite/funcs_1/r/is_engines.result | 6 +++--- mysql-test/suite/innodb_plugin/t/disabled.def | 1 + mysql-test/suite/innodb_plugin/t/innodb_bug52745.test | 2 ++ 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/mysql-test/suite/funcs_1/r/is_columns_is.result b/mysql-test/suite/funcs_1/r/is_columns_is.result index 7460359b87d..b1578b552bc 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_is.result +++ b/mysql-test/suite/funcs_1/r/is_columns_is.result @@ -41,7 +41,7 @@ NULL information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NO varchar 64 192 NU NULL information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select NULL information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select -NULL information_schema ENGINES COMMENT 3 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select +NULL information_schema ENGINES COMMENT 3 NO varchar 160 480 NULL NULL utf8 utf8_general_ci varchar(160) select NULL information_schema ENGINES ENGINE 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema ENGINES SAVEPOINTS 6 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select NULL information_schema ENGINES SUPPORT 2 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select @@ -516,7 +516,7 @@ NULL information_schema COLUMNS NUMERIC_SCALE bigint NULL NULL NULL NULL bigint( 3.0000 information_schema COLUMN_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3) 3.0000 information_schema ENGINES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64) 3.0000 information_schema ENGINES SUPPORT varchar 8 24 utf8 utf8_general_ci varchar(8) -3.0000 information_schema ENGINES COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80) +3.0000 information_schema ENGINES COMMENT varchar 160 480 utf8 utf8_general_ci varchar(160) 3.0000 information_schema ENGINES TRANSACTIONS varchar 3 9 utf8 utf8_general_ci varchar(3) 3.0000 information_schema ENGINES XA varchar 3 9 utf8 utf8_general_ci varchar(3) 3.0000 information_schema ENGINES SAVEPOINTS varchar 3 9 utf8 utf8_general_ci varchar(3) diff --git a/mysql-test/suite/funcs_1/r/is_engines.result b/mysql-test/suite/funcs_1/r/is_engines.result index 9965fc5ad73..e76cbe7bdee 100644 --- a/mysql-test/suite/funcs_1/r/is_engines.result +++ b/mysql-test/suite/funcs_1/r/is_engines.result @@ -30,7 +30,7 @@ DESCRIBE information_schema.ENGINES; Field Type Null Key Default Extra ENGINE varchar(64) NO SUPPORT varchar(8) NO -COMMENT varchar(80) NO +COMMENT varchar(160) NO TRANSACTIONS varchar(3) YES NULL XA varchar(3) YES NULL SAVEPOINTS varchar(3) YES NULL @@ -39,7 +39,7 @@ Table Create Table ENGINES CREATE TEMPORARY TABLE `ENGINES` ( `ENGINE` varchar(64) NOT NULL DEFAULT '', `SUPPORT` varchar(8) NOT NULL DEFAULT '', - `COMMENT` varchar(80) NOT NULL DEFAULT '', + `COMMENT` varchar(160) NOT NULL DEFAULT '', `TRANSACTIONS` varchar(3) DEFAULT NULL, `XA` varchar(3) DEFAULT NULL, `SAVEPOINTS` varchar(3) DEFAULT NULL @@ -48,7 +48,7 @@ SHOW COLUMNS FROM information_schema.ENGINES; Field Type Null Key Default Extra ENGINE varchar(64) NO SUPPORT varchar(8) NO -COMMENT varchar(80) NO +COMMENT varchar(160) NO TRANSACTIONS varchar(3) YES NULL XA varchar(3) YES NULL SAVEPOINTS varchar(3) YES NULL diff --git a/mysql-test/suite/innodb_plugin/t/disabled.def b/mysql-test/suite/innodb_plugin/t/disabled.def index 643ea9c5b51..158dd7e7f67 100644 --- a/mysql-test/suite/innodb_plugin/t/disabled.def +++ b/mysql-test/suite/innodb_plugin/t/disabled.def @@ -17,3 +17,4 @@ innodb_bug53592 : Waiting for merge/fix from XtraDB innodb-use-sys-malloc : Waiting for bugfix from Percona for LP#612600 innodb_bug53290 : Waiting for merge/fix from XtraDB innodb_bug54679 : Waiting for merge/fix from XtraDB +innodb_bug52745 : Waiting for merge/fix from XtraDB diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug52745.test b/mysql-test/suite/innodb_plugin/t/innodb_bug52745.test index b20a993a2d1..05ad630fbe1 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb_bug52745.test +++ b/mysql-test/suite/innodb_plugin/t/innodb_bug52745.test @@ -1,4 +1,6 @@ -- source include/have_innodb_plugin.inc +let collation=utf8_persian_ci; +--source include/have_collation.inc let $file_format=`select @@innodb_file_format`; let $file_format_check=`select @@innodb_file_format_check`; From f66d2500c410ea6cf4e08b992cf485958098e9b2 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 5 Aug 2010 18:56:31 +0300 Subject: [PATCH 354/461] Remove not used files Added option: --warning-for-wrong-transaction-id to maria_check mysql-test/r/innodb-use-sys-malloc.result: Remove not used files mysql-test/t/innodb-use-sys-malloc-master.opt: Remove not used files storage/maria/ma_recovery.c: Added support for --lsn-end storage/maria/ma_recovery.h: New prototype storage/maria/ma_write.c: Added logging of KEY_OP_CHECK for all possible keyblock splits. (Helps us find error in log file handling) storage/maria/maria_chk.c: Added option: --warning-for-wrong-transaction-id --update-status now resets open count if check succeds storage/maria/maria_read_log.c: Added option --end-lsn for only appling part of log (good for debugging) Changed options to use '-' instead of '_' --- mysql-test/r/innodb-use-sys-malloc.result | 48 ----------- mysql-test/t/innodb-use-sys-malloc-master.opt | 1 - storage/maria/ma_recovery.c | 46 ++++++++-- storage/maria/ma_recovery.h | 2 +- storage/maria/ma_write.c | 84 +++++++++++++++++-- storage/maria/maria_chk.c | 21 ++++- storage/maria/maria_read_log.c | 19 +++-- 7 files changed, 146 insertions(+), 75 deletions(-) delete mode 100644 mysql-test/r/innodb-use-sys-malloc.result delete mode 100644 mysql-test/t/innodb-use-sys-malloc-master.opt diff --git a/mysql-test/r/innodb-use-sys-malloc.result b/mysql-test/r/innodb-use-sys-malloc.result deleted file mode 100644 index 2ec4c7c8130..00000000000 --- a/mysql-test/r/innodb-use-sys-malloc.result +++ /dev/null @@ -1,48 +0,0 @@ -SELECT @@GLOBAL.innodb_use_sys_malloc; -@@GLOBAL.innodb_use_sys_malloc -1 -1 Expected -SET @@GLOBAL.innodb_use_sys_malloc=0; -ERROR HY000: Variable 'innodb_use_sys_malloc' is a read only variable -Expected error 'Read only variable' -SELECT @@GLOBAL.innodb_use_sys_malloc; -@@GLOBAL.innodb_use_sys_malloc -1 -1 Expected -drop table if exists t1; -create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1; -insert into t1 values (1),(2),(3),(4),(5),(6),(7); -select * from t1; -a -1 -2 -3 -4 -5 -6 -7 -drop table t1; -SELECT @@GLOBAL.innodb_use_sys_malloc; -@@GLOBAL.innodb_use_sys_malloc -1 -1 Expected -SET @@GLOBAL.innodb_use_sys_malloc=0; -ERROR HY000: Variable 'innodb_use_sys_malloc' is a read only variable -Expected error 'Read only variable' -SELECT @@GLOBAL.innodb_use_sys_malloc; -@@GLOBAL.innodb_use_sys_malloc -1 -1 Expected -drop table if exists t1; -create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1; -insert into t1 values (1),(2),(3),(4),(5),(6),(7); -select * from t1; -a -1 -2 -3 -4 -5 -6 -7 -drop table t1; diff --git a/mysql-test/t/innodb-use-sys-malloc-master.opt b/mysql-test/t/innodb-use-sys-malloc-master.opt deleted file mode 100644 index fc8582b5887..00000000000 --- a/mysql-test/t/innodb-use-sys-malloc-master.opt +++ /dev/null @@ -1 +0,0 @@ ---loose-innodb-use-sys-malloc=true diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index 5fe4e55cb48..58f16658957 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -109,7 +109,8 @@ prototype_undo_exec_hook(UNDO_KEY_DELETE); prototype_undo_exec_hook(UNDO_KEY_DELETE_WITH_ROOT); prototype_undo_exec_hook(UNDO_BULK_INSERT); -static int run_redo_phase(LSN lsn, enum maria_apply_log_way apply); +static int run_redo_phase(LSN lsn, LSN end_lsn, + enum maria_apply_log_way apply); static uint end_of_redo_phase(my_bool prepare_for_undo_phase); static int run_undo_phase(uint uncommitted); static void display_record_position(const LOG_DESC *log_desc, @@ -217,8 +218,8 @@ int maria_recovery_from_log(void) #endif tprint(trace_file, "TRACE of the last MARIA recovery from mysqld\n"); DBUG_ASSERT(maria_pagecache->inited); - res= maria_apply_log(LSN_IMPOSSIBLE, MARIA_LOG_APPLY, trace_file, - TRUE, TRUE, TRUE, &warnings_count); + res= maria_apply_log(LSN_IMPOSSIBLE, LSN_IMPOSSIBLE, MARIA_LOG_APPLY, + trace_file, TRUE, TRUE, TRUE, &warnings_count); if (!res) { if (warnings_count == 0 && recovery_found_crashed_tables == 0) @@ -239,6 +240,7 @@ int maria_recovery_from_log(void) @param from_lsn LSN from which log reading/applying should start; LSN_IMPOSSIBLE means "use last checkpoint" + @param end_lsn Apply until this. LSN_IMPOSSIBLE means until end. @param apply how log records should be applied or not @param trace_file trace file where progress/debug messages will go @param skip_DDLs_arg Should DDL records (CREATE/RENAME/DROP/REPAIR) @@ -255,7 +257,8 @@ int maria_recovery_from_log(void) @retval !=0 Error */ -int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply, +int maria_apply_log(LSN from_lsn, LSN end_lsn, + enum maria_apply_log_way apply, FILE *trace_file, my_bool should_run_undo_phase, my_bool skip_DDLs_arg, my_bool take_checkpoints, uint *warnings_count) @@ -263,6 +266,7 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply, int error= 0; uint uncommitted_trans; ulonglong old_now; + my_bool abort_message_printed= 0; DBUG_ENTER("maria_apply_log"); DBUG_ASSERT(apply == MARIA_LOG_APPLY || !should_run_undo_phase); @@ -271,6 +275,7 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply, maria_recovery_changed_data= 0; /* checkpoints can happen only if TRNs have been built */ DBUG_ASSERT(should_run_undo_phase || !take_checkpoints); + DBUG_ASSERT(end_lsn == LSN_IMPOSSIBLE || should_run_undo_phase == 0); all_active_trans= (struct st_trn_for_recovery *) my_malloc((SHORT_TRID_MAX + 1) * sizeof(struct st_trn_for_recovery), MYF(MY_ZEROFILL)); @@ -316,7 +321,7 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply, now= my_getsystime(); in_redo_phase= TRUE; trnman_init(max_trid_in_control_file); - if (run_redo_phase(from_lsn, apply)) + if (run_redo_phase(from_lsn, end_lsn, apply)) { ma_message_no_user(0, "Redo phase failed"); trnman_destroy(); @@ -324,6 +329,15 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply, } trnman_destroy(); + if (end_lsn != LSN_IMPOSSIBLE) + { + abort_message_printed= 1; + my_message(HA_ERR_INITIALIZATION, + "Maria recovery aborted as end_lsn/end of file was reached", + MYF(0)); + goto err2; + } + if ((uncommitted_trans= end_of_redo_phase(should_run_undo_phase)) == (uint)-1) { @@ -440,10 +454,15 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply, goto end; err: - error= 1; tprint(tracef, "\nRecovery of tables with transaction logs FAILED\n"); +err2: if (trns_created) delete_all_transactions(); + error= 1; + if (close_all_tables()) + { + ma_message_no_user(0, "closing of tables failed"); + } end: error_handler_hook= save_error_handler_hook; hash_free(&all_dirty_pages); @@ -480,7 +499,7 @@ end: maria_recovery_changed_data= 1; } - if (error) + if (error && !abort_message_printed) my_message(HA_ERR_INITIALIZATION, "Maria recovery failed. Please run maria_chk -r on all maria " "tables and delete all maria_log.######## files", MYF(0)); @@ -2370,7 +2389,7 @@ prototype_undo_exec_hook(UNDO_BULK_INSERT) } -static int run_redo_phase(LSN lsn, enum maria_apply_log_way apply) +static int run_redo_phase(LSN lsn, LSN lsn_end, enum maria_apply_log_way apply) { TRANSLOG_HEADER_BUFFER rec; struct st_translog_scanner_data scanner; @@ -2498,6 +2517,17 @@ static int run_redo_phase(LSN lsn, enum maria_apply_log_way apply) tprint(tracef, "Cannot find record where it should be\n"); goto err; } + if (lsn_end != LSN_IMPOSSIBLE && rec2.lsn >= lsn_end) + { + tprint(tracef, + "lsn_end reached at (%lu,0x%lx). " + "Skipping rest of redo entries", + LSN_IN_PARTS(rec2.lsn)); + translog_destroy_scanner(&scanner); + translog_free_record_header(&rec); + return(0); + } + if (translog_scanner_init(rec2.lsn, 1, &scanner2, 1)) { tprint(tracef, "Scanner2 init failed\n"); diff --git a/storage/maria/ma_recovery.h b/storage/maria/ma_recovery.h index aa8fa7ecae9..0bfcdd17d39 100644 --- a/storage/maria/ma_recovery.h +++ b/storage/maria/ma_recovery.h @@ -26,7 +26,7 @@ C_MODE_START enum maria_apply_log_way { MARIA_LOG_APPLY, MARIA_LOG_DISPLAY_HEADER, MARIA_LOG_CHECK }; int maria_recovery_from_log(void); -int maria_apply_log(LSN lsn, enum maria_apply_log_way apply, +int maria_apply_log(LSN lsn, LSN lsn_end, enum maria_apply_log_way apply, FILE *trace_file, my_bool execute_undo_phase, my_bool skip_DDLs, my_bool take_checkpoints, uint *warnings_count); diff --git a/storage/maria/ma_write.c b/storage/maria/ma_write.c index 5e3ccdfaed1..a552d15a650 100644 --- a/storage/maria/ma_write.c +++ b/storage/maria/ma_write.c @@ -1987,9 +1987,9 @@ static my_bool _ma_log_split(MARIA_PAGE *ma_page, uint changed_length) { LSN lsn; - uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3+3+3+3+3+2]; + uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3+3+3+3+3+2 +7]; uchar *log_pos; - LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 3]; + LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 4]; uint offset= (uint) (key_pos - ma_page->buff); uint translog_parts, extra_length; MARIA_HA *info= ma_page->info; @@ -2085,6 +2085,22 @@ static my_bool _ma_log_split(MARIA_PAGE *ma_page, log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data; log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (uint) (log_pos - log_data); +#ifdef EXTRA_DEBUG_KEY_CHANGES + { + int page_length= ma_page->size; + ha_checksum crc; + crc= my_checksum(0, ma_page->buff + LSN_STORE_SIZE, + page_length - LSN_STORE_SIZE); + log_pos[0]= KEY_OP_CHECK; + int2store(log_pos+1, page_length); + int4store(log_pos+3, crc); + log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].str= log_pos; + log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].length= 7; + extra_length+= 7; + translog_parts++; + } +#endif + DBUG_RETURN(translog_write_record(&lsn, LOGREC_REDO_INDEX, info->trn, info, (translog_size_t) @@ -2122,8 +2138,8 @@ static my_bool _ma_log_del_prefix(MARIA_PAGE *ma_page, int move_length) { LSN lsn; - uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 12], *log_pos; - LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 2]; + uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 12 + 7], *log_pos; + LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 3]; uint offset= (uint) (key_pos - ma_page->buff); uint diff_length= org_length + move_length - new_length; uint translog_parts, extra_length; @@ -2190,6 +2206,22 @@ static my_bool _ma_log_del_prefix(MARIA_PAGE *ma_page, log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data; log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (uint) (log_pos - log_data); +#ifdef EXTRA_DEBUG_KEY_CHANGES + { + int page_length= ma_page->size; + ha_checksum crc; + crc= my_checksum(0, ma_page->buff + LSN_STORE_SIZE, + page_length - LSN_STORE_SIZE); + log_pos[0]= KEY_OP_CHECK; + int2store(log_pos+1, page_length); + int4store(log_pos+3, crc); + log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].str= log_pos; + log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].length= 7; + extra_length+= 7; + translog_parts++; + } +#endif + DBUG_RETURN(translog_write_record(&lsn, LOGREC_REDO_INDEX, info->trn, info, (translog_size_t) @@ -2215,9 +2247,9 @@ static my_bool _ma_log_key_middle(MARIA_PAGE *ma_page, uint key_length, int move_length) { LSN lsn; - uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3+5+3+3+3]; + uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3+5+3+3+3 + 7]; uchar *log_pos; - LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 4]; + LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 5]; uint key_offset; uint translog_parts, extra_length; my_off_t page; @@ -2300,6 +2332,22 @@ static my_bool _ma_log_key_middle(MARIA_PAGE *ma_page, key_length); } +#ifdef EXTRA_DEBUG_KEY_CHANGES + { + int page_length= ma_page->size; + ha_checksum crc; + crc= my_checksum(0, ma_page->buff + LSN_STORE_SIZE, + page_length - LSN_STORE_SIZE); + log_pos[0]= KEY_OP_CHECK; + int2store(log_pos+1, page_length); + int4store(log_pos+3, crc); + log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].str= log_pos; + log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].length= 7; + extra_length+= 7; + translog_parts++; + } +#endif + DBUG_RETURN(translog_write_record(&lsn, LOGREC_REDO_INDEX, info->trn, info, (translog_size_t) @@ -2327,6 +2375,7 @@ static my_bool _ma_log_middle(MARIA_PAGE *ma_page, uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3 + 5], *log_pos; MARIA_HA *info= ma_page->info; my_off_t page; + uint translog_parts, extra_length; DBUG_ENTER("_ma_log_middle"); DBUG_PRINT("enter", ("page: %lu", (ulong) page)); @@ -2352,12 +2401,31 @@ static my_bool _ma_log_middle(MARIA_PAGE *ma_page, log_array[TRANSLOG_INTERNAL_PARTS + 1].str= ((char*) buff + info->s->keypage_header); log_array[TRANSLOG_INTERNAL_PARTS + 1].length= data_changed_first; + translog_parts= 2; + extra_length= data_changed_first; + +#ifdef EXTRA_DEBUG_KEY_CHANGES + { + int page_length= ma_page->size; + ha_checksum crc; + crc= my_checksum(0, ma_page->buff + LSN_STORE_SIZE, + page_length - LSN_STORE_SIZE); + log_pos[0]= KEY_OP_CHECK; + int2store(log_pos+1, page_length); + int4store(log_pos+3, crc); + log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].str= log_pos; + log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].length= 7; + extra_length+= 7; + translog_parts++; + } +#endif + DBUG_RETURN(translog_write_record(&lsn, LOGREC_REDO_INDEX, info->trn, info, (translog_size_t) log_array[TRANSLOG_INTERNAL_PARTS + - 0].length + data_changed_first, - TRANSLOG_INTERNAL_PARTS + 2, + 0].length + extra_length, + TRANSLOG_INTERNAL_PARTS + translog_parts, log_array, log_data, NULL)); } #endif diff --git a/storage/maria/maria_chk.c b/storage/maria/maria_chk.c index cee736c4552..d3838e59fd0 100644 --- a/storage/maria/maria_chk.c +++ b/storage/maria/maria_chk.c @@ -42,6 +42,7 @@ static CHARSET_INFO *set_collation; static int stopwords_inited= 0; static MY_TMPDIR maria_chk_tmpdir; static my_bool opt_transaction_logging, opt_debug, opt_require_control_file; +static my_bool opt_warning_for_wrong_transid; static const char *type_names[]= { @@ -193,7 +194,7 @@ enum options_mc { OPT_FT_MAX_WORD_LEN, OPT_FT_STOPWORD_FILE, OPT_MAX_RECORD_LENGTH, OPT_AUTO_CLOSE, OPT_STATS_METHOD, OPT_TRANSACTION_LOG, OPT_SKIP_SAFEMALLOC, OPT_ZEROFILL_KEEP_LSN, OPT_REQUIRE_CONTROL_FILE, - OPT_LOG_DIR, OPT_DATADIR + OPT_LOG_DIR, OPT_DATADIR, OPT_WARNING_FOR_WRONG_TRANSID }; static struct my_option my_long_options[] = @@ -338,7 +339,9 @@ static struct my_option my_long_options[] = &opt_transaction_logging, &opt_transaction_logging, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"update-state", 'U', - "Mark tables as crashed if any errors were found.", + "Mark tables as crashed if any errors were found and clean if check didn't " + "find any errors. This allows one to get rid of warnings like 'table not " + "properly closed'", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"unpack", 'u', "Unpack file packed with mariapack.", @@ -350,6 +353,11 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"wait", 'w', "Wait if table is locked.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"warning-for-wrong-transaction-id", OPT_WARNING_FOR_WRONG_TRANSID, + "Give a warning if we find a transaction id in the table that is bigger" + "than what exists in the control file. Use --skip-... to disable warning", + &opt_warning_for_wrong_transid, &opt_warning_for_wrong_transid, + 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, { "page_buffer_size", OPT_PAGE_BUFFER_SIZE, "Size of page buffer. Used by --safe-repair", &check_param.use_buffers, &check_param.use_buffers, 0, @@ -1242,6 +1250,8 @@ static int maria_chk(HA_CHECK *param, char *filename) llstr(info->state->records,llbuff), llstr(info->state->del,llbuff2)); maria_chk_init_for_check(param, info); + if (opt_warning_for_wrong_transid == 0) + param->max_trid= ~ (ulonglong) 0; error= maria_chk_status(param,info); maria_intersect_keys_active(share->state.key_map, param->keys_in_use); error|= maria_chk_size(param,info); @@ -1278,8 +1288,11 @@ static int maria_chk(HA_CHECK *param, char *filename) } if (!error) { - if ((share->state.changed & STATE_CHANGED) && - (param->testflag & T_UPDATE_STATE)) + if (((share->state.changed & + (STATE_CHANGED | STATE_CRASHED | STATE_CRASHED_ON_REPAIR | + STATE_IN_REPAIR)) || + share->state.open_count != 0) + && (param->testflag & T_UPDATE_STATE)) info->update|=HA_STATE_CHANGED | HA_STATE_ROW_CHANGED; DBUG_PRINT("info", ("Reseting crashed state")); share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED | diff --git a/storage/maria/maria_read_log.c b/storage/maria/maria_read_log.c index a90cfdce004..ca4b215b84c 100644 --- a/storage/maria/maria_read_log.c +++ b/storage/maria/maria_read_log.c @@ -33,7 +33,7 @@ static my_bool opt_display_only, opt_apply, opt_apply_undo, opt_silent; static my_bool opt_check; static const char *opt_tmpdir; static ulong opt_page_buffer_size; -static ulonglong opt_start_from_lsn; +static ulonglong opt_start_from_lsn, opt_end_lsn; static MY_TMPDIR maria_chk_tmpdir; @@ -120,8 +120,14 @@ int main(int argc, char **argv) LSN_IN_PARTS(lsn)); } + if (opt_end_lsn != LSN_IMPOSSIBLE) + { + /* We can't apply undo if we use end_lsn */ + opt_apply_undo= 0; + } + fprintf(stdout, "TRACE of the last maria_read_log\n"); - if (maria_apply_log(lsn, opt_apply ? MARIA_LOG_APPLY : + if (maria_apply_log(lsn, opt_end_lsn, opt_apply ? MARIA_LOG_APPLY : (opt_check ? MARIA_LOG_CHECK : MARIA_LOG_DISPLAY_HEADER), opt_silent ? NULL : stdout, opt_apply_undo, FALSE, FALSE, &warnings_count)) @@ -178,18 +184,21 @@ static struct my_option my_long_options[] = {"display-only", 'd', "display brief info read from records' header", (uchar **) &opt_display_only, (uchar **) &opt_display_only, 0, GET_BOOL, NO_ARG,0, 0, 0, 0, 0, 0}, - {"maria_log_dir_path", 'l', + {"maria-log-dir-path", 'l', "Path to the directory where to store transactional log", (uchar **) &maria_data_root, (uchar **) &maria_data_root, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - { "page_buffer_size", 'P', "", + { "page-buffer-size", 'P', "", &opt_page_buffer_size, &opt_page_buffer_size, 0, GET_ULONG, REQUIRED_ARG, (long) USE_BUFFER_INIT, (long) USE_BUFFER_INIT, (long) ~(ulong) 0, (long) MALLOC_OVERHEAD, (long) IO_SIZE, 0}, - { "start_from_lsn", 'o', "Start reading log from this lsn", + { "start-from-lsn", 'o', "Start reading log from this lsn", &opt_start_from_lsn, &opt_start_from_lsn, 0, GET_ULL, REQUIRED_ARG, 0, 0, ~(longlong) 0, 0, 0, 0 }, + { "end-lsn", 'e', "Stop applying at this lsn. If end-lsn is used, UNDO:s " + "will not be applied", &opt_end_lsn, &opt_end_lsn, + 0, GET_ULL, REQUIRED_ARG, 0, 0, ~(longlong) 0, 0, 0, 0 }, {"silent", 's', "Print less information during apply/undo phase", (uchar **) &opt_silent, (uchar **) &opt_silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, From 17d01cba25ee0b926afcf3c901ec626f04ffe700 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Fri, 6 Aug 2010 09:36:09 +0300 Subject: [PATCH 355/461] Fixed test case and compiler warnings mysql-test/suite/innodb_plugin/t/innodb-timeout.test: More time for test case support-files/compiler_warnings.supp: Ignore compiler warning --- mysql-test/suite/innodb_plugin/t/innodb-timeout.test | 2 +- support-files/compiler_warnings.supp | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/innodb_plugin/t/innodb-timeout.test b/mysql-test/suite/innodb_plugin/t/innodb-timeout.test index 34eda7279b2..f6d319c7961 100644 --- a/mysql-test/suite/innodb_plugin/t/innodb-timeout.test +++ b/mysql-test/suite/innodb_plugin/t/innodb-timeout.test @@ -48,7 +48,7 @@ connection b; select * from t1 for update; connection a; -sleep 2; +sleep 3; commit; connection b; diff --git a/support-files/compiler_warnings.supp b/support-files/compiler_warnings.supp index 7651ae5aee4..94e5b54d6fa 100644 --- a/support-files/compiler_warnings.supp +++ b/support-files/compiler_warnings.supp @@ -153,6 +153,11 @@ mySTL/algorithm\.hpp: is used uninitialized in this function listener.cc : .*conversion from 'SOCKET' to 'int'.* net_serv.cc : .*conversion from 'SOCKET' to 'int'.* +# +# Ignorable warnings from header files +# +backward_warning\.h : This file includes at least one + # allow a little moving space for the warning below mi_packrec\.c : .*result of 32-bit shift implicitly converted to 64 bits.* : 560-600 ma_packrec\.c : .*result of 32-bit shift implicitly converted to 64 bits.* : 550-650 From 91831449227fd1a315ff8f7699e38c9a38f6b42a Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Fri, 6 Aug 2010 10:46:51 +0300 Subject: [PATCH 356/461] Fixed timing issue in test suite --- ..._slow_query_log-long_query_time-master.opt | 2 +- ...cona_slow_query_log-long_query_time.result | 19 +++++++++---------- ...ercona_slow_query_log-long_query_time.test | 12 +++++------- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/mysql-test/suite/percona/percona_slow_query_log-long_query_time-master.opt b/mysql-test/suite/percona/percona_slow_query_log-long_query_time-master.opt index 473323e0bd9..5cbb82d1261 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-long_query_time-master.opt +++ b/mysql-test/suite/percona/percona_slow_query_log-long_query_time-master.opt @@ -1 +1 @@ ---slow-query-log-file=percona_slow_query_log-long_query_time.log --long-query-time=2 \ No newline at end of file +--slow-query-log-file=percona_slow_query_log-long_query_time.log --long-query-time=3 diff --git a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.result b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.result index abc9c1d9994..03f8745ca62 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.result +++ b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.result @@ -1,22 +1,21 @@ SELECT sleep(1); sleep(1) 0 -SELECT sleep(3); -sleep(3) +SELECT sleep(6); +sleep(6) 0 -SELECT sleep(5); -sleep(5) +SELECT sleep(10); +sleep(10) 0 -set long_query_time=4; +set long_query_time=8; SELECT sleep(1); sleep(1) 0 -SELECT sleep(3); -sleep(3) +SELECT sleep(6); +sleep(6) 0 -SELECT sleep(5); -sleep(5) +SELECT sleep(12); +sleep(12) 0 -set long_query_time=2; cat MYSQLD_DATADIR/percona_slow_query_log-long_query_time.log | grep -c Query_time 3 diff --git a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test index 9c034a75fa8..55f3e61cd09 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test +++ b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test @@ -1,16 +1,14 @@ source include/have_innodb.inc; SELECT sleep(1); -SELECT sleep(3); -SELECT sleep(5); +SELECT sleep(6); +SELECT sleep(10); -set long_query_time=4; +set long_query_time=8; SELECT sleep(1); -SELECT sleep(3); -SELECT sleep(5); - -set long_query_time=2; +SELECT sleep(6); +SELECT sleep(12); let $MYSQLD_DATADIR= `select @@datadir`; let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-long_query_time.log | grep -c Query_time; From 8b48a0aa28a7538d372146a19e836a5c3b63046a Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Fri, 6 Aug 2010 10:49:53 +0300 Subject: [PATCH 357/461] Fixed wrong AC_INIT --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index d3a46025e5a..2826ed1ab5c 100644 --- a/configure.in +++ b/configure.in @@ -12,7 +12,7 @@ dnl dnl When changing the major version number please also check the switch dnl statement in mysqlbinlog::check_master_version(). You may also need dnl to update version.c in ndb. -AC_INIT([MySQL Server], [5.1.49-MariaDB], [], [mysql]) +AC_INIT([MariaDB Server], [5.1.49-MariaDB], [], [mysql]) AC_CONFIG_SRCDIR([sql/mysqld.cc]) AC_CANONICAL_SYSTEM From 13141c9842c055406730daead25337e46a57f4d8 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Fri, 6 Aug 2010 11:05:44 +0300 Subject: [PATCH 358/461] Fixed compiler warnings and test failures --- mysql-test/suite/vcol/t/vcol_misc.test | 2 ++ mysql-test/t/events_time_zone.test | 2 +- sql-common/client.c | 1 + sql/create_options.cc | 1 + sql/table.cc | 10 +++++++--- storage/oqgraph/graphcore.cc | 2 +- storage/sphinx/ha_sphinx.cc | 2 +- storage/sphinx/snippets_udf.cc | 18 +++++++++--------- 8 files changed, 23 insertions(+), 15 deletions(-) diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test index 8ae507a8f17..2a8d9a576b4 100644 --- a/mysql-test/suite/vcol/t/vcol_misc.test +++ b/mysql-test/suite/vcol/t/vcol_misc.test @@ -1,3 +1,5 @@ +--source include/have_ucs2.inc + --disable_warnings drop table if exists t1,t2; --enable_warnings diff --git a/mysql-test/t/events_time_zone.test b/mysql-test/t/events_time_zone.test index cb2fbab29c6..5291eb96e6b 100644 --- a/mysql-test/t/events_time_zone.test +++ b/mysql-test/t/events_time_zone.test @@ -5,7 +5,7 @@ # to wait for operation to complete. Should be positive. Test runs # about 25*N seconds (it sleeps most of the time, so CPU speed is not # relevant). -let $N = 5; +let $N = 6; # # 2. Some subtests # - create a new time zone diff --git a/sql-common/client.c b/sql-common/client.c index 2cad8df1f9b..3788ca9829b 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -2559,6 +2559,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user, #endif init_sigpipe_variables DBUG_ENTER("mysql_real_connect"); + LINT_INIT(pkt_scramble_len); DBUG_PRINT("enter",("host: %s db: %s user: %s", host ? host : "(Null)", diff --git a/sql/create_options.cc b/sql/create_options.cc index 6d682853ae6..f060b3b7204 100644 --- a/sql/create_options.cc +++ b/sql/create_options.cc @@ -600,6 +600,7 @@ engine_option_value *merge_engine_table_options(engine_option_value *first, { engine_option_value *end, *opt; DBUG_ENTER("merge_engine_table_options"); + LINT_INIT(end); /* find last element */ if (first && second) diff --git a/sql/table.cc b/sql/table.cc index 988e082addf..81353514872 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -699,6 +699,9 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, bool null_bits_are_used; DBUG_ENTER("open_binary_frm"); + LINT_INIT(options); + LINT_INIT(options_len); + new_field_pack_flag= head[27]; new_frm_ver= (head[2] - FRM_VER); field_pack_length= new_frm_ver < 2 ? 11 : 17; @@ -1943,11 +1946,14 @@ bool unpack_vcol_info_from_frm(THD *thd, CHARSET_INFO *old_character_set_client; Query_arena *backup_stmt_arena_ptr; Query_arena backup_arena; - Query_arena *vcol_arena; + Query_arena *vcol_arena= 0; Parser_state parser_state; DBUG_ENTER("unpack_vcol_info_from_frm"); DBUG_ASSERT(vcol_expr); + old_character_set_client= thd->variables.character_set_client; + backup_stmt_arena_ptr= thd->stmt_arena; + /* Step 1: Construct the input string for the parser. The string to be parsed has to be of the following format: @@ -1981,7 +1987,6 @@ bool unpack_vcol_info_from_frm(THD *thd, /* Step 2: Setup thd for parsing. */ - backup_stmt_arena_ptr= thd->stmt_arena; vcol_arena= table->expr_arena; if (!vcol_arena) { @@ -1996,7 +2001,6 @@ bool unpack_vcol_info_from_frm(THD *thd, thd->stmt_arena= vcol_arena; thd->lex->parse_vcol_expr= TRUE; - old_character_set_client= thd->variables.character_set_client; /* Step 3: Use the parser to build an Item object from vcol_expr_str. diff --git a/storage/oqgraph/graphcore.cc b/storage/oqgraph/graphcore.cc index f19f99d0756..9f479425eeb 100644 --- a/storage/oqgraph/graphcore.cc +++ b/storage/oqgraph/graphcore.cc @@ -49,7 +49,7 @@ using namespace open_query; using namespace boost; -static const row empty_row = { 0 }; +static const row empty_row = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; namespace open_query { diff --git a/storage/sphinx/ha_sphinx.cc b/storage/sphinx/ha_sphinx.cc index c66c1344138..e88464eb16c 100644 --- a/storage/sphinx/ha_sphinx.cc +++ b/storage/sphinx/ha_sphinx.cc @@ -2616,7 +2616,7 @@ int ha_sphinx::get_rec ( byte * buf, const byte *, uint ) for ( uint32 i=0; i Date: Fri, 6 Aug 2010 15:39:37 +0300 Subject: [PATCH 359/461] Fix for LP#614265 Crash in _ma_unpin_all_pages / _ma_search on DELETE with Aria search engine Fixed compiler warnings client/mysqlslap.c: Fixed compiler warnings mysql-test/suite/maria/r/maria.result: Test case for LP#614265 mysql-test/suite/maria/t/maria.test: Test case for LP#614265 mysql-test/suite/pbxt/t/skip_name_resolve-master.opt: Ensure that we get restart before test (as test uses show processlist) sql/handler.cc: Added cloned marker if clone was called (for safety checks & debugging) sql/handler.h: Added cloned marker if clone was called (for safety checks & debugging) storage/maria/ha_maria.cc: In clone call, set file->trn if cloned file had this set. This is needed as maria_create_trn_for_mysql() and thus file->trn is never set for cloned table. Ensure that file->trn is properly reset after calls to repair/check/zerofill. Increment locked table count if file->trn is set (as we decrement this in the unlock call) tests/mysql_client_test.c: Fixed compiler warnings --- client/mysqlslap.c | 12 +++---- mysql-test/suite/maria/r/maria.result | 6 ++++ mysql-test/suite/maria/t/maria.test | 15 +++++++++ .../suite/pbxt/t/skip_name_resolve-master.opt | 1 + sql/handler.cc | 17 ++++++---- sql/handler.h | 3 +- storage/maria/ha_maria.cc | 31 ++++++++++++++++++- tests/mysql_client_test.c | 12 +++---- 8 files changed, 77 insertions(+), 20 deletions(-) create mode 100644 mysql-test/suite/pbxt/t/skip_name_resolve-master.opt diff --git a/client/mysqlslap.c b/client/mysqlslap.c index 1d1fe4c27ed..7590ff35b5f 100644 --- a/client/mysqlslap.c +++ b/client/mysqlslap.c @@ -543,7 +543,7 @@ static struct my_option my_long_options[] = 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"auto-generate-sql-load-type", OPT_SLAP_AUTO_GENERATE_SQL_LOAD_TYPE, "Specify test load type: mixed, update, write, key, or read; default is mixed.", - &auto_generate_sql_type, &auto_generate_sql_type, + (char**) &auto_generate_sql_type, (char**) &auto_generate_sql_type, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"auto-generate-sql-secondary-indexes", OPT_SLAP_AUTO_GENERATE_SECONDARY_INDEXES, @@ -574,13 +574,13 @@ static struct my_option my_long_options[] = &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"concurrency", 'c', "Number of clients to simulate for query to run.", - &concurrency_str, &concurrency_str, 0, GET_STR, + (char**) &concurrency_str, (char**) &concurrency_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"create", OPT_SLAP_CREATE_STRING, "File or string to use create tables.", &create_string, &create_string, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"create-schema", OPT_CREATE_SLAP_SCHEMA, "Schema to run tests in.", - &create_schema_string, &create_schema_string, 0, GET_STR, + (char**) &create_schema_string, (char**) &create_schema_string, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"csv", OPT_SLAP_CSV, "Generate CSV output to named file or to stdout if no file is named.", @@ -590,7 +590,7 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0}, #else {"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.", - &default_dbug_option, &default_dbug_option, 0, GET_STR, + (char**) &default_dbug_option, (char**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.", @@ -618,11 +618,11 @@ static struct my_option my_long_options[] = &iterations, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0}, {"number-char-cols", 'x', "Number of VARCHAR columns to create in table if specifying --auto-generate-sql.", - &num_char_cols_opt, &num_char_cols_opt, 0, GET_STR, REQUIRED_ARG, + (char**) &num_char_cols_opt, (char**) &num_char_cols_opt, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"number-int-cols", 'y', "Number of INT columns to create in table if specifying --auto-generate-sql.", - &num_int_cols_opt, &num_int_cols_opt, 0, GET_STR, REQUIRED_ARG, + (char**) &num_int_cols_opt, (char**) &num_int_cols_opt, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"number-of-queries", OPT_MYSQL_NUMBER_OF_QUERY, "Limit each client to this number of queries (this is not exact).", diff --git a/mysql-test/suite/maria/r/maria.result b/mysql-test/suite/maria/r/maria.result index 5d7a5fec78b..76a115982f0 100644 --- a/mysql-test/suite/maria/r/maria.result +++ b/mysql-test/suite/maria/r/maria.result @@ -2607,3 +2607,9 @@ t1 CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL ) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 drop table t1; +CREATE TABLE t1 ( f1 DOUBLE , f2 DOUBLE , f3 DOUBLE , f4 DOUBLE , v3 DOUBLE , v4 DOUBLE , KEY ( v3 ) , KEY ( v4 ) ) engine=maria; +REPLACE t1 ( f2 , f1 ) VALUES ( f2 , 56 ) ; +INSERT t1 ( f1 , f2 , f3 , f4 ) VALUES ( 0 , f2 , 8 , f3 ) ; +INSERT t1 ( f4 , f2 ) VALUES ( 4 , 92 ) ; +DELETE FROM t1 WHERE v3 = 173 OR v4 = 9 ; +drop table t1; diff --git a/mysql-test/suite/maria/t/maria.test b/mysql-test/suite/maria/t/maria.test index 35ccb6263e3..a4498070390 100644 --- a/mysql-test/suite/maria/t/maria.test +++ b/mysql-test/suite/maria/t/maria.test @@ -1881,6 +1881,21 @@ Create table t1 (a int) engine="aria"; show create table t1; drop table t1; +# +# Test of LP#614265. This happens when we where using quick_range_select in +# delete +# + +CREATE TABLE t1 ( f1 DOUBLE , f2 DOUBLE , f3 DOUBLE , f4 DOUBLE , v3 DOUBLE , v4 DOUBLE , KEY ( v3 ) , KEY ( v4 ) ) engine=maria; +REPLACE t1 ( f2 , f1 ) VALUES ( f2 , 56 ) ; +INSERT t1 ( f1 , f2 , f3 , f4 ) VALUES ( 0 , f2 , 8 , f3 ) ; +INSERT t1 ( f4 , f2 ) VALUES ( 4 , 92 ) ; +DELETE FROM t1 WHERE v3 = 173 OR v4 = 9 ; +drop table t1; + +# +# End of test +# # Set defaults back --disable_result_log --disable_query_log diff --git a/mysql-test/suite/pbxt/t/skip_name_resolve-master.opt b/mysql-test/suite/pbxt/t/skip_name_resolve-master.opt new file mode 100644 index 00000000000..cef79bc8585 --- /dev/null +++ b/mysql-test/suite/pbxt/t/skip_name_resolve-master.opt @@ -0,0 +1 @@ +--force-restart diff --git a/sql/handler.cc b/sql/handler.cc index afd9d08971d..7b1100ffe9d 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -2027,6 +2027,10 @@ int ha_delete_table(THD *thd, handlerton *table_type, const char *path, handler *handler::clone(MEM_ROOT *mem_root) { handler *new_handler= get_new_handler(table->s, mem_root, table->s->db_type()); + + if (!new_handler) + return NULL; + /* Allocate handler->ref here because otherwise ha_open will allocate it on this->table->mem_root and we will not be able to reclaim that memory @@ -2034,12 +2038,13 @@ handler *handler::clone(MEM_ROOT *mem_root) */ if (!(new_handler->ref= (uchar*) alloc_root(mem_root, ALIGN_SIZE(ref_length)*2))) return NULL; - if (new_handler && !new_handler->ha_open(table, - table->s->normalized_path.str, - table->db_stat, - HA_OPEN_IGNORE_IF_LOCKED)) - return new_handler; - return NULL; + if (new_handler->ha_open(table, + table->s->normalized_path.str, + table->db_stat, + HA_OPEN_IGNORE_IF_LOCKED)) + return NULL; + new_handler->cloned= 1; // Marker for debugging + return new_handler; } diff --git a/sql/handler.h b/sql/handler.h index 9fefca99908..d0b5bbba996 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1129,6 +1129,7 @@ public: enum {NONE=0, INDEX, RND} inited; bool locked; bool implicit_emptied; /* Can be !=0 only if HEAP */ + bool cloned; /* 1 if this was created with clone */ const COND *pushed_cond; /** next_insert_id is the next value which should be inserted into the @@ -1166,7 +1167,7 @@ public: ref(0), key_used_on_scan(MAX_KEY), active_index(MAX_KEY), ref_length(sizeof(my_off_t)), ft_handler(0), inited(NONE), - locked(FALSE), implicit_emptied(0), + locked(FALSE), implicit_emptied(0), cloned(0), pushed_cond(0), next_insert_id(0), insert_id_for_cur_row(0), auto_inc_intervals_count(0) {} diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc index da23f76f143..1d117dddab5 100644 --- a/storage/maria/ha_maria.cc +++ b/storage/maria/ha_maria.cc @@ -790,7 +790,11 @@ handler *ha_maria::clone(MEM_ROOT *mem_root) { ha_maria *new_handler= static_cast (handler::clone(mem_root)); if (new_handler) + { new_handler->file->state= file->state; + /* maria_create_trn_for_mysql() is never called for clone() tables */ + new_handler->file->trn= file->trn; + } return new_handler; } @@ -1042,6 +1046,7 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt) HA_CHECK param; MARIA_SHARE *share= file->s; const char *old_proc_info= thd_proc_info(thd, "Checking table"); + TRN *old_trn= file->trn; maria_chk_init(¶m); param.thd= thd; @@ -1120,6 +1125,8 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt) file->update |= HA_STATE_CHANGED | HA_STATE_ROW_CHANGED; } + /* Reset trn, that may have been set by repair */ + _ma_set_trn_for_table(file, old_trn); thd_proc_info(thd, old_proc_info); return error ? HA_ADMIN_CORRUPT : HA_ADMIN_OK; } @@ -1343,11 +1350,13 @@ int ha_maria::zerofill(THD * thd, HA_CHECK_OPT *check_opt) { int error; HA_CHECK param; + TRN *old_trn; MARIA_SHARE *share= file->s; if (!file) return HA_ADMIN_INTERNAL_ERROR; + old_trn= file->trn; maria_chk_init(¶m); param.thd= thd; param.op_name= "zerofill"; @@ -1355,6 +1364,9 @@ int ha_maria::zerofill(THD * thd, HA_CHECK_OPT *check_opt) param.sort_buffer_length= THDVAR(thd, sort_buffer_size); error=maria_zerofill(¶m, file, share->open_file_name.str); + /* Reset trn, that may have been set by repair */ + _ma_set_trn_for_table(file, old_trn); + if (!error) { pthread_mutex_lock(&share->intern_lock); @@ -1368,6 +1380,7 @@ int ha_maria::optimize(THD * thd, HA_CHECK_OPT *check_opt) { int error; HA_CHECK param; + if (!file) return HA_ADMIN_INTERNAL_ERROR; @@ -1384,6 +1397,7 @@ int ha_maria::optimize(THD * thd, HA_CHECK_OPT *check_opt) param.testflag &= ~T_REP_BY_SORT; error= repair(thd, ¶m, 1); } + return error; } @@ -1397,6 +1411,7 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize) char fixed_name[FN_REFLEN]; MARIA_SHARE *share= file->s; ha_rows rows= file->state->records; + TRN *old_trn= file->trn; DBUG_ENTER("ha_maria::repair"); /* @@ -1558,6 +1573,9 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize) thd_proc_info(thd, old_proc_info); if (!thd->locked_tables) maria_lock_database(file, F_UNLCK); + + /* Reset trn, that may have been set by repair */ + _ma_set_trn_for_table(file, old_trn); error= error ? HA_ADMIN_FAILED : (optimize_done ? (write_log_record_for_repair(param, file) ? HA_ADMIN_FAILED : @@ -2295,6 +2313,8 @@ int ha_maria::info(uint flag, my_bool lock_table_share) int ha_maria::extra(enum ha_extra_function operation) { + int tmp; + TRN *old_trn= file->trn; if ((specialflag & SPECIAL_SAFE_MODE) && operation == HA_EXTRA_KEYREAD) return 0; #ifdef NOT_USED @@ -2320,7 +2340,9 @@ int ha_maria::extra(enum ha_extra_function operation) TRN *trn= THD_TRN; _ma_set_trn_for_table(file, trn); } - return maria_extra(file, operation, 0); + tmp= maria_extra(file, operation, 0); + file->trn= old_trn; // Reset trn if was used + return tmp; } int ha_maria::reset(void) @@ -2415,6 +2437,13 @@ int ha_maria::external_lock(THD *thd, int lock_type) *file->state= file->s->state.state; } + if (file->trn) + { + /* This can only happen with tables created with clone() */ + DBUG_ASSERT(cloned); + trnman_increment_locked_tables(file->trn); + } + if (!thd->transaction.on) { /* diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 6647074bd2f..e31b71a63f1 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -18320,14 +18320,14 @@ static char **defaults_argv; static struct my_option client_test_long_options[] = { - {"basedir", 'b', "Basedir for tests.", &opt_basedir, - &opt_basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"basedir", 'b', "Basedir for tests.", (char**) &opt_basedir, + (char**) &opt_basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"count", 't', "Number of times test to be executed", &opt_count, &opt_count, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0}, {"database", 'D', "Database to use", &opt_db, &opt_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"debug", '#', "Output debug log", &default_dbug_option, - &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"debug", '#', "Output debug log", (char**) &default_dbug_option, + (char**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"help", '?', "Display this help and exit", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"host", 'h', "Connect to host", &opt_host, &opt_host, @@ -18363,8 +18363,8 @@ static struct my_option client_test_long_options[] = {"user", 'u', "User for login if not current user", &opt_user, &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"vardir", 'v', "Data dir for tests.", &opt_vardir, - &opt_vardir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"vardir", 'v', "Data dir for tests.", (char**) &opt_vardir, + (char**) &opt_vardir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"getopt-ll-test", 'g', "Option for testing bug in getopt library", &opt_getopt_ll_test, &opt_getopt_ll_test, 0, GET_LL, REQUIRED_ARG, 0, 0, LONGLONG_MAX, 0, 0, 0}, From 2e80f1bb09e3d1c8b7a67903bf273ee21659dd77 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Fri, 6 Aug 2010 16:12:30 +0300 Subject: [PATCH 360/461] Fix build failure on windows --- storage/maria/ma_blockrec.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/storage/maria/ma_blockrec.c b/storage/maria/ma_blockrec.c index 2c29fa27278..e3210fff860 100644 --- a/storage/maria/ma_blockrec.c +++ b/storage/maria/ma_blockrec.c @@ -4410,8 +4410,7 @@ static my_bool read_long_data2(MARIA_HA *info, uchar *to, ulong length, MARIA_EXTENT_CURSOR *extent, uchar **data, uchar **end_of_data) { - uint left_length; - left_length= (uint) (*end_of_data - *data); + uint left_length= (uint) (*end_of_data - *data); DBUG_ENTER("read_long_data2"); DBUG_PRINT("enter", ("length: %lu left_length: %u", length, left_length)); From 165eb1186cb6f8e9a9595ffd7c172c54a6dfb6dc Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Sat, 7 Aug 2010 15:27:23 +0300 Subject: [PATCH 361/461] Added extra argument to longlong2str() to make it have same prototype is int2str() Changed to use longlong10_to_str() instead of longlong2str() when base is 10 or -10 as former is much faster than later Changed my_vsnprintf() to use longlong2str instead of int2str() to get rid of warnings and to get support for long pointers even when long is 32 bit. client/mysqltest.cc: longlong2str() -> longlong10_to_str() include/m_string.h: Added extra argument to longlong2str() to make it have same prototype is int2str() mysys/charset.c: Fixed compiler warning mysys/mf_soundex.c: Fixed compiler warning mysys/my_getopt.c: longlong2str() -> longlong10_to_str() sql/create_options.cc: Fixed compiler warning sql/item_strfunc.cc: Added extra argument to longlong2str sql/opt_range.cc: longlong2str() -> longlong10_to_str() sql/partition_info.cc: longlong2str() -> longlong10_to_str() sql/slave.cc: longlong2str() -> longlong10_to_str() sql/sql_bitmap.h: Added extra argument to longlong2str sql/sql_partition.cc: Added extra argument to longlong2str sql/sql_select.cc: longlong2str() -> longlong10_to_str() sql/sql_show.cc: Added extra argument to longlong2str storage/innodb_plugin/handler/ha_innodb.cc: Update to new parameters for longlong2str() storage/maria/ma_dbug.c: longlong2str() -> longlong10_to_str() storage/maria/maria_chk.c: Added extra argument to longlong2str storage/myisam/mi_dbug.c: longlong2str() -> longlong10_to_str() storage/myisam/myisamchk.c: Added extra argument to longlong2str storage/xtradb/handler/ha_innodb.cc: Update to new parameters for longlong2str() strings/longlong2str.c: Added extra argument to longlong2str() to make it have same prototype is int2str() strings/my_vsnprintf.c: Changed my_vsnprintf() to use longlong2str instead of int2str() to get rid of warnings and to get support for long pointers even when long is 32 bit. Added cast to get rid of compiler warnings --- client/mysqltest.cc | 4 ++-- include/m_string.h | 4 ++-- mysys/charset.c | 4 ++-- mysys/mf_soundex.c | 2 +- mysys/my_getopt.c | 2 +- sql/create_options.cc | 9 +++++---- sql/item_strfunc.cc | 4 ++-- sql/opt_range.cc | 13 +++++++------ sql/partition_info.cc | 4 ++-- sql/slave.cc | 4 ++-- sql/sql_bitmap.h | 2 +- sql/sql_partition.cc | 2 +- sql/sql_select.cc | 8 ++++---- sql/sql_show.cc | 2 +- storage/innodb_plugin/handler/ha_innodb.cc | 6 +++--- storage/maria/ma_dbug.c | 4 ++-- storage/maria/maria_chk.c | 2 +- storage/myisam/mi_dbug.c | 4 ++-- storage/myisam/myisamchk.c | 2 +- storage/xtradb/handler/ha_innodb.cc | 10 +++++----- strings/longlong2str.c | 7 ++++--- strings/my_vsnprintf.c | 14 +++++++------- 22 files changed, 58 insertions(+), 55 deletions(-) diff --git a/client/mysqltest.cc b/client/mysqltest.cc index 466de547a26..0a7bf9b556d 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -7671,7 +7671,7 @@ void mark_progress(struct st_command* command __attribute__((unused)), die("Out of memory"); /* Milliseconds since start */ - end= longlong2str(timer, buf, 10); + end= longlong10_to_str(timer, buf, 10); dynstr_append_mem(&ds_progress, buf, (int)(end-buf)); dynstr_append_mem(&ds_progress, "\t", 1); @@ -8429,7 +8429,7 @@ void timer_output(void) { char buf[32], *end; ulonglong timer= timer_now() - timer_start; - end= longlong2str(timer, buf, 10); + end= longlong10_to_str(timer, buf, 10); str_to_file(timer_file,buf, (int) (end-buf)); /* Timer has been written to the file, don't use it anymore */ timer_file= 0; diff --git a/include/m_string.h b/include/m_string.h index 31719781a48..61b7f41a61d 100644 --- a/include/m_string.h +++ b/include/m_string.h @@ -210,7 +210,7 @@ extern char *str2int(const char *src,int radix,long lower,long upper, long *val); longlong my_strtoll10(const char *nptr, char **endptr, int *error); #if SIZEOF_LONG == SIZEOF_LONG_LONG -#define longlong2str(A,B,C) int2str((A),(B),(C),1) +#define longlong2str(A,B,C,D) int2str((A),(B),(C),(D)) #define longlong10_to_str(A,B,C) int10_to_str((A),(B),(C)) #undef strtoll #define strtoll(A,B,C) strtol((A),(B),(C)) @@ -223,7 +223,7 @@ longlong my_strtoll10(const char *nptr, char **endptr, int *error); #endif #else #ifdef HAVE_LONG_LONG -extern char *longlong2str(longlong val,char *dst,int radix); + extern char *longlong2str(longlong val,char *dst,int radix, int upcase); extern char *longlong10_to_str(longlong val,char *dst,int radix); #if (!defined(HAVE_STRTOULL) || defined(NO_STRTOLL_PROTO)) extern longlong strtoll(const char *str, char **ptr, int base); diff --git a/mysys/charset.c b/mysys/charset.c index 7cf8a8b828d..153ef8b7e2c 100644 --- a/mysys/charset.c +++ b/mysys/charset.c @@ -406,9 +406,9 @@ static my_pthread_once_t charsets_template= MY_PTHREAD_ONCE_INIT; static void init_available_charsets(void) { char fname[FN_REFLEN + sizeof(MY_CHARSET_INDEX)]; - struct charset_info_st **cs; + struct charset_info_st **cs; - bzero(&all_charsets,sizeof(all_charsets)); + bzero((char*) &all_charsets,sizeof(all_charsets)); init_compiled_charsets(MYF(0)); /* Copy compiled charsets */ diff --git a/mysys/mf_soundex.c b/mysys/mf_soundex.c index fe30d8c81af..3a3dab52dd6 100644 --- a/mysys/mf_soundex.c +++ b/mysys/mf_soundex.c @@ -47,7 +47,7 @@ void soundex(CHARSET_INFO * cs,register char * out_pntr, char * in_pntr, { char ch,last_ch; reg3 char * end; - register uchar *map=cs->to_upper; + register const uchar *map=cs->to_upper; if (remove_garbage) { diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c index 82a691d550a..b8a5c5d14bd 100644 --- a/mysys/my_getopt.c +++ b/mysys/my_getopt.c @@ -1271,7 +1271,7 @@ void my_print_variables(const struct my_option *options) printf("%s\n", llstr(*((longlong*) value), buff)); break; case GET_ULL: - longlong2str(*((ulonglong*) value), buff, 10); + longlong10_to_str(*((ulonglong*) value), buff, 10); printf("%s\n", buff); break; case GET_DOUBLE: diff --git a/sql/create_options.cc b/sql/create_options.cc index f060b3b7204..4478fc14791 100644 --- a/sql/create_options.cc +++ b/sql/create_options.cc @@ -136,9 +136,10 @@ static bool set_one_value(ha_create_table_option *opt, DBUG_RETURN(0); } - my_option optp= { opt->name, 1, 0, (uchar **)val, 0, 0, GET_ULL, - REQUIRED_ARG, opt->def_value, opt->min_value, opt->max_value, - 0, opt->block_size, 0}; + my_option optp= + { opt->name, 1, 0, (uchar **)val, 0, 0, GET_ULL, + REQUIRED_ARG, opt->def_value, opt->min_value, opt->max_value, + 0, (long) opt->block_size, 0}; ulonglong orig_val= strtoull(value->str, NULL, 10); my_bool unused; @@ -167,7 +168,7 @@ static bool set_one_value(ha_create_table_option *opt, { uint *val= (uint *)((char *)base + opt->offset), num; - *val= opt->def_value; + *val= (uint) opt->def_value; if (!value->str) DBUG_RETURN(0); diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 4c90eceec99..cafabe9a3ee 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -2701,7 +2701,7 @@ String *Item_func_conv::val_str(String *str) from_base, &endptr, &err); } - ptr= longlong2str(dec, ans, to_base); + ptr= longlong2str(dec, ans, to_base, 1); if (str->copy(ans, (uint32) (ptr-ans), default_charset())) return &my_empty_string; return str; @@ -2868,7 +2868,7 @@ String *Item_func_hex::val_str(String *str) if ((null_value= args[0]->null_value)) return 0; - ptr= longlong2str(dec,ans,16); + ptr= longlong2str(dec,ans,16,1); if (str->copy(ans,(uint32) (ptr-ans),default_charset())) return &my_empty_string; // End of memory return str; diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 2f88841d6a2..044f1ce1391 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -9010,7 +9010,7 @@ void QUICK_RANGE_SELECT::add_keys_and_lengths(String *key_names, uint length; KEY *key_info= head->key_info + index; key_names->append(key_info->name); - length= longlong2str(max_used_key_length, buf, 10) - buf; + length= longlong10_to_str(max_used_key_length, buf, 10) - buf; used_lengths->append(buf, length); } @@ -9035,7 +9035,7 @@ void QUICK_INDEX_MERGE_SELECT::add_keys_and_lengths(String *key_names, KEY *key_info= head->key_info + quick->index; key_names->append(key_info->name); - length= longlong2str(quick->max_used_key_length, buf, 10) - buf; + length= longlong10_to_str(quick->max_used_key_length, buf, 10) - buf; used_lengths->append(buf, length); } if (pk_quick_select) @@ -9043,7 +9043,8 @@ void QUICK_INDEX_MERGE_SELECT::add_keys_and_lengths(String *key_names, KEY *key_info= head->key_info + pk_quick_select->index; key_names->append(','); key_names->append(key_info->name); - length= longlong2str(pk_quick_select->max_used_key_length, buf, 10) - buf; + length= (longlong10_to_str(pk_quick_select->max_used_key_length, buf, 10) + - buf); used_lengths->append(','); used_lengths->append(buf, length); } @@ -9068,7 +9069,7 @@ void QUICK_ROR_INTERSECT_SELECT::add_keys_and_lengths(String *key_names, used_lengths->append(','); } key_names->append(key_info->name); - length= longlong2str(quick->max_used_key_length, buf, 10) - buf; + length= longlong10_to_str(quick->max_used_key_length, buf, 10) - buf; used_lengths->append(buf, length); } @@ -9077,7 +9078,7 @@ void QUICK_ROR_INTERSECT_SELECT::add_keys_and_lengths(String *key_names, KEY *key_info= head->key_info + cpk_quick->index; key_names->append(','); key_names->append(key_info->name); - length= longlong2str(cpk_quick->max_used_key_length, buf, 10) - buf; + length= longlong10_to_str(cpk_quick->max_used_key_length, buf, 10) - buf; used_lengths->append(','); used_lengths->append(buf, length); } @@ -11240,7 +11241,7 @@ void QUICK_GROUP_MIN_MAX_SELECT::add_keys_and_lengths(String *key_names, char buf[64]; uint length; key_names->append(index_info->name); - length= longlong2str(max_used_key_length, buf, 10) - buf; + length= longlong10_to_str(max_used_key_length, buf, 10) - buf; used_lengths->append(buf, length); } diff --git a/sql/partition_info.cc b/sql/partition_info.cc index 0de8e478f03..1bf137011ab 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -1104,8 +1104,8 @@ void partition_info::print_no_partition_found(TABLE *table) if (part_expr->null_value) buf_ptr= (char*)"NULL"; else - longlong2str(err_value, buf, - part_expr->unsigned_flag ? 10 : -10); + longlong10_to_str(err_value, buf, + part_expr->unsigned_flag ? 10 : -10); my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), buf_ptr); dbug_tmp_restore_column_map(table->read_set, old_map); } diff --git a/sql/slave.cc b/sql/slave.cc index 3df5c0df0b2..1421f300804 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -3969,11 +3969,11 @@ bool flush_relay_log_info(Relay_log_info* rli) my_b_seek(file, 0L); pos=strmov(buff, rli->group_relay_log_name); *pos++='\n'; - pos=longlong2str(rli->group_relay_log_pos, pos, 10); + pos= longlong10_to_str(rli->group_relay_log_pos, pos, 10); *pos++='\n'; pos=strmov(pos, rli->group_master_log_name); *pos++='\n'; - pos=longlong2str(rli->group_master_log_pos, pos, 10); + pos=longlong10_to_str(rli->group_master_log_pos, pos, 10); *pos='\n'; if (my_b_write(file, (uchar*) buff, (size_t) (pos-buff)+1)) error=1; diff --git a/sql/sql_bitmap.h b/sql/sql_bitmap.h index e07806a56ab..58e19c1d1fa 100644 --- a/sql/sql_bitmap.h +++ b/sql/sql_bitmap.h @@ -162,7 +162,7 @@ public: my_bool is_subset(const Bitmap<64>& map2) const { return !(map & ~map2.map); } my_bool is_overlapping(const Bitmap<64>& map2) const { return (map & map2.map)!= 0; } my_bool operator==(const Bitmap<64>& map2) const { return map == map2.map; } - char *print(char *buf) const { longlong2str(map,buf,16); return buf; } + char *print(char *buf) const { longlong2str(map,buf,16,1); return buf; } ulonglong to_ulonglong() const { return map; } class Iterator : public Table_map_iterator { diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 3dae2d1e8b4..6058db4aad4 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -1905,7 +1905,7 @@ static int add_int(File fptr, longlong number) static int add_uint(File fptr, ulonglong number) { char buff[32]; - longlong2str(number, buff, 10); + longlong2str(number, buff, 10, 1); return add_string(fptr, buff); } diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 59d9d72e778..69e4f302803 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -16859,8 +16859,8 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order, item_list.push_back(new Item_string(key_info->name, strlen(key_info->name), system_charset_info)); - length= longlong2str(tab->ref.key_length, keylen_str_buf, 10) - - keylen_str_buf; + length= (longlong10_to_str(tab->ref.key_length, keylen_str_buf, 10) - + keylen_str_buf); item_list.push_back(new Item_string(keylen_str_buf, length, system_charset_info)); for (store_key **ref=tab->ref.key_copy ; *ref ; ref++) @@ -16878,8 +16878,8 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order, register uint length; item_list.push_back(new Item_string(key_info->name, strlen(key_info->name),cs)); - length= longlong2str(key_info->key_length, keylen_str_buf, 10) - - keylen_str_buf; + length= (longlong10_to_str(key_info->key_length, keylen_str_buf, 10) - + keylen_str_buf); item_list.push_back(new Item_string(keylen_str_buf, length, system_charset_info)); diff --git a/sql/sql_show.cc b/sql/sql_show.cc index e1d223eadad..a2290cf0758 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1171,7 +1171,7 @@ static bool get_field_default_value(THD *thd, TABLE *table, if (field_type == MYSQL_TYPE_BIT) { longlong dec= field->val_int(); - char *ptr= longlong2str(dec, tmp + 2, 2); + char *ptr= longlong2str(dec, tmp + 2, 2, 1); uint32 length= (uint32) (ptr - tmp); tmp[0]= 'b'; tmp[1]= '\''; diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index 1c2a880c070..4d4fd185567 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -2672,7 +2672,7 @@ innobase_rollback_to_savepoint( /* TODO: use provided savepoint data area to store savepoint data */ - longlong2str((ulint)savepoint, name, 36); + longlong2str((ulint)savepoint, name, 36, 1); error = (int) trx_rollback_to_savepoint_for_mysql(trx, name, &mysql_binlog_cache_pos); @@ -2703,7 +2703,7 @@ innobase_release_savepoint( /* TODO: use provided savepoint data area to store savepoint data */ - longlong2str((ulint)savepoint, name, 36); + longlong2str((ulint)savepoint, name, 36, 1); error = (int) trx_release_savepoint_for_mysql(trx, name); @@ -2750,7 +2750,7 @@ innobase_savepoint( /* TODO: use provided savepoint data area to store savepoint data */ char name[64]; - longlong2str((ulint)savepoint,name,36); + longlong2str((ulint)savepoint,name,36,1); error = (int) trx_savepoint_for_mysql(trx, name, (ib_int64_t)0); diff --git a/storage/maria/ma_dbug.c b/storage/maria/ma_dbug.c index ea69975ad4b..0d2db0d4f4b 100644 --- a/storage/maria/ma_dbug.c +++ b/storage/maria/ma_dbug.c @@ -124,7 +124,7 @@ void _ma_print_keydata(FILE *stream, register HA_KEYSEG *keyseg, case HA_KEYTYPE_LONGLONG: { char buff[21]; - longlong2str(mi_sint8korr(key),buff,-10); + longlong10_to_str(mi_sint8korr(key),buff,-10); VOID(fprintf(stream,"%s",buff)); key=end; break; @@ -132,7 +132,7 @@ void _ma_print_keydata(FILE *stream, register HA_KEYSEG *keyseg, case HA_KEYTYPE_ULONGLONG: { char buff[21]; - longlong2str(mi_sint8korr(key),buff,10); + longlong10_to_str(mi_sint8korr(key),buff,10); VOID(fprintf(stream,"%s",buff)); key=end; break; diff --git a/storage/maria/maria_chk.c b/storage/maria/maria_chk.c index 985e9d2bc85..35f7f0f6c29 100644 --- a/storage/maria/maria_chk.c +++ b/storage/maria/maria_chk.c @@ -1512,7 +1512,7 @@ static void descript(HA_CHECK *param, register MARIA_HA *info, char *name) printf("Recordlength: %16d\n",(int) share->base.pack_reclength); if (! maria_is_all_keys_active(share->state.key_map, share->base.keys)) { - longlong2str(share->state.key_map,buff,2); + longlong2str(share->state.key_map,buff,2,1); printf("Using only keys '%s' of %d possibly keys\n", buff, share->base.keys); } diff --git a/storage/myisam/mi_dbug.c b/storage/myisam/mi_dbug.c index 659abdce131..1a61d4823b5 100644 --- a/storage/myisam/mi_dbug.c +++ b/storage/myisam/mi_dbug.c @@ -118,7 +118,7 @@ void _mi_print_key(FILE *stream, register HA_KEYSEG *keyseg, case HA_KEYTYPE_LONGLONG: { char buff[21]; - longlong2str(mi_sint8korr(key),buff,-10); + longlong10_to_str(mi_sint8korr(key),buff,-10); VOID(fprintf(stream,"%s",buff)); key=end; break; @@ -126,7 +126,7 @@ void _mi_print_key(FILE *stream, register HA_KEYSEG *keyseg, case HA_KEYTYPE_ULONGLONG: { char buff[21]; - longlong2str(mi_sint8korr(key),buff,10); + longlong10_to_str(mi_sint8korr(key),buff,10); VOID(fprintf(stream,"%s",buff)); key=end; break; diff --git a/storage/myisam/myisamchk.c b/storage/myisam/myisamchk.c index c7ab2baa87c..592426a3690 100644 --- a/storage/myisam/myisamchk.c +++ b/storage/myisam/myisamchk.c @@ -1314,7 +1314,7 @@ static void descript(HA_CHECK *param, register MI_INFO *info, char * name) printf("Recordlength: %13d\n",(int) share->base.pack_reclength); if (! mi_is_all_keys_active(share->state.key_map, share->base.keys)) { - longlong2str(share->state.key_map,buff,2); + longlong2str(share->state.key_map,buff,2,1); printf("Using only keys '%s' of %d possibly keys\n", buff, share->base.keys); } diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc index ad4a1f8d3bd..68da379b841 100644 --- a/storage/xtradb/handler/ha_innodb.cc +++ b/storage/xtradb/handler/ha_innodb.cc @@ -2459,11 +2459,11 @@ innobase_change_buffering_inited_ok: my_b_seek(&info_file, 0L); pos=strmov(buff, trx_sys_mysql_relay_log_name); *pos++='\n'; - pos=longlong2str(trx_sys_mysql_relay_log_pos, pos, 10); + pos=longlong10_to_str(trx_sys_mysql_relay_log_pos, pos, 10); *pos++='\n'; pos=strmov(pos, trx_sys_mysql_master_log_name); *pos++='\n'; - pos=longlong2str(trx_sys_mysql_master_log_pos, pos, 10); + pos=longlong10_to_str(trx_sys_mysql_master_log_pos, pos, 10); *pos='\n'; if (my_b_write(&info_file, (uchar*) buff, (size_t) (pos-buff)+1)) @@ -2931,7 +2931,7 @@ innobase_rollback_to_savepoint( /* TODO: use provided savepoint data area to store savepoint data */ - longlong2str((ulint)savepoint, name, 36); + longlong2str((ulint)savepoint, name, 36, 1); error = (int) trx_rollback_to_savepoint_for_mysql(trx, name, &mysql_binlog_cache_pos); @@ -2962,7 +2962,7 @@ innobase_release_savepoint( /* TODO: use provided savepoint data area to store savepoint data */ - longlong2str((ulint)savepoint, name, 36); + longlong2str((ulint)savepoint, name, 36, 1); error = (int) trx_release_savepoint_for_mysql(trx, name); @@ -3009,7 +3009,7 @@ innobase_savepoint( /* TODO: use provided savepoint data area to store savepoint data */ char name[64]; - longlong2str((ulint)savepoint,name,36); + longlong2str((ulint)savepoint,name,36,1); error = (int) trx_savepoint_for_mysql(trx, name, (ib_int64_t)0); diff --git a/strings/longlong2str.c b/strings/longlong2str.c index d7de5bb0f7c..61b45b731c4 100644 --- a/strings/longlong2str.c +++ b/strings/longlong2str.c @@ -46,11 +46,12 @@ This assumes that longlong multiplication is faster than longlong division. */ -char *longlong2str(longlong val,char *dst,int radix) +char *longlong2str(longlong val,char *dst,int radix, int upcase) { char buffer[65]; register char *p; long long_val; + const char *dig_vec= upcase ? _dig_vec_upper : _dig_vec_lower; ulonglong uval= (ulonglong) val; if (radix < 0) @@ -80,14 +81,14 @@ char *longlong2str(longlong val,char *dst,int radix) { ulonglong quo= uval/(uint) radix; uint rem= (uint) (uval- quo* (uint) radix); - *--p = _dig_vec_upper[rem]; + *--p = _dig_vec[rem]; uval= quo; } long_val= (long) uval; while (long_val != 0) { long quo= long_val/radix; - *--p = _dig_vec_upper[(uchar) (long_val - quo*radix)]; + *--p = _dig_vec[(uchar) (long_val - quo*radix)]; long_val= quo; } while ((*dst++ = *p++) != 0) ; diff --git a/strings/my_vsnprintf.c b/strings/my_vsnprintf.c index 79267461c47..fbe4c1bdf6f 100644 --- a/strings/my_vsnprintf.c +++ b/strings/my_vsnprintf.c @@ -235,19 +235,19 @@ static char *process_int_arg(char *to, char *end, size_t length, store_start= buff; if (arg_type == 'd') - store_end= int10_to_str(par, store_start, -10); + store_end= longlong10_to_str(par, store_start, -10); else if (arg_type == 'u') - store_end= int10_to_str(par, store_start, 10); + store_end= longlong10_to_str(par, store_start, 10); else if (arg_type == 'p') { store_start[0]= '0'; store_start[1]= 'x'; - store_end= int2str(par, store_start + 2, 16, 0); + store_end= longlong2str(par, store_start + 2, 16, 0); } else { DBUG_ASSERT(arg_type == 'X' || arg_type =='x'); - store_end= int2str(par, store_start, 16, (arg_type == 'X')); + store_end= longlong2str(par, store_start, 16, (arg_type == 'X')); } if ((res_length= (size_t) (store_end - store_start)) > to_length) @@ -430,9 +430,9 @@ start: { /* Integer parameter */ longlong larg; - length= ((print_arr[i].flags & LENGTH_ARG) ? - args_arr[print_arr[i].length].longlong_arg : - (longlong) print_arr[i].length); + length= (int) ((print_arr[i].flags & LENGTH_ARG) ? + args_arr[print_arr[i].length].longlong_arg : + (longlong) print_arr[i].length); if (args_arr[print_arr[i].arg_idx].have_longlong) larg = args_arr[print_arr[i].arg_idx].longlong_arg; From 0d3039d49daa7e274d66db808b15eebe8cbd778e Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Sat, 7 Aug 2010 17:42:30 +0300 Subject: [PATCH 362/461] This patch fixes LP#613408 Memory corruption with (M)aria storage engine and virtual columns in MariaDB 5.2 Fixed compiler warnings Disabled some tests that doesn't work on windows (uses shell tools or strange characters) client/mysqlshow.c: Fixed compiler warnings client/mysqlslap.c: Fixed compiler warnings mysql-test/mysql-test-run.pl: Use an error file instead of /dev/null (Fixes problem on Windows and the output may be usefull) mysql-test/suite/maria/r/maria.result: Test case for bug LP#613408 (not complete) mysql-test/suite/maria/t/maria.test: Test case for bug LP#613408 (not complete) mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.test: This test doesn't work one windows (needs shell tools) mysql-test/suite/percona/percona_log_slow_slave_statements.test: This test doesn't work one windows (needs shell tools) mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test: This test doesn't work one windows (needs shell tools) mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test: This test doesn't work one windows (needs shell tools) mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test: This test doesn't work one windows (needs shell tools) mysql-test/suite/percona/percona_slow_query_log-long_query_time.test: This test doesn't work one windows (needs shell tools) mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test: This test doesn't work one windows (needs shell tools) mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test: This test doesn't work one windows (needs shell tools) mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test: This test doesn't work one windows (needs shell tools) mysql-test/t/ctype_filesystem.test: This test doesn't work one windows (problem with character sets) mysql-test/t/events_time_zone.test: Use longer times to get predictable tests mysql-test/t/show_check-master.opt: set long query time to get more predictable tests storage/maria/ma_check.c: Restore info->s->lock_key_trees after repair. Disable logging to temp tables for all repair cases (safety fix) storage/maria/ma_state.c: Ensurethat info->state_start doesn't point to freed memory. (Could happen after running an internal repair to fast create indexes) storage/maria/trnman.c: Added longer comment --- client/mysqlshow.c | 2 +- client/mysqlslap.c | 2 +- mysql-test/mysql-test-run.pl | 2 +- mysql-test/suite/maria/r/maria.result | 11 ++++ mysql-test/suite/maria/t/maria.test | 17 ++++++ ...ements-and-use_global_long_query_time.test | 2 + .../percona_log_slow_slave_statements.test | 2 + ...na_slow_query_log-control_global_slow.test | 2 + ...ercona_slow_query_log-log_slow_filter.test | 2 + ...ona_slow_query_log-log_slow_verbosity.test | 2 + ...ercona_slow_query_log-long_query_time.test | 1 + ...ry_log-microseconds_in_slow_query_log.test | 1 + ...slow_query_log-min_examined_row_limit.test | 1 + ..._query_log-use_global_long_query_time.test | 1 + mysql-test/t/ctype_filesystem.test | 2 + mysql-test/t/events_time_zone.test | 2 +- mysql-test/t/show_check-master.opt | 2 +- storage/maria/ma_check.c | 57 ++++++++++++++++--- storage/maria/ma_state.c | 1 + storage/maria/trnman.c | 3 +- 20 files changed, 101 insertions(+), 14 deletions(-) diff --git a/client/mysqlshow.c b/client/mysqlshow.c index 2f5582cb668..2c9a59a2d54 100644 --- a/client/mysqlshow.c +++ b/client/mysqlshow.c @@ -164,7 +164,7 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"character-sets-dir", 'c', "Directory for character set files.", - &charsets_dir, &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, + (char**) &charsets_dir, (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"default-character-set", OPT_DEFAULT_CHARSET, "Set the default character set.", &default_charset, diff --git a/client/mysqlslap.c b/client/mysqlslap.c index 7590ff35b5f..0b3ea2a0065 100644 --- a/client/mysqlslap.c +++ b/client/mysqlslap.c @@ -600,7 +600,7 @@ static struct my_option my_long_options[] = &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"delimiter", 'F', "Delimiter to use in SQL statements supplied in file or command line.", - &delimiter, &delimiter, 0, GET_STR, REQUIRED_ARG, + (char**) &delimiter, (char**) &delimiter, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"detach", OPT_SLAP_DETACH, "Detach (close and reopen) connections after X number of requests.", diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 4df5d04dac7..e409bab32f7 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -4540,7 +4540,7 @@ sub mysqld_stop { name => "mysqladmin shutdown ".$mysqld->name(), path => $exe_mysqladmin, args => \$args, - error => "/dev/null", + error => "$opt_vardir/log/mysqladmin.err", ); } diff --git a/mysql-test/suite/maria/r/maria.result b/mysql-test/suite/maria/r/maria.result index 76a115982f0..d418ae42080 100644 --- a/mysql-test/suite/maria/r/maria.result +++ b/mysql-test/suite/maria/r/maria.result @@ -2613,3 +2613,14 @@ INSERT t1 ( f1 , f2 , f3 , f4 ) VALUES ( 0 , f2 , 8 , f3 ) ; INSERT t1 ( f4 , f2 ) VALUES ( 4 , 92 ) ; DELETE FROM t1 WHERE v3 = 173 OR v4 = 9 ; drop table t1; +CREATE TABLE t1 ( +f1 CHAR(255) BINARY , +f2 CHAR(255) BINARY NOT NULL DEFAULT '0', +f3 CHAR(255) BINARY NOT NULL , +f4 CHAR(255) BINARY NOT NULL DEFAULT '0' , +v3 CHAR(255) BINARY NOT NULL DEFAULT '0' , +KEY (v3) +) ENGINE=Maria; +INSERT INTO t1 ( f1 , f2 , f3 , f4 ) SELECT f1 , f4 , f1 , f4 FROM t1; +DELETE FROM t1; +drop table t1; diff --git a/mysql-test/suite/maria/t/maria.test b/mysql-test/suite/maria/t/maria.test index a4498070390..4dde6364bb1 100644 --- a/mysql-test/suite/maria/t/maria.test +++ b/mysql-test/suite/maria/t/maria.test @@ -1893,6 +1893,23 @@ INSERT t1 ( f4 , f2 ) VALUES ( 4 , 92 ) ; DELETE FROM t1 WHERE v3 = 173 OR v4 = 9 ; drop table t1; +# +# Test for LP#61465 Memory corruption with (M)aria storage engine and +# virtual columns +# + +CREATE TABLE t1 ( + f1 CHAR(255) BINARY , + f2 CHAR(255) BINARY NOT NULL DEFAULT '0', + f3 CHAR(255) BINARY NOT NULL , + f4 CHAR(255) BINARY NOT NULL DEFAULT '0' , + v3 CHAR(255) BINARY NOT NULL DEFAULT '0' , + KEY (v3) +) ENGINE=Maria; +INSERT INTO t1 ( f1 , f2 , f3 , f4 ) SELECT f1 , f4 , f1 , f4 FROM t1; +DELETE FROM t1; +drop table t1; + # # End of test # diff --git a/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.test b/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.test index 7605218e463..8d4bb1e091c 100644 --- a/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.test +++ b/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.test @@ -1,3 +1,5 @@ +-- source include/not_windows.inc + -- echo # Activate master-slave replication -- source include/master-slave.inc diff --git a/mysql-test/suite/percona/percona_log_slow_slave_statements.test b/mysql-test/suite/percona/percona_log_slow_slave_statements.test index 37cb1ad2419..8c9c594e41c 100644 --- a/mysql-test/suite/percona/percona_log_slow_slave_statements.test +++ b/mysql-test/suite/percona/percona_log_slow_slave_statements.test @@ -1,3 +1,5 @@ +-- source include/not_windows.inc + -- echo # Activate master-slave replication -- source include/master-slave.inc diff --git a/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test index 79b94825821..1c3dc937937 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test +++ b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test @@ -1,3 +1,5 @@ +--source include/not_windows.inc + source include/have_innodb.inc; SELECT sleep(2); set global log_slow_verbosity=innodb; diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test index 843567ae11a..44646de530a 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test +++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test @@ -1,3 +1,5 @@ +-- source include/not_windows.inc + source include/have_innodb.inc; SET GLOBAL SLOW_QUERY_LOG=OFF; diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test index 62717c4ed6e..d1dc324fced 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test +++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test @@ -1,3 +1,5 @@ +-- source include/not_windows.inc + source include/have_innodb.inc; SELECT sleep(2); diff --git a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test index 55f3e61cd09..4161690e2ef 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test +++ b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test @@ -1,3 +1,4 @@ +source include/not_windows.inc; source include/have_innodb.inc; SELECT sleep(1); diff --git a/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test index 67bf49400fa..bceada68d79 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test +++ b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test @@ -1,3 +1,4 @@ +source include/not_windows.inc; source include/have_innodb.inc; SELECT sleep(2); diff --git a/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test index 28287c4bcb2..61276423b4d 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test +++ b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test @@ -1,3 +1,4 @@ +source include/not_windows.inc; source include/have_innodb.inc; SET GLOBAL SLOW_QUERY_LOG=OFF; diff --git a/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test index 397526fccdd..70021da1e4c 100644 --- a/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test +++ b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test @@ -1,3 +1,4 @@ +source include/not_windows.inc; source include/have_innodb.inc; SELECT sleep(1); diff --git a/mysql-test/t/ctype_filesystem.test b/mysql-test/t/ctype_filesystem.test index 2b993c2b924..42f1ef06478 100644 --- a/mysql-test/t/ctype_filesystem.test +++ b/mysql-test/t/ctype_filesystem.test @@ -1,3 +1,5 @@ +--source include/not_windows.inc + SET CHARACTER SET utf8; --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR SHOW VARIABLES like 'character_sets_dir'; diff --git a/mysql-test/t/events_time_zone.test b/mysql-test/t/events_time_zone.test index cb2fbab29c6..5291eb96e6b 100644 --- a/mysql-test/t/events_time_zone.test +++ b/mysql-test/t/events_time_zone.test @@ -5,7 +5,7 @@ # to wait for operation to complete. Should be positive. Test runs # about 25*N seconds (it sleeps most of the time, so CPU speed is not # relevant). -let $N = 5; +let $N = 6; # # 2. Some subtests # - create a new time zone diff --git a/mysql-test/t/show_check-master.opt b/mysql-test/t/show_check-master.opt index 333b1d559e3..b6118d7db9f 100644 --- a/mysql-test/t/show_check-master.opt +++ b/mysql-test/t/show_check-master.opt @@ -1 +1 @@ ---log-output=file --slow-query-log --log-long-format --log-queries-not-using-indexes --myisam-recover="" --general-log --general-log-file="foo" --slow-query-log-file="" +--log-output=file --slow-query-log --log-long-format --log-queries-not-using-indexes --myisam-recover="" --general-log --general-log-file="foo" --slow-query-log-file="" --long_query_time=20 diff --git a/storage/maria/ma_check.c b/storage/maria/ma_check.c index dd26046767f..2a19b5e9075 100644 --- a/storage/maria/ma_check.c +++ b/storage/maria/ma_check.c @@ -2270,10 +2270,14 @@ static int initialize_variables_for_repair(HA_CHECK *param, MARIA_SORT_INFO *sort_info, MARIA_SORT_PARAM *sort_param, MARIA_HA *info, - my_bool rep_quick) + my_bool rep_quick, + MARIA_SHARE *org_share) { MARIA_SHARE *share= info->s; + /* Ro allow us to restore state and check how state changed */ + memcpy(org_share, share, sizeof(*share)); + /* Repair code relies on share->state.state so we have to update it here */ if (share->lock.update_status) (*share->lock.update_status)(info); @@ -2333,6 +2337,23 @@ static int initialize_variables_for_repair(HA_CHECK *param, } +/* + During initialize_variables_for_repair and related functions we set some + variables to values that makes sence during repair. + This function restores these values to their original values so that we can + use the handler in MariaDB without having to close and open the table. +*/ + +static void restore_table_state_after_repair(MARIA_HA *info, + MARIA_SHARE *org_share) +{ + maria_versioning(info, info->s->have_versioning); + info->s->lock_key_trees= org_share->lock_key_trees; +} + + + + /** @brief Drop all indexes @@ -2481,11 +2502,11 @@ int maria_repair(HA_CHECK *param, register MARIA_HA *info, char llbuff[22],llbuff2[22]; MARIA_SORT_INFO sort_info; MARIA_SORT_PARAM sort_param; - my_bool block_record, scan_inited= 0, - reenable_logging= share->now_transactional; + my_bool block_record, scan_inited= 0, reenable_logging= 0; enum data_file_type org_data_file_type= share->data_file_type; myf sync_dir= ((share->now_transactional && !share->temporary) ? MY_SYNC_DIR : 0); + MARIA_SHARE backup_share; DBUG_ENTER("maria_repair"); got_error= 1; @@ -2498,10 +2519,10 @@ int maria_repair(HA_CHECK *param, register MARIA_HA *info, } if (initialize_variables_for_repair(param, &sort_info, &sort_param, info, - rep_quick)) + rep_quick, &backup_share)) goto err; - if (reenable_logging) + if ((reenable_logging= share->now_transactional)) _ma_tmp_disable_logging_for_table(info, 0); sort_param.current_filepos= sort_param.filepos= new_header_length= @@ -2780,6 +2801,7 @@ err: /* If caller had disabled logging it's not up to us to re-enable it */ if (reenable_logging) _ma_reenable_logging_for_table(info, FALSE); + restore_table_state_after_repair(info, &backup_share); my_free(sort_param.rec_buff, MYF(MY_ALLOW_ZERO_PTR)); my_free(sort_param.record,MYF(MY_ALLOW_ZERO_PTR)); @@ -3550,7 +3572,8 @@ int maria_repair_by_sort(HA_CHECK *param, register MARIA_HA *info, ulonglong key_map; myf sync_dir= ((share->now_transactional && !share->temporary) ? MY_SYNC_DIR : 0); - my_bool scan_inited= 0; + my_bool scan_inited= 0, reenable_logging= 0; + MARIA_SHARE backup_share; DBUG_ENTER("maria_repair_by_sort"); LINT_INIT(key_map); @@ -3564,9 +3587,12 @@ int maria_repair_by_sort(HA_CHECK *param, register MARIA_HA *info, } if (initialize_variables_for_repair(param, &sort_info, &sort_param, info, - rep_quick)) + rep_quick, &backup_share)) goto err; + if ((reenable_logging= share->now_transactional)) + _ma_tmp_disable_logging_for_table(info, 0); + org_header_length= share->pack.header_length; new_header_length= (param->testflag & T_UNPACK) ? 0 : org_header_length; sort_param.filepos= new_header_length; @@ -3972,6 +3998,11 @@ err: share->state.changed&= ~(STATE_NOT_OPTIMIZED_ROWS | STATE_NOT_ZEROFILLED | STATE_NOT_MOVABLE); + /* If caller had disabled logging it's not up to us to re-enable it */ + if (reenable_logging) + _ma_reenable_logging_for_table(info, FALSE); + restore_table_state_after_repair(info, &backup_share); + my_free(sort_param.rec_buff, MYF(MY_ALLOW_ZERO_PTR)); my_free(sort_param.record,MYF(MY_ALLOW_ZERO_PTR)); my_free(sort_info.key_block, MYF(MY_ALLOW_ZERO_PTR)); @@ -4042,10 +4073,12 @@ int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info, IO_CACHE new_data_cache; /* For non-quick repair. */ IO_CACHE_SHARE io_share; MARIA_SORT_INFO sort_info; + MARIA_SHARE backup_share; ulonglong key_map; pthread_attr_t thr_attr; myf sync_dir= ((share->now_transactional && !share->temporary) ? MY_SYNC_DIR : 0); + my_bool reenable_logging= 0; DBUG_ENTER("maria_repair_parallel"); LINT_INIT(key_map); @@ -4059,9 +4092,12 @@ int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info, } if (initialize_variables_for_repair(param, &sort_info, &tmp_sort_param, info, - rep_quick)) + rep_quick, &backup_share)) goto err; + if ((reenable_logging= share->now_transactional)) + _ma_tmp_disable_logging_for_table(info, 0); + new_header_length= ((param->testflag & T_UNPACK) ? 0 : share->pack.header_length); @@ -4489,6 +4525,11 @@ err: pthread_cond_destroy (&sort_info.cond); pthread_mutex_destroy(&sort_info.mutex); + /* If caller had disabled logging it's not up to us to re-enable it */ + if (reenable_logging) + _ma_reenable_logging_for_table(info, FALSE); + restore_table_state_after_repair(info, &backup_share); + my_free(sort_info.ft_buf, MYF(MY_ALLOW_ZERO_PTR)); my_free(sort_info.key_block,MYF(MY_ALLOW_ZERO_PTR)); my_free(sort_param,MYF(MY_ALLOW_ZERO_PTR)); diff --git a/storage/maria/ma_state.c b/storage/maria/ma_state.c index cc5eea578a5..c7eee7d511d 100644 --- a/storage/maria/ma_state.c +++ b/storage/maria/ma_state.c @@ -678,6 +678,7 @@ void maria_versioning(MARIA_HA *info, my_bool versioning) info->lock.type= versioning ? TL_WRITE_CONCURRENT_INSERT : TL_WRITE; _ma_block_get_status((void*) info, versioning); info->lock.type= save_lock_type; + info->state= info->state_start= &info->s->state.common; } } diff --git a/storage/maria/trnman.c b/storage/maria/trnman.c index 2e03606ca7c..0dbc8ed7fb3 100644 --- a/storage/maria/trnman.c +++ b/storage/maria/trnman.c @@ -176,7 +176,8 @@ int trnman_init(TrID initial_trid) trnman_active_transactions= 0; trnman_committed_transactions= 0; trnman_allocated_transactions= 0; - dummy_transaction_object.min_read_from= ~(TrID) 0; /* for recovery */ + /* This is needed for recovery and repair */ + dummy_transaction_object.min_read_from= ~(TrID) 0; pool= 0; global_trid_generator= initial_trid; From f6d226f5f77cd5b45fe54d2125018fee15e5ffcc Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Sat, 7 Aug 2010 19:08:59 +0300 Subject: [PATCH 363/461] Ensure that xtradb & InnoDB plugin compiles if valgrind is installed but not valgrind debug libraries --- storage/innodb_plugin/include/univ.i | 2 +- storage/xtradb/include/univ.i | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/storage/innodb_plugin/include/univ.i b/storage/innodb_plugin/include/univ.i index b8e595161b9..ff62c3e53c1 100644 --- a/storage/innodb_plugin/include/univ.i +++ b/storage/innodb_plugin/include/univ.i @@ -165,7 +165,7 @@ command. Not tested on Windows. */ #define UNIV_COMPILE_TEST_FUNCS */ -#if defined HAVE_VALGRIND +#if defined(HAVE_valgrind)&& defined(HAVE_VALGRIND_MEMCHECK_H) # define UNIV_DEBUG_VALGRIND #endif /* HAVE_VALGRIND */ #if 0 diff --git a/storage/xtradb/include/univ.i b/storage/xtradb/include/univ.i index 834428e652f..90ce618b9da 100644 --- a/storage/xtradb/include/univ.i +++ b/storage/xtradb/include/univ.i @@ -168,7 +168,7 @@ command. Not tested on Windows. */ #define UNIV_COMPILE_TEST_FUNCS */ -#ifdef HAVE_valgrind +#if defined(HAVE_valgrind)&& defined(HAVE_VALGRIND_MEMCHECK_H) # define UNIV_DEBUG_VALGRIND #endif /* HAVE_valgrind */ #if 0 From 4339204ce5f61b950a0b085c6ac75e4130b2d4e2 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 9 Aug 2010 15:42:03 +0300 Subject: [PATCH 364/461] Fix of soft group commit (assigned LSN instead of file number). Found by Monty. storage/maria/ma_loghandler.c: Fix of soft group commit (assigned LSN instead of file number). --- storage/maria/ma_loghandler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c index 482a4e9071f..d5651422aaf 100644 --- a/storage/maria/ma_loghandler.c +++ b/storage/maria/ma_loghandler.c @@ -8073,7 +8073,7 @@ retest: } else { - soft_sync_max= lsn; + soft_sync_max= LSN_FILE_NO(lsn); soft_need_sync= 1; } From 12648015b322e885923f87d919c07529423a0eca Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Mon, 9 Aug 2010 20:05:42 +0300 Subject: [PATCH 365/461] Added --sync-sys=0 option for mysqld to skip sync() calls for faster testing Fixed LP#613418 (M)aria recovery failure: ma_key_recover.c:981: _ma_apply_redo_index: Assertion `check_page_length == page_length' failed include/my_sys.h: Added my_disable_sync mysql-test/mysql-test-run.pl: Added --sync-sys=0 to run test suite faster mysys/my_static.c: Added my_disable_sync mysys/my_sync.c: Added my_disable_sync sql/mysqld.cc: Added -sync-sys=0 option for mysqld to skip sync() calls for faster testing storage/maria/ma_key_recover.c: More DBUG_ASSERT() Added logging of KEY_OP_DEBUG to make examening of logs easier Fixed testing of page length in recovery to ensure we don't overwrite checksum (previous tests was too relaxed) Fixed bug in recovery logging of split pages which caused failure during recovery: - Length was not adjusted properly for pages to be split - Added KEY_OP_MAX_PAGELENGTH to tell recovery that page is now full length - This fixed LP#613418 storage/maria/ma_key_recover.h: Changed prototype for ma_log_change() for KEY_OP_DEBUG storage/maria/ma_loghandler.h: Added new enums for better debugging of recovery logs storage/maria/ma_rt_index.c: Added debugging information to calls to ma_log_change() storage/maria/ma_write.c: Added debugging information to calls to ma_log_change() and ma_log_split() --- include/my_sys.h | 1 + mysql-test/mysql-test-run.pl | 1 + mysys/my_static.c | 1 + mysys/my_sync.c | 3 +++ sql/mysqld.cc | 8 ++++++- storage/maria/ma_key_recover.c | 44 +++++++++++++++++++++++++++------- storage/maria/ma_key_recover.h | 3 ++- storage/maria/ma_loghandler.h | 15 +++++++++++- storage/maria/ma_rt_index.c | 9 ++++--- storage/maria/ma_write.c | 30 ++++++++++++++++------- 10 files changed, 93 insertions(+), 22 deletions(-) diff --git a/include/my_sys.h b/include/my_sys.h index c5b3008e8bc..2f8a44fedc0 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -266,6 +266,7 @@ extern size_t sf_malloc_cur_memory, sf_malloc_max_memory; extern ulong my_default_record_cache_size; extern my_bool NEAR my_disable_locking,NEAR my_disable_async_io, NEAR my_disable_flush_key_blocks, NEAR my_disable_symlinks; +extern my_bool my_disable_sync; extern char wild_many,wild_one,wild_prefix; extern const char *charsets_dir; /* from default.c */ diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index e409bab32f7..eb51d385f77 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -1802,6 +1802,7 @@ sub mysql_fix_arguments () { mtr_add_arg($args, "--basedir=%s", $basedir); mtr_add_arg($args, "--bindir=%s", $path_client_bindir); mtr_add_arg($args, "--verbose"); + mtr_add_arg($args, "--sync-sys=0"); # Speed up test suite return mtr_args2str($exe, @$args); } diff --git a/mysys/my_static.c b/mysys/my_static.c index 0ef5656b76f..08653d03d21 100644 --- a/mysys/my_static.c +++ b/mysys/my_static.c @@ -119,6 +119,7 @@ ulonglong query_performance_frequency, query_performance_offset; /* How to disable options */ my_bool NEAR my_disable_locking=0; +my_bool NEAR my_disable_sync=0; my_bool NEAR my_disable_async_io=0; my_bool NEAR my_disable_flush_key_blocks=0; my_bool NEAR my_disable_symlinks=0; diff --git a/mysys/my_sync.c b/mysys/my_sync.c index 967a6ae6c78..9f6c55f4fb6 100644 --- a/mysys/my_sync.c +++ b/mysys/my_sync.c @@ -48,6 +48,9 @@ int my_sync(File fd, myf my_flags) DBUG_ENTER("my_sync"); DBUG_PRINT("my",("fd: %d my_flags: %d", fd, my_flags)); + if (my_disable_sync) + DBUG_RETURN(0); + statistic_increment(my_sync_count,&THR_LOCK_open); do { diff --git a/sql/mysqld.cc b/sql/mysqld.cc index eb46ba14f19..4f8cfd70615 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -418,6 +418,7 @@ static bool volatile ready_to_exit; static my_bool opt_debugging= 0, opt_external_locking= 0, opt_console= 0; static my_bool opt_short_log_format= 0; static my_bool opt_ignore_wrong_options= 0, opt_expect_abort= 0; +static my_bool opt_sync= 0; static uint kill_cached_threads, wake_thread; ulong thread_created; static ulong max_used_connections; @@ -5897,7 +5898,7 @@ enum options_mysqld OPT_RANGE_ALLOC_BLOCK_SIZE, OPT_ALLOW_SUSPICIOUS_UDFS, OPT_QUERY_ALLOC_BLOCK_SIZE, OPT_QUERY_PREALLOC_SIZE, OPT_TRANS_ALLOC_BLOCK_SIZE, OPT_TRANS_PREALLOC_SIZE, - OPT_SYNC_FRM, OPT_SYNC_BINLOG, + OPT_SYNC_FRM, OPT_SYNC_BINLOG, OPT_SYNC, OPT_SYNC_REPLICATION, OPT_SYNC_REPLICATION_SLAVE_ID, OPT_SYNC_REPLICATION_TIMEOUT, @@ -7417,6 +7418,10 @@ thread is in the relay logs.", {"sync-frm", OPT_SYNC_FRM, "Sync .frm to disk on create. Enabled by default.", &opt_sync_frm, &opt_sync_frm, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, + {"sync-sys", OPT_SYNC, + "Enable/disable system sync calls. Should only be turned off when running " + "tests or debugging!!", + &opt_sync, &opt_sync, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, {"table_cache", OPT_TABLE_OPEN_CACHE, "Deprecated; use --table_open_cache instead.", &table_cache_size, &table_cache_size, 0, GET_ULONG, @@ -9158,6 +9163,7 @@ static int get_options(int *argc,char **argv) In most cases the global variables will not be used */ my_disable_locking= myisam_single_user= test(opt_external_locking == 0); + my_disable_sync= opt_sync == 0; my_default_record_cache_size=global_system_variables.read_buff_size; myisam_max_temp_length= (my_off_t) global_system_variables.myisam_max_sort_file_size; diff --git a/storage/maria/ma_key_recover.c b/storage/maria/ma_key_recover.c index 38317cd61db..4dc902f9418 100644 --- a/storage/maria/ma_key_recover.c +++ b/storage/maria/ma_key_recover.c @@ -494,7 +494,8 @@ my_bool _ma_log_add(MARIA_PAGE *ma_page, my_bool handle_overflow __attribute__ ((unused))) { LSN lsn; - uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3 + 3 + 3 + 3 + 7 + 2]; + uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 2 + 3 + 3 + 3 + 3 + 7 + + 2]; uchar *log_pos; uchar *buff= ma_page->buff; LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 3]; @@ -509,6 +510,7 @@ my_bool _ma_log_add(MARIA_PAGE *ma_page, (ulong) ma_page->pos, org_page_length, changed_length, move_length)); DBUG_ASSERT(info->s->now_transactional); + DBUG_ASSERT(move_length <= (int) changed_length); /* Write REDO entry that contains the logical operations we need @@ -519,6 +521,11 @@ my_bool _ma_log_add(MARIA_PAGE *ma_page, page_store(log_pos, page_pos); log_pos+= PAGE_STORE_SIZE; +#ifdef EXTRA_DEBUG_KEY_CHANGES + *log_pos++= KEY_OP_DEBUG; + *log_pos++= KEY_OP_DEBUG_LOG_ADD; +#endif + /* Store keypage_flag */ *log_pos++= KEY_OP_SET_PAGEFLAG; *log_pos++= buff[KEYPAGE_TRANSFLAG_OFFSET]; @@ -533,21 +540,31 @@ my_bool _ma_log_add(MARIA_PAGE *ma_page, DBUG_ASSERT(handle_overflow); if (offset + changed_length > page_length) { + /* Log that data changed to end of page */ changed_length= page_length - offset; move_length= 0; + /* Set page to max length */ + org_page_length= page_length; + *log_pos++= KEY_OP_MAX_PAGELENGTH; } else { + /* They key will not be part of the page ; Don't log it */ uint diff= org_page_length + move_length - page_length; log_pos[0]= KEY_OP_DEL_SUFFIX; int2store(log_pos+1, diff); log_pos+= 3; - org_page_length= page_length - move_length; + org_page_length-= diff; + DBUG_ASSERT(org_page_length == page_length - move_length); } + DBUG_ASSERT(offset != org_page_length); } if (offset == org_page_length) + { + DBUG_ASSERT(move_length == (int) changed_length); log_pos[0]= KEY_OP_ADD_SUFFIX; + } else { log_pos[0]= KEY_OP_OFFSET; @@ -832,6 +849,8 @@ err: KEY_OP_CHECK 6 page_length[2},CRC Used only when debugging KEY_OP_COMPACT_PAGE 6 transid KEY_OP_SET_PAGEFLAG 1 flag for page + KEY_OP_MAX_PAGELENGTH 0 Set page to max length + KEY_OP_DEBUG 1 Info where logging was done @return Operation status @retval 0 OK @@ -850,6 +869,7 @@ uint _ma_apply_redo_index(MARIA_HA *info, const uchar *header_end= header + head_length; uint page_offset= 0, org_page_length; uint nod_flag, page_length, keypage_header, keynr; + uint max_page_length= share->block_size - KEYPAGE_CHECKSUM_SIZE; int result; MARIA_PAGE page; DBUG_ENTER("_ma_apply_redo_index"); @@ -898,7 +918,7 @@ uint _ma_apply_redo_index(MARIA_HA *info, header+= 2; DBUG_PRINT("redo", ("key_op_shift: %d", length)); DBUG_ASSERT(page_offset != 0 && page_offset <= page_length && - page_length + length < share->block_size); + page_length + length <= max_page_length); if (length < 0) bmove(buff + page_offset, buff + page_offset - length, @@ -927,7 +947,7 @@ uint _ma_apply_redo_index(MARIA_HA *info, insert_length, changed_length)); DBUG_ASSERT(insert_length <= changed_length && - page_length + changed_length <= share->block_size); + page_length + changed_length <= max_page_length); bmove_upp(buff + page_length + insert_length, buff + page_length, page_length - keypage_header); @@ -954,7 +974,7 @@ uint _ma_apply_redo_index(MARIA_HA *info, { uint insert_length= uint2korr(header); DBUG_PRINT("redo", ("key_op_add_prefix: %u", insert_length)); - DBUG_ASSERT(page_length + insert_length <= share->block_size); + DBUG_ASSERT(page_length + insert_length <= max_page_length); memcpy(buff + page_length, header+2, insert_length); page_length+= insert_length; @@ -983,7 +1003,7 @@ uint _ma_apply_redo_index(MARIA_HA *info, page_length - LSN_STORE_SIZE)) { DBUG_PRINT("error", ("page_length %u",page_length)); - DBUG_DUMP("KEY_OP_CHECK bad page", buff, share->block_size); + DBUG_DUMP("KEY_OP_CHECK bad page", buff, max_page_length); DBUG_ASSERT("crc" == "failure in REDO_INDEX"); } #endif @@ -991,6 +1011,14 @@ uint _ma_apply_redo_index(MARIA_HA *info, header+= 6; break; } + case KEY_OP_DEBUG: + DBUG_PRINT("redo", ("Debug: %u", (uint) header[0])); + header++; + break; + case KEY_OP_MAX_PAGELENGTH: + DBUG_PRINT("redo", ("key_op_max_page_length")); + page_length= max_page_length; + break; case KEY_OP_MULTI_COPY: /* 9 */ { /* @@ -1011,7 +1039,7 @@ uint _ma_apply_redo_index(MARIA_HA *info, log_memcpy_length= uint2korr(header); header+= 2; log_memcpy_end= header + log_memcpy_length; - DBUG_ASSERT(full_length < share->block_size); + DBUG_ASSERT(full_length <= max_page_length); while (header < log_memcpy_end) { uint to, from; @@ -1020,7 +1048,7 @@ uint _ma_apply_redo_index(MARIA_HA *info, from= uint2korr(header); header+= 2; /* "from" is a place in the existing page */ - DBUG_ASSERT(max(from, to) < share->block_size); + DBUG_ASSERT(max(from, to) < max_page_length); memcpy(buff + to, buff + from, full_length); } break; diff --git a/storage/maria/ma_key_recover.h b/storage/maria/ma_key_recover.h index b580433c99a..30830f7d82c 100644 --- a/storage/maria/ma_key_recover.h +++ b/storage/maria/ma_key_recover.h @@ -72,7 +72,8 @@ my_bool _ma_log_add(MARIA_PAGE *page, uint buff_length, uchar *key_pos, my_bool handle_overflow); my_bool _ma_log_delete(MARIA_PAGE *page, const uchar *key_pos, uint changed_length, uint move_length); -my_bool _ma_log_change(MARIA_PAGE *page, const uchar *key_pos, uint length); +my_bool _ma_log_change(MARIA_PAGE *page, const uchar *key_pos, uint length, + enum en_key_debug debug_marker); my_bool _ma_log_new(MARIA_PAGE *page, my_bool root_page); uint _ma_apply_redo_index_new_page(MARIA_HA *info, LSN lsn, diff --git a/storage/maria/ma_loghandler.h b/storage/maria/ma_loghandler.h index dba6283e303..2ef082e38dc 100644 --- a/storage/maria/ma_loghandler.h +++ b/storage/maria/ma_loghandler.h @@ -165,7 +165,20 @@ enum en_key_op KEY_OP_CHECK, /* For debugging; CRC of used part of page */ KEY_OP_MULTI_COPY, /* List of memcpy()s with fixed-len sources in page */ KEY_OP_SET_PAGEFLAG, /* Set pageflag from next byte */ - KEY_OP_COMPACT_PAGE /* Compact key page */ + KEY_OP_COMPACT_PAGE, /* Compact key page */ + KEY_OP_MAX_PAGELENGTH, /* Set page to max page length */ + KEY_OP_DEBUG /* Entry for storing what triggered redo_index */ +}; + +enum en_key_debug +{ + KEY_OP_DEBUG_RTREE_COMBINE, + KEY_OP_DEBUG_RTREE_SPLIT, + KEY_OP_DEBUG_RTREE_SET_KEY, + KEY_OP_DEBUG_FATHER_CHANGED_1, + KEY_OP_DEBUG_FATHER_CHANGED_2, + KEY_OP_DEBUG_LOG_SPLIT, + KEY_OP_DEBUG_LOG_ADD }; diff --git a/storage/maria/ma_rt_index.c b/storage/maria/ma_rt_index.c index d50dd99e5cf..62474dbbad8 100644 --- a/storage/maria/ma_rt_index.c +++ b/storage/maria/ma_rt_index.c @@ -625,7 +625,8 @@ static int maria_rtree_insert_req(MARIA_HA *info, MARIA_KEY *key, { maria_rtree_combine_rect(keyinfo->seg, k, key->data, k, key_length); if (share->now_transactional && - _ma_log_change(&page, k, key_length)) + _ma_log_change(&page, k, key_length, + KEY_OP_DEBUG_RTREE_COMBINE)) goto err; page_mark_changed(info, &page); if (_ma_write_keypage(&page, PAGECACHE_LOCK_LEFT_WRITELOCKED, @@ -652,7 +653,8 @@ static int maria_rtree_insert_req(MARIA_HA *info, MARIA_KEY *key, if (maria_rtree_set_key_mbr(info, &k_key, _ma_kpos(nod_flag, k))) goto err; if (share->now_transactional && - _ma_log_change(&page, k, key_length)) + _ma_log_change(&page, k, key_length, + KEY_OP_DEBUG_RTREE_SPLIT)) goto err; /* add new key for new page */ _ma_kpointer(info, new_key_buff - nod_flag, *new_page); @@ -964,7 +966,8 @@ static int maria_rtree_delete_req(MARIA_HA *info, const MARIA_KEY *key, _ma_kpos(nod_flag, k))) goto err; if (share->now_transactional && - _ma_log_change(&page, k, key->data_length)) + _ma_log_change(&page, k, key->data_length, + KEY_OP_DEBUG_RTREE_SET_KEY)) goto err; page_mark_changed(info, &page) if (_ma_write_keypage(&page, diff --git a/storage/maria/ma_write.c b/storage/maria/ma_write.c index a552d15a650..2d13b223399 100644 --- a/storage/maria/ma_write.c +++ b/storage/maria/ma_write.c @@ -1416,7 +1416,8 @@ static int _ma_balance_page(MARIA_HA *info, MARIA_KEYDEF *keyinfo, /* Log changes to father (one level up) page */ if (share->now_transactional && - _ma_log_change(father_page, father_key_pos, k_length)) + _ma_log_change(father_page, father_key_pos, k_length, + KEY_OP_DEBUG_FATHER_CHANGED_1)) goto err; /* @@ -1583,7 +1584,8 @@ static int _ma_balance_page(MARIA_HA *info, MARIA_KEYDEF *keyinfo, /* Log changes to father (one level up) page */ if (share->now_transactional && - _ma_log_change(father_page, father_key_pos, k_length)) + _ma_log_change(father_page, father_key_pos, k_length, + KEY_OP_DEBUG_FATHER_CHANGED_2)) goto err; } @@ -1905,11 +1907,11 @@ my_bool _ma_log_new(MARIA_PAGE *ma_page, my_bool root_page) Log when some part of the key page changes */ -my_bool _ma_log_change(MARIA_PAGE *ma_page, - const uchar *key_pos, uint length) +my_bool _ma_log_change(MARIA_PAGE *ma_page, const uchar *key_pos, uint length, + enum en_key_debug debug_marker __attribute__((unused))) { LSN lsn; - uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 6 + 7], *log_pos; + uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 2 + 6 + 7], *log_pos; LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 3]; uint offset= (uint) (key_pos - ma_page->buff), translog_parts; uint extra_length= 0; @@ -1919,18 +1921,26 @@ my_bool _ma_log_change(MARIA_PAGE *ma_page, DBUG_PRINT("enter", ("page: %lu length: %u", (ulong) ma_page->pos, length)); DBUG_ASSERT(info->s->now_transactional); + DBUG_ASSERT(offset + length <= ma_page->size); /* Store address of new root page */ page= ma_page->pos / info->s->block_size; page_store(log_data + FILEID_STORE_SIZE, page); log_pos= log_data+ FILEID_STORE_SIZE + PAGE_STORE_SIZE; + +#ifdef EXTRA_DEBUG_KEY_CHANGES + (*log_pos++)= KEY_OP_DEBUG; + (*log_pos++)= debug_marker; +#endif + log_pos[0]= KEY_OP_OFFSET; int2store(log_pos+1, offset); log_pos[3]= KEY_OP_CHANGE; int2store(log_pos+4, length); + log_pos+= 6; log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data; - log_array[TRANSLOG_INTERNAL_PARTS + 0].length= sizeof(log_data) - 7; + log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (log_pos - log_data); log_array[TRANSLOG_INTERNAL_PARTS + 1].str= key_pos; log_array[TRANSLOG_INTERNAL_PARTS + 1].length= length; translog_parts= 2; @@ -1941,7 +1951,6 @@ my_bool _ma_log_change(MARIA_PAGE *ma_page, ha_checksum crc; crc= my_checksum(0, ma_page->buff + LSN_STORE_SIZE, page_length - LSN_STORE_SIZE); - log_pos+= 6; log_pos[0]= KEY_OP_CHECK; int2store(log_pos+1, page_length); int4store(log_pos+3, crc); @@ -1987,7 +1996,7 @@ static my_bool _ma_log_split(MARIA_PAGE *ma_page, uint changed_length) { LSN lsn; - uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3+3+3+3+3+2 +7]; + uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 2 + 3+3+3+3+3+2 +7]; uchar *log_pos; LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 4]; uint offset= (uint) (key_pos - ma_page->buff); @@ -2003,6 +2012,11 @@ static my_bool _ma_log_split(MARIA_PAGE *ma_page, page_store(log_pos, page); log_pos+= PAGE_STORE_SIZE; +#ifdef EXTRA_DEBUG_KEY_CHANGES + (*log_pos++)= KEY_OP_DEBUG; + (*log_pos++)= KEY_OP_DEBUG_LOG_SPLIT; +#endif + if (new_length <= offset || !key_pos) { /* From 864118da1b6dcffc1d5b9d91ed5527fcb8aef973 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Mon, 9 Aug 2010 20:54:58 +0300 Subject: [PATCH 366/461] Ignore ENOLCK errno from FreeBSD (known problem in old FreeBSD releases) --- mysys/my_sync.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysys/my_sync.c b/mysys/my_sync.c index 9f6c55f4fb6..cb0f5794b2e 100644 --- a/mysys/my_sync.c +++ b/mysys/my_sync.c @@ -68,6 +68,8 @@ int my_sync(File fd, myf my_flags) res= fdatasync(fd); #elif defined(HAVE_FSYNC) res= fsync(fd); + if (res == -1 and errno == ENOLCK) + res= 0; /* Result Bug in Old FreeBSD */ #elif defined(__WIN__) res= _commit(fd); #else From 8312aa9ba9387869038203200c9fb1490e3a4512 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Tue, 10 Aug 2010 16:29:50 +0300 Subject: [PATCH 367/461] Fixed wrong argument to translog_write_record() that caused core dump in maria.maria-gis-rtree-trans and some other tests (Bug introduced by my last push) --- storage/maria/ma_write.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/storage/maria/ma_write.c b/storage/maria/ma_write.c index 2d13b223399..6ce7a4179e8 100644 --- a/storage/maria/ma_write.c +++ b/storage/maria/ma_write.c @@ -1914,7 +1914,6 @@ my_bool _ma_log_change(MARIA_PAGE *ma_page, const uchar *key_pos, uint length, uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 2 + 6 + 7], *log_pos; LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 3]; uint offset= (uint) (key_pos - ma_page->buff), translog_parts; - uint extra_length= 0; my_off_t page; MARIA_HA *info= ma_page->info; DBUG_ENTER("_ma_log_change"); @@ -1956,15 +1955,14 @@ my_bool _ma_log_change(MARIA_PAGE *ma_page, const uchar *key_pos, uint length, int4store(log_pos+3, crc); log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].str= log_pos; log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].length= 7; - extra_length+= 7; + log_pos+= 7; translog_parts++; } #endif if (translog_write_record(&lsn, LOGREC_REDO_INDEX, info->trn, info, - (translog_size_t) (sizeof(log_data) - 7 + length + - extra_length), + (translog_size_t) (log_pos - log_data) + length, TRANSLOG_INTERNAL_PARTS + translog_parts, log_array, log_data, NULL)) DBUG_RETURN(1); From 5cde0ca744b72dfd36f4ed0a13269b1d3f48de54 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 10 Aug 2010 18:36:04 +0400 Subject: [PATCH 368/461] created *-all build scripts that build with ndb (as -max scripts don't) --- BUILD/SETUP.sh | 7 +++---- BUILD/compile-amd64-debug-all | 7 +++++++ BUILD/compile-pentium-debug-all | 10 ++++++++++ BUILD/compile-pentium64-debug-all | 12 ++++++++++++ mysql-test/mysql-test-run.pl | 1 + 5 files changed, 33 insertions(+), 4 deletions(-) create mode 100755 BUILD/compile-amd64-debug-all create mode 100755 BUILD/compile-pentium-debug-all create mode 100755 BUILD/compile-pentium64-debug-all diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh index fe572562750..b888ac03ef3 100755 --- a/BUILD/SETUP.sh +++ b/BUILD/SETUP.sh @@ -91,8 +91,8 @@ path=`dirname $0` get_make_parallel_flag # SSL library to use.--with-ssl will select our bundled yaSSL -# implementation of SSL. To use openSSl you will nee too point out -# the location of openSSL headers and lbs on your system. +# implementation of SSL. To use OpenSSL you will need to specify +# the location of OpenSSL headers and libs on your system. # Ex --with-ssl=/usr SSL_LIBRARY=--with-ssl @@ -182,8 +182,7 @@ max_no_embedded_configs="$SSL_LIBRARY --with-plugins=max" max_no_qc_configs="$SSL_LIBRARY --with-plugins=max --without-query-cache" max_no_ndb_configs="$SSL_LIBRARY --with-plugins=max-no-ndb --with-embedded-server --with-libevent" max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server --with-libevent" -# Disable NDB in maria max builds -max_configs=$max_no_ndb_configs +all_configs="$SSL_LIBRARY --with-plugins=max --with-plugin-ndbcluster --with-embedded-server --with-libevent" # # CPU and platform specific compilation flags. diff --git a/BUILD/compile-amd64-debug-all b/BUILD/compile-amd64-debug-all new file mode 100755 index 00000000000..b8b2ed05402 --- /dev/null +++ b/BUILD/compile-amd64-debug-all @@ -0,0 +1,7 @@ +#! /bin/sh +path=`dirname $0` +. "$path/SETUP.sh" +extra_flags="$amd64_cflags $debug_cflags" +extra_configs="$amd64_configs $debug_configs $all_configs" + +. "$path/FINISH.sh" diff --git a/BUILD/compile-pentium-debug-all b/BUILD/compile-pentium-debug-all new file mode 100755 index 00000000000..710ce8af63c --- /dev/null +++ b/BUILD/compile-pentium-debug-all @@ -0,0 +1,10 @@ +#! /bin/sh + +path=`dirname $0` +set -- "$@" --with-debug=full +. "$path/SETUP.sh" + +extra_flags="$pentium_cflags $debug_cflags" +extra_configs="$pentium_configs $debug_configs $all_configs $error_inject --with-experimental-collations" + +. "$path/FINISH.sh" diff --git a/BUILD/compile-pentium64-debug-all b/BUILD/compile-pentium64-debug-all new file mode 100755 index 00000000000..7824f7ad47f --- /dev/null +++ b/BUILD/compile-pentium64-debug-all @@ -0,0 +1,12 @@ +#! /bin/sh + +path=`dirname $0` +set -- "$@" --with-debug=full +. "$path/SETUP.sh" + +extra_flags="$pentium64_cflags $debug_cflags" +extra_configs="$pentium_configs $debug_configs $all_configs" + +extra_configs="$extra_configs " +CC="$CC --pipe" +. "$path/FINISH.sh" diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 190020a817c..e0af128cd04 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -4039,6 +4039,7 @@ sub extract_warning_lines ($) { qr/Now setting lower_case_table_names to [02]/, qr/Setting lower_case_table_names=2/, qr/You have forced lower_case_table_names to 0/, + qr/Plugin 'ndbcluster' will be forced to shutdow/, qr/deprecated/, qr/Slave SQL thread retried transaction/, qr/Slave \(additional info\)/, From 0f75abc459beee1ebbb66de124d2a88ecc0d75a2 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Tue, 10 Aug 2010 19:06:34 +0300 Subject: [PATCH 369/461] Fixed typo that caused compile failure on Mac Added straight_join to make results predicatable mysql-test/suite/pbxt/r/range.result: Added straight_join to make results predicatable mysql-test/suite/pbxt/t/range.test: Added straight_join to make results predicatable mysys/my_sync.c: Fixed typo --- mysql-test/suite/pbxt/r/range.result | 8 ++++---- mysql-test/suite/pbxt/t/range.test | 11 +++++++---- mysys/my_sync.c | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/mysql-test/suite/pbxt/r/range.result b/mysql-test/suite/pbxt/r/range.result index 4d5e0c4ab64..2439489581a 100644 --- a/mysql-test/suite/pbxt/r/range.result +++ b/mysql-test/suite/pbxt/r/range.result @@ -420,19 +420,19 @@ analyze table t1,t2; Table Op Msg_type Msg_text test.t1 analyze status OK test.t2 analyze status OK -explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0; +explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range uid_index uid_index 4 NULL 1 Using where 1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid 1 -explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid > 0; +explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t2.uid > 0; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range uid_index uid_index 4 NULL 1 Using where 1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid 1 -explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0; +explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range uid_index uid_index 4 NULL 2 Using where 1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid 1 -explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid != 0; +explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t2.uid != 0; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range uid_index uid_index 4 NULL 2 Using where 1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid 1 diff --git a/mysql-test/suite/pbxt/t/range.test b/mysql-test/suite/pbxt/t/range.test index 8615c76888d..2e4e2b7da12 100644 --- a/mysql-test/suite/pbxt/t/range.test +++ b/mysql-test/suite/pbxt/t/range.test @@ -380,10 +380,13 @@ select count(*) from t2; analyze table t1,t2; -explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0; -explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid > 0; -explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0; -explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid != 0; +# This part doesn't make sense for pbxt as the result may vary becasue +# records_in_range() gives same results for t1 and t2. +# Added straight_join to get predictable results +explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0; +explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t2.uid > 0; +explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0; +explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t2.uid != 0; select * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0; select * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0; diff --git a/mysys/my_sync.c b/mysys/my_sync.c index cb0f5794b2e..a2b615a8661 100644 --- a/mysys/my_sync.c +++ b/mysys/my_sync.c @@ -68,7 +68,7 @@ int my_sync(File fd, myf my_flags) res= fdatasync(fd); #elif defined(HAVE_FSYNC) res= fsync(fd); - if (res == -1 and errno == ENOLCK) + if (res == -1 && errno == ENOLCK) res= 0; /* Result Bug in Old FreeBSD */ #elif defined(__WIN__) res= _commit(fd); From e6cf286b5dcebc78332cdf05d6e20d9ae39d1875 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 11 Aug 2010 00:58:08 +0300 Subject: [PATCH 370/461] Fixed LP#605798 RQG: Table corruption after Maria engine recovery - "Wrong data in bitmap" maria_chk & maria_read_log now reads block size from control file. mysql-test/suite/maria/r/maria.result: Updated results after trivial change of maria_chk's output storage/maria/ma_bitmap.c: More DBUG_PRINT storage/maria/ma_blockrec.c: Fixed bug that we didn't mark page full in bitmap if directory is full storage/maria/ma_check.c: Write out if directory is full for errors in bitmap storage/maria/ma_control_file.c: Don't give error for wrong block size if block size is 0 storage/maria/maria_chk.c: Read block size from control file In case of -dvv, write also out bitmap information (good for debugging) storage/maria/maria_read_log.c: Read block size from control file Fixed that maria_read_log works with different page size than TRANSLOG_PAGE_SIZE --- mysql-test/suite/maria/r/maria.result | 2 +- storage/maria/ma_bitmap.c | 2 ++ storage/maria/ma_blockrec.c | 39 ++++++++++++++++++++++++++- storage/maria/ma_check.c | 6 ++--- storage/maria/ma_control_file.c | 3 ++- storage/maria/maria_chk.c | 22 +++++++++++++-- storage/maria/maria_read_log.c | 3 ++- 7 files changed, 68 insertions(+), 9 deletions(-) diff --git a/mysql-test/suite/maria/r/maria.result b/mysql-test/suite/maria/r/maria.result index d418ae42080..46ae485b678 100644 --- a/mysql-test/suite/maria/r/maria.result +++ b/mysql-test/suite/maria/r/maria.result @@ -2139,7 +2139,7 @@ Data records: 0 Deleted blocks: 0 Block_size: 8192 Recordlength: 99 -table description: +Table description: Key Start Len Index Type 1 2 30 multip. varchar 2 33 30 multip. char NULL diff --git a/storage/maria/ma_bitmap.c b/storage/maria/ma_bitmap.c index 882c6e4cd06..70617160d03 100644 --- a/storage/maria/ma_bitmap.c +++ b/storage/maria/ma_bitmap.c @@ -2393,6 +2393,8 @@ my_bool _ma_bitmap_set(MARIA_HA *info, pgcache_page_no_t page, my_bool head, uint bits; my_bool res; DBUG_ENTER("_ma_bitmap_set"); + DBUG_PRINT("enter", ("page: %lu head: %d empty_space: %u", + (ulong) page, head, empty_space)); pthread_mutex_lock(&info->s->bitmap.bitmap_lock); bits= (head ? diff --git a/storage/maria/ma_blockrec.c b/storage/maria/ma_blockrec.c index e3210fff860..f62a4e2ce6d 100644 --- a/storage/maria/ma_blockrec.c +++ b/storage/maria/ma_blockrec.c @@ -698,7 +698,8 @@ static void check_directory(uchar *buff, uint block_size, uint min_row_length) @brief Calculate if there is enough entries on the page */ -my_bool enough_free_entries(uchar *buff, uint block_size, uint wanted_entries) +static my_bool enough_free_entries(uchar *buff, uint block_size, + uint wanted_entries) { uint entries= (uint) buff[DIR_COUNT_OFFSET]; uint needed_free_entries, free_entry; @@ -722,6 +723,33 @@ my_bool enough_free_entries(uchar *buff, uint block_size, uint wanted_entries) } +/** + @brief Check if there is room for more rows on page + + @fn enough_free_entries_on_page + + @return 0 Directory is full + @return 1 There is room for more entries on the page +*/ + +static my_bool enough_free_entries_on_page(MARIA_SHARE *share, + uchar *page_buff) +{ + enum en_page_type page_type; + page_type= (enum en_page_type) (page_buff[PAGE_TYPE_OFFSET] & + ~(uchar) PAGE_CAN_BE_COMPACTED); + + if (page_type == HEAD_PAGE) + { + uint row_count= (uint) page_buff[DIR_COUNT_OFFSET]; + return !(row_count == MAX_ROWS_PER_PAGE && + page_buff[DIR_FREE_OFFSET] == END_OF_DIR_FREE_LIST); + } + return enough_free_entries(page_buff, share->block_size, + 1 + share->base.blobs); +} + + /** @brief Extend a record area to fit a given size block @@ -6106,6 +6134,9 @@ uint _ma_apply_redo_insert_row_head_or_tail(MARIA_HA *info, LSN lsn, { /* Fix bitmap, just in case */ empty_space= uint2korr(buff + EMPTY_SPACE_OFFSET); + if (!enough_free_entries_on_page(share, buff)) + empty_space= 0; /* Page is full */ + if (_ma_bitmap_set(info, page, page_type == HEAD_PAGE, empty_space)) goto err; pagecache_unlock_by_link(share->pagecache, page_link.link, @@ -6178,6 +6209,8 @@ uint _ma_apply_redo_insert_row_head_or_tail(MARIA_HA *info, LSN lsn, result= my_errno; /* Fix bitmap */ + if (!enough_free_entries_on_page(share, buff)) + empty_space= 0; /* Page is full */ if (_ma_bitmap_set(info, page, page_type == HEAD_PAGE, empty_space)) goto err; @@ -6265,6 +6298,8 @@ uint _ma_apply_redo_purge_row_head_or_tail(MARIA_HA *info, LSN lsn, if ((uint) (buff[PAGE_TYPE_OFFSET] & PAGE_TYPE_MASK) == page_type) { empty_space= uint2korr(buff+EMPTY_SPACE_OFFSET); + if (!enough_free_entries_on_page(share, buff)) + empty_space= 0; /* Page is full */ if (_ma_bitmap_set(info, page, page_type == HEAD_PAGE, empty_space)) goto err; @@ -6289,6 +6324,8 @@ uint _ma_apply_redo_purge_row_head_or_tail(MARIA_HA *info, LSN lsn, push_dynamic(&info->pinned_pages, (void*) &page_link); result= 0; + if (!enough_free_entries_on_page(share, buff)) + empty_space= 0; /* Page is full */ /* This will work even if the page was marked as UNALLOCATED_PAGE */ if (_ma_bitmap_set(info, page, page_type == HEAD_PAGE, empty_space)) result= my_errno; diff --git a/storage/maria/ma_check.c b/storage/maria/ma_check.c index 2a19b5e9075..28b808cf27e 100644 --- a/storage/maria/ma_check.c +++ b/storage/maria/ma_check.c @@ -1929,8 +1929,8 @@ static int check_block_record(HA_CHECK *param, MARIA_HA *info, int extend, else _ma_check_print_error(param, "Page %9s: Wrong data in bitmap. Page_type: " - "%d empty_space: %u Bitmap-bits: %d", - llstr(page, llbuff), page_type, + "%d full: %d empty_space: %u Bitmap-bits: %d", + llstr(page, llbuff), full_dir, page_type, empty_space, bitmap_pattern); if (param->err_count++ > MAXERR || !(param->testflag & T_VERBOSE)) goto err; @@ -6762,7 +6762,7 @@ static void _ma_check_print_not_visible_error(HA_CHECK *param, TrID used_trid) { _ma_check_print_warning(param, "Found row with transaction id %s but no " - "maria_control_file was specified. " + "maria_control_file was used or specified. " "The table may be corrupted", llstr(used_trid, buff)); } diff --git a/storage/maria/ma_control_file.c b/storage/maria/ma_control_file.c index 1e1fc34c77e..ac246f09337 100644 --- a/storage/maria/ma_control_file.c +++ b/storage/maria/ma_control_file.c @@ -398,7 +398,7 @@ CONTROL_FILE_ERROR ma_control_file_open(my_bool create_if_missing, } new_block_size= uint2korr(buffer + CF_BLOCKSIZE_OFFSET); - if (new_block_size != maria_block_size) + if (new_block_size != maria_block_size && maria_block_size) { error= CONTROL_FILE_WRONG_BLOCKSIZE; sprintf(errmsg_buff, @@ -407,6 +407,7 @@ CONTROL_FILE_ERROR ma_control_file_open(my_bool create_if_missing, errmsg= errmsg_buff; goto err; } + maria_block_size= new_block_size; if (my_checksum(0, buffer, new_cf_create_time_size - CF_CHECKSUM_SIZE) != uint4korr(buffer + new_cf_create_time_size - CF_CHECKSUM_SIZE)) diff --git a/storage/maria/maria_chk.c b/storage/maria/maria_chk.c index 985e9d2bc85..6b194eee96f 100644 --- a/storage/maria/maria_chk.c +++ b/storage/maria/maria_chk.c @@ -71,6 +71,14 @@ static const char *record_formats[]= "Fixed length", "Packed", "Compressed", "Block", "?" }; +static const char *bitmap_description[]= +{ + "Empty page", "Part filled head page","Part filled head page", + "Part filled head page", "Full head page", + "Part filled tail page","Part filled tail page", + "Full tail or blob page" +}; + static const char *maria_stats_method_str="nulls_unequal"; static char default_open_errmsg[]= "%d when opening MARIA-table '%s'"; static char default_close_errmsg[]= "%d when closing MARIA-table '%s'"; @@ -106,7 +114,9 @@ int main(int argc, char **argv) error=0; maria_init(); - if (ma_control_file_open(FALSE, opt_require_control_file) && + maria_block_size= 0; /* Use block size from control file */ + if (ma_control_file_open(FALSE, opt_require_control_file || + !(check_param.testflag & T_SILENT)) && (opt_require_control_file || (opt_transaction_logging && (check_param.testflag & T_REP_ANY)))) { @@ -1516,7 +1526,7 @@ static void descript(HA_CHECK *param, register MARIA_HA *info, char *name) printf("Using only keys '%s' of %d possibly keys\n", buff, share->base.keys); } - puts("\ntable description:"); + puts("\nTable description:"); printf("Key Start Len Index Type"); if (param->testflag & T_VERBOSE) printf(" Rec/key Root Blocksize"); @@ -1658,6 +1668,14 @@ static void descript(HA_CHECK *param, register MARIA_HA *info, char *name) } VOID(putchar('\n')); } + if (share->data_file_type == BLOCK_RECORD) + { + uint i; + puts("\nBitmap Data size Description"); + for (i=0 ; i <= 7 ; i++) + printf("%u %5u %s\n", i, share->bitmap.sizes[i], + bitmap_description[i]); + } } DBUG_VOID_RETURN; } /* describe */ diff --git a/storage/maria/maria_read_log.c b/storage/maria/maria_read_log.c index a526eede4d7..1002260afe5 100644 --- a/storage/maria/maria_read_log.c +++ b/storage/maria/maria_read_log.c @@ -56,6 +56,7 @@ int main(int argc, char **argv) fprintf(stderr, "Can't init Maria engine (%d)\n", errno); goto err; } + maria_block_size= 0; /* Use block size from file */ /* we don't want to create a control file, it MUST exist */ if (ma_control_file_open(FALSE, TRUE)) { @@ -68,7 +69,7 @@ int main(int argc, char **argv) goto err; } if (init_pagecache(maria_pagecache, opt_page_buffer_size, 0, 0, - TRANSLOG_PAGE_SIZE, MY_WME) == 0) + maria_block_size, MY_WME) == 0) { fprintf(stderr, "Got error in init_pagecache() (errno: %d)\n", errno); goto err; From 236478cef7f826a2cc019febedc6854861243169 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 11 Aug 2010 13:55:54 +0300 Subject: [PATCH 371/461] Fixed compiler warnings from Windows compiler client/mysqlcheck.c: Added missing casts client/mysqldump.c: Added missing casts client/mysqlimport.c: Added missing casts extra/my_print_defaults.c: Added missing casts mysql-test/mysql-test-run.pl: Added suppression for non-critical warning on windows storage/maria/maria_pack.c: Added missing casts storage/xtradb/buf/buf0lru.c: Added missing casts storage/xtradb/fil/fil0fil.c: Added missing casts storage/xtradb/handler/i_s.cc: Added extra argument to call store() function for longlong. storage/xtradb/srv/srv0srv.c: Added cast to suppress compiler warning support-files/compiler_warnings.supp: Added suppression for some non critical compiler warnings on Windows unittest/mytap/tap.h: Fixed prototypes to be same as the actual functions --- client/mysqlcheck.c | 4 ++-- client/mysqldump.c | 8 ++++---- client/mysqlimport.c | 4 ++-- extra/my_print_defaults.c | 4 ++-- mysql-test/mysql-test-run.pl | 1 + storage/maria/maria_pack.c | 4 ++-- storage/xtradb/buf/buf0lru.c | 8 ++++---- storage/xtradb/fil/fil0fil.c | 4 ++-- storage/xtradb/handler/i_s.cc | 2 +- storage/xtradb/srv/srv0srv.c | 2 +- support-files/compiler_warnings.supp | 2 ++ unittest/mytap/tap.h | 4 ++-- 12 files changed, 25 insertions(+), 22 deletions(-) diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c index fd067e8a8ad..62eab5bf6e4 100644 --- a/client/mysqlcheck.c +++ b/client/mysqlcheck.c @@ -71,8 +71,8 @@ static struct my_option my_long_options[] = &opt_auto_repair, &opt_auto_repair, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR, - "Directory for character set files.", &charsets_dir, - &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory for character set files.", (char**) &charsets_dir, + (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"check", 'c', "Check table for errors.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"check-only-changed", 'C', diff --git a/client/mysqldump.c b/client/mysqldump.c index 0045faa2229..bb09af4a3c2 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -211,8 +211,8 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"character-sets-dir", OPT_CHARSETS_DIR, - "Directory for character set files.", &charsets_dir, - &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory for character set files.", (char**) &charsets_dir, + (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"comments", 'i', "Write additional information.", &opt_comments, &opt_comments, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, @@ -242,8 +242,8 @@ static struct my_option my_long_options[] = {"debug", '#', "This is a non-debug version. Catch this and exit.", 0,0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0}, #else - {"debug", '#', "Output debug log.", &default_dbug_option, - &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"debug", '#', "Output debug log.", (char**) &default_dbug_option, + (char**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.", &debug_check_flag, &debug_check_flag, 0, diff --git a/client/mysqlimport.c b/client/mysqlimport.c index 404106560c1..43994a4f514 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -73,8 +73,8 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif {"character-sets-dir", OPT_CHARSETS_DIR, - "Directory for character set files.", &charsets_dir, - &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory for character set files.", (char**) &charsets_dir, + (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"default-character-set", OPT_DEFAULT_CHARSET, "Set the default character set.", &default_charset, &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, diff --git a/extra/my_print_defaults.c b/extra/my_print_defaults.c index da7061471fa..847738951dd 100644 --- a/extra/my_print_defaults.c +++ b/extra/my_print_defaults.c @@ -55,8 +55,8 @@ static struct my_option my_long_options[] = {"debug", '#', "This is a non-debug version. Catch this and exit", 0,0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0}, #else - {"debug", '#', "Output debug log", &default_dbug_option, - &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, + {"debug", '#', "Output debug log", (char**) &default_dbug_option, + (char**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, #endif {"defaults-file", 'c', "Like --config-file, except: if first option, " "then read this file only, do not read global or per-user config " diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index eb51d385f77..190020a817c 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -4038,6 +4038,7 @@ sub extract_warning_lines ($) { qr/unknown variable 'loose-/, qr/Now setting lower_case_table_names to [02]/, qr/Setting lower_case_table_names=2/, + qr/You have forced lower_case_table_names to 0/, qr/deprecated/, qr/Slave SQL thread retried transaction/, qr/Slave \(additional info\)/, diff --git a/storage/maria/maria_pack.c b/storage/maria/maria_pack.c index 0673f571a6b..167d0af3078 100644 --- a/storage/maria/maria_pack.c +++ b/storage/maria/maria_pack.c @@ -261,8 +261,8 @@ static struct my_option my_long_options[] = {"backup", 'b', "Make a backup of the table as table_name.OLD.", &backup, &backup, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"character-sets-dir", OPT_CHARSETS_DIR_MP, - "Directory where character sets are.", &charsets_dir, - &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + "Directory where character sets are.", (char**) &charsets_dir, + (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"force", 'f', diff --git a/storage/xtradb/buf/buf0lru.c b/storage/xtradb/buf/buf0lru.c index 65fdf342e4f..7b01c4aec50 100644 --- a/storage/xtradb/buf/buf0lru.c +++ b/storage/xtradb/buf/buf0lru.c @@ -2131,7 +2131,7 @@ ibool buf_LRU_file_dump(void) /*===================*/ { - os_file_t dump_file = -1; + os_file_t dump_file = (os_file_t) -1; ibool success; byte* buffer_base = NULL; byte* buffer = NULL; @@ -2221,7 +2221,7 @@ buf_LRU_file_dump(void) ret = TRUE; end: - if (dump_file != -1) + if (dump_file != (os_file_t) -1) os_file_close(dump_file); if (buffer_base) ut_free(buffer_base); @@ -2235,7 +2235,7 @@ ibool buf_LRU_file_restore(void) /*======================*/ { - os_file_t dump_file = -1; + os_file_t dump_file = (os_file_t) -1; ibool success; byte* buffer_base = NULL; byte* buffer = NULL; @@ -2326,7 +2326,7 @@ buf_LRU_file_restore(void) " (requested: %lu, read: %lu)\n", req, reads); ret = TRUE; end: - if (dump_file != -1) + if (dump_file != (os_file_t) -1) os_file_close(dump_file); if (buffer_base) ut_free(buffer_base); diff --git a/storage/xtradb/fil/fil0fil.c b/storage/xtradb/fil/fil0fil.c index bb1eed2a1e3..d69e5859d99 100644 --- a/storage/xtradb/fil/fil0fil.c +++ b/storage/xtradb/fil/fil0fil.c @@ -3044,7 +3044,7 @@ fil_open_single_table_tablespace( dulint new_id[31]; ulint root_page[31]; ulint n_index; - os_file_t info_file = -1; + os_file_t info_file = (os_file_t) -1; char* info_file_path; ulint i; int len; @@ -3130,7 +3130,7 @@ fil_open_single_table_tablespace( } skip_info: - if (info_file != -1) + if (info_file != (os_file_t) -1) os_file_close(info_file); /* diff --git a/storage/xtradb/handler/i_s.cc b/storage/xtradb/handler/i_s.cc index c48676c2892..5b5d5ef7186 100644 --- a/storage/xtradb/handler/i_s.cc +++ b/storage/xtradb/handler/i_s.cc @@ -2821,7 +2821,7 @@ i_s_innodb_table_stats_fill( field_store_string(i_s_table->field[0], buf); field_store_string(i_s_table->field[1], ptr); - i_s_table->field[2]->store(table->stat_n_rows); + i_s_table->field[2]->store(table->stat_n_rows, 1); i_s_table->field[3]->store(table->stat_clustered_index_size); i_s_table->field[4]->store(table->stat_sum_of_other_index_sizes); i_s_table->field[5]->store(table->stat_modified_counter); diff --git a/storage/xtradb/srv/srv0srv.c b/storage/xtradb/srv/srv0srv.c index 86bf309bac1..bc2dd562697 100644 --- a/storage/xtradb/srv/srv0srv.c +++ b/storage/xtradb/srv/srv0srv.c @@ -2897,7 +2897,7 @@ loop: if (bpl) { retry_flush_batch: n_pages_flushed = buf_flush_batch(BUF_FLUSH_LIST, - bpl, + (ulint) bpl, oldest_lsn + (lsn - lsn_old)); if (n_pages_flushed == ULINT_UNDEFINED) { os_thread_sleep(5000); diff --git a/support-files/compiler_warnings.supp b/support-files/compiler_warnings.supp index 94e5b54d6fa..5039c28aab0 100644 --- a/support-files/compiler_warnings.supp +++ b/support-files/compiler_warnings.supp @@ -44,6 +44,7 @@ buf/buf0buf\.c: .*block_mutex.* might be used uninitialized btr/btr0cur\.c: null argument where non-null required: 1800-3000 btr/btr0btr\.c: null argument where non-null required: 2500-3000 ibuf/ibuf0ibuf.c: null argument where non-null required: 700-1000 +fsp/fsp0fsp\.c: result of 32-bit shift implicitly converted to 64 bits # # bdb is not critical to keep up to date @@ -108,6 +109,7 @@ signal\.c : .*unused parameter.* .* : conversion from '.*size_t' to 'UINT'.* .* : conversion from '.*size_t' to 'uInt'.* .* : conversion from '.*size_t' to 'uint16'.* +.* : The following environment variables were not found.* # # The following should be fixed by the ndb team diff --git a/unittest/mytap/tap.h b/unittest/mytap/tap.h index 206a939e43b..a75d0a4932b 100644 --- a/unittest/mytap/tap.h +++ b/unittest/mytap/tap.h @@ -106,7 +106,7 @@ extern int skip_big_tests; @param count The planned number of tests to run. */ -void plan(int const count); +void plan(int count); /** @@ -125,7 +125,7 @@ void plan(int const count); which case nothing is printed. */ -void ok(int const pass, char const *fmt, ...) +void ok(int pass, char const *fmt, ...) __attribute__((format(printf,2,3))); From 2d7b9ac75c18537c5dfd67660b42619249f11a34 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 12 Aug 2010 00:33:15 +0300 Subject: [PATCH 372/461] Disable events_time_zone.test as test is not predictable --- 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 cede26f555a..1de9d1c9847 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -14,3 +14,4 @@ query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails spo partition_innodb_plugin : Bug#53307 2010-04-30 VasilDimov valgrind warnings main.mysqlhotcopy_myisam : bug#54129 2010-06-04 Horst main.mysqlhotcopy_archive: bug#54129 2010-06-04 Horst +main.events_time_zone : Test is not predictable as it depends on precise timing. From 6bbb0b573983320d136522d207f282e8506862da Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 12 Aug 2010 19:46:36 +0300 Subject: [PATCH 373/461] Added option --start-from-checkpoint to maria_read_log Print out checked file names in maria_check -s (unless you use a second -s) Some trivial optimizations storage/maria/ma_bitmap.c: Trivial optimizations: - Combine common code (to be able to remove duplicate mutex_lock call) - Move setting of thread specific variables outside of mutex storage/maria/ma_check.c: Fixed wrong argument to printf storage/maria/maria_chk.c: Print out checked table names unless -s -s storage/maria/maria_read_log.c: Added option --start-from-checkpoint (to help find bugs in checkpoints) --- storage/maria/ma_bitmap.c | 10 ++++++---- storage/maria/ma_check.c | 2 +- storage/maria/maria_chk.c | 2 +- storage/maria/maria_read_log.c | 20 +++++++++++++++----- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/storage/maria/ma_bitmap.c b/storage/maria/ma_bitmap.c index 70617160d03..f75df06cadc 100644 --- a/storage/maria/ma_bitmap.c +++ b/storage/maria/ma_bitmap.c @@ -2142,12 +2142,12 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc) DBUG_VOID_RETURN; bitmap= &share->bitmap; + pthread_mutex_lock(&bitmap->bitmap_lock); + if (non_flushable_inc == -1) { - pthread_mutex_lock(&bitmap->bitmap_lock); DBUG_ASSERT((int) bitmap->non_flushable > 0); DBUG_ASSERT(info->non_flushable_state == 1); - info->non_flushable_state= 0; if (--bitmap->non_flushable == 0) { /* @@ -2164,11 +2164,11 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc) } DBUG_PRINT("info", ("bitmap->non_flushable: %u", bitmap->non_flushable)); pthread_mutex_unlock(&bitmap->bitmap_lock); + info->non_flushable_state= 0; DBUG_VOID_RETURN; } DBUG_ASSERT(non_flushable_inc == 1); DBUG_ASSERT(info->non_flushable_state == 0); - pthread_mutex_lock(&bitmap->bitmap_lock); while (unlikely(bitmap->flush_all_requested)) { /* @@ -2186,9 +2186,9 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc) pthread_cond_wait(&bitmap->bitmap_cond, &bitmap->bitmap_lock); } bitmap->non_flushable++; - info->non_flushable_state= 1; DBUG_PRINT("info", ("bitmap->non_flushable: %u", bitmap->non_flushable)); pthread_mutex_unlock(&bitmap->bitmap_lock); + info->non_flushable_state= 1; DBUG_VOID_RETURN; } @@ -2217,6 +2217,8 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc) Note that we may have 'filler blocks' that are used to split a block in half; These can be recognized by that they have page_count == 0. + This code also reverse the effect of ma_bitmap_flushable(.., 1); + RETURN 0 ok 1 error (Couldn't write or read bitmap page) diff --git a/storage/maria/ma_check.c b/storage/maria/ma_check.c index 28b808cf27e..086cff67dab 100644 --- a/storage/maria/ma_check.c +++ b/storage/maria/ma_check.c @@ -1930,7 +1930,7 @@ static int check_block_record(HA_CHECK *param, MARIA_HA *info, int extend, _ma_check_print_error(param, "Page %9s: Wrong data in bitmap. Page_type: " "%d full: %d empty_space: %u Bitmap-bits: %d", - llstr(page, llbuff), full_dir, page_type, + llstr(page, llbuff), page_type, full_dir, empty_space, bitmap_pattern); if (param->err_count++ > MAXERR || !(param->testflag & T_VERBOSE)) goto err; diff --git a/storage/maria/maria_chk.c b/storage/maria/maria_chk.c index 6b194eee96f..ae840467894 100644 --- a/storage/maria/maria_chk.c +++ b/storage/maria/maria_chk.c @@ -1252,7 +1252,7 @@ static int maria_chk(HA_CHECK *param, char *filename) } else if ((param->testflag & T_CHECK) || !(param->testflag & T_AUTO_INC)) { - if (!(param->testflag & T_SILENT) || param->testflag & T_INFO) + if (!(param->testflag & T_VERY_SILENT) || param->testflag & T_INFO) printf("Checking MARIA file: %s\n",filename); if (!(param->testflag & T_SILENT)) printf("Data records: %7s Deleted blocks: %7s\n", diff --git a/storage/maria/maria_read_log.c b/storage/maria/maria_read_log.c index 1002260afe5..c964e47eafd 100644 --- a/storage/maria/maria_read_log.c +++ b/storage/maria/maria_read_log.c @@ -33,7 +33,7 @@ static my_bool opt_display_only, opt_apply, opt_apply_undo, opt_silent; static my_bool opt_check; static const char *opt_tmpdir; static ulong opt_page_buffer_size; -static ulonglong opt_start_from_lsn, opt_end_lsn; +static ulonglong opt_start_from_lsn, opt_end_lsn, opt_start_from_checkpoint; static MY_TMPDIR maria_chk_tmpdir; @@ -94,7 +94,6 @@ int main(int argc, char **argv) if (opt_display_only) printf("You are using --display-only, NOTHING will be written to disk\n"); - /* LSN could be also --start-from-lsn=# */ lsn= translog_first_lsn_in_log(); if (lsn == LSN_ERROR) { @@ -105,8 +104,16 @@ int main(int argc, char **argv) { fprintf(stdout, "The transaction log is empty\n"); } - fprintf(stdout, "The transaction log starts from lsn (%lu,0x%lx)\n", - LSN_IN_PARTS(lsn)); + if (opt_start_from_checkpoint && !opt_start_from_lsn && + last_checkpoint_lsn != LSN_IMPOSSIBLE) + { + lsn= LSN_IMPOSSIBLE; /* LSN set in maria_apply_log() */ + fprintf(stdout, "Starting from checkpoint (%lu,0x%lx)\n", + LSN_IN_PARTS(last_checkpoint_lsn)); + } + else + fprintf(stdout, "The transaction log starts from lsn (%lu,0x%lx)\n", + LSN_IN_PARTS(lsn)); if (opt_start_from_lsn) { @@ -183,7 +190,7 @@ static struct my_option my_long_options[] = {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"display-only", 'd', "display brief info read from records' header", - (uchar **) &opt_display_only, (uchar **) &opt_display_only, 0, GET_BOOL, + &opt_display_only, &opt_display_only, 0, GET_BOOL, NO_ARG,0, 0, 0, 0, 0, 0}, {"maria-log-dir-path", 'l', "Path to the directory where to store transactional log", @@ -197,6 +204,9 @@ static struct my_option my_long_options[] = { "start-from-lsn", 'o', "Start reading log from this lsn", &opt_start_from_lsn, &opt_start_from_lsn, 0, GET_ULL, REQUIRED_ARG, 0, 0, ~(longlong) 0, 0, 0, 0 }, + {"start-from-checkpoint", 'C', "Start applying from last checkpoint", + &opt_start_from_checkpoint, &opt_start_from_checkpoint, 0, + GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, { "end-lsn", 'e', "Stop applying at this lsn. If end-lsn is used, UNDO:s " "will not be applied", &opt_end_lsn, &opt_end_lsn, 0, GET_ULL, REQUIRED_ARG, 0, 0, ~(longlong) 0, 0, 0, 0 }, From ae6c5d0de310f75551586b440824ffb5a13270e3 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 12 Aug 2010 20:52:52 +0300 Subject: [PATCH 374/461] Fix for LP#571200 MySQL Bug#32426: FederatedX corrupt ORDER BY with TEXT Patch taken from lp:~capttofu/maria/bug_571200 (originally for MariaDB 5.3, but adapted for 5.1) --- .../suite/federated/federated_server.result | 2 +- storage/federatedx/federatedx_io_mysql.cc | 69 +++++- storage/federatedx/federatedx_io_null.cc | 22 ++ storage/federatedx/ha_federatedx.cc | 198 ++++++++++++------ storage/federatedx/ha_federatedx.h | 51 +++-- 5 files changed, 248 insertions(+), 94 deletions(-) diff --git a/mysql-test/suite/federated/federated_server.result b/mysql-test/suite/federated/federated_server.result index 753b9286287..05782c6ef81 100644 --- a/mysql-test/suite/federated/federated_server.result +++ b/mysql-test/suite/federated/federated_server.result @@ -213,7 +213,7 @@ id name alter server s1 options (database 'db_bogus'); flush tables; select * from federated.t1; -ERROR 42000: Got error: 1044 : Access denied for user 'test_fed'@'localhost' to database 'db_bogus' +ERROR 42000: Received error: 1044 : Access denied for user 'test_fed'@'localhost' to database 'db_bogus' drop server if exists 's1'; ERROR 42000: Access denied; you need the SUPER privilege for this operation create server 's1' foreign data wrapper 'mysql' options diff --git a/storage/federatedx/federatedx_io_mysql.cc b/storage/federatedx/federatedx_io_mysql.cc index 5245395b060..d6844fab2c6 100644 --- a/storage/federatedx/federatedx_io_mysql.cc +++ b/storage/federatedx/federatedx_io_mysql.cc @@ -1,4 +1,4 @@ -/* +/* Copyright (c) 2007, Antony T Curtis All rights reserved. @@ -51,6 +51,12 @@ typedef struct federatedx_savepoint uint flags; } SAVEPT; +struct mysql_position +{ + MYSQL_RES* result; + MYSQL_ROW_OFFSET offset; +}; + class federatedx_io_mysql :public federatedx_io { @@ -76,16 +82,16 @@ public: virtual int error_code(); virtual const char *error_str(); - + void reset(); int commit(); int rollback(); - + int savepoint_set(ulong sp); ulong savepoint_release(ulong sp); ulong savepoint_rollback(ulong sp); void savepoint_restrict(ulong sp); - + ulong last_savepoint() const; ulong actual_savepoint() const; bool is_autocommit() const; @@ -94,7 +100,7 @@ public: uint table_name_length, uint flag); /* resultset operations */ - + virtual void free_result(FEDERATEDX_IO_RESULT *io_result); virtual unsigned int get_num_fields(FEDERATEDX_IO_RESULT *io_result); virtual my_ulonglong get_num_rows(FEDERATEDX_IO_RESULT *io_result); @@ -104,6 +110,12 @@ public: unsigned int column); virtual bool is_column_null(const FEDERATEDX_IO_ROW *row, unsigned int column) const; + + virtual size_t get_ref_length() const; + virtual void mark_position(FEDERATEDX_IO_RESULT *io_result, + void *ref); + virtual int seek_position(FEDERATEDX_IO_RESULT **io_result, + const void *ref); }; @@ -466,14 +478,13 @@ const char *federatedx_io_mysql::error_str() return mysql_error(&mysql); } - FEDERATEDX_IO_RESULT *federatedx_io_mysql::store_result() { FEDERATEDX_IO_RESULT *result; DBUG_ENTER("federatedx_io_mysql::store_result"); - + result= (FEDERATEDX_IO_RESULT *) mysql_store_result(&mysql); - + DBUG_RETURN(result); } @@ -590,3 +601,45 @@ error: free_result(result); return 1; } + + + +size_t federatedx_io_mysql::get_ref_length() const +{ + return sizeof(mysql_position); +} + + +void federatedx_io_mysql::mark_position(FEDERATEDX_IO_RESULT *io_result, + void *ref) +{ + MYSQL_ROWS *tmp= 0; + mysql_position& pos= *reinterpret_cast(ref); + pos.result= (MYSQL_RES *) io_result; + + if (pos.result && pos.result->data) + { + for (tmp= pos.result->data->data; + tmp && (tmp->next != pos.result->data_cursor); + tmp= tmp->next) + {} + } + + pos.offset= tmp; +} + +int federatedx_io_mysql::seek_position(FEDERATEDX_IO_RESULT **io_result, + const void *ref) +{ + const mysql_position& pos= *reinterpret_cast(ref); + + if (!pos.result || !pos.offset) + return HA_ERR_END_OF_FILE; + + pos.result->current_row= 0; + pos.result->data_cursor= pos.offset; + *io_result= (FEDERATEDX_IO_RESULT*) pos.result; + + return 0; +} + diff --git a/storage/federatedx/federatedx_io_null.cc b/storage/federatedx/federatedx_io_null.cc index cd8fc3eaf85..49f93ab6546 100644 --- a/storage/federatedx/federatedx_io_null.cc +++ b/storage/federatedx/federatedx_io_null.cc @@ -96,6 +96,11 @@ public: unsigned int column); virtual bool is_column_null(const FEDERATEDX_IO_ROW *row, unsigned int column) const; + virtual size_t get_ref_length() const; + virtual void mark_position(FEDERATEDX_IO_RESULT *io_result, + void *ref); + virtual int seek_position(FEDERATEDX_IO_RESULT **io_result, + const void *ref); }; @@ -275,3 +280,20 @@ bool federatedx_io_null::table_metadata(ha_statistics *stats, return 0; } + +size_t federatedx_io_null::get_ref_length() const +{ + return sizeof(int); +} + + +void federatedx_io_null::mark_position(FEDERATEDX_IO_RESULT *io_result, + void *ref) +{ +} + +int federatedx_io_null::seek_position(FEDERATEDX_IO_RESULT **io_result, + const void *ref) +{ + return 0; +} diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc index a88c60efb74..8296fbcd2e9 100644 --- a/storage/federatedx/ha_federatedx.cc +++ b/storage/federatedx/ha_federatedx.cc @@ -1717,14 +1717,14 @@ federatedx_txn *ha_federatedx::get_txn(THD *thd, bool no_create) return *txnp; } - + int ha_federatedx::disconnect(handlerton *hton, MYSQL_THD thd) { federatedx_txn *txn= (federatedx_txn *) thd_get_ha_data(thd, hton); delete txn; return 0; } - + /* Used for opening tables. The name will be the name of the file. @@ -1756,14 +1756,15 @@ int ha_federatedx::open(const char *name, int mode, uint test_if_locked) free_share(txn, share); DBUG_RETURN(error); } - + + ref_length= io->get_ref_length(); + txn->release(&io); - - ref_length= (table->s->primary_key != MAX_KEY ? - table->key_info[table->s->primary_key].key_length : - table->s->reclength); + DBUG_PRINT("info", ("ref_length: %u", ref_length)); + my_init_dynamic_array(&results, sizeof(FEDERATEDX_IO_RESULT*), 4, 4); + reset(); DBUG_RETURN(0); @@ -1788,8 +1789,7 @@ int ha_federatedx::close(void) DBUG_ENTER("ha_federatedx::close"); /* free the result set */ - if (stored_result) - retval= free_result(); + reset(); /* Disconnect from mysql */ if (!thd || !(txn= get_txn(thd, true))) @@ -1799,7 +1799,7 @@ int ha_federatedx::close(void) tmp_txn.release(&io); DBUG_ASSERT(io == NULL); - + if ((error= free_share(&tmp_txn, share))) retval= error; } @@ -2525,7 +2525,7 @@ int ha_federatedx::index_read_idx(uchar *buf, uint index, const uchar *key, uint key_len, enum ha_rkey_function find_flag) { int retval; - FEDERATEDX_IO_RESULT *io_result; + FEDERATEDX_IO_RESULT *io_result= 0; DBUG_ENTER("ha_federatedx::index_read_idx"); if ((retval= index_read_idx_with_result_set(buf, index, key, @@ -2601,7 +2601,7 @@ int ha_federatedx::index_read_idx_with_result_set(uchar *buf, uint index, if (!(retval= read_next(buf, *result))) DBUG_RETURN(retval); - io->free_result(*result); + insert_dynamic(&results, (uchar*) result); *result= 0; table->status= STATUS_NOT_FOUND; DBUG_RETURN(retval); @@ -2669,10 +2669,7 @@ int ha_federatedx::read_range_first(const key_range *start_key, DBUG_RETURN(retval); if (stored_result) - { - io->free_result(stored_result); - stored_result= 0; - } + (void) free_result(); if (io->query(sql_query.ptr(), sql_query.length())) { @@ -2773,10 +2770,7 @@ int ha_federatedx::rnd_init(bool scan) DBUG_RETURN(error); if (stored_result) - { - io->free_result(stored_result); - stored_result= 0; - } + (void) free_result(); if (io->query(share->select_query, strlen(share->select_query))) @@ -2803,17 +2797,35 @@ int ha_federatedx::rnd_end() int ha_federatedx::free_result() { int error; - federatedx_io *tmp_io= 0, **iop; + DBUG_ENTER("ha_federatedx::free_result"); DBUG_ASSERT(stored_result); - if (!*(iop= &io) && (error= txn->acquire(share, TRUE, (iop= &tmp_io)))) + for (uint i= 0; i < results.elements; ++i) { - DBUG_ASSERT(0); // Fail when testing - return error; + FEDERATEDX_IO_RESULT *result= 0; + get_dynamic(&results, (uchar*) &result, i); + if (result == stored_result) + goto end; } - (*iop)->free_result(stored_result); + if (position_called) + { + insert_dynamic(&results, (uchar*) &stored_result); + } + else + { + federatedx_io *tmp_io= 0, **iop; + if (!*(iop= &io) && (error= txn->acquire(share, TRUE, (iop= &tmp_io)))) + { + DBUG_ASSERT(0); // Fail when testing + insert_dynamic(&results, (uchar*) &stored_result); + goto end; + } + (*iop)->free_result(stored_result); + txn->release(&tmp_io); + } +end: stored_result= 0; - txn->release(&tmp_io); - return 0; + position_called= FALSE; + DBUG_RETURN(0); } int ha_federatedx::index_end(void) @@ -2862,8 +2874,8 @@ int ha_federatedx::rnd_next(uchar *buf) SYNOPSIS field_in_record_is_null() - buf byte pointer to record - result mysql result set + buf byte pointer to record + result mysql result set DESCRIPTION This method is a wrapper method that reads one record from a result @@ -2896,24 +2908,43 @@ int ha_federatedx::read_next(uchar *buf, FEDERATEDX_IO_RESULT *result) } -/* - store reference to current row so that we can later find it for - a re-read, update or delete. +/** + @brief Store a reference to current row. - In case of federatedx, a reference is either a primary key or - the whole record. + @details During a query execution we may have different result sets (RS), + e.g. for different ranges. All the RS's used are stored in + memory and placed in @c results dynamic array. At the end of + execution all stored RS's are freed at once in the + @c ha_federated::reset(). + So, in case of federated, a reference to current row is a + stored result address and current data cursor position. + As we keep all RS in memory during a query execution, + we can get any record using the reference any time until + @c ha_federated::reset() is called. + TODO: we don't have to store all RS's rows but only those + we call @c ha_federated::position() for, so we can free memory + where we store other rows in the @c ha_federated::index_end(). + + @param[in] record record data (unused) - Called from filesort.cc, sql_select.cc, sql_delete.cc and sql_update.cc. */ -void ha_federatedx::position(const uchar *record) +void ha_federatedx::position(const uchar *record __attribute__ ((unused))) { DBUG_ENTER("ha_federatedx::position"); - if (table->s->primary_key != MAX_KEY) - key_copy(ref, (uchar *)record, table->key_info + table->s->primary_key, - ref_length); - else - memcpy(ref, record, ref_length); + + bzero(ref, ref_length); + + if (!stored_result) + DBUG_VOID_RETURN; + + if (txn->acquire(share, TRUE, &io)) + DBUG_VOID_RETURN; + + io->mark_position(stored_result, ref); + + position_called= TRUE; + DBUG_VOID_RETURN; } @@ -2929,23 +2960,23 @@ void ha_federatedx::position(const uchar *record) int ha_federatedx::rnd_pos(uchar *buf, uchar *pos) { - int result; + int retval; + FEDERATEDX_IO_RESULT *result= stored_result; DBUG_ENTER("ha_federatedx::rnd_pos"); ha_statistic_increment(&SSV::ha_read_rnd_count); - if (table->s->primary_key != MAX_KEY) - { - /* We have a primary key, so use index_read_idx to find row */ - result= index_read_idx(buf, table->s->primary_key, pos, - ref_length, HA_READ_KEY_EXACT); - } - else - { - /* otherwise, get the old record ref as obtained in ::position */ - memcpy(buf, pos, ref_length); - result= 0; - } - table->status= result ? STATUS_NOT_FOUND : 0; - DBUG_RETURN(result); + + if ((retval= txn->acquire(share, TRUE, &io))) + goto error; + + if ((retval= io->seek_position(&result, pos))) + goto error; + + retval= read_next(buf, result); + DBUG_RETURN(retval); + +error: + table->status= STATUS_NOT_FOUND; + DBUG_RETURN(retval); } @@ -2996,15 +3027,20 @@ int ha_federatedx::rnd_pos(uchar *buf, uchar *pos) int ha_federatedx::info(uint flag) { uint error_code; + THD *thd= current_thd; + federatedx_txn *tmp_txn; federatedx_io *tmp_io= 0, **iop= 0; DBUG_ENTER("ha_federatedx::info"); error_code= ER_QUERY_ON_FOREIGN_DATA_SOURCE; + // external_lock may not have been called so txn may not be set + tmp_txn= get_txn(thd); + /* we want not to show table status if not needed to do so */ if (flag & (HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_AUTO)) { - if (!*(iop= &io) && (error_code= txn->acquire(share, TRUE, (iop= &tmp_io)))) + if (!*(iop= &io) && (error_code= tmp_txn->acquire(share, TRUE, (iop= &tmp_io)))) goto fail; } @@ -3029,14 +3065,14 @@ int ha_federatedx::info(uint flag) If ::info created it's own transaction, close it. This happens in case of show table status; */ - txn->release(&tmp_io); + tmp_txn->release(&tmp_io); DBUG_RETURN(0); error: if (iop && *iop) { - my_printf_error((*iop)->error_code(), "Got error: %d : %s", MYF(0), + my_printf_error((*iop)->error_code(), "Received error: %d : %s", MYF(0), (*iop)->error_code(), (*iop)->error_str()); } else if (remote_error_number != -1 /* error already reported */) @@ -3045,7 +3081,7 @@ error: my_error(error_code, MYF(0), ER(error_code)); } fail: - txn->release(&tmp_io); + tmp_txn->release(&tmp_io); DBUG_RETURN(error_code); } @@ -3105,12 +3141,44 @@ int ha_federatedx::extra(ha_extra_function operation) int ha_federatedx::reset(void) { + int error = 0; + insert_dup_update= FALSE; ignore_duplicates= FALSE; replace_duplicates= FALSE; - return 0; -} + position_called= FALSE; + if (stored_result) + insert_dynamic(&results, (uchar*) &stored_result); + stored_result= 0; + + if (results.elements) + { + federatedx_txn *tmp_txn; + federatedx_io *tmp_io= 0, **iop; + + // external_lock may not have been called so txn may not be set + tmp_txn= get_txn(current_thd); + + if (!*(iop= &io) && (error= tmp_txn->acquire(share, TRUE, (iop= &tmp_io)))) + { + DBUG_ASSERT(0); // Fail when testing + return error; + } + + for (uint i= 0; i < results.elements; ++i) + { + FEDERATEDX_IO_RESULT *result= 0; + get_dynamic(&results, (uchar*) &result, i); + (*iop)->free_result(result); + } + tmp_txn->release(&tmp_io); + reset_dynamic(&results); + } + + return error; + +} /* Used to delete all rows in a table. Both for cases of truncate and @@ -3237,7 +3305,7 @@ static int test_connection(MYSQL_THD thd, federatedx_io *io, str.length(0); str.append(STRING_WITH_LEN("SELECT * FROM ")); - append_identifier(thd, &str, share->table_name, + append_identifier(thd, &str, share->table_name, share->table_name_length); str.append(STRING_WITH_LEN(" WHERE 1=0")); @@ -3288,14 +3356,14 @@ int ha_federatedx::create(const char *name, TABLE *table_arg, pthread_mutex_lock(&federatedx_mutex); tmp_share.s= get_server(&tmp_share, NULL); pthread_mutex_unlock(&federatedx_mutex); - + if (tmp_share.s) { tmp_txn= get_txn(thd); if (!(retval= tmp_txn->acquire(&tmp_share, TRUE, &tmp_io))) { retval= test_connection(thd, tmp_io, &tmp_share); - tmp_txn->release(&tmp_io); + tmp_txn->release(&tmp_io); } free_server(tmp_txn, tmp_share.s); } diff --git a/storage/federatedx/ha_federatedx.h b/storage/federatedx/ha_federatedx.h index 2fd3c559321..2820f8a6c29 100644 --- a/storage/federatedx/ha_federatedx.h +++ b/storage/federatedx/ha_federatedx.h @@ -1,5 +1,5 @@ -/* -Copyright (c) 2008, Patrick Galbraith +/* +Copyright (c) 2008, Patrick Galbraith All rights reserved. Redistribution and use in source and binary forms, with or without @@ -43,7 +43,7 @@ class federatedx_io; typedef struct st_fedrated_server { MEM_ROOT mem_root; uint use_count, io_count; - + uchar *key; uint key_length; @@ -74,10 +74,10 @@ typedef struct st_fedrated_server { #include -/* +/* handler::print_error has a case statement for error numbers. - This value is (10000) is far out of range and will envoke the - default: case. + This value is (10000) is far out of range and will envoke the + default: case. (Current error range is 120-159 from include/my_base.h) */ #define HA_FEDERATEDX_ERROR_WITH_REMOTE_SYSTEM 10000 @@ -158,7 +158,7 @@ public: const char * get_database() const { return server->database; } ushort get_port() const { return server->port; } const char * get_socket() const { return server->socket; } - + static bool handles_scheme(const char *scheme); static federatedx_io *construct(MEM_ROOT *server_root, FEDERATEDX_SERVER *server); @@ -167,7 +167,7 @@ public: { return alloc_root(mem_root, size); } static void operator delete(void *ptr, size_t size) { TRASH(ptr, size); } - + virtual int query(const char *buffer, uint length)=0; virtual FEDERATEDX_IO_RESULT *store_result()=0; @@ -178,25 +178,25 @@ public: virtual int error_code()=0; virtual const char *error_str()=0; - + virtual void reset()=0; virtual int commit()=0; virtual int rollback()=0; - + virtual int savepoint_set(ulong sp)=0; virtual ulong savepoint_release(ulong sp)=0; virtual ulong savepoint_rollback(ulong sp)=0; virtual void savepoint_restrict(ulong sp)=0; - + virtual ulong last_savepoint() const=0; virtual ulong actual_savepoint() const=0; virtual bool is_autocommit() const=0; virtual bool table_metadata(ha_statistics *stats, const char *table_name, uint table_name_length, uint flag) = 0; - + /* resultset operations */ - + virtual void free_result(FEDERATEDX_IO_RESULT *io_result)=0; virtual unsigned int get_num_fields(FEDERATEDX_IO_RESULT *io_result)=0; virtual my_ulonglong get_num_rows(FEDERATEDX_IO_RESULT *io_result)=0; @@ -206,6 +206,13 @@ public: unsigned int column)=0; virtual bool is_column_null(const FEDERATEDX_IO_ROW *row, unsigned int column) const=0; + + virtual size_t get_ref_length() const=0; + virtual void mark_position(FEDERATEDX_IO_RESULT *io_result, + void *ref)=0; + virtual int seek_position(FEDERATEDX_IO_RESULT **io_result, + const void *ref)=0; + }; @@ -215,12 +222,12 @@ class federatedx_txn ulong savepoint_level; ulong savepoint_stmt; ulong savepoint_next; - + void release_scan(); public: federatedx_txn(); ~federatedx_txn(); - + bool has_connections() const { return txn_list != NULL; } bool in_transaction() const { return savepoint_next != 0; } int acquire(FEDERATEDX_SHARE *share, bool readonly, federatedx_io **io); @@ -254,8 +261,12 @@ class ha_federatedx: public handler federatedx_txn *txn; federatedx_io *io; FEDERATEDX_IO_RESULT *stored_result; + /** + Array of all stored results we get during a query execution. + */ + DYNAMIC_ARRAY results; + bool position_called; uint fetch_num; // stores the fetch num - FEDERATEDX_IO_OFFSET current_position; // Current position used by ::position() int remote_error_number; char remote_error_buf[FEDERATEDX_QUERY_BUFFER_SIZE]; bool ignore_duplicates, replace_duplicates; @@ -269,7 +280,7 @@ private: */ uint convert_row_to_internal_format(uchar *buf, FEDERATEDX_IO_ROW *row, FEDERATEDX_IO_RESULT *result); - bool create_where_from_key(String *to, KEY *key_info, + bool create_where_from_key(String *to, KEY *key_info, const key_range *start_key, const key_range *end_key, bool records_in_range, bool eq_range); @@ -348,18 +359,18 @@ public: Talk to Kostja about this - how to get the number of rows * ... disk scan time on other side (block size, size of the row) + network time ... - The reason for "records * 1000" is that such a large number forces + The reason for "records * 1000" is that such a large number forces this to use indexes " */ double scan_time() { DBUG_PRINT("info", ("records %lu", (ulong) stats.records)); - return (double)(stats.records*1000); + return (double)(stats.records*1000); } /* The next method will never be called if you do not implement indexes. */ - double read_time(uint index, uint ranges, ha_rows rows) + double read_time(uint index, uint ranges, ha_rows rows) { /* Per Brian, this number is bugus, but this method must be implemented, From 6795a545e382a2de7104cdc57e0a2834e4aa9b67 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 12 Aug 2010 20:55:00 +0300 Subject: [PATCH 375/461] Trivial optimizations and cleanups --- storage/maria/ma_bitmap.c | 2 +- storage/maria/ma_checkpoint.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/storage/maria/ma_bitmap.c b/storage/maria/ma_bitmap.c index f75df06cadc..cec7cd782be 100644 --- a/storage/maria/ma_bitmap.c +++ b/storage/maria/ma_bitmap.c @@ -365,8 +365,8 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share) */ if (bitmap->changed) { - res= write_changed_bitmap(share, bitmap); bitmap->changed= FALSE; + res= write_changed_bitmap(share, bitmap); } /* We do NOT use FLUSH_KEEP_LAZY because we must be sure that bitmap diff --git a/storage/maria/ma_checkpoint.c b/storage/maria/ma_checkpoint.c index 6d1a6332c54..8a6e2b5d960 100644 --- a/storage/maria/ma_checkpoint.c +++ b/storage/maria/ma_checkpoint.c @@ -827,7 +827,6 @@ static int collect_tables(LEX_STRING *str, LSN checkpoint_start_log_horizon) not seen again in the loop. */ share->in_checkpoint= MARIA_CHECKPOINT_LOOKS_AT_ME; - /** @todo avoid strlen() */ total_names_length+= share->open_file_name.length; } } From b87a73773913ebdcfdacb2d8b8704958bc0e93f2 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sat, 14 Aug 2010 18:44:45 +0400 Subject: [PATCH 376/461] missing DBUG_RETURNs --- mysys/my_getwd.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mysys/my_getwd.c b/mysys/my_getwd.c index e6b867e2753..a18c296a7e1 100644 --- a/mysys/my_getwd.c +++ b/mysys/my_getwd.c @@ -51,7 +51,7 @@ int my_getwd(char * buf, size_t size, myf MyFlags) (long) buf, (uint) size, MyFlags)); if (size < 1) - return(-1); + DBUG_RETURN(-1); if (curr_dir[0]) /* Current pos is saved here */ VOID(strmake(buf,&curr_dir[0],size-1)); @@ -59,12 +59,12 @@ int my_getwd(char * buf, size_t size, myf MyFlags) { #if defined(HAVE_GETCWD) if (size < 2) - return(-1); + DBUG_RETURN(-1); if (!getcwd(buf,(uint) (size-2)) && MyFlags & MY_WME) { my_errno=errno; my_error(EE_GETWD,MYF(ME_BELL+ME_WAITTANG),errno); - return(-1); + DBUG_RETURN(-1); } #elif defined(HAVE_GETWD) { @@ -74,12 +74,12 @@ int my_getwd(char * buf, size_t size, myf MyFlags) } #elif defined(VMS) if (size < 2) - return(-1); + DBUG_RETURN(-1); if (!getcwd(buf,size-2,1) && MyFlags & MY_WME) { my_errno=errno; my_error(EE_GETWD,MYF(ME_BELL+ME_WAITTANG),errno); - return(-1); + DBUG_RETURN(-1); } intern_filename(buf,buf); #else From 8da7be63027403c5b82eda378842142cdcbad95c Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 17 Aug 2010 11:14:46 +0400 Subject: [PATCH 377/461] generalization of mtr to support suite.pm extensions: * no automatic --loose-skip-innodb added by mtr based on the test name. instead loose-skip-innodb is now in the default_mysqld.cnf * have_innodb_plugin.inc is changed to give a verbose "skip" message (instead of "require: true") * My::Suite class. It's support in mtr, and everywhere * support for suite.pm * when sorting tests, take combinations into account * support for SUITENAME_COMBINATIONS * no special treatment for innodb_plugin in mtr_cases.pm * two special pre-created config groups: ENV and OPT * allow option names to start from # * allow magic option to have an argument * remove dead code * fix @-substitution to works as expected * new processes take the value of $opt_verbose automatically, no need to pass it to a constructor * innodb_plugin suite uses suite.pm and combinations file to test as much as possible (innodb plugin, xtradb plugin, xtradb static - whatever available) * besides test-master.opt and test-slave.opt a test.opt file is also loaded, both for master and slave * .opt files for all included files are loaded too * progress report in the xterm titlebar --- mysql-test/Makefile.am | 5 +- mysql-test/README.suites | 136 +++++ mysql-test/include/default_my.cnf | 3 - mysql-test/include/default_mysqld.cnf | 5 +- .../include/have_binlog_format_mixed.opt | 1 + mysql-test/include/have_binlog_format_row.opt | 1 + .../include/have_binlog_format_statement.opt | 2 + mysql-test/include/have_exampledb.inc | 4 - mysql-test/include/have_innodb.inc | 9 +- mysql-test/include/have_innodb.opt | 1 + mysql-test/include/have_innodb_plugin.inc | 9 +- mysql-test/include/have_log_bin-master.opt | 1 + mysql-test/include/have_log_bin-slave.opt | 1 + mysql-test/include/have_log_bin.inc | 2 + mysql-test/include/have_pbxt.opt | 1 + mysql-test/lib/My/Config.pm | 131 +++-- mysql-test/lib/My/ConfigFactory.pm | 54 +- mysql-test/lib/My/Handles.pm | 0 mysql-test/lib/My/SafeProcess.pm | 2 +- mysql-test/lib/My/Suite.pm | 10 + mysql-test/lib/My/Test.pm | 6 + mysql-test/lib/mtr_cases.pm | 214 ++------ mysql-test/lib/mtr_report.pm | 6 +- mysql-test/mysql-test-run.pl | 512 +++++++++--------- mysql-test/r/exampledb.result | 8 - mysql-test/r/warnings_engine_disabled.result | 17 +- .../suite/binlog/t/binlog_base64_flag.test | 1 + .../suite/binlog/t/binlog_old_versions.test | 1 + .../t/binlog_row_mix_innodb_myisam-master.opt | 2 +- .../t/binlog_stm_mix_innodb_myisam-master.opt | 2 +- .../federated/federated_innodb-slave.opt | 2 +- mysql-test/suite/federated/my.cnf | 3 +- mysql-test/suite/funcs_1/t/is_columns_is.test | 1 + mysql-test/suite/innodb/t/innodb-master.opt | 2 +- .../t/innodb-semi-consistent-master.opt | 2 +- .../innodb_autoinc_lock_mode_zero-master.opt | 2 +- .../suite/innodb/t/innodb_bug30919-master.opt | 2 +- .../suite/innodb/t/innodb_bug39438-master.opt | 2 +- .../suite/innodb/t/innodb_bug52663-master.opt | 2 +- .../suite/innodb/t/innodb_bug53674-master.opt | 2 +- .../suite/innodb/t/innodb_bug53674.test | 1 + .../t/innodb_lock_wait_timeout_1-master.opt | 2 +- .../suite/innodb/t/innodb_misc1-master.opt | 2 +- .../suite/innodb/t/innodb_mysql-master.opt | 2 +- .../innodb/t/innodb_mysql_rbk-master.opt | 2 +- .../t/innodb_timeout_rollback-master.opt | 2 +- mysql-test/suite/innodb_plugin/combinations | 12 + mysql-test/suite/innodb_plugin/suite.pm | 17 + .../t/innodb-consistent-master.opt | 2 +- .../suite/innodb_plugin/t/innodb-master.opt | 2 +- .../t/innodb-semi-consistent-master.opt | 2 +- .../t/innodb-use-sys-malloc-master.opt | 2 +- .../innodb_autoinc_lock_mode_zero-master.opt | 2 +- .../t/innodb_bug30919-master.opt | 2 +- .../t/innodb_bug39438-master.opt | 2 +- .../t/innodb_bug42101-nonzero-master.opt | 2 +- .../t/innodb_bug53674-master.opt | 2 +- .../t/innodb_lock_wait_timeout_1-master.opt | 2 +- .../innodb_plugin/t/innodb_mysql-master.opt | 2 +- .../t/innodb_mysql_rbk-master.opt | 2 +- .../t/innodb_timeout_rollback-master.opt | 2 +- .../ndb_team/t/rpl_ndb_mix_innodb-master.opt | 2 +- .../t/partition_debug_sync_innodb-master.opt | 2 +- .../t/partition_special_innodb-master.opt | 2 +- mysql-test/suite/pbxt/my.cnf | 1 + mysql-test/suite/pbxt/t/suite.opt | 1 - ...percona_innodb_doublewrite_file-master.opt | 2 +- .../rpl/r/rpl_row_basic_11bugs-master.opt | 2 +- .../rpl/r/rpl_row_basic_11bugs-slave.opt | 2 +- mysql-test/suite/rpl/rpl_1slave_base.cnf | 3 - .../t/rpl_begin_commit_rollback-master.opt | 2 +- .../rpl/t/rpl_begin_commit_rollback-slave.opt | 2 +- .../suite/rpl/t/rpl_circular_for_4_hosts.cnf | 8 +- .../rpl/t/rpl_concurrency_error-master.opt | 2 +- mysql-test/suite/rpl/t/rpl_ddl-slave.opt | 1 + .../suite/rpl/t/rpl_deadlock_innodb-slave.opt | 2 +- mysql-test/suite/rpl/t/rpl_innodb-master.opt | 2 +- .../rpl/t/rpl_innodb_bug28430-master.opt | 2 +- .../suite/rpl/t/rpl_innodb_bug28430-slave.opt | 2 +- .../rpl/t/rpl_start_stop_slave-slave.opt | 2 +- mysql-test/suite/rpl/t/rpl_trigger.test | 9 +- mysql-test/suite/rpl/t/rpl_typeconv-slave.opt | 2 +- .../suite/rpl_ndb/t/rpl_ndb_2innodb-slave.opt | 2 +- .../suite/rpl_ndb/t/rpl_ndb_2other-slave.opt | 2 +- .../suite/rpl_ndb/t/rpl_ndb_circular_2ch.cnf | 4 - .../rpl_ndb/t/rpl_ndb_innodb2ndb-master.opt | 2 +- .../rpl_ndb/t/rpl_ndb_innodb_trans-slave.opt | 2 +- ..._ndb_mixed_engines_transactions-master.opt | 2 +- ...l_ndb_mixed_engines_transactions-slave.opt | 2 +- .../rpl_ndb/t/rpl_ndb_mixed_tables-master.opt | 2 +- .../rpl_ndb/t/rpl_ndb_mixed_tables-slave.opt | 2 +- .../rpl_ndb/t/rpl_ndb_stm_innodb-master.opt | 2 +- .../sys_vars/t/autocommit_func-master.opt | 2 +- .../character_set_filesystem_func-master.opt | 2 +- .../suite/sys_vars/t/identity_func-master.opt | 2 +- .../innodb_autoinc_lock_mode_func-master.opt | 2 +- .../sys_vars/t/last_insert_id_func-master.opt | 2 +- .../t/max_binlog_cache_size_func-master.opt | 2 +- .../t/storage_engine_basic-master.opt | 2 +- .../sys_vars/t/tx_isolation_func-master.opt | 4 +- mysql-test/t/bug46760-master.opt | 4 +- .../t/concurrent_innodb_safelog-master.opt | 2 +- .../t/concurrent_innodb_unsafelog-master.opt | 4 +- mysql-test/t/connect.cnf | 2 +- mysql-test/t/exampledb.test | 22 - mysql-test/t/partition_innodb-master.opt | 2 +- ...artition_innodb_semi_consistent-master.opt | 2 +- mysql-test/t/pool_of_threads.cnf | 2 +- mysql-test/t/sp_trans_log.test | 2 +- mysql-test/t/unsafe_binlog_innodb-master.opt | 2 +- mysql-test/t/warnings_engine_disabled.test | 19 +- 111 files changed, 708 insertions(+), 681 deletions(-) create mode 100644 mysql-test/README.suites create mode 100644 mysql-test/include/have_binlog_format_mixed.opt create mode 100644 mysql-test/include/have_binlog_format_row.opt create mode 100644 mysql-test/include/have_binlog_format_statement.opt delete mode 100644 mysql-test/include/have_exampledb.inc create mode 100644 mysql-test/include/have_innodb.opt create mode 100644 mysql-test/include/have_log_bin-master.opt create mode 100644 mysql-test/include/have_log_bin-slave.opt create mode 100644 mysql-test/include/have_pbxt.opt mode change 100755 => 100644 mysql-test/lib/My/Handles.pm create mode 100644 mysql-test/lib/My/Suite.pm delete mode 100644 mysql-test/r/exampledb.result create mode 100644 mysql-test/suite/innodb_plugin/combinations create mode 100644 mysql-test/suite/innodb_plugin/suite.pm delete mode 100644 mysql-test/suite/pbxt/t/suite.opt create mode 100644 mysql-test/suite/rpl/t/rpl_ddl-slave.opt delete mode 100644 mysql-test/t/exampledb.test diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 4ea634688fe..7a0d4c2d6fc 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -63,13 +63,14 @@ nobase_test_DATA = \ lib/My/SafeProcess.pm \ lib/My/File/Path.pm \ lib/My/SysInfo.pm \ + lib/My/Suite.pm \ lib/My/CoreDump.pm \ lib/My/SafeProcess/Base.pm \ lib/My/SafeProcess/safe_process.pl SUBDIRS = lib/My/SafeProcess -EXTRA_DIST = README \ +EXTRA_DIST = README README.suites \ $(test_SCRIPTS) \ $(nobase_test_DATA) @@ -101,7 +102,7 @@ TEST_DIRS = t r include std_data std_data/parts collections \ suite/ndb suite/ndb/t suite/ndb/r \ suite/rpl_ndb suite/rpl_ndb/t suite/rpl_ndb/r \ suite/parts suite/parts/t suite/parts/r suite/parts/inc \ - suite/pbxt/t suite/pbxt/r \ + suite/pbxt/t suite/pbxt/r suite/pbxt \ suite/innodb suite/innodb/t suite/innodb/r suite/innodb/include \ suite/innodb_plugin suite/innodb_plugin/t suite/innodb_plugin/r suite/innodb_plugin/include \ suite/percona \ diff --git a/mysql-test/README.suites b/mysql-test/README.suites new file mode 100644 index 00000000000..d8f39cbc39f --- /dev/null +++ b/mysql-test/README.suites @@ -0,0 +1,136 @@ +These are the assorted notes that will be turned into a manual eventually. + +========================== +Tests are organized in suites. +A "suite" is a subdirectory inside, one of, + + /mysql-test/suite + /mysql-test + /share/mysql-test/suite + /share/mysql-test + /share/mysql/mysql-test/suite + /share/mysql/mysql-test + /storage/*/mysql-test-suites + +This is supposed to cover running mtr from a source directory and installed. + +========================== +A suite contains *.test and *.result files. They can be in the t/ and r/ +subdirectories under the suitedir or directly in the suitedir +(that is suitedir/t/*.test or suitedir/*.test, same for *.result)) + +========================== +A suite can contain a suite.opt file - at the same location where .test +files are. As usual, the .opt file can use $-substitutions for the +environment variables. + +Usually, using my.cnf template (see below) is preferrable. +========================== +A suite can have suite.pm file in the suitedir. It must declare a +package that inherits from My::Suite. + +The suite.pm needs to have @ISA=qw(My::Suite) and it must end +with bless {}; - that is it must return an object of that class. + +A suite class can define config_files() and servers() methods. + +A config_files method returns a list of additional config files (besides +my.cnf), that this suite needs to be created. For every file it specifies +a function that will create it, when given a My::Config object. For example: + + sub config_files { ( 'config.ini' => \&write_ini, + 'new.conf' => \&do_new_conf ) } + +A servers method returns a list of processes that needs to be started for +this suite. A process is specified as a pair (regex, hash). A regex must +match a section in the my.cnf template (for example, qr/mysqld\./ corresponds +to all mysqld processes), a hash contains these options: + + SORT => a number, processes are started in the order of increasing SORT + values (and stopped in the reverse order). mysqld has number 300. + START => a function to start a process. It takes two arguments, + My::Config::Group and My::Test. If START is undefined the process + will not be started. + WAIT => a function waits for the process to be started. It takes + My::Config::Group as an argument. Internallys mtr first invokes + START for all processes, then WAIT for all started processes. + +example: sub servers { ( qr/^foo$/ => { SORT => 200, + START => \&start_foo, + WAIT => \&wait_foo } ) } + +See sphinx suite for an example. + +========================== +A suite can have my.cnf template file in the suitedir. +A my.cnf template uses a normal my.cnf syntax - groups, options, +and values - with templating extensions. They are + +* There can be groups with non-standard names, not used by mysqld. + These groups may be used by the suite.pm file somehow. + For example, they can be written to the additional config files. + See sphinx suite for an example. + +* There can be ENV group. It sets values for the environment variables. + +* Values can refer to each other - they will be expanded as needed. + A reference to a value of an option looks like @groupname.optionname. + For example + + [mysqld.2] + master-port= @mysqld.1.port + + it sets the master-port in the mysqld.2 group to the value of + port in the mysqld.1 group. + +* An option name may start from '#'. In the resulting my.cnf it will look + like a comment, but it still can be referred to. For example: + + [example] + #foo = localhost:@mysqld.1.port + bar = http://@example.#foo/index.html + +* There are two special - in this regard - groups. + + Via the ENV group one can refer to any environment variable, not only + to values in the [ENV] group of my.cnf file. + + Via the OPT group one can refer to special values: + @OPT.vardir - a path to vardir + @OPT.port - a new port number is reserved out of the pool. It will not + match any other port number used by this test run. + See sphinx suite for an example. + +Most probably a suite my.cnf will need to start from + + !include include/default_my.cnf + +and then modify the configuration as necessary. +========================== + +A suite can have combinations file in the suitedir. It uses my.cnf syntax +but it cannot use @-substitutions. Instead, it can use $-substitutions for +the environment variables. Because the combination options will not be +merged to a my.cnf, but will be added to the command line. Example: + + [conf1] + opt1=val1 + + [conf2] + opt1=val2 + opt2=$HAVE_SOMETHING + +Such a file will cause every test from the suite to be run twice - once +with mysqld using --opt1=val1 and the other one with mysqld using +--opt1=val2 --opt2=$HAVE_SOMETHING + +One can limit mtr run to a subset of combinations by setting environment +variable SUITENAME_COMBINATIONS to the ':'-separated set of combination +names. E.g. + + RPL_COMBINATIONS=mix:row ./mtr --suite rpl + +See innodb_plugin suite for an example of how suite.pm may set this variable +to exclude unsupported configurations. +========================== + diff --git a/mysql-test/include/default_my.cnf b/mysql-test/include/default_my.cnf index d77fee0e200..17a418ff7b5 100644 --- a/mysql-test/include/default_my.cnf +++ b/mysql-test/include/default_my.cnf @@ -6,9 +6,6 @@ # Run the master.sh script before starting this process #!run-master-sh -log-bin= master-bin - - [mysqlbinlog] disable-force-if-open diff --git a/mysql-test/include/default_mysqld.cnf b/mysql-test/include/default_mysqld.cnf index c93762f6c25..e46c3bc3c17 100644 --- a/mysql-test/include/default_mysqld.cnf +++ b/mysql-test/include/default_mysqld.cnf @@ -13,9 +13,10 @@ key_buffer_size= 1M sort_buffer= 256K max_heap_table_size= 1M +loose-skip-innodb +loose-skip-pbxt + loose-innodb_data_file_path= ibdata1:10M:autoextend slave-net-timeout=120 -log-bin=mysqld-bin - diff --git a/mysql-test/include/have_binlog_format_mixed.opt b/mysql-test/include/have_binlog_format_mixed.opt new file mode 100644 index 00000000000..01cf3e0520f --- /dev/null +++ b/mysql-test/include/have_binlog_format_mixed.opt @@ -0,0 +1 @@ +--binlog-format=mixed diff --git a/mysql-test/include/have_binlog_format_row.opt b/mysql-test/include/have_binlog_format_row.opt new file mode 100644 index 00000000000..83ed8522e72 --- /dev/null +++ b/mysql-test/include/have_binlog_format_row.opt @@ -0,0 +1 @@ +--binlog-format=row diff --git a/mysql-test/include/have_binlog_format_statement.opt b/mysql-test/include/have_binlog_format_statement.opt new file mode 100644 index 00000000000..0dac5e9fb9c --- /dev/null +++ b/mysql-test/include/have_binlog_format_statement.opt @@ -0,0 +1,2 @@ +--binlog-format=statement + diff --git a/mysql-test/include/have_exampledb.inc b/mysql-test/include/have_exampledb.inc deleted file mode 100644 index db3985e3c7c..00000000000 --- a/mysql-test/include/have_exampledb.inc +++ /dev/null @@ -1,4 +0,0 @@ -disable_query_log; ---require r/true.require -select (support = 'YES' or support = 'DEFAULT') as `TRUE` from information_schema.engines where engine = 'example'; -enable_query_log; diff --git a/mysql-test/include/have_innodb.inc b/mysql-test/include/have_innodb.inc index 8944cc46f3e..c3c8b5cc4f2 100644 --- a/mysql-test/include/have_innodb.inc +++ b/mysql-test/include/have_innodb.inc @@ -1,4 +1,5 @@ -disable_query_log; ---require r/true.require -select (support = 'YES' or support = 'DEFAULT' or support = 'ENABLED') as `TRUE` from information_schema.engines where engine = 'innodb'; -enable_query_log; +if (!`SELECT count(*) FROM information_schema.engines WHERE + (support = 'YES' OR support = 'DEFAULT') AND + engine = 'innodb'`){ + skip Needs innodb engine; +} diff --git a/mysql-test/include/have_innodb.opt b/mysql-test/include/have_innodb.opt new file mode 100644 index 00000000000..48457b17309 --- /dev/null +++ b/mysql-test/include/have_innodb.opt @@ -0,0 +1 @@ +--loose-innodb diff --git a/mysql-test/include/have_innodb_plugin.inc b/mysql-test/include/have_innodb_plugin.inc index 6b5fc29d459..5f67fb1f97d 100644 --- a/mysql-test/include/have_innodb_plugin.inc +++ b/mysql-test/include/have_innodb_plugin.inc @@ -1,4 +1,5 @@ -disable_query_log; ---require r/true.require -SELECT (plugin_library LIKE 'ha_innodb_plugin%' OR plugin_description LIKE '%xtradb%') AS `TRUE` FROM information_schema.plugins WHERE LOWER(plugin_name) = 'innodb' AND LOWER(plugin_status) = 'active'; -enable_query_log; +if (!`SELECT COUNT(*) FROM INFORMATION_SCHEMA.PLUGINS + WHERE PLUGIN_NAME = 'innodb' AND PLUGIN_STATUS = 'active' AND + (PLUGIN_LIBRARY LIKE 'ha_innodb_plugin%' OR PLUGIN_DESCRIPTION LIKE '%xtradb%')`) { + skip Need InnoDB plugin or XtraDB; +} diff --git a/mysql-test/include/have_log_bin-master.opt b/mysql-test/include/have_log_bin-master.opt new file mode 100644 index 00000000000..9ce5d80d7e8 --- /dev/null +++ b/mysql-test/include/have_log_bin-master.opt @@ -0,0 +1 @@ +--log-bin=master-bin diff --git a/mysql-test/include/have_log_bin-slave.opt b/mysql-test/include/have_log_bin-slave.opt new file mode 100644 index 00000000000..92012982830 --- /dev/null +++ b/mysql-test/include/have_log_bin-slave.opt @@ -0,0 +1 @@ +--log-bin=slave-bin diff --git a/mysql-test/include/have_log_bin.inc b/mysql-test/include/have_log_bin.inc index 369af9b8e1d..e51205d25ad 100644 --- a/mysql-test/include/have_log_bin.inc +++ b/mysql-test/include/have_log_bin.inc @@ -6,6 +6,8 @@ # # source include/have_log_bin.inc; +source include/not_embedded.inc; + -- require r/have_log_bin.require disable_query_log; show variables like 'log_bin'; diff --git a/mysql-test/include/have_pbxt.opt b/mysql-test/include/have_pbxt.opt new file mode 100644 index 00000000000..54ba9495053 --- /dev/null +++ b/mysql-test/include/have_pbxt.opt @@ -0,0 +1 @@ +--loose-pbxt diff --git a/mysql-test/lib/My/Config.pm b/mysql-test/lib/My/Config.pm index f8416e3df3a..0955c1bb190 100644 --- a/mysql-test/lib/My/Config.pm +++ b/mysql-test/lib/My/Config.pm @@ -6,7 +6,6 @@ use strict; use warnings; use Carp; - sub new { my ($class, $option_name, $option_value)= @_; my $self= bless { name => $option_name, @@ -61,7 +60,7 @@ sub insert { $option->{value}= $value; } else { - my $option= My::Config::Option->new($option_name, $value); + $option= My::Config::Option->new($option_name, $value); # Insert option in list push(@{$self->{options}}, $option); # Insert option in hash @@ -163,6 +162,62 @@ sub if_exist { return $option->value(); } +package My::Config::Group::ENV; +our @ISA=qw(My::Config::Group); + +use strict; +use warnings; +use Carp; + +sub new { + my ($class, $group_name)= @_; + bless My::Config::Group->new($group_name), $class; +} + +# +# Return value for an option in the group, fail if it does not exist +# +sub value { + my ($self, $option_name)= @_; + my $option= $self->option($option_name); + + if (! defined($option) and defined $ENV{$option_name}) { + my $value= $ENV{$option_name}; + $option= My::Config::Option->new($option_name, $value); + } + + croak "No option named '$option_name' in group '$self->{name}'" + if ! defined($option); + + return $option->value(); +} + +package My::Config::Group::OPT; +our @ISA=qw(My::Config::Group); + +use strict; +use warnings; +use Carp; + +sub new { + my ($class, $group_name)= @_; + bless My::Config::Group->new($group_name), $class; +} + +sub options { + my ($self)= @_; + () +} + +sub value { + my ($self, $option_name)= @_; + my $option= $self->option($option_name); + + croak "No option named '$option_name' in group '$self->{name}'" + if ! defined($option); + + return $option->value()->(); +} package My::Config; @@ -182,7 +237,10 @@ sub new { my ($class, $path)= @_; my $group_name= undef; - my $self= bless { groups => [] }, $class; + my $self= bless { groups => [ + My::Config::Group::ENV->new('ENV'), + My::Config::Group::OPT->new('OPT'), + ] }, $class; my $F= IO::File->new($path, "<") or croak "Could not open '$path': $!"; @@ -199,19 +257,13 @@ sub new { } # Magic #! comments - elsif ( $line =~ /^#\!/) { - my $magic= $line; + elsif ( $line =~ /^(#\!\S+)(?:\s*(.*?)\s*)?$/) { + my ($magic, $arg)= ($1, $2); croak "Found magic comment '$magic' outside of group" unless $group_name; #print "$magic\n"; - $self->insert($group_name, $magic, undef); - } - - # Comments - elsif ( $line =~ /^#/ || $line =~ /^;/) { - # Skip comment - next; + $self->insert($group_name, $magic, $arg); } # Empty lines @@ -236,7 +288,7 @@ sub new { } #