Merge lp:~akopytov/percona-server/backup-locks into lp:percona-server/5.6

Proposed by Alexey Kopytov
Status: Superseded
Proposed branch: lp:~akopytov/percona-server/backup-locks
Merge into: lp:percona-server/5.6
Diff against target: 6338 lines (+5554/-63)
42 files modified
client/client_priv.h (+1/-0)
client/mysqldump.c (+83/-3)
mysql-test/include/backup_locks_binlog.inc (+803/-0)
mysql-test/r/backup_locks.result (+883/-0)
mysql-test/r/backup_locks_binlog_mixed.result (+573/-0)
mysql-test/r/backup_locks_binlog_row.result (+579/-0)
mysql-test/r/backup_locks_binlog_stmt.result (+575/-0)
mysql-test/r/backup_locks_mysqldump.result (+143/-0)
mysql-test/suite/funcs_1/r/storedproc.result (+3/-1)
mysql-test/suite/funcs_1/t/storedproc.test (+1/-1)
mysql-test/suite/rpl/r/rpl_backup_locks.result (+34/-0)
mysql-test/suite/rpl/t/rpl_backup_locks.test (+95/-0)
mysql-test/suite/sys_vars/r/have_backup_locks_basic.result (+11/-0)
mysql-test/suite/sys_vars/t/have_backup_locks_basic.test (+7/-0)
mysql-test/t/backup_locks.test (+1091/-0)
mysql-test/t/backup_locks_binlog_mixed.test (+9/-0)
mysql-test/t/backup_locks_binlog_row.test (+9/-0)
mysql-test/t/backup_locks_binlog_stmt.test (+9/-0)
mysql-test/t/backup_locks_mysqldump.test (+58/-0)
sql/binlog.cc (+27/-1)
sql/handler.h (+7/-0)
sql/lock.cc (+145/-0)
sql/log_event.cc (+19/-0)
sql/mdl.cc (+54/-23)
sql/mdl.h (+2/-0)
sql/mysqld.cc (+6/-0)
sql/rpl_rli.cc (+24/-0)
sql/set_var.h (+1/-0)
sql/share/errmsg-utf8.txt (+4/-0)
sql/sql_base.cc (+46/-0)
sql/sql_class.cc (+8/-0)
sql/sql_class.h (+49/-0)
sql/sql_cmd.h (+2/-0)
sql/sql_insert.cc (+34/-14)
sql/sql_parse.cc (+91/-1)
sql/sql_reload.cc (+3/-1)
sql/sql_yacc.yy (+31/-13)
sql/sys_vars.cc (+27/-1)
storage/blackhole/ha_blackhole.cc (+1/-1)
storage/federated/ha_federated.cc (+2/-1)
storage/innobase/handler/ha_innodb.cc (+2/-1)
storage/perfschema/ha_perfschema.cc (+2/-1)
To merge this branch: bzr merge lp:~akopytov/percona-server/backup-locks
Reviewer Review Type Date Requested Status
Laurynas Biveinis (community) Needs Information
Review via email: mp+206724@code.launchpad.net

This proposal has been superseded by a proposal from 2014-02-20.

Description of the change

    Implementation of
    https://blueprints.launchpad.net/percona-server/+spec/backup-locks

    The patch introduces 3 new SQL statements, LOCK TABLES FOR BACKUP, LOCK
    BINLOG FOR BACKUP and UNLOCK BINLOG, that can be used as a lightweight
    alternative to FLUSH TABLES WITH READ LOCK for both physical and logical
    backups.

    LOCK TABLES FOR BACKUP uses a new MDL lock type to block updates to
    all non-transactional tables and DDL statements for all tables. More
    specifically, if there’s an active LOCK TABLES FOR BACKUP lock, all
    DDL statements and all updates to MyISAM, CSV, MEMORY and ARCHIVE
    tables will be blocked in the “Waiting for backup lock” status as
    seen in PERFORMANCE_SCHEMA or PROCESSLIST. SELECT queries for all
    tables and INSERT/UPDATE/DELETE against InnoDB, Blackhole and
    Federated tables are not affected by LOCK TABLES FOR BACKUP. UNLOCK
    TABLES releases the lock acquired by LOCK TABLES FOR BACKUP.

    LOCK BINLOG FOR BACKUP uses another MDL lock type to block all
    operations that might change either binary log position or
    Exec_Master_Log_Pos (i.e. master binary log position corresponding
    to the current SQL thread state on a replication slave) as reported
    by SHOW MASTER/SLAVE STATUS. More specifically, a commit will only
    be blocked if the binary log is enabled (both globally, and for
    connection with sql_log_bin), or if commit is performed by a slave
    thread and would advance Exec_Master_Log_Pos. Connections that are
    currently blocked on the global binlog lock can be identified by the
    “Waiting for binlog lock” status in PROCESSLIST.

    UNLOCK BINLOG releases the LOCK BINLOG FOR BACKUP lock, if acquired by
    the current connection. The intended use case for XtraBackup is:

    LOCK TABLES FOR BACKUP
    ... copy .frm, MyISAM, CSV, etc. ...
    LOCK BINLOG FOR BACKUP
    UNLOCK TABLES
    ... get binlog coordinates ...
    ... wait for redo log copying to finish ...
    UNLOCK BINLOG

    Both LOCK TABLES FOR BACKUP and LOCK BINLOG FOR BACKUP have no effect if
    the current connection already owns a FTWRL lock, as it’s a more
    restrictive lock. If FTWRL is executed in a connection that has acquired
    LTFB or LBFB, FTWRL fails with an error.

    mysqldump has also been extended with a new option,
    --lock-for-backup (disabled by default). When used together with the
    --single-transaction option, the option makes mysqldump issue LOCK
    TABLES FOR BACKUP before starting the dump operation to prevent
    unsafe statements that would normally result in an inconsistent
    backup. When used without the --single-transaction option,
    --lock-for-backup is automatically converted to
    --lock-all-tables. --lock-for-backup is mutually exclusive with
    --lock-all-tables, i.e. specifying both on the command line will
    lead to an error. If the backup locks feature is not supported by
    the target server, but --lock-for-backup is specified on the command
    line, mysqldump aborts with an error.

To post a comment you must log in.
Revision history for this message
Alexey Kopytov (akopytov) wrote :
Revision history for this message
Alexey Kopytov (akopytov) wrote :

Removed a few spurious changes, added missing code comments, updated revision comments.

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :
Download full text (3.7 KiB)

    If time is short, this may go in as-is and the review comments can
    be addressed in a follow-up as needed.

    core:

    - Is the binlogging of "ROLLBACK" statement properly protected,
      i.e. does the ordered_commit call in MYSQL_BIN_LOG::rollback
      need the protection too? The testcase would be: start
      transaction, write to both InnoDB and MyISAM tables, ROLLBACK.

    - I was not able to figure out why do we need binlog lock
      protection in Rotate_log_event::do_update_pos?

    - Nor I was able to figure out why dispatch_command added

@@ -1877,6 +1877,14 @@

   THD_STAGE_INFO(thd, stage_cleaning_up);

+ if (thd->killed == THD::KILL_QUERY ||
+ thd->killed == THD::KILL_TIMEOUT ||
+ thd->killed == THD::KILL_BAD_DATA)
+ {
+ thd->killed= THD::NOT_KILLED;
+ thd->mysys_var->abort= 0;
+ }
+
   thd->reset_query();
   thd->set_command(COM_SLEEP);

    - Dead store error= 1 in the case of
      backup_binlog_lock.acquire_protection failure.

    - Indentation error at sql_parse.cc line 4233

    parser:

    - The parser changes cause "unlock" as a statement label to be
      treated as ER_PARSE_ERROR instead ER_SP_BADSTATEMENT, as
      recorded in funcs_1/storedproc. Which leaves the if
      (lex->sphead) ... in unlock symbol rule as dead code. Is that
      intentional? It is possible to avoid this by rewriting it as

unlock:
          UNLOCK_SYM
          {
            LEX *lex= Lex;

            if (lex->sphead)
            {
              my_error(ER_SP_BADSTATEMENT, MYF(0), "UNLOCK");
              MYSQL_YYABORT;
            }
          }
          unlock_variant
          {}
 ;

unlock_variant:
          BINLOG_SYM
          {
            Lex->sql_command= SQLCOM_UNLOCK_BINLOG;
          }
        | table_or_tables
          {
            Lex->sql_command= SQLCOM_UNLOCK_TABLES;
          }
        ;

      which is also a bit more localized change against trunk.

    mysqldump:

    - might be good to include a note in docs that --lock-for-backup
      always disables --lock-tables (by --single-transaction if
      specified or by --lock-for-backup converted to --lock-all-tables
      otherwise).

    - It looks like mysqldump will issue an unbalanced UNLOCK TABLES
      if --single-transaction is the only option given. This appears
      to be benign and pre-existing.

    MTR:

    - possible to do s/STOP SLAVE;--source
      include/wait_for_slave_to_stop.inc/--source
      include/stop_slave.inc, likewise for START SLAVE, unless for
      some reason you prefer the current form?

    - It is of course true that there are many possible test
      combinations that could be added to the testcases. I tried to
      list a selected few that are single-threaded and IMHO required:

    - Need a test that checks for a LTFB/LBFB failure if issued by a
      user without RELOAD privilege.

    - Need a test for crash-safe slave: slave server binlog on, log
      slave updates off, --master-info-repository=TABLE,
      --relay-log-info-repository=TABLE, LOCK BINLOG on the slave,
      verify that updates from the master are not blocked.

    - I was not able to find a test where a single connection w...

Read more...

review: Needs Information
Revision history for this message
Alexey Kopytov (akopytov) wrote :

> Review: Needs Information
>
> If time is short, this may go in as-is and the review comments can
> be addressed in a follow-up as needed.
>
> core:
>
> - Is the binlogging of "ROLLBACK" statement properly protected,
> i.e. does the ordered_commit call in MYSQL_BIN_LOG::rollback
> need the protection too? The testcase would be: start
> transaction, write to both InnoDB and MyISAM tables, ROLLBACK.
>

No, ROLLBACK does not need protection for the same reasons as FTWRL
only blocks COMMITs, but not ROLLBACKs.

> - I was not able to figure out why do we need binlog lock
> protection in Rotate_log_event::do_update_pos?
>

Because it updates master binary coordinates via
Relay_log_info::inc_group_relay_log_pos().

> - Nor I was able to figure out why dispatch_command added
>
> @@ -1877,6 +1877,14 @@
>
> THD_STAGE_INFO(thd, stage_cleaning_up);
>
> + if (thd->killed == THD::KILL_QUERY ||
> + thd->killed == THD::KILL_TIMEOUT ||
> + thd->killed == THD::KILL_BAD_DATA)
> + {
> + thd->killed= THD::NOT_KILLED;
> + thd->mysys_var->abort= 0;
> + }
> +
> thd->reset_query();
> thd->set_command(COM_SLEEP);
>

That is required to properly handle errors in situations when a COMMIT is
waiting on a binlog lock and that fails for whatever reasons.

> - Dead store error= 1 in the case of
> backup_binlog_lock.acquire_protection failure.

Removed.

>
> - Indentation error at sql_parse.cc line 4233
>

Fixed.

> parser:
>
> - The parser changes cause "unlock" as a statement label to be
> treated as ER_PARSE_ERROR instead ER_SP_BADSTATEMENT, as
> recorded in funcs_1/storedproc. Which leaves the if
> (lex->sphead) ... in unlock symbol rule as dead code. Is that
> intentional? It is possible to avoid this by rewriting it as
>

That is not dead code. That code prevents UNLOCK TABLES/BINLOG from
inclusion into stored procedures. In fact, the current behavior re:
unlock as a statement label is more correct. It is indeed not a
statement that is not allowed in SP, but a genuine parse error.

[...]

> MTR:
>
> - possible to do s/STOP SLAVE;--source
> include/wait_for_slave_to_stop.inc/--source
> include/stop_slave.inc, likewise for START SLAVE, unless for
> some reason you prefer the current form?
>

For my purposes, both would be exactly the same sequence of commands
executed by MTR.

> - It is of course true that there are many possible test
> combinations that could be added to the testcases. I tried to
> list a selected few that are single-threaded and IMHO required:
>

I have all of that + many more items in my list of things that would be
nice to test. I simply don’t have time for that ATM. Feel free to create
a QA request, and I will chime in with more suggestions.

--
Best regards,
Alexey.

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

> I have all of that + many more items in my list of things that would be
> nice to test. I simply don’t have time for that ATM. Feel free to create
> a QA request, and I will chime in with more suggestions.

OK: https://blueprints.launchpad.net/percona-server/+spec/backup-locks-mtr

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'client/client_priv.h'
--- client/client_priv.h 2013-06-25 13:13:06 +0000
+++ client/client_priv.h 2014-02-20 11:26:00 +0000
@@ -104,6 +104,7 @@
104 OPT_SERVER_PUBLIC_KEY,104 OPT_SERVER_PUBLIC_KEY,
105 OPT_ENABLE_CLEARTEXT_PLUGIN,105 OPT_ENABLE_CLEARTEXT_PLUGIN,
106 OPT_INNODB_OPTIMIZE_KEYS,106 OPT_INNODB_OPTIMIZE_KEYS,
107 OPT_LOCK_FOR_BACKUP,
107 OPT_MAX_CLIENT_OPTION108 OPT_MAX_CLIENT_OPTION
108};109};
109110
110111
=== modified file 'client/mysqldump.c'
--- client/mysqldump.c 2013-12-16 08:45:31 +0000
+++ client/mysqldump.c 2014-02-20 11:26:00 +0000
@@ -143,6 +143,7 @@
143static char * opt_mysql_unix_port=0;143static char * opt_mysql_unix_port=0;
144static char *opt_bind_addr = NULL;144static char *opt_bind_addr = NULL;
145static int first_error=0;145static int first_error=0;
146static uint opt_lock_for_backup= 0;
146static DYNAMIC_STRING extended_row;147static DYNAMIC_STRING extended_row;
147#include <sslopt-vars.h>148#include <sslopt-vars.h>
148FILE *md_result_file= 0;149FILE *md_result_file= 0;
@@ -247,6 +248,11 @@
247 "Adds 'STOP SLAVE' prior to 'CHANGE MASTER' and 'START SLAVE' to bottom of dump.",248 "Adds 'STOP SLAVE' prior to 'CHANGE MASTER' and 'START SLAVE' to bottom of dump.",
248 &opt_slave_apply, &opt_slave_apply, 0, GET_BOOL, NO_ARG,249 &opt_slave_apply, &opt_slave_apply, 0, GET_BOOL, NO_ARG,
249 0, 0, 0, 0, 0, 0},250 0, 0, 0, 0, 0, 0},
251 {"lock-for-backup", OPT_LOCK_FOR_BACKUP, "Use lightweight metadata locks "
252 "to block updates to non-transactional tables and DDL to all tables. "
253 "This works only with --single-transaction, otherwise this option is "
254 "automatically converted to --lock-all-tables.", &opt_lock_for_backup,
255 &opt_lock_for_backup, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
250 {"bind-address", 0, "IP address to bind to.",256 {"bind-address", 0, "IP address to bind to.",
251 (uchar**) &opt_bind_addr, (uchar**) &opt_bind_addr, 0, GET_STR,257 (uchar**) &opt_bind_addr, (uchar**) &opt_bind_addr, 0, GET_STR,
252 REQUIRED_ARG, 0, 0, 0, 0, 0, 0},258 REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
@@ -995,6 +1001,23 @@
995 return(EX_USAGE);1001 return(EX_USAGE);
996 }1002 }
9971003
1004 if (opt_lock_for_backup && opt_lock_all_tables)
1005 {
1006 fprintf(stderr, "%s: You can't use --lock-for-backup and "
1007 "--lock-all-tables at the same time.\n", my_progname);
1008 return(EX_USAGE);
1009 }
1010
1011 /*
1012 Convert --lock-for-backup to --lock-all-tables if --single-transaction is
1013 not specified.
1014 */
1015 if (!opt_single_transaction && opt_lock_for_backup)
1016 {
1017 opt_lock_all_tables= 1;
1018 opt_lock_for_backup= 0;
1019 }
1020
998 /* We don't delete master logs if slave data option */1021 /* We don't delete master logs if slave data option */
999 if (opt_slave_data)1022 if (opt_slave_data)
1000 {1023 {
@@ -5390,6 +5413,20 @@
5390 "FLUSH TABLES WITH READ LOCK") );5413 "FLUSH TABLES WITH READ LOCK") );
5391}5414}
53925415
5416/**
5417 Execute LOCK TABLES FOR BACKUP if supported by the server.
5418
5419 @note If LOCK TABLES FOR BACKUP is not supported by the server, then nothing
5420 is done and no error condition is returned.
5421
5422 @returns whether there was an error or not
5423*/
5424
5425static int do_lock_tables_for_backup(MYSQL *mysql_con)
5426{
5427 return mysql_query_with_error_report(mysql_con, 0,
5428 "LOCK TABLES FOR BACKUP");
5429}
53935430
5394static int do_unlock_tables(MYSQL *mysql_con)5431static int do_unlock_tables(MYSQL *mysql_con)
5395{5432{
@@ -6153,6 +6190,35 @@
6153 die(EX_MYSQLERR, DYNAMIC_STR_ERROR_MSG);6190 die(EX_MYSQLERR, DYNAMIC_STR_ERROR_MSG);
6154}6191}
61556192
6193/**
6194 Check if the server supports LOCK TABLES FOR BACKUP.
6195
6196 @returns TRUE if there is support, FALSE otherwise.
6197*/
6198
6199static my_bool server_supports_backup_locks(void)
6200{
6201 MYSQL_RES *res;
6202 MYSQL_ROW row;
6203 my_bool rc;
6204
6205 if (mysql_query_with_error_report(mysql, &res,
6206 "SHOW VARIABLES LIKE 'have_backup_locks'"))
6207 return FALSE;
6208
6209 if ((row= mysql_fetch_row(res)) == NULL)
6210 {
6211 mysql_free_result(res);
6212 return FALSE;
6213 }
6214
6215 rc= mysql_num_fields(res) > 1 && !strcmp(row[1], "YES");
6216
6217 mysql_free_result(res);
6218
6219 return rc;
6220}
6221
61566222
6157int main(int argc, char **argv)6223int main(int argc, char **argv)
6158{6224{
@@ -6194,12 +6260,25 @@
6194 if (!path)6260 if (!path)
6195 write_header(md_result_file, *argv);6261 write_header(md_result_file, *argv);
61966262
6263 if (opt_lock_for_backup && !server_supports_backup_locks())
6264 {
6265 fprintf(stderr, "%s: Error: --lock-for-backup was specified with "
6266 "--single-transaction, but the server does not support "
6267 "LOCK TABLES FOR BACKUP.\n",
6268 my_progname);
6269 goto err;
6270 }
6271
6197 if (opt_slave_data && do_stop_slave_sql(mysql))6272 if (opt_slave_data && do_stop_slave_sql(mysql))
6198 goto err;6273 goto err;
61996274
6200 if ((opt_lock_all_tables || opt_master_data ||6275 if ((opt_lock_all_tables || opt_master_data ||
6201 (opt_single_transaction && flush_logs)) &&6276 (opt_single_transaction && flush_logs)))
6202 do_flush_tables_read_lock(mysql))6277 {
6278 if (do_flush_tables_read_lock(mysql))
6279 goto err;
6280 }
6281 else if (opt_lock_for_backup && do_lock_tables_for_backup(mysql))
6203 goto err;6282 goto err;
62046283
6205 /*6284 /*
@@ -6244,7 +6323,8 @@
6244 goto err;6323 goto err;
6245 if (opt_slave_data && do_show_slave_status(mysql))6324 if (opt_slave_data && do_show_slave_status(mysql))
6246 goto err;6325 goto err;
6247 if (opt_single_transaction && do_unlock_tables(mysql)) /* unlock but no commit! */6326 if (opt_single_transaction && (!opt_lock_for_backup || opt_master_data) &&
6327 do_unlock_tables(mysql)) /* unlock but no commit! */
6248 goto err;6328 goto err;
62496329
6250 if (opt_alltspcs)6330 if (opt_alltspcs)
62516331
=== added file 'mysql-test/include/backup_locks_binlog.inc'
--- mysql-test/include/backup_locks_binlog.inc 1970-01-01 00:00:00 +0000
+++ mysql-test/include/backup_locks_binlog.inc 2014-02-20 11:26:00 +0000
@@ -0,0 +1,803 @@
1########################################################################
2# Binlog-related backup locks tests
3########################################################################
4
5--source include/have_innodb.inc
6--source include/not_embedded.inc
7--source include/have_archive.inc
8--source include/have_csv.inc
9--source include/have_blackhole.inc
10--source include/have_log_bin.inc
11
12SELECT @@binlog_format;
13
14RESET MASTER;
15
16SHOW VARIABLES LIKE 'have_backup_locks';
17
18--echo #-----------------------------------------------------------------------
19--echo # Setup
20--echo #-----------------------------------------------------------------------
21
22# Save the initial number of concurrent sessions.
23--source include/count_sessions.inc
24
25CREATE TABLE t_innodb(a INT NOT NULL, KEY (a)) ENGINE=InnoDB;
26CREATE TABLE t_myisam(a INT NOT NULL, KEY (a)) ENGINE=MyISAM;
27CREATE TABLE t_memory(a INT NOT NULL, KEY (a)) ENGINE=MEMORY;
28CREATE TABLE t_csv(a INT NOT NULL) ENGINE=CSV;
29CREATE TABLE t_blackhole(a INT NOT NULL, KEY (a)) ENGINE=BLACKHOLE;
30CREATE TABLE t_archive(a INT NOT NULL) ENGINE=ARCHIVE;
31
32CREATE VIEW v_innodb AS SELECT * FROM t_innodb;
33CREATE VIEW v_myisam AS SELECT * FROM t_myisam;
34CREATE VIEW v_memory AS SELECT * FROM t_memory;
35CREATE VIEW v_csv AS SELECT * FROM t_csv;
36CREATE VIEW v_blackhole AS SELECT * FROM t_blackhole;
37CREATE VIEW v_archive AS SELECT * FROM t_archive;
38
39--echo #-----------------------------------------------------------------------
40--echo # Single-threaded tests
41--echo #-----------------------------------------------------------------------
42
43#
44# LBFB + DML/DDL in the same connection
45#
46
47LOCK BINLOG FOR BACKUP;
48
49DELETE FROM t_innodb;
50INSERT INTO t_innodb VALUES(0);
51UPDATE t_innodb SET a = 1;
52REPLACE INTO t_innodb VALUES(1);
53SELECT * from t_innodb;
54HANDLER t_innodb OPEN;
55HANDLER t_innodb READ a FIRST;
56HANDLER t_innodb CLOSE;
57
58DELETE FROM t_myisam;
59INSERT INTO t_myisam VALUES(0);
60UPDATE t_myisam SET a = 1;
61REPLACE INTO t_myisam VALUES(1);
62SELECT * from t_myisam;
63HANDLER t_myisam OPEN;
64HANDLER t_myisam READ a FIRST;
65HANDLER t_myisam CLOSE;
66
67DELETE FROM t_memory;
68INSERT INTO t_memory VALUES(0);
69UPDATE t_memory SET a = 1;
70REPLACE INTO t_memory VALUES(1);
71SELECT * from t_memory;
72
73DELETE FROM t_archive;
74INSERT INTO t_archive VALUES(0);
75SELECT * from t_archive;
76
77DELETE FROM t_csv;
78INSERT INTO t_csv VALUES(0);
79UPDATE t_csv SET a = 1;
80REPLACE INTO t_csv VALUES(1);
81SELECT * from t_csv;
82
83DELETE FROM t_blackhole;
84INSERT INTO t_blackhole VALUES(0);
85UPDATE t_blackhole SET a = 1;
86REPLACE INTO t_blackhole VALUES(1);
87SELECT * from t_blackhole;
88
89CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
90CREATE TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
91CREATE TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
92CREATE TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
93CREATE TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
94CREATE TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
95
96DROP TABLE tt_innodb;
97DROP TABLE tt_myisam;
98DROP TABLE tt_memory;
99DROP TABLE tt_csv;
100DROP TABLE tt_blackhole;
101DROP TABLE tt_archive;
102
103--error ER_BAD_TABLE_ERROR
104DROP TABLE non_existing;
105
106TRUNCATE TABLE t_innodb;
107TRUNCATE TABLE t_myisam;
108TRUNCATE TABLE t_memory;
109TRUNCATE TABLE t_csv;
110TRUNCATE TABLE t_blackhole;
111
112RENAME TABLE t_innodb TO tmp, tmp TO t_innodb;
113RENAME TABLE t_myisam TO tmp, tmp TO t_myisam;
114RENAME TABLE t_memory TO tmp, tmp TO t_memory;
115RENAME TABLE t_csv TO tmp, tmp TO t_csv;
116RENAME TABLE t_blackhole TO tmp, tmp TO t_blackhole;
117RENAME TABLE t_archive TO tmp, tmp TO t_archive;
118
119ALTER TABLE t_innodb ADD COLUMN b CHAR(10) NOT NULL;
120ALTER TABLE t_innodb DROP COLUMN b;
121ALTER TABLE t_myisam ADD COLUMN b CHAR(10) NOT NULL;
122ALTER TABLE t_myisam DROP COLUMN b;
123ALTER TABLE t_memory ADD COLUMN b CHAR(10) NOT NULL;
124ALTER TABLE t_memory DROP COLUMN b;
125ALTER TABLE t_csv ADD COLUMN b CHAR(10) NOT NULL;
126ALTER TABLE t_csv DROP COLUMN b;
127ALTER TABLE t_blackhole ADD COLUMN b CHAR(10) NOT NULL;
128ALTER TABLE t_blackhole DROP COLUMN b;
129ALTER TABLE t_archive ADD COLUMN b CHAR(10) NOT NULL;
130ALTER TABLE t_archive DROP COLUMN b;
131
132ALTER TABLE t_innodb ADD KEY tmp (a);
133ALTER TABLE t_innodb DROP KEY tmp;
134ALTER TABLE t_myisam ADD KEY tmp (a);
135ALTER TABLE t_myisam DROP KEY tmp;
136ALTER TABLE t_memory ADD KEY tmp (a);
137ALTER TABLE t_memory DROP KEY tmp;
138ALTER TABLE t_blackhole ADD KEY tmp (a);
139ALTER TABLE t_blackhole DROP KEY tmp;
140
141CREATE DATABASE test1;
142DROP DATABASE test1;
143
144delimiter |;
145
146CREATE PROCEDURE p1()
147BEGIN
148 SELECT 1;
149END|
150
151DROP PROCEDURE p1|
152
153CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
154BEGIN
155 RETURN 1;
156END|
157
158DROP FUNCTION f1|
159
160delimiter ;|
161
162CREATE VIEW v1 AS SELECT * FROM t_innodb;
163DROP VIEW v1;
164
165INSERT INTO v_innodb VALUES(1);
166INSERT INTO v_blackhole VALUES(1);
167INSERT INTO v_myisam VALUES(1);
168INSERT INTO v_csv VALUES(1);
169INSERT INTO v_memory VALUES(1);
170INSERT INTO v_archive VALUES(1);
171
172UNLOCK BINLOG;
173
174#
175# Test incompatibility with delay_key_write=ALL
176#
177SELECT @@delay_key_write;
178
179SET GLOBAL delay_key_write=ALL;
180--error ER_OPTION_PREVENTS_STATEMENT
181LOCK TABLES FOR BACKUP;
182
183SET GLOBAL delay_key_write=default;
184SELECT @@delay_key_write;
185
186#
187# read-only=1 + backup locks
188#
189
190SET GLOBAL read_only=1;
191
192INSERT INTO t_innodb VALUES(0);
193INSERT INTO t_myisam VALUES(0);
194
195LOCK TABLES FOR BACKUP;
196
197INSERT INTO t_innodb VALUES(0);
198--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
199INSERT INTO t_myisam VALUES(0);
200
201UNLOCK TABLES;
202
203INSERT INTO t_innodb VALUES(0);
204INSERT INTO t_myisam VALUES(0);
205
206SET GLOBAL read_only=0;
207
208#
209# Test that temporary tables are not affected by backup locks
210#
211LOCK TABLES FOR BACKUP;
212CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
213CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
214CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
215CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
216CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
217CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
218
219INSERT INTO tt_innodb VALUES(5);
220INSERT INTO tt_myisam VALUES(5);
221INSERT INTO tt_memory VALUES(5);
222INSERT INTO tt_csv VALUES(5);
223INSERT INTO tt_blackhole VALUES(5);
224INSERT INTO tt_archive VALUES(5);
225
226LOCK BINLOG FOR BACKUP;
227
228START TRANSACTION;
229SELECT * FROM tt_archive;
230SELECT * FROM tt_blackhole;
231SELECT * FROM tt_memory;
232SELECT * FROM tt_innodb;
233SELECT * FROM tt_myisam;
234INSERT INTO tt_innodb VALUES(6);
235INSERT INTO tt_myisam VALUES(6);
236INSERT INTO tt_memory VALUES(6);
237INSERT INTO tt_csv VALUES(6);
238INSERT INTO tt_blackhole VALUES(6);
239INSERT INTO tt_archive VALUES(6);
240COMMIT;
241
242SELECT * FROM tt_archive;
243SELECT * FROM tt_blackhole;
244SELECT * FROM tt_memory;
245SELECT * FROM tt_innodb;
246SELECT * FROM tt_myisam;
247
248DROP TEMPORARY TABLE tt_innodb;
249DROP TEMPORARY TABLE tt_myisam;
250DROP TEMPORARY TABLE tt_memory;
251DROP TEMPORARY TABLE tt_csv;
252DROP TEMPORARY TABLE tt_blackhole;
253DROP TEMPORARY TABLE tt_archive;
254
255UNLOCK BINLOG;
256
257UNLOCK TABLES;
258
259#
260# test that AUTOCOMMIT updates succeed with a BINLOG lock in the same connection with binlog disabled
261#
262
263SELECT @@log_bin;
264
265LOCK BINLOG FOR BACKUP;
266
267INSERT INTO t_innodb VALUES(1);
268INSERT INTO t_myisam VALUES(1);
269
270UNLOCK BINLOG;
271
272#
273# Log tables
274#
275
276SET @old_general_log = @@general_log;
277SET @old_slow_query_log = @@slow_query_log;
278SET @old_log_output = @@log_output;
279SET @old_long_query_time = @@SESSION.long_query_time;
280
281SET SESSION long_query_time = 0;
282SET GLOBAL log_output = 'TABLE';
283SET GLOBAL general_log = ON;
284SET GLOBAL slow_query_log = ON;
285
286LOCK TABLES FOR BACKUP;
287
288SELECT 1;
289
290LOCK BINLOG FOR BACKUP;
291
292SELECT 1;
293
294UNLOCK BINLOG;
295
296UNLOCK TABLES;
297
298SET SESSION long_query_time = @old_long_query_time;
299SET GLOBAL log_output = @old_log_output;
300SET GLOBAL slow_query_log = @old_slow_query_log;
301SET GLOBAL general_log = @old_general_log;
302
303--echo #-----------------------------------------------------------------------
304--echo # Multi-threaded tests
305--echo #-----------------------------------------------------------------------
306
307--echo # connection default
308
309CREATE USER user@localhost;
310GRANT ALL PRIVILEGES ON test.* TO user@localhost;
311
312--connect(con1,localhost,root,,)
313
314--connect(con2,localhost,user,,)
315
316--connection default
317LOCK TABLES FOR BACKUP;
318
319--connection con1
320--echo # connection con1
321
322SET SESSION lock_wait_timeout = 1;
323
324--error ER_LOCK_WAIT_TIMEOUT
325SET GLOBAL delay_key_write=ALL;
326
327SET SESSION lock_wait_timeout = DEFAULT;
328
329--connection default
330--echo # connection default
331UNLOCK TABLES;
332
333#
334# read-only=1 + backup locks
335#
336
337--connection con2
338--echo # connection con2
339
340START TRANSACTION;
341INSERT INTO t_innodb VALUES(0);
342
343--connection default
344--echo # connection default
345
346SET GLOBAL read_only=1;
347
348--connection con2
349--echo # connection con2
350
351--error ER_OPTION_PREVENTS_STATEMENT
352COMMIT;
353
354--error ER_OPTION_PREVENTS_STATEMENT
355INSERT INTO t_innodb VALUES(0);
356--error ER_OPTION_PREVENTS_STATEMENT
357INSERT INTO t_myisam VALUES(0);
358
359--connection con1
360--echo # connection con1
361
362LOCK TABLES FOR BACKUP;
363
364--connection con2
365--echo # connection con2
366
367--error ER_OPTION_PREVENTS_STATEMENT
368INSERT INTO t_innodb VALUES(0);
369--error ER_OPTION_PREVENTS_STATEMENT
370INSERT INTO t_myisam VALUES(0);
371
372--connection default
373--echo # connection default
374
375SET GLOBAL read_only=0;
376
377--connection con2
378--echo # connection con2
379
380SET SESSION lock_wait_timeout = 1;
381
382INSERT INTO t_innodb VALUES(0);
383--error ER_LOCK_WAIT_TIMEOUT
384INSERT INTO t_myisam VALUES(0);
385
386SET SESSION lock_wait_timeout = 0;
387
388--connection default
389--echo # connection default
390
391SET GLOBAL read_only=1;
392
393--connection con2
394--echo # connection con2
395
396--error ER_OPTION_PREVENTS_STATEMENT
397INSERT INTO t_innodb VALUES(0);
398--error ER_OPTION_PREVENTS_STATEMENT
399INSERT INTO t_myisam VALUES(0);
400
401--connection con1
402--echo # connection con1
403
404UNLOCK TABLES;
405
406--connection con2
407--echo # connection con2
408
409--error ER_OPTION_PREVENTS_STATEMENT
410INSERT INTO t_innodb VALUES(0);
411--error ER_OPTION_PREVENTS_STATEMENT
412INSERT INTO t_myisam VALUES(0);
413
414
415--connection default
416--echo # connection default
417
418SET GLOBAL read_only=0;
419
420#
421# Test that temporary tables are not affected by tables lock, but updates that
422# would write into the binary log are blocked by the binlog lock.
423#
424--connection default
425--echo # connection default
426LOCK TABLES FOR BACKUP;
427
428--connection con1
429--echo # connection con1
430
431CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
432CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
433CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
434CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
435CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
436CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
437
438INSERT INTO tt_innodb VALUES(5);
439INSERT INTO tt_myisam VALUES(5);
440INSERT INTO tt_memory VALUES(5);
441INSERT INTO tt_csv VALUES(5);
442INSERT INTO tt_blackhole VALUES(5);
443INSERT INTO tt_archive VALUES(5);
444
445--connection default
446--echo # connection default
447LOCK BINLOG FOR BACKUP;
448
449--let $orig_binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
450
451--connection con1
452--echo # connection con1
453
454SET SESSION lock_wait_timeout = 1;
455
456START TRANSACTION;
457if (`SELECT @@binlog_format = 'STATEMENT'`)
458{
459 --error ER_LOCK_WAIT_TIMEOUT
460 INSERT INTO tt_myisam VALUES(6);
461}
462if (!`SELECT @@binlog_format = 'STATEMENT'`)
463{
464 INSERT INTO tt_myisam VALUES(6);
465}
466
467# Updates to temporary tables are not binlogged in the ROW mode
468INSERT INTO tt_innodb VALUES(6);
469SELECT * FROM tt_archive;
470SELECT * FROM tt_blackhole;
471SELECT * FROM tt_memory;
472SELECT * FROM tt_innodb;
473SELECT * FROM tt_myisam;
474SELECT * FROM tt_csv;
475if (`SELECT @@binlog_format = 'STATEMENT'`)
476{
477 --error ER_LOCK_WAIT_TIMEOUT
478 COMMIT;
479if (!`SELECT @@binlog_format = 'STATEMENT'`)
480{
481 COMMIT;
482}
483}
484
485--connection default
486--echo # connection default
487
488--let $binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
489--disable_query_log
490--eval SELECT $orig_binlog_pos = $binlog_pos AS must_be_1
491--enable_query_log
492
493UNLOCK BINLOG;
494UNLOCK TABLES;
495
496--connection con1
497--echo # connection con1
498
499COMMIT;
500
501DROP TEMPORARY TABLE tt_innodb;
502DROP TEMPORARY TABLE tt_myisam;
503DROP TEMPORARY TABLE tt_memory;
504DROP TEMPORARY TABLE tt_csv;
505DROP TEMPORARY TABLE tt_blackhole;
506DROP TEMPORARY TABLE tt_archive;
507
508--connection default
509--echo # connection default
510
511LOCK BINLOG FOR BACKUP;
512
513--let $orig_binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
514
515--connection con1
516--echo # connection con1
517
518#
519# test that AUTOCOMMIT updates are blocked with a BINLOG lock in another
520# connection with binlog enabled
521#
522
523SET SESSION lock_wait_timeout = 1;
524
525--error ER_LOCK_WAIT_TIMEOUT
526INSERT INTO t_innodb VALUES(1);
527--error ER_LOCK_WAIT_TIMEOUT
528INSERT INTO t_myisam VALUES(1);
529
530SET SESSION lock_wait_timeout = DEFAULT;
531
532--connection default
533--echo # connection default
534
535--let $binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
536--disable_query_log
537--eval SELECT $orig_binlog_pos = $binlog_pos AS must_be_1
538--enable_query_log
539
540UNLOCK BINLOG;
541
542#
543# LTFB + DDL / DML in another connection
544#
545
546--connection default
547--echo # connection default
548
549LOCK BINLOG FOR BACKUP;
550
551--let $orig_binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
552
553--connection con1
554--echo # connection con1
555
556SET SESSION lock_wait_timeout = 1;
557
558--error ER_LOCK_WAIT_TIMEOUT
559DELETE FROM t_innodb;
560--error ER_LOCK_WAIT_TIMEOUT
561INSERT INTO t_innodb VALUES(0);
562--error ER_LOCK_WAIT_TIMEOUT
563UPDATE t_innodb SET a = 1;
564--error ER_LOCK_WAIT_TIMEOUT
565REPLACE INTO t_innodb VALUES(1);
566SELECT * from t_innodb;
567HANDLER t_innodb OPEN;
568HANDLER t_innodb READ a FIRST;
569HANDLER t_innodb CLOSE;
570
571START TRANSACTION;
572SELECT * from t_innodb;
573DELETE FROM t_innodb;
574INSERT INTO t_innodb VALUES(0);
575UPDATE t_innodb SET a = 1;
576REPLACE INTO t_innodb VALUES(1);
577--error ER_LOCK_WAIT_TIMEOUT
578COMMIT;
579
580SELECT * FROM t_innodb;
581COMMIT;
582
583START TRANSACTION;
584--error ER_LOCK_WAIT_TIMEOUT
585INSERT INTO t_myisam VALUES(1);
586COMMIT;
587
588--error ER_LOCK_WAIT_TIMEOUT
589INSERT INTO t_myisam VALUES(0);
590--error ER_LOCK_WAIT_TIMEOUT
591UPDATE t_myisam SET a = 1;
592SELECT * FROM t_myisam;
593HANDLER t_myisam OPEN;
594HANDLER t_myisam READ a FIRST;
595HANDLER t_myisam CLOSE;
596
597# Blackhole updates are not binlogged in the ROW mode
598if (`SELECT @@binlog_format = 'ROW'`)
599{
600 DELETE FROM t_blackhole;
601}
602if (!`SELECT @@binlog_format = 'ROW'`)
603{
604--error ER_LOCK_WAIT_TIMEOUT
605 DELETE FROM t_blackhole;
606}
607--error ER_LOCK_WAIT_TIMEOUT
608INSERT INTO t_blackhole VALUES(0);
609# Blackhole updates are not binlogged in the ROW mode
610if (`SELECT @@binlog_format = 'ROW'`)
611{
612 UPDATE t_blackhole SET a = 1;
613}
614if (!`SELECT @@binlog_format = 'ROW'`)
615{
616 --error ER_LOCK_WAIT_TIMEOUT
617 UPDATE t_blackhole SET a = 1;
618}
619--error ER_LOCK_WAIT_TIMEOUT
620REPLACE INTO t_blackhole VALUES(1);
621SELECT * FROM t_blackhole;
622
623--error ER_LOCK_WAIT_TIMEOUT
624CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
625
626--error ER_LOCK_WAIT_TIMEOUT
627DROP TABLE tt_innodb;
628
629--error ER_BAD_TABLE_ERROR
630DROP TABLE non_existing;
631
632--error ER_TABLE_EXISTS_ERROR
633CREATE TABLE t_innodb(a INT NOT NULL) ENGINE=InnoDB;
634
635--error ER_LOCK_WAIT_TIMEOUT
636TRUNCATE TABLE t_innodb;
637
638--error ER_LOCK_WAIT_TIMEOUT
639RENAME TABLE t_innodb TO tmp, tmp to t_innodb;
640
641--error ER_LOCK_WAIT_TIMEOUT
642ALTER TABLE t_innodb ADD COLUMN b CHAR(10);
643
644--error ER_LOCK_WAIT_TIMEOUT
645ALTER TABLE t_innodb ADD KEY (a);
646
647--error ER_LOCK_WAIT_TIMEOUT
648CREATE DATABASE test1;
649
650--error ER_LOCK_WAIT_TIMEOUT
651DROP DATABASE test1;
652
653--error ER_LOCK_WAIT_TIMEOUT
654CREATE PROCEDURE p1() SELECT 1;
655
656--error ER_LOCK_WAIT_TIMEOUT
657DROP PROCEDURE p1;
658
659--error ER_LOCK_WAIT_TIMEOUT
660CREATE VIEW v1 AS SELECT * FROM t_innodb;
661
662--error ER_LOCK_WAIT_TIMEOUT
663DROP VIEW v1;
664
665--error ER_LOCK_WAIT_TIMEOUT
666INSERT INTO v_innodb VALUES(1);
667
668--connection default
669--echo # connection default
670
671--let $binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
672--disable_query_log
673--eval SELECT $orig_binlog_pos = $binlog_pos AS must_be_1
674--enable_query_log
675
676UNLOCK BINLOG;
677
678--connection con1
679--echo # connection con1
680
681# DDLs are not transactional, so previous DDL statements against t_innodb will
682# be executed despite the error
683SHOW CREATE TABLE t_innodb;
684
685DROP TABLE t_innodb;
686CREATE TABLE t_innodb(a INT NOT NULL) ENGINE=InnoDB;
687
688--connection default
689--echo # connection default
690
691#
692# INSERT DELAYED
693#
694
695LOCK BINLOG FOR BACKUP;
696
697--let $orig_binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
698
699--connection con1
700--echo # connection con1
701
702if (`SELECT @@binlog_format = 'STATEMENT'`)
703{
704 --error ER_LOCK_WAIT_TIMEOUT
705 INSERT DELAYED INTO t_myisam VALUES(0);
706}
707if (!`SELECT @@binlog_format = 'STATEMENT'`)
708{
709 INSERT DELAYED INTO t_myisam VALUES(0);
710}
711
712--connection default
713--echo # connection default
714
715if (!`SELECT @@binlog_format = 'STATEMENT'`)
716{
717 let $wait_condition=
718 SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
719 WHERE STATE = "Waiting for binlog lock" AND
720 COMMAND = "Delayed insert";
721 --source include/wait_condition.inc
722}
723
724--let $binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
725--disable_query_log
726--eval SELECT $orig_binlog_pos = $binlog_pos AS must_be_1
727--enable_query_log
728
729UNLOCK BINLOG;
730
731if (!`SELECT @@binlog_format = 'STATEMENT'`)
732{
733 let $wait_condition=
734 SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST
735 WHERE STATE = "Waiting for binlog lock" AND
736 COMMAND = "Delayed";
737 --source include/wait_condition.inc
738}
739
740SELECT * FROm t_myisam;
741
742
743#
744# Log tables
745#
746
747SET @old_general_log = @@general_log;
748SET @old_slow_query_log = @@slow_query_log;
749SET @old_log_output = @@log_output;
750
751SET GLOBAL log_output = 'TABLE';
752SET GLOBAL general_log = ON;
753SET GLOBAL slow_query_log = ON;
754
755LOCK BINLOG FOR BACKUP;
756
757--let $orig_binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
758
759--connection con1
760--echo # connection con1
761
762SET @old_long_query_time = @@SESSION.long_query_time;
763SET SESSION long_query_time = 0;
764
765SELECT 1;
766
767--connection default
768--echo # connection default
769
770SELECT 1;
771
772--connection con1
773--echo # connection con1
774
775SET SESSION long_query_time = @old_long_query_time;
776
777--connection default
778--echo # connection default
779
780--let $binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
781--disable_query_log
782--eval SELECT $orig_binlog_pos = $binlog_pos AS must_be_1
783--enable_query_log
784
785UNLOCK BINLOG;
786
787SET GLOBAL log_output = @old_log_output;
788SET GLOBAL slow_query_log = @old_slow_query_log;
789SET GLOBAL general_log = @old_general_log;
790
791--echo #-----------------------------------------------------------------------
792--echo # Cleanup
793--echo #-----------------------------------------------------------------------
794
795DROP USER user@localhost;
796
797--disconnect con1
798--disconnect con2
799
800--source include/wait_until_count_sessions.inc
801
802DROP VIEW v_innodb, v_myisam, v_memory, v_csv, v_blackhole, v_archive;
803DROP TABLE t_innodb, t_myisam, t_memory, t_csv, t_blackhole, t_archive;
0804
=== added file 'mysql-test/r/backup_locks.result'
--- mysql-test/r/backup_locks.result 1970-01-01 00:00:00 +0000
+++ mysql-test/r/backup_locks.result 2014-02-20 11:26:00 +0000
@@ -0,0 +1,883 @@
1SHOW VARIABLES LIKE 'have_backup_locks';
2Variable_name Value
3have_backup_locks YES
4#-----------------------------------------------------------------------
5# Setup
6#-----------------------------------------------------------------------
7CREATE TABLE t_innodb(a INT NOT NULL, KEY (a)) ENGINE=InnoDB;
8CREATE TABLE t_myisam(a INT NOT NULL, KEY (a)) ENGINE=MyISAM;
9CREATE TABLE t_memory(a INT NOT NULL, KEY (a)) ENGINE=MEMORY;
10CREATE TABLE t_csv(a INT NOT NULL) ENGINE=CSV;
11CREATE TABLE t_blackhole(a INT NOT NULL, KEY (a)) ENGINE=BLACKHOLE;
12CREATE TABLE t_archive(a INT NOT NULL) ENGINE=ARCHIVE;
13CREATE VIEW v_innodb AS SELECT * FROM t_innodb;
14CREATE VIEW v_myisam AS SELECT * FROM t_myisam;
15CREATE VIEW v_memory AS SELECT * FROM t_memory;
16CREATE VIEW v_csv AS SELECT * FROM t_csv;
17CREATE VIEW v_blackhole AS SELECT * FROM t_blackhole;
18CREATE VIEW v_archive AS SELECT * FROM t_archive;
19#-----------------------------------------------------------------------
20# Basic syntax checks
21#-----------------------------------------------------------------------
22LOCK TABLES t_innodb FOR BACKUP;
23ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOR BACKUP' at line 1
24LOCK TABLES t_innodb READ FOR BACKUP;
25ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOR BACKUP' at line 1
26LOCK TABLES t_innodb FOR BACKUP READ;
27ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOR BACKUP READ' at line 1
28LOCK BINLOG t_innodb FOR BACKUP;
29ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't_innodb FOR BACKUP' at line 1
30LOCK BINLOG t_innodb READ FOR BACKUP;
31ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't_innodb READ FOR BACKUP' at line 1
32LOCK BINLOG t_innodb FOR BACKUP READ;
33ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't_innodb FOR BACKUP READ' at line 1
34LOCK TABLES FOR BACKUP;
35UNLOCK TABLES;
36LOCK BINLOG FOR BACKUP;
37UNLOCK BINLOG;
38#-----------------------------------------------------------------------
39# No backup locks are allowed in stored routines
40#-----------------------------------------------------------------------
41CREATE PROCEDURE p1()
42BEGIN
43LOCK TABLES FOR BACKUP;
44END|
45ERROR 0A000: LOCK is not allowed in stored procedures
46CREATE PROCEDURE p2()
47BEGIN
48LOCK BINLOG FOR BACKUP;
49END|
50ERROR 0A000: LOCK is not allowed in stored procedures
51CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
52BEGIN
53LOCK TABLES FOR BACKUP;
54RETURN 1;
55END|
56ERROR 0A000: LOCK is not allowed in stored procedures
57CREATE FUNCTION f2() RETURNS INT DETERMINISTIC
58BEGIN
59LOCK BINLOG FOR BACKUP;
60RETURN 1;
61END|
62ERROR 0A000: LOCK is not allowed in stored procedures
63#-----------------------------------------------------------------------
64# Single-threaded tests
65#-----------------------------------------------------------------------
66SET SESSION lock_wait_timeout=1;
67FLUSH STATUS;
68LOCK TABLES FOR BACKUP;
69LOCK TABLES FOR BACKUP;
70SHOW STATUS LIKE 'Com_lock_tables_for_backup';
71Variable_name Value
72Com_lock_tables_for_backup 2
73UNLOCK TABLES;
74SHOW STATUS LIKE 'Com_unlock_tables';
75Variable_name Value
76Com_unlock_tables 1
77LOCK BINLOG FOR BACKUP;
78LOCK BINLOG FOR BACKUP;
79SHOW STATUS LIKE 'Com_lock_binlog_for_backup';
80Variable_name Value
81Com_lock_binlog_for_backup 2
82UNLOCK BINLOG;
83SHOW STATUS LIKE 'Com_unlock_binlog';
84Variable_name Value
85Com_unlock_binlog 1
86LOCK TABLES FOR BACKUP;
87DELETE FROM t_innodb;
88INSERT INTO t_innodb VALUES(0);
89UPDATE t_innodb SET a = 1;
90REPLACE INTO t_innodb VALUES(1);
91SELECT * FROM t_innodb;
92a
931
941
95HANDLER t_innodb OPEN;
96HANDLER t_innodb READ a FIRST;
97a
981
99HANDLER t_innodb CLOSE;
100DELETE FROM t_myisam;
101ERROR HY000: Can’t execute the query because you have a conflicting backup lock
102INSERT INTO t_myisam VALUES(0);
103ERROR HY000: Can’t execute the query because you have a conflicting backup lock
104INSERT DELAYED INTO t_myisam VALUES(0);
105ERROR HY000: Can’t execute the query because you have a conflicting backup lock
106UPDATE t_myisam SET a = 1;
107ERROR HY000: Can’t execute the query because you have a conflicting backup lock
108REPLACE INTO t_myisam VALUES(1);
109ERROR HY000: Can’t execute the query because you have a conflicting backup lock
110SELECT * FROM t_myisam;
111a
112HANDLER t_myisam OPEN;
113HANDLER t_myisam READ a FIRST;
114a
115HANDLER t_myisam CLOSE;
116DELETE FROM t_memory;
117ERROR HY000: Can’t execute the query because you have a conflicting backup lock
118INSERT INTO t_memory VALUES(0);
119ERROR HY000: Can’t execute the query because you have a conflicting backup lock
120INSERT DELAYED INTO t_memory VALUES(0);
121ERROR HY000: Can’t execute the query because you have a conflicting backup lock
122UPDATE t_memory SET a = 1;
123ERROR HY000: Can’t execute the query because you have a conflicting backup lock
124REPLACE INTO t_memory VALUES(1);
125ERROR HY000: Can’t execute the query because you have a conflicting backup lock
126SELECT * FROM t_memory;
127a
128DELETE FROM t_archive;
129ERROR HY000: Can’t execute the query because you have a conflicting backup lock
130INSERT INTO t_archive VALUES(0);
131ERROR HY000: Can’t execute the query because you have a conflicting backup lock
132INSERT DELAYED INTO t_archive VALUES(0);
133ERROR HY000: Can’t execute the query because you have a conflicting backup lock
134UPDATE t_archive SET a = 1;
135ERROR HY000: Can’t execute the query because you have a conflicting backup lock
136REPLACE INTO t_archive VALUES(1);
137ERROR HY000: Can’t execute the query because you have a conflicting backup lock
138SELECT * FROM t_archive;
139a
140DELETE FROM t_csv;
141ERROR HY000: Can’t execute the query because you have a conflicting backup lock
142INSERT INTO t_csv VALUES(0);
143ERROR HY000: Can’t execute the query because you have a conflicting backup lock
144UPDATE t_csv SET a = 1;
145ERROR HY000: Can’t execute the query because you have a conflicting backup lock
146REPLACE INTO t_csv VALUES(1);
147ERROR HY000: Can’t execute the query because you have a conflicting backup lock
148SELECT * FROM t_csv;
149a
150DELETE FROM t_blackhole;
151INSERT INTO t_blackhole VALUES(0);
152INSERT DELAYED INTO t_blackhole VALUES(0);
153ERROR HY000: Can’t execute the query because you have a conflicting backup lock
154UPDATE t_blackhole SET a = 1;
155REPLACE INTO t_blackhole VALUES(1);
156SELECT * FROM t_blackhole;
157a
158CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
159ERROR HY000: Can’t execute the query because you have a conflicting backup lock
160CREATE TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
161ERROR HY000: Can’t execute the query because you have a conflicting backup lock
162CREATE TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
163ERROR HY000: Can’t execute the query because you have a conflicting backup lock
164CREATE TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
165ERROR HY000: Can’t execute the query because you have a conflicting backup lock
166CREATE TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
167ERROR HY000: Can’t execute the query because you have a conflicting backup lock
168CREATE TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
169ERROR HY000: Can’t execute the query because you have a conflicting backup lock
170DROP TABLE t_innodb;
171ERROR HY000: Can’t execute the query because you have a conflicting backup lock
172DROP TABLE t_myisam;
173ERROR HY000: Can’t execute the query because you have a conflicting backup lock
174DROP TABLE t_memory;
175ERROR HY000: Can’t execute the query because you have a conflicting backup lock
176DROP TABLE t_csv;
177ERROR HY000: Can’t execute the query because you have a conflicting backup lock
178DROP TABLE t_blackhole;
179ERROR HY000: Can’t execute the query because you have a conflicting backup lock
180DROP TABLE t_archive;
181ERROR HY000: Can’t execute the query because you have a conflicting backup lock
182DROP TABLE non_existing;
183ERROR HY000: Can’t execute the query because you have a conflicting backup lock
184TRUNCATE TABLE t_innodb;
185ERROR HY000: Can’t execute the query because you have a conflicting backup lock
186TRUNCATE TABLE t_myisam;
187ERROR HY000: Can’t execute the query because you have a conflicting backup lock
188TRUNCATE TABLE t_memory;
189ERROR HY000: Can’t execute the query because you have a conflicting backup lock
190TRUNCATE TABLE t_csv;
191ERROR HY000: Can’t execute the query because you have a conflicting backup lock
192TRUNCATE TABLE t_blackhole;
193ERROR HY000: Can’t execute the query because you have a conflicting backup lock
194TRUNCATE TABLE t_archive;
195ERROR HY000: Can’t execute the query because you have a conflicting backup lock
196RENAME TABLE t_innodb TO tmp;
197ERROR HY000: Can’t execute the query because you have a conflicting backup lock
198RENAME TABLE t_myisam TO tmp;
199ERROR HY000: Can’t execute the query because you have a conflicting backup lock
200RENAME TABLE t_memory TO tmp;
201ERROR HY000: Can’t execute the query because you have a conflicting backup lock
202RENAME TABLE t_csv TO tmp;
203ERROR HY000: Can’t execute the query because you have a conflicting backup lock
204RENAME TABLE t_blackhole TO tmp;
205ERROR HY000: Can’t execute the query because you have a conflicting backup lock
206RENAME TABLE t_archive TO tmp;
207ERROR HY000: Can’t execute the query because you have a conflicting backup lock
208ALTER TABLE t_innodb ADD COLUMN b CHAR(10);
209ERROR HY000: Can’t execute the query because you have a conflicting backup lock
210ALTER TABLE t_myisam ADD COLUMN b CHAR(10);
211ERROR HY000: Can’t execute the query because you have a conflicting backup lock
212ALTER TABLE t_memory ADD COLUMN b CHAR(10);
213ERROR HY000: Can’t execute the query because you have a conflicting backup lock
214ALTER TABLE t_csv ADD COLUMN b CHAR(10);
215ERROR HY000: Can’t execute the query because you have a conflicting backup lock
216ALTER TABLE t_blackhole ADD COLUMN b CHAR(10);
217ERROR HY000: Can’t execute the query because you have a conflicting backup lock
218ALTER TABLE t_archive ADD COLUMN b CHAR(10);
219ERROR HY000: Can’t execute the query because you have a conflicting backup lock
220ALTER TABLE t_innodb ADD KEY (a);
221ERROR HY000: Can’t execute the query because you have a conflicting backup lock
222ALTER TABLE t_myisam ADD KEY (a);
223ERROR HY000: Can’t execute the query because you have a conflicting backup lock
224ALTER TABLE t_memory ADD KEY (a);
225ERROR HY000: Can’t execute the query because you have a conflicting backup lock
226ALTER TABLE t_csv ADD KEY (a);
227ERROR HY000: Can’t execute the query because you have a conflicting backup lock
228ALTER TABLE t_blackhole ADD KEY (a);
229ERROR HY000: Can’t execute the query because you have a conflicting backup lock
230ALTER TABLE t_archive ADD KEY (a);
231ERROR HY000: Can’t execute the query because you have a conflicting backup lock
232DROP DATABASE test;
233ERROR HY000: Can’t execute the query because you have a conflicting backup lock
234CREATE DATABASE test1;
235ERROR HY000: Can’t execute the query because you have a conflicting backup lock
236CREATE PROCEDURE p1()
237BEGIN
238SELECT 1;
239END|
240ERROR HY000: Can’t execute the query because you have a conflicting backup lock
241CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
242BEGIN
243RETURN 1;
244END|
245ERROR HY000: Can’t execute the query because you have a conflicting backup lock
246CREATE VIEW v1 AS SELECT * FROM t_innodb;
247ERROR HY000: Can’t execute the query because you have a conflicting backup lock
248INSERT INTO v_innodb VALUES(1);
249INSERT INTO v_blackhole VALUES(1);
250INSERT INTO v_myisam VALUES(1);
251ERROR HY000: Can’t execute the query because you have a conflicting backup lock
252INSERT INTO v_csv VALUES(1);
253ERROR HY000: Can’t execute the query because you have a conflicting backup lock
254INSERT INTO v_memory VALUES(1);
255ERROR HY000: Can’t execute the query because you have a conflicting backup lock
256INSERT INTO v_archive VALUES(1);
257ERROR HY000: Can’t execute the query because you have a conflicting backup lock
258UNLOCK TABLES;
259LOCK BINLOG FOR BACKUP;
260DELETE FROM t_innodb;
261INSERT INTO t_innodb VALUES(0);
262UPDATE t_innodb SET a = 1;
263REPLACE INTO t_innodb VALUES(1);
264SELECT * from t_innodb;
265a
2661
2671
268HANDLER t_innodb OPEN;
269HANDLER t_innodb READ a FIRST;
270a
2711
272HANDLER t_innodb CLOSE;
273DELETE FROM t_myisam;
274INSERT INTO t_myisam VALUES(0);
275UPDATE t_myisam SET a = 1;
276REPLACE INTO t_myisam VALUES(1);
277SELECT * from t_myisam;
278a
2791
2801
281HANDLER t_myisam OPEN;
282HANDLER t_myisam READ a FIRST;
283a
2841
285HANDLER t_myisam CLOSE;
286DELETE FROM t_memory;
287INSERT INTO t_memory VALUES(0);
288UPDATE t_memory SET a = 1;
289REPLACE INTO t_memory VALUES(1);
290SELECT * from t_memory;
291a
2921
2931
294DELETE FROM t_archive;
295INSERT INTO t_archive VALUES(0);
296SELECT * from t_archive;
297a
2980
299DELETE FROM t_csv;
300INSERT INTO t_csv VALUES(0);
301UPDATE t_csv SET a = 1;
302REPLACE INTO t_csv VALUES(1);
303SELECT * from t_csv;
304a
3051
3061
307DELETE FROM t_blackhole;
308INSERT INTO t_blackhole VALUES(0);
309UPDATE t_blackhole SET a = 1;
310REPLACE INTO t_blackhole VALUES(1);
311SELECT * from t_blackhole;
312a
313CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
314CREATE TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
315CREATE TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
316CREATE TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
317CREATE TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
318CREATE TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
319DROP TABLE tt_innodb;
320DROP TABLE tt_myisam;
321DROP TABLE tt_memory;
322DROP TABLE tt_csv;
323DROP TABLE tt_blackhole;
324DROP TABLE tt_archive;
325DROP TABLE non_existing;
326ERROR 42S02: Unknown table 'test.non_existing'
327TRUNCATE TABLE t_innodb;
328TRUNCATE TABLE t_myisam;
329TRUNCATE TABLE t_memory;
330TRUNCATE TABLE t_csv;
331TRUNCATE TABLE t_blackhole;
332RENAME TABLE t_innodb TO tmp, tmp TO t_innodb;
333RENAME TABLE t_myisam TO tmp, tmp TO t_myisam;
334RENAME TABLE t_memory TO tmp, tmp TO t_memory;
335RENAME TABLE t_csv TO tmp, tmp TO t_csv;
336RENAME TABLE t_blackhole TO tmp, tmp TO t_blackhole;
337RENAME TABLE t_archive TO tmp, tmp TO t_archive;
338ALTER TABLE t_innodb ADD COLUMN b CHAR(10) NOT NULL;
339ALTER TABLE t_innodb DROP COLUMN b;
340ALTER TABLE t_myisam ADD COLUMN b CHAR(10) NOT NULL;
341ALTER TABLE t_myisam DROP COLUMN b;
342ALTER TABLE t_memory ADD COLUMN b CHAR(10) NOT NULL;
343ALTER TABLE t_memory DROP COLUMN b;
344ALTER TABLE t_csv ADD COLUMN b CHAR(10) NOT NULL;
345ALTER TABLE t_csv DROP COLUMN b;
346ALTER TABLE t_blackhole ADD COLUMN b CHAR(10) NOT NULL;
347ALTER TABLE t_blackhole DROP COLUMN b;
348ALTER TABLE t_archive ADD COLUMN b CHAR(10) NOT NULL;
349ALTER TABLE t_archive DROP COLUMN b;
350ALTER TABLE t_innodb ADD KEY tmp (a);
351Warnings:
352Note 1831 Duplicate index 'tmp' defined on the table 'test.t_innodb'. This is deprecated and will be disallowed in a future release.
353ALTER TABLE t_innodb DROP KEY tmp;
354ALTER TABLE t_myisam ADD KEY tmp (a);
355Warnings:
356Note 1831 Duplicate index 'tmp' defined on the table 'test.t_myisam'. This is deprecated and will be disallowed in a future release.
357ALTER TABLE t_myisam DROP KEY tmp;
358ALTER TABLE t_memory ADD KEY tmp (a);
359Warnings:
360Note 1831 Duplicate index 'tmp' defined on the table 'test.t_memory'. This is deprecated and will be disallowed in a future release.
361ALTER TABLE t_memory DROP KEY tmp;
362ALTER TABLE t_blackhole ADD KEY tmp (a);
363Warnings:
364Note 1831 Duplicate index 'tmp' defined on the table 'test.t_blackhole'. This is deprecated and will be disallowed in a future release.
365ALTER TABLE t_blackhole DROP KEY tmp;
366CREATE DATABASE test1;
367DROP DATABASE test1;
368CREATE PROCEDURE p1()
369BEGIN
370SELECT 1;
371END|
372DROP PROCEDURE p1|
373CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
374BEGIN
375RETURN 1;
376END|
377DROP FUNCTION f1|
378CREATE VIEW v1 AS SELECT * FROM t_innodb;
379DROP VIEW v1;
380INSERT INTO v_innodb VALUES(1);
381INSERT INTO v_blackhole VALUES(1);
382INSERT INTO v_myisam VALUES(1);
383INSERT INTO v_csv VALUES(1);
384INSERT INTO v_memory VALUES(1);
385INSERT INTO v_archive VALUES(1);
386UNLOCK BINLOG;
387SELECT @@delay_key_write;
388@@delay_key_write
389ON
390SET GLOBAL delay_key_write=ALL;
391LOCK TABLES FOR BACKUP;
392ERROR HY000: The MySQL server is running with the delay_key_write=ALL option so it cannot execute this statement
393SET GLOBAL delay_key_write=default;
394SELECT @@delay_key_write;
395@@delay_key_write
396ON
397SET GLOBAL read_only=1;
398INSERT INTO t_innodb VALUES(0);
399INSERT INTO t_myisam VALUES(0);
400LOCK TABLES FOR BACKUP;
401INSERT INTO t_innodb VALUES(0);
402INSERT INTO t_myisam VALUES(0);
403ERROR HY000: Can’t execute the query because you have a conflicting backup lock
404UNLOCK TABLES;
405INSERT INTO t_innodb VALUES(0);
406INSERT INTO t_myisam VALUES(0);
407SET GLOBAL read_only=0;
408LOCK TABLES FOR BACKUP;
409CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
410CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
411CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
412CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
413CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
414CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
415INSERT INTO tt_innodb VALUES(5);
416INSERT INTO tt_myisam VALUES(5);
417INSERT INTO tt_memory VALUES(5);
418INSERT INTO tt_csv VALUES(5);
419INSERT INTO tt_blackhole VALUES(5);
420INSERT INTO tt_archive VALUES(5);
421LOCK BINLOG FOR BACKUP;
422START TRANSACTION;
423SELECT * FROM tt_archive;
424a
4255
426SELECT * FROM tt_blackhole;
427a
428SELECT * FROM tt_memory;
429a
4305
431SELECT * FROM tt_innodb;
432a
4335
434SELECT * FROM tt_myisam;
435a
4365
437INSERT INTO tt_innodb VALUES(6);
438INSERT INTO tt_myisam VALUES(6);
439INSERT INTO tt_memory VALUES(6);
440INSERT INTO tt_csv VALUES(6);
441INSERT INTO tt_blackhole VALUES(6);
442INSERT INTO tt_archive VALUES(6);
443COMMIT;
444SELECT * FROM tt_archive;
445a
4465
4476
448SELECT * FROM tt_blackhole;
449a
450SELECT * FROM tt_memory;
451a
4525
4536
454SELECT * FROM tt_innodb;
455a
4565
4576
458SELECT * FROM tt_myisam;
459a
4605
4616
462DROP TEMPORARY TABLE tt_innodb;
463DROP TEMPORARY TABLE tt_myisam;
464DROP TEMPORARY TABLE tt_memory;
465DROP TEMPORARY TABLE tt_csv;
466DROP TEMPORARY TABLE tt_blackhole;
467DROP TEMPORARY TABLE tt_archive;
468UNLOCK BINLOG;
469UNLOCK TABLES;
470SELECT @@log_bin;
471@@log_bin
4720
473LOCK BINLOG FOR BACKUP;
474INSERT INTO t_innodb VALUES(1);
475INSERT INTO t_myisam VALUES(1);
476UNLOCK BINLOG;
477SET @old_general_log = @@general_log;
478SET @old_slow_query_log = @@slow_query_log;
479SET @old_log_output = @@log_output;
480SET @old_long_query_time = @@SESSION.long_query_time;
481SET SESSION long_query_time = 0;
482SET GLOBAL log_output = 'TABLE';
483SET GLOBAL general_log = ON;
484SET GLOBAL slow_query_log = ON;
485LOCK TABLES FOR BACKUP;
486SELECT 1;
4871
4881
489LOCK BINLOG FOR BACKUP;
490SELECT 1;
4911
4921
493UNLOCK BINLOG;
494UNLOCK TABLES;
495SET SESSION long_query_time = @old_long_query_time;
496SET GLOBAL log_output = @old_log_output;
497SET GLOBAL slow_query_log = @old_slow_query_log;
498SET GLOBAL general_log = @old_general_log;
499SET SESSION lock_wait_timeout=default;
500#-----------------------------------------------------------------------
501# Multi-threaded tests
502#-----------------------------------------------------------------------
503# connection default
504SET GLOBAL lock_wait_timeout=1;
505CREATE USER user@localhost;
506GRANT ALL PRIVILEGES ON test.* TO user@localhost;
507LOCK TABLES FOR BACKUP;
508# connection con1
509SET GLOBAL delay_key_write=ALL;
510ERROR HY000: Lock wait timeout exceeded; try restarting transaction
511# connection default
512UNLOCK TABLES;
513# connection con2
514START TRANSACTION;
515INSERT INTO t_innodb VALUES(0);
516# connection default
517SET GLOBAL read_only=1;
518# connection con2
519COMMIT;
520ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
521INSERT INTO t_innodb VALUES(0);
522ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
523INSERT INTO t_myisam VALUES(0);
524ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
525# connection con1
526LOCK TABLES FOR BACKUP;
527# connection con2
528INSERT INTO t_innodb VALUES(0);
529ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
530INSERT INTO t_myisam VALUES(0);
531ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
532# connection default
533SET GLOBAL read_only=0;
534# connection con2
535INSERT INTO t_innodb VALUES(0);
536INSERT INTO t_myisam VALUES(0);
537ERROR HY000: Lock wait timeout exceeded; try restarting transaction
538# connection default
539SET GLOBAL read_only=1;
540# connection con2
541INSERT INTO t_innodb VALUES(0);
542ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
543INSERT INTO t_myisam VALUES(0);
544ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
545# connection con1
546UNLOCK TABLES;
547# connection con2
548INSERT INTO t_innodb VALUES(0);
549ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
550INSERT INTO t_myisam VALUES(0);
551ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
552# connection default
553SET GLOBAL read_only=0;
554# connection default
555LOCK TABLES FOR BACKUP;
556# connection con1
557CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
558CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
559CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
560CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
561CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
562CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
563INSERT INTO tt_innodb VALUES(5);
564INSERT INTO tt_myisam VALUES(5);
565INSERT INTO tt_memory VALUES(5);
566INSERT INTO tt_csv VALUES(5);
567INSERT INTO tt_blackhole VALUES(5);
568INSERT INTO tt_archive VALUES(5);
569# connection default
570LOCK BINLOG FOR BACKUP;
571# connection con1
572START TRANSACTION;
573SELECT * FROM tt_archive;
574a
5755
576SELECT * FROM tt_blackhole;
577a
578SELECT * FROM tt_memory;
579a
5805
581SELECT * FROM tt_innodb;
582a
5835
584SELECT * FROM tt_myisam;
585a
5865
587INSERT INTO tt_innodb VALUES(6);
588INSERT INTO tt_myisam VALUES(6);
589INSERT INTO tt_memory VALUES(6);
590INSERT INTO tt_csv VALUES(6);
591INSERT INTO tt_blackhole VALUES(6);
592INSERT INTO tt_archive VALUES(6);
593COMMIT;
594SELECT * FROM tt_archive;
595a
5965
5976
598SELECT * FROM tt_blackhole;
599a
600SELECT * FROM tt_memory;
601a
6025
6036
604SELECT * FROM tt_innodb;
605a
6065
6076
608SELECT * FROM tt_myisam;
609a
6105
6116
612DROP TEMPORARY TABLE tt_innodb;
613DROP TEMPORARY TABLE tt_myisam;
614DROP TEMPORARY TABLE tt_memory;
615DROP TEMPORARY TABLE tt_csv;
616DROP TEMPORARY TABLE tt_blackhole;
617DROP TEMPORARY TABLE tt_archive;
618# connection default
619UNLOCK BINLOG;
620UNLOCK TABLES;
621LOCK BINLOG FOR BACKUP;
622# connection con1
623SELECT @@log_bin;
624@@log_bin
6250
626INSERT INTO t_innodb VALUES(1);
627INSERT INTO t_myisam VALUES(1);
628# connection default
629UNLOCK BINLOG;
630# connection default
631LOCK TABLES FOR BACKUP;
632# connection con1
633DELETE FROM t_innodb;
634INSERT INTO t_innodb VALUES(0);
635UPDATE t_innodb SET a = 1;
636REPLACE INTO t_innodb VALUES(1);
637SELECT * from t_innodb;
638a
6391
6401
641HANDLER t_innodb OPEN;
642HANDLER t_innodb READ a FIRST;
643a
6441
645HANDLER t_innodb CLOSE;
646INSERT INTO t_myisam VALUES(0);
647ERROR HY000: Lock wait timeout exceeded; try restarting transaction
648INSERT DELAYED INTO t_myisam VALUES(0);
649ERROR HY000: Lock wait timeout exceeded; try restarting transaction
650SELECT * FROM t_myisam;
651a
6520
6530
6541
6551
6561
657HANDLER t_myisam OPEN;
658HANDLER t_myisam READ a FIRST;
659a
6600
661HANDLER t_myisam CLOSE;
662INSERT INTO t_memory VALUES(0);
663ERROR HY000: Lock wait timeout exceeded; try restarting transaction
664SELECT * FROM t_memory;
665a
6661
667INSERT INTO t_archive VALUES(0);
668ERROR HY000: Lock wait timeout exceeded; try restarting transaction
669SELECT * FROM t_archive;
670a
6710
6721
673INSERT INTO t_csv VALUES(0);
674ERROR HY000: Lock wait timeout exceeded; try restarting transaction
675SELECT * FROM t_csv;
676a
6771
678DELETE FROM t_blackhole;
679INSERT INTO t_blackhole VALUES(0);
680UPDATE t_blackhole SET a = 1;
681REPLACE INTO t_blackhole VALUES(1);
682SELECT * FROM t_blackhole;
683a
684CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
685ERROR HY000: Lock wait timeout exceeded; try restarting transaction
686DROP TABLE t_innodb;
687ERROR HY000: Lock wait timeout exceeded; try restarting transaction
688DROP TABLE non_existing;
689ERROR HY000: Lock wait timeout exceeded; try restarting transaction
690TRUNCATE TABLE t_innodb;
691ERROR HY000: Lock wait timeout exceeded; try restarting transaction
692RENAME TABLE t_innodb TO tmp;
693ERROR HY000: Lock wait timeout exceeded; try restarting transaction
694ALTER TABLE t_innodb ADD COLUMN b CHAR(10);
695ERROR HY000: Lock wait timeout exceeded; try restarting transaction
696ALTER TABLE t_innodb ADD KEY (a);
697ERROR HY000: Lock wait timeout exceeded; try restarting transaction
698DROP DATABASE test;
699ERROR HY000: Lock wait timeout exceeded; try restarting transaction
700CREATE DATABASE test1;
701ERROR HY000: Lock wait timeout exceeded; try restarting transaction
702CREATE PROCEDURE p1() SELECT 1;
703# connection default
704KILL QUERY #;
705# connection con1
706ERROR 70100: Query execution was interrupted
707CREATE FUNCTION f1() RETURNS INT DETERMINISTIC RETURN 1;
708# connection default
709KILL QUERY #;
710# connection con1
711ERROR 70100: Query execution was interrupted
712CREATE VIEW v1 AS SELECT * FROM t_innodb;
713ERROR HY000: Lock wait timeout exceeded; try restarting transaction
714INSERT INTO v_innodb VALUES(1);
715INSERT INTO v_blackhole VALUES(1);
716INSERT INTO v_myisam VALUES(1);
717ERROR HY000: Lock wait timeout exceeded; try restarting transaction
718# connection default
719UNLOCK TABLES;
720LOCK BINLOG FOR BACKUP;
721# connection con1
722DELETE FROM t_innodb;
723INSERT INTO t_innodb VALUES(0);
724UPDATE t_innodb SET a = 1;
725REPLACE INTO t_innodb VALUES(1);
726SELECT * from t_innodb;
727a
7281
7291
730HANDLER t_innodb OPEN;
731HANDLER t_innodb READ a FIRST;
732a
7331
734HANDLER t_innodb CLOSE;
735DELETE FROM t_myisam;
736INSERT INTO t_myisam VALUES(0);
737UPDATE t_myisam SET a = 1;
738REPLACE INTO t_myisam VALUES(1);
739SELECT * from t_myisam;
740a
7411
7421
743HANDLER t_myisam OPEN;
744HANDLER t_myisam READ a FIRST;
745a
7461
747HANDLER t_myisam CLOSE;
748DELETE FROM t_memory;
749INSERT INTO t_memory VALUES(0);
750UPDATE t_memory SET a = 1;
751REPLACE INTO t_memory VALUES(1);
752SELECT * from t_memory;
753a
7541
7551
756INSERT INTO t_archive VALUES(0);
757SELECT * from t_archive;
758a
7590
7601
7610
762DELETE FROM t_csv;
763INSERT INTO t_csv VALUES(0);
764UPDATE t_csv SET a = 1;
765REPLACE INTO t_csv VALUES(1);
766SELECT * from t_csv;
767a
7681
7691
770DELETE FROM t_blackhole;
771INSERT INTO t_blackhole VALUES(0);
772UPDATE t_blackhole SET a = 1;
773REPLACE INTO t_blackhole VALUES(1);
774SELECT * from t_blackhole;
775a
776CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
777CREATE TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
778CREATE TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
779CREATE TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
780CREATE TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
781CREATE TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
782DROP TABLE tt_innodb;
783DROP TABLE tt_myisam;
784DROP TABLE tt_memory;
785DROP TABLE tt_csv;
786DROP TABLE tt_blackhole;
787DROP TABLE tt_archive;
788DROP TABLE non_existing;
789ERROR 42S02: Unknown table 'test.non_existing'
790TRUNCATE TABLE t_innodb;
791TRUNCATE TABLE t_myisam;
792TRUNCATE TABLE t_memory;
793TRUNCATE TABLE t_csv;
794TRUNCATE TABLE t_blackhole;
795RENAME TABLE t_innodb TO tmp, tmp TO t_innodb;
796RENAME TABLE t_myisam TO tmp, tmp TO t_myisam;
797RENAME TABLE t_memory TO tmp, tmp TO t_memory;
798RENAME TABLE t_csv TO tmp, tmp TO t_csv;
799RENAME TABLE t_blackhole TO tmp, tmp TO t_blackhole;
800RENAME TABLE t_archive TO tmp, tmp TO t_archive;
801ALTER TABLE t_innodb ADD COLUMN b CHAR(10) NOT NULL;
802ALTER TABLE t_innodb DROP COLUMN b;
803ALTER TABLE t_myisam ADD COLUMN b CHAR(10) NOT NULL;
804ALTER TABLE t_myisam DROP COLUMN b;
805ALTER TABLE t_memory ADD COLUMN b CHAR(10) NOT NULL;
806ALTER TABLE t_memory DROP COLUMN b;
807ALTER TABLE t_csv ADD COLUMN b CHAR(10) NOT NULL;
808ALTER TABLE t_csv DROP COLUMN b;
809ALTER TABLE t_blackhole ADD COLUMN b CHAR(10) NOT NULL;
810ALTER TABLE t_blackhole DROP COLUMN b;
811ALTER TABLE t_archive ADD COLUMN b CHAR(10) NOT NULL;
812ALTER TABLE t_archive DROP COLUMN b;
813ALTER TABLE t_innodb ADD KEY tmp (a);
814Warnings:
815Note 1831 Duplicate index 'tmp' defined on the table 'test.t_innodb'. This is deprecated and will be disallowed in a future release.
816ALTER TABLE t_innodb DROP KEY tmp;
817ALTER TABLE t_myisam ADD KEY tmp (a);
818Warnings:
819Note 1831 Duplicate index 'tmp' defined on the table 'test.t_myisam'. This is deprecated and will be disallowed in a future release.
820ALTER TABLE t_myisam DROP KEY tmp;
821ALTER TABLE t_memory ADD KEY tmp (a);
822Warnings:
823Note 1831 Duplicate index 'tmp' defined on the table 'test.t_memory'. This is deprecated and will be disallowed in a future release.
824ALTER TABLE t_memory DROP KEY tmp;
825ALTER TABLE t_blackhole ADD KEY tmp (a);
826Warnings:
827Note 1831 Duplicate index 'tmp' defined on the table 'test.t_blackhole'. This is deprecated and will be disallowed in a future release.
828ALTER TABLE t_blackhole DROP KEY tmp;
829CREATE DATABASE test1;
830DROP DATABASE test1;
831CREATE PROCEDURE p1()
832BEGIN
833SELECT 1;
834END|
835DROP PROCEDURE p1|
836CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
837BEGIN
838RETURN 1;
839END|
840DROP FUNCTION f1|
841CREATE VIEW v1 AS SELECT * FROM t_innodb;
842DROP VIEW v1;
843INSERT INTO v_innodb VALUES(1);
844INSERT INTO v_blackhole VALUES(1);
845INSERT INTO v_myisam VALUES(1);
846INSERT INTO v_csv VALUES(1);
847INSERT INTO v_memory VALUES(1);
848INSERT INTO v_archive VALUES(1);
849# connection default
850UNLOCK BINLOG;
851SET @old_general_log = @@general_log;
852SET @old_slow_query_log = @@slow_query_log;
853SET @old_log_output = @@log_output;
854SET GLOBAL log_output = 'TABLE';
855SET GLOBAL general_log = ON;
856SET GLOBAL slow_query_log = ON;
857LOCK TABLES FOR BACKUP;
858# connection con1
859SET @old_long_query_time = @@SESSION.long_query_time;
860SET SESSION long_query_time = 0;
861SELECT 1;
8621
8631
864# connection default
865LOCK BINLOG FOR BACKUP;
866SELECT 1;
8671
8681
869# connection con1
870SET SESSION long_query_time = @old_long_query_time;
871# connection default
872UNLOCK BINLOG;
873UNLOCK TABLES;
874SET GLOBAL log_output = @old_log_output;
875SET GLOBAL slow_query_log = @old_slow_query_log;
876SET GLOBAL general_log = @old_general_log;
877#-----------------------------------------------------------------------
878# Cleanup
879#-----------------------------------------------------------------------
880SET GLOBAL lock_wait_timeout=default;
881DROP USER user@localhost;
882DROP VIEW v_innodb, v_myisam, v_memory, v_csv, v_blackhole, v_archive;
883DROP TABLE t_innodb, t_myisam, t_memory, t_csv, t_blackhole, t_archive;
0884
=== added file 'mysql-test/r/backup_locks_binlog_mixed.result'
--- mysql-test/r/backup_locks_binlog_mixed.result 1970-01-01 00:00:00 +0000
+++ mysql-test/r/backup_locks_binlog_mixed.result 2014-02-20 11:26:00 +0000
@@ -0,0 +1,573 @@
1SET @old_binlog_format=@@binlog_format;
2SET GLOBAL binlog_format='MIXED';
3SET SESSION binlog_format='MIXED';
4SELECT @@binlog_format;
5@@binlog_format
6MIXED
7RESET MASTER;
8SHOW VARIABLES LIKE 'have_backup_locks';
9Variable_name Value
10have_backup_locks YES
11#-----------------------------------------------------------------------
12# Setup
13#-----------------------------------------------------------------------
14CREATE TABLE t_innodb(a INT NOT NULL, KEY (a)) ENGINE=InnoDB;
15CREATE TABLE t_myisam(a INT NOT NULL, KEY (a)) ENGINE=MyISAM;
16CREATE TABLE t_memory(a INT NOT NULL, KEY (a)) ENGINE=MEMORY;
17CREATE TABLE t_csv(a INT NOT NULL) ENGINE=CSV;
18CREATE TABLE t_blackhole(a INT NOT NULL, KEY (a)) ENGINE=BLACKHOLE;
19CREATE TABLE t_archive(a INT NOT NULL) ENGINE=ARCHIVE;
20CREATE VIEW v_innodb AS SELECT * FROM t_innodb;
21CREATE VIEW v_myisam AS SELECT * FROM t_myisam;
22CREATE VIEW v_memory AS SELECT * FROM t_memory;
23CREATE VIEW v_csv AS SELECT * FROM t_csv;
24CREATE VIEW v_blackhole AS SELECT * FROM t_blackhole;
25CREATE VIEW v_archive AS SELECT * FROM t_archive;
26#-----------------------------------------------------------------------
27# Single-threaded tests
28#-----------------------------------------------------------------------
29LOCK BINLOG FOR BACKUP;
30DELETE FROM t_innodb;
31INSERT INTO t_innodb VALUES(0);
32UPDATE t_innodb SET a = 1;
33REPLACE INTO t_innodb VALUES(1);
34SELECT * from t_innodb;
35a
361
371
38HANDLER t_innodb OPEN;
39HANDLER t_innodb READ a FIRST;
40a
411
42HANDLER t_innodb CLOSE;
43DELETE FROM t_myisam;
44INSERT INTO t_myisam VALUES(0);
45UPDATE t_myisam SET a = 1;
46REPLACE INTO t_myisam VALUES(1);
47SELECT * from t_myisam;
48a
491
501
51HANDLER t_myisam OPEN;
52HANDLER t_myisam READ a FIRST;
53a
541
55HANDLER t_myisam CLOSE;
56DELETE FROM t_memory;
57INSERT INTO t_memory VALUES(0);
58UPDATE t_memory SET a = 1;
59REPLACE INTO t_memory VALUES(1);
60SELECT * from t_memory;
61a
621
631
64DELETE FROM t_archive;
65INSERT INTO t_archive VALUES(0);
66SELECT * from t_archive;
67a
680
69DELETE FROM t_csv;
70INSERT INTO t_csv VALUES(0);
71UPDATE t_csv SET a = 1;
72REPLACE INTO t_csv VALUES(1);
73SELECT * from t_csv;
74a
751
761
77DELETE FROM t_blackhole;
78INSERT INTO t_blackhole VALUES(0);
79UPDATE t_blackhole SET a = 1;
80REPLACE INTO t_blackhole VALUES(1);
81SELECT * from t_blackhole;
82a
83CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
84CREATE TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
85CREATE TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
86CREATE TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
87CREATE TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
88CREATE TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
89DROP TABLE tt_innodb;
90DROP TABLE tt_myisam;
91DROP TABLE tt_memory;
92DROP TABLE tt_csv;
93DROP TABLE tt_blackhole;
94DROP TABLE tt_archive;
95DROP TABLE non_existing;
96ERROR 42S02: Unknown table 'test.non_existing'
97TRUNCATE TABLE t_innodb;
98TRUNCATE TABLE t_myisam;
99TRUNCATE TABLE t_memory;
100TRUNCATE TABLE t_csv;
101TRUNCATE TABLE t_blackhole;
102RENAME TABLE t_innodb TO tmp, tmp TO t_innodb;
103RENAME TABLE t_myisam TO tmp, tmp TO t_myisam;
104RENAME TABLE t_memory TO tmp, tmp TO t_memory;
105RENAME TABLE t_csv TO tmp, tmp TO t_csv;
106RENAME TABLE t_blackhole TO tmp, tmp TO t_blackhole;
107RENAME TABLE t_archive TO tmp, tmp TO t_archive;
108ALTER TABLE t_innodb ADD COLUMN b CHAR(10) NOT NULL;
109ALTER TABLE t_innodb DROP COLUMN b;
110ALTER TABLE t_myisam ADD COLUMN b CHAR(10) NOT NULL;
111ALTER TABLE t_myisam DROP COLUMN b;
112ALTER TABLE t_memory ADD COLUMN b CHAR(10) NOT NULL;
113ALTER TABLE t_memory DROP COLUMN b;
114ALTER TABLE t_csv ADD COLUMN b CHAR(10) NOT NULL;
115ALTER TABLE t_csv DROP COLUMN b;
116ALTER TABLE t_blackhole ADD COLUMN b CHAR(10) NOT NULL;
117ALTER TABLE t_blackhole DROP COLUMN b;
118ALTER TABLE t_archive ADD COLUMN b CHAR(10) NOT NULL;
119ALTER TABLE t_archive DROP COLUMN b;
120ALTER TABLE t_innodb ADD KEY tmp (a);
121Warnings:
122Note 1831 Duplicate index 'tmp' defined on the table 'test.t_innodb'. This is deprecated and will be disallowed in a future release.
123ALTER TABLE t_innodb DROP KEY tmp;
124ALTER TABLE t_myisam ADD KEY tmp (a);
125Warnings:
126Note 1831 Duplicate index 'tmp' defined on the table 'test.t_myisam'. This is deprecated and will be disallowed in a future release.
127ALTER TABLE t_myisam DROP KEY tmp;
128ALTER TABLE t_memory ADD KEY tmp (a);
129Warnings:
130Note 1831 Duplicate index 'tmp' defined on the table 'test.t_memory'. This is deprecated and will be disallowed in a future release.
131ALTER TABLE t_memory DROP KEY tmp;
132ALTER TABLE t_blackhole ADD KEY tmp (a);
133Warnings:
134Note 1831 Duplicate index 'tmp' defined on the table 'test.t_blackhole'. This is deprecated and will be disallowed in a future release.
135ALTER TABLE t_blackhole DROP KEY tmp;
136CREATE DATABASE test1;
137DROP DATABASE test1;
138CREATE PROCEDURE p1()
139BEGIN
140SELECT 1;
141END|
142DROP PROCEDURE p1|
143CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
144BEGIN
145RETURN 1;
146END|
147DROP FUNCTION f1|
148CREATE VIEW v1 AS SELECT * FROM t_innodb;
149DROP VIEW v1;
150INSERT INTO v_innodb VALUES(1);
151INSERT INTO v_blackhole VALUES(1);
152INSERT INTO v_myisam VALUES(1);
153INSERT INTO v_csv VALUES(1);
154INSERT INTO v_memory VALUES(1);
155INSERT INTO v_archive VALUES(1);
156UNLOCK BINLOG;
157SELECT @@delay_key_write;
158@@delay_key_write
159ON
160SET GLOBAL delay_key_write=ALL;
161LOCK TABLES FOR BACKUP;
162ERROR HY000: The MySQL server is running with the delay_key_write=ALL option so it cannot execute this statement
163SET GLOBAL delay_key_write=default;
164SELECT @@delay_key_write;
165@@delay_key_write
166ON
167SET GLOBAL read_only=1;
168INSERT INTO t_innodb VALUES(0);
169INSERT INTO t_myisam VALUES(0);
170LOCK TABLES FOR BACKUP;
171INSERT INTO t_innodb VALUES(0);
172INSERT INTO t_myisam VALUES(0);
173ERROR HY000: Can’t execute the query because you have a conflicting backup lock
174UNLOCK TABLES;
175INSERT INTO t_innodb VALUES(0);
176INSERT INTO t_myisam VALUES(0);
177SET GLOBAL read_only=0;
178LOCK TABLES FOR BACKUP;
179CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
180CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
181CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
182CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
183CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
184CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
185INSERT INTO tt_innodb VALUES(5);
186INSERT INTO tt_myisam VALUES(5);
187INSERT INTO tt_memory VALUES(5);
188INSERT INTO tt_csv VALUES(5);
189INSERT INTO tt_blackhole VALUES(5);
190INSERT INTO tt_archive VALUES(5);
191LOCK BINLOG FOR BACKUP;
192START TRANSACTION;
193SELECT * FROM tt_archive;
194a
1955
196SELECT * FROM tt_blackhole;
197a
198SELECT * FROM tt_memory;
199a
2005
201SELECT * FROM tt_innodb;
202a
2035
204SELECT * FROM tt_myisam;
205a
2065
207INSERT INTO tt_innodb VALUES(6);
208INSERT INTO tt_myisam VALUES(6);
209INSERT INTO tt_memory VALUES(6);
210INSERT INTO tt_csv VALUES(6);
211INSERT INTO tt_blackhole VALUES(6);
212INSERT INTO tt_archive VALUES(6);
213COMMIT;
214SELECT * FROM tt_archive;
215a
2165
2176
218SELECT * FROM tt_blackhole;
219a
220SELECT * FROM tt_memory;
221a
2225
2236
224SELECT * FROM tt_innodb;
225a
2265
2276
228SELECT * FROM tt_myisam;
229a
2305
2316
232DROP TEMPORARY TABLE tt_innodb;
233DROP TEMPORARY TABLE tt_myisam;
234DROP TEMPORARY TABLE tt_memory;
235DROP TEMPORARY TABLE tt_csv;
236DROP TEMPORARY TABLE tt_blackhole;
237DROP TEMPORARY TABLE tt_archive;
238UNLOCK BINLOG;
239UNLOCK TABLES;
240SELECT @@log_bin;
241@@log_bin
2421
243LOCK BINLOG FOR BACKUP;
244INSERT INTO t_innodb VALUES(1);
245INSERT INTO t_myisam VALUES(1);
246UNLOCK BINLOG;
247SET @old_general_log = @@general_log;
248SET @old_slow_query_log = @@slow_query_log;
249SET @old_log_output = @@log_output;
250SET @old_long_query_time = @@SESSION.long_query_time;
251SET SESSION long_query_time = 0;
252SET GLOBAL log_output = 'TABLE';
253SET GLOBAL general_log = ON;
254SET GLOBAL slow_query_log = ON;
255LOCK TABLES FOR BACKUP;
256SELECT 1;
2571
2581
259LOCK BINLOG FOR BACKUP;
260SELECT 1;
2611
2621
263UNLOCK BINLOG;
264UNLOCK TABLES;
265SET SESSION long_query_time = @old_long_query_time;
266SET GLOBAL log_output = @old_log_output;
267SET GLOBAL slow_query_log = @old_slow_query_log;
268SET GLOBAL general_log = @old_general_log;
269#-----------------------------------------------------------------------
270# Multi-threaded tests
271#-----------------------------------------------------------------------
272# connection default
273CREATE USER user@localhost;
274GRANT ALL PRIVILEGES ON test.* TO user@localhost;
275LOCK TABLES FOR BACKUP;
276# connection con1
277SET SESSION lock_wait_timeout = 1;
278SET GLOBAL delay_key_write=ALL;
279ERROR HY000: Lock wait timeout exceeded; try restarting transaction
280SET SESSION lock_wait_timeout = DEFAULT;
281# connection default
282UNLOCK TABLES;
283# connection con2
284START TRANSACTION;
285INSERT INTO t_innodb VALUES(0);
286# connection default
287SET GLOBAL read_only=1;
288# connection con2
289COMMIT;
290ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
291INSERT INTO t_innodb VALUES(0);
292ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
293INSERT INTO t_myisam VALUES(0);
294ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
295# connection con1
296LOCK TABLES FOR BACKUP;
297# connection con2
298INSERT INTO t_innodb VALUES(0);
299ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
300INSERT INTO t_myisam VALUES(0);
301ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
302# connection default
303SET GLOBAL read_only=0;
304# connection con2
305SET SESSION lock_wait_timeout = 1;
306INSERT INTO t_innodb VALUES(0);
307INSERT INTO t_myisam VALUES(0);
308ERROR HY000: Lock wait timeout exceeded; try restarting transaction
309SET SESSION lock_wait_timeout = 0;
310Warnings:
311Warning 1292 Truncated incorrect lock_wait_timeout value: '0'
312# connection default
313SET GLOBAL read_only=1;
314# connection con2
315INSERT INTO t_innodb VALUES(0);
316ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
317INSERT INTO t_myisam VALUES(0);
318ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
319# connection con1
320UNLOCK TABLES;
321# connection con2
322INSERT INTO t_innodb VALUES(0);
323ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
324INSERT INTO t_myisam VALUES(0);
325ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
326# connection default
327SET GLOBAL read_only=0;
328# connection default
329LOCK TABLES FOR BACKUP;
330# connection con1
331CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
332CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
333CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
334CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
335CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
336CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
337INSERT INTO tt_innodb VALUES(5);
338INSERT INTO tt_myisam VALUES(5);
339INSERT INTO tt_memory VALUES(5);
340INSERT INTO tt_csv VALUES(5);
341INSERT INTO tt_blackhole VALUES(5);
342INSERT INTO tt_archive VALUES(5);
343# connection default
344LOCK BINLOG FOR BACKUP;
345# connection con1
346SET SESSION lock_wait_timeout = 1;
347START TRANSACTION;
348INSERT INTO tt_myisam VALUES(6);
349INSERT INTO tt_innodb VALUES(6);
350SELECT * FROM tt_archive;
351a
3525
353SELECT * FROM tt_blackhole;
354a
355SELECT * FROM tt_memory;
356a
3575
358SELECT * FROM tt_innodb;
359a
3605
3616
362SELECT * FROM tt_myisam;
363a
3645
3656
366SELECT * FROM tt_csv;
367a
3685
369# connection default
370must_be_1
3711
372UNLOCK BINLOG;
373UNLOCK TABLES;
374# connection con1
375COMMIT;
376DROP TEMPORARY TABLE tt_innodb;
377DROP TEMPORARY TABLE tt_myisam;
378DROP TEMPORARY TABLE tt_memory;
379DROP TEMPORARY TABLE tt_csv;
380DROP TEMPORARY TABLE tt_blackhole;
381DROP TEMPORARY TABLE tt_archive;
382# connection default
383LOCK BINLOG FOR BACKUP;
384# connection con1
385SET SESSION lock_wait_timeout = 1;
386INSERT INTO t_innodb VALUES(1);
387ERROR HY000: Lock wait timeout exceeded; try restarting transaction
388INSERT INTO t_myisam VALUES(1);
389ERROR HY000: Lock wait timeout exceeded; try restarting transaction
390SET SESSION lock_wait_timeout = DEFAULT;
391# connection default
392must_be_1
3931
394UNLOCK BINLOG;
395# connection default
396LOCK BINLOG FOR BACKUP;
397# connection con1
398SET SESSION lock_wait_timeout = 1;
399DELETE FROM t_innodb;
400ERROR HY000: Lock wait timeout exceeded; try restarting transaction
401INSERT INTO t_innodb VALUES(0);
402ERROR HY000: Lock wait timeout exceeded; try restarting transaction
403UPDATE t_innodb SET a = 1;
404ERROR HY000: Lock wait timeout exceeded; try restarting transaction
405REPLACE INTO t_innodb VALUES(1);
406ERROR HY000: Lock wait timeout exceeded; try restarting transaction
407SELECT * from t_innodb;
408a
4090
4100
4110
4120
4131
4141
415HANDLER t_innodb OPEN;
416HANDLER t_innodb READ a FIRST;
417a
4180
419HANDLER t_innodb CLOSE;
420START TRANSACTION;
421SELECT * from t_innodb;
422a
4230
4240
4250
4260
4271
4281
429DELETE FROM t_innodb;
430INSERT INTO t_innodb VALUES(0);
431UPDATE t_innodb SET a = 1;
432REPLACE INTO t_innodb VALUES(1);
433COMMIT;
434ERROR HY000: Lock wait timeout exceeded; try restarting transaction
435SELECT * FROM t_innodb;
436a
4370
4380
4390
4400
4411
4421
443COMMIT;
444START TRANSACTION;
445INSERT INTO t_myisam VALUES(1);
446ERROR HY000: Lock wait timeout exceeded; try restarting transaction
447COMMIT;
448INSERT INTO t_myisam VALUES(0);
449ERROR HY000: Lock wait timeout exceeded; try restarting transaction
450UPDATE t_myisam SET a = 1;
451ERROR HY000: Lock wait timeout exceeded; try restarting transaction
452SELECT * FROM t_myisam;
453a
4541
4551
4561
4571
4581
4591
4601
461HANDLER t_myisam OPEN;
462HANDLER t_myisam READ a FIRST;
463a
4641
465HANDLER t_myisam CLOSE;
466DELETE FROM t_blackhole;
467ERROR HY000: Lock wait timeout exceeded; try restarting transaction
468INSERT INTO t_blackhole VALUES(0);
469ERROR HY000: Lock wait timeout exceeded; try restarting transaction
470UPDATE t_blackhole SET a = 1;
471ERROR HY000: Lock wait timeout exceeded; try restarting transaction
472REPLACE INTO t_blackhole VALUES(1);
473ERROR HY000: Lock wait timeout exceeded; try restarting transaction
474SELECT * FROM t_blackhole;
475a
476CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
477ERROR HY000: Lock wait timeout exceeded; try restarting transaction
478DROP TABLE tt_innodb;
479ERROR HY000: Lock wait timeout exceeded; try restarting transaction
480DROP TABLE non_existing;
481ERROR 42S02: Unknown table 'test.non_existing'
482CREATE TABLE t_innodb(a INT NOT NULL) ENGINE=InnoDB;
483ERROR 42S01: Table 't_innodb' already exists
484TRUNCATE TABLE t_innodb;
485ERROR HY000: Lock wait timeout exceeded; try restarting transaction
486RENAME TABLE t_innodb TO tmp, tmp to t_innodb;
487ERROR HY000: Lock wait timeout exceeded; try restarting transaction
488ALTER TABLE t_innodb ADD COLUMN b CHAR(10);
489ERROR HY000: Lock wait timeout exceeded; try restarting transaction
490ALTER TABLE t_innodb ADD KEY (a);
491ERROR HY000: Lock wait timeout exceeded; try restarting transaction
492CREATE DATABASE test1;
493ERROR HY000: Lock wait timeout exceeded; try restarting transaction
494DROP DATABASE test1;
495ERROR HY000: Lock wait timeout exceeded; try restarting transaction
496CREATE PROCEDURE p1() SELECT 1;
497ERROR HY000: Lock wait timeout exceeded; try restarting transaction
498DROP PROCEDURE p1;
499ERROR HY000: Lock wait timeout exceeded; try restarting transaction
500CREATE VIEW v1 AS SELECT * FROM t_innodb;
501ERROR HY000: Lock wait timeout exceeded; try restarting transaction
502DROP VIEW v1;
503ERROR HY000: Lock wait timeout exceeded; try restarting transaction
504INSERT INTO v_innodb VALUES(1);
505ERROR HY000: Lock wait timeout exceeded; try restarting transaction
506# connection default
507must_be_1
5081
509UNLOCK BINLOG;
510# connection con1
511SHOW CREATE TABLE t_innodb;
512Table Create Table
513t_innodb CREATE TABLE `t_innodb` (
514 `a` int(11) NOT NULL,
515 `b` char(10) DEFAULT NULL,
516 KEY `a` (`a`),
517 KEY `a_2` (`a`)
518) ENGINE=InnoDB DEFAULT CHARSET=latin1
519DROP TABLE t_innodb;
520CREATE TABLE t_innodb(a INT NOT NULL) ENGINE=InnoDB;
521# connection default
522LOCK BINLOG FOR BACKUP;
523# connection con1
524INSERT DELAYED INTO t_myisam VALUES(0);
525Warnings:
526Warning 1287 'INSERT DELAYED' is deprecated and will be removed in a future release. Please use INSERT instead
527# connection default
528must_be_1
5291
530UNLOCK BINLOG;
531SELECT * FROm t_myisam;
532a
5330
5341
5351
5361
5371
5381
5391
5401
541SET @old_general_log = @@general_log;
542SET @old_slow_query_log = @@slow_query_log;
543SET @old_log_output = @@log_output;
544SET GLOBAL log_output = 'TABLE';
545SET GLOBAL general_log = ON;
546SET GLOBAL slow_query_log = ON;
547LOCK BINLOG FOR BACKUP;
548# connection con1
549SET @old_long_query_time = @@SESSION.long_query_time;
550SET SESSION long_query_time = 0;
551SELECT 1;
5521
5531
554# connection default
555SELECT 1;
5561
5571
558# connection con1
559SET SESSION long_query_time = @old_long_query_time;
560# connection default
561must_be_1
5621
563UNLOCK BINLOG;
564SET GLOBAL log_output = @old_log_output;
565SET GLOBAL slow_query_log = @old_slow_query_log;
566SET GLOBAL general_log = @old_general_log;
567#-----------------------------------------------------------------------
568# Cleanup
569#-----------------------------------------------------------------------
570DROP USER user@localhost;
571DROP VIEW v_innodb, v_myisam, v_memory, v_csv, v_blackhole, v_archive;
572DROP TABLE t_innodb, t_myisam, t_memory, t_csv, t_blackhole, t_archive;
573SET GLOBAL binlog_format = @old_binlog_format;
0574
=== added file 'mysql-test/r/backup_locks_binlog_row.result'
--- mysql-test/r/backup_locks_binlog_row.result 1970-01-01 00:00:00 +0000
+++ mysql-test/r/backup_locks_binlog_row.result 2014-02-20 11:26:00 +0000
@@ -0,0 +1,579 @@
1SET @old_binlog_format=@@binlog_format;
2SET GLOBAL binlog_format='ROW';
3SET SESSION binlog_format='ROW';
4SELECT @@binlog_format;
5@@binlog_format
6ROW
7RESET MASTER;
8SHOW VARIABLES LIKE 'have_backup_locks';
9Variable_name Value
10have_backup_locks YES
11#-----------------------------------------------------------------------
12# Setup
13#-----------------------------------------------------------------------
14CREATE TABLE t_innodb(a INT NOT NULL, KEY (a)) ENGINE=InnoDB;
15CREATE TABLE t_myisam(a INT NOT NULL, KEY (a)) ENGINE=MyISAM;
16CREATE TABLE t_memory(a INT NOT NULL, KEY (a)) ENGINE=MEMORY;
17CREATE TABLE t_csv(a INT NOT NULL) ENGINE=CSV;
18CREATE TABLE t_blackhole(a INT NOT NULL, KEY (a)) ENGINE=BLACKHOLE;
19CREATE TABLE t_archive(a INT NOT NULL) ENGINE=ARCHIVE;
20CREATE VIEW v_innodb AS SELECT * FROM t_innodb;
21CREATE VIEW v_myisam AS SELECT * FROM t_myisam;
22CREATE VIEW v_memory AS SELECT * FROM t_memory;
23CREATE VIEW v_csv AS SELECT * FROM t_csv;
24CREATE VIEW v_blackhole AS SELECT * FROM t_blackhole;
25CREATE VIEW v_archive AS SELECT * FROM t_archive;
26#-----------------------------------------------------------------------
27# Single-threaded tests
28#-----------------------------------------------------------------------
29LOCK BINLOG FOR BACKUP;
30DELETE FROM t_innodb;
31INSERT INTO t_innodb VALUES(0);
32UPDATE t_innodb SET a = 1;
33REPLACE INTO t_innodb VALUES(1);
34SELECT * from t_innodb;
35a
361
371
38HANDLER t_innodb OPEN;
39HANDLER t_innodb READ a FIRST;
40a
411
42HANDLER t_innodb CLOSE;
43DELETE FROM t_myisam;
44INSERT INTO t_myisam VALUES(0);
45UPDATE t_myisam SET a = 1;
46REPLACE INTO t_myisam VALUES(1);
47SELECT * from t_myisam;
48a
491
501
51HANDLER t_myisam OPEN;
52HANDLER t_myisam READ a FIRST;
53a
541
55HANDLER t_myisam CLOSE;
56DELETE FROM t_memory;
57INSERT INTO t_memory VALUES(0);
58UPDATE t_memory SET a = 1;
59REPLACE INTO t_memory VALUES(1);
60SELECT * from t_memory;
61a
621
631
64DELETE FROM t_archive;
65INSERT INTO t_archive VALUES(0);
66SELECT * from t_archive;
67a
680
69DELETE FROM t_csv;
70INSERT INTO t_csv VALUES(0);
71UPDATE t_csv SET a = 1;
72REPLACE INTO t_csv VALUES(1);
73SELECT * from t_csv;
74a
751
761
77DELETE FROM t_blackhole;
78Warnings:
79Warning 1870 Row events are not logged for DELETE statements that modify BLACKHOLE tables in row format. Table(s): 't_blackhole.'
80INSERT INTO t_blackhole VALUES(0);
81UPDATE t_blackhole SET a = 1;
82Warnings:
83Warning 1870 Row events are not logged for UPDATE statements that modify BLACKHOLE tables in row format. Table(s): 't_blackhole.'
84REPLACE INTO t_blackhole VALUES(1);
85SELECT * from t_blackhole;
86a
87CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
88CREATE TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
89CREATE TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
90CREATE TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
91CREATE TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
92CREATE TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
93DROP TABLE tt_innodb;
94DROP TABLE tt_myisam;
95DROP TABLE tt_memory;
96DROP TABLE tt_csv;
97DROP TABLE tt_blackhole;
98DROP TABLE tt_archive;
99DROP TABLE non_existing;
100ERROR 42S02: Unknown table 'test.non_existing'
101TRUNCATE TABLE t_innodb;
102TRUNCATE TABLE t_myisam;
103TRUNCATE TABLE t_memory;
104TRUNCATE TABLE t_csv;
105TRUNCATE TABLE t_blackhole;
106RENAME TABLE t_innodb TO tmp, tmp TO t_innodb;
107RENAME TABLE t_myisam TO tmp, tmp TO t_myisam;
108RENAME TABLE t_memory TO tmp, tmp TO t_memory;
109RENAME TABLE t_csv TO tmp, tmp TO t_csv;
110RENAME TABLE t_blackhole TO tmp, tmp TO t_blackhole;
111RENAME TABLE t_archive TO tmp, tmp TO t_archive;
112ALTER TABLE t_innodb ADD COLUMN b CHAR(10) NOT NULL;
113ALTER TABLE t_innodb DROP COLUMN b;
114ALTER TABLE t_myisam ADD COLUMN b CHAR(10) NOT NULL;
115ALTER TABLE t_myisam DROP COLUMN b;
116ALTER TABLE t_memory ADD COLUMN b CHAR(10) NOT NULL;
117ALTER TABLE t_memory DROP COLUMN b;
118ALTER TABLE t_csv ADD COLUMN b CHAR(10) NOT NULL;
119ALTER TABLE t_csv DROP COLUMN b;
120ALTER TABLE t_blackhole ADD COLUMN b CHAR(10) NOT NULL;
121ALTER TABLE t_blackhole DROP COLUMN b;
122ALTER TABLE t_archive ADD COLUMN b CHAR(10) NOT NULL;
123ALTER TABLE t_archive DROP COLUMN b;
124ALTER TABLE t_innodb ADD KEY tmp (a);
125Warnings:
126Note 1831 Duplicate index 'tmp' defined on the table 'test.t_innodb'. This is deprecated and will be disallowed in a future release.
127ALTER TABLE t_innodb DROP KEY tmp;
128ALTER TABLE t_myisam ADD KEY tmp (a);
129Warnings:
130Note 1831 Duplicate index 'tmp' defined on the table 'test.t_myisam'. This is deprecated and will be disallowed in a future release.
131ALTER TABLE t_myisam DROP KEY tmp;
132ALTER TABLE t_memory ADD KEY tmp (a);
133Warnings:
134Note 1831 Duplicate index 'tmp' defined on the table 'test.t_memory'. This is deprecated and will be disallowed in a future release.
135ALTER TABLE t_memory DROP KEY tmp;
136ALTER TABLE t_blackhole ADD KEY tmp (a);
137Warnings:
138Note 1831 Duplicate index 'tmp' defined on the table 'test.t_blackhole'. This is deprecated and will be disallowed in a future release.
139ALTER TABLE t_blackhole DROP KEY tmp;
140CREATE DATABASE test1;
141DROP DATABASE test1;
142CREATE PROCEDURE p1()
143BEGIN
144SELECT 1;
145END|
146DROP PROCEDURE p1|
147CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
148BEGIN
149RETURN 1;
150END|
151DROP FUNCTION f1|
152CREATE VIEW v1 AS SELECT * FROM t_innodb;
153DROP VIEW v1;
154INSERT INTO v_innodb VALUES(1);
155INSERT INTO v_blackhole VALUES(1);
156INSERT INTO v_myisam VALUES(1);
157INSERT INTO v_csv VALUES(1);
158INSERT INTO v_memory VALUES(1);
159INSERT INTO v_archive VALUES(1);
160UNLOCK BINLOG;
161SELECT @@delay_key_write;
162@@delay_key_write
163ON
164SET GLOBAL delay_key_write=ALL;
165LOCK TABLES FOR BACKUP;
166ERROR HY000: The MySQL server is running with the delay_key_write=ALL option so it cannot execute this statement
167SET GLOBAL delay_key_write=default;
168SELECT @@delay_key_write;
169@@delay_key_write
170ON
171SET GLOBAL read_only=1;
172INSERT INTO t_innodb VALUES(0);
173INSERT INTO t_myisam VALUES(0);
174LOCK TABLES FOR BACKUP;
175INSERT INTO t_innodb VALUES(0);
176INSERT INTO t_myisam VALUES(0);
177ERROR HY000: Can’t execute the query because you have a conflicting backup lock
178UNLOCK TABLES;
179INSERT INTO t_innodb VALUES(0);
180INSERT INTO t_myisam VALUES(0);
181SET GLOBAL read_only=0;
182LOCK TABLES FOR BACKUP;
183CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
184CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
185CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
186CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
187CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
188CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
189INSERT INTO tt_innodb VALUES(5);
190INSERT INTO tt_myisam VALUES(5);
191INSERT INTO tt_memory VALUES(5);
192INSERT INTO tt_csv VALUES(5);
193INSERT INTO tt_blackhole VALUES(5);
194INSERT INTO tt_archive VALUES(5);
195LOCK BINLOG FOR BACKUP;
196START TRANSACTION;
197SELECT * FROM tt_archive;
198a
1995
200SELECT * FROM tt_blackhole;
201a
202SELECT * FROM tt_memory;
203a
2045
205SELECT * FROM tt_innodb;
206a
2075
208SELECT * FROM tt_myisam;
209a
2105
211INSERT INTO tt_innodb VALUES(6);
212INSERT INTO tt_myisam VALUES(6);
213INSERT INTO tt_memory VALUES(6);
214INSERT INTO tt_csv VALUES(6);
215INSERT INTO tt_blackhole VALUES(6);
216INSERT INTO tt_archive VALUES(6);
217COMMIT;
218SELECT * FROM tt_archive;
219a
2205
2216
222SELECT * FROM tt_blackhole;
223a
224SELECT * FROM tt_memory;
225a
2265
2276
228SELECT * FROM tt_innodb;
229a
2305
2316
232SELECT * FROM tt_myisam;
233a
2345
2356
236DROP TEMPORARY TABLE tt_innodb;
237DROP TEMPORARY TABLE tt_myisam;
238DROP TEMPORARY TABLE tt_memory;
239DROP TEMPORARY TABLE tt_csv;
240DROP TEMPORARY TABLE tt_blackhole;
241DROP TEMPORARY TABLE tt_archive;
242UNLOCK BINLOG;
243UNLOCK TABLES;
244SELECT @@log_bin;
245@@log_bin
2461
247LOCK BINLOG FOR BACKUP;
248INSERT INTO t_innodb VALUES(1);
249INSERT INTO t_myisam VALUES(1);
250UNLOCK BINLOG;
251SET @old_general_log = @@general_log;
252SET @old_slow_query_log = @@slow_query_log;
253SET @old_log_output = @@log_output;
254SET @old_long_query_time = @@SESSION.long_query_time;
255SET SESSION long_query_time = 0;
256SET GLOBAL log_output = 'TABLE';
257SET GLOBAL general_log = ON;
258SET GLOBAL slow_query_log = ON;
259LOCK TABLES FOR BACKUP;
260SELECT 1;
2611
2621
263LOCK BINLOG FOR BACKUP;
264SELECT 1;
2651
2661
267UNLOCK BINLOG;
268UNLOCK TABLES;
269SET SESSION long_query_time = @old_long_query_time;
270SET GLOBAL log_output = @old_log_output;
271SET GLOBAL slow_query_log = @old_slow_query_log;
272SET GLOBAL general_log = @old_general_log;
273#-----------------------------------------------------------------------
274# Multi-threaded tests
275#-----------------------------------------------------------------------
276# connection default
277CREATE USER user@localhost;
278GRANT ALL PRIVILEGES ON test.* TO user@localhost;
279LOCK TABLES FOR BACKUP;
280# connection con1
281SET SESSION lock_wait_timeout = 1;
282SET GLOBAL delay_key_write=ALL;
283ERROR HY000: Lock wait timeout exceeded; try restarting transaction
284SET SESSION lock_wait_timeout = DEFAULT;
285# connection default
286UNLOCK TABLES;
287# connection con2
288START TRANSACTION;
289INSERT INTO t_innodb VALUES(0);
290# connection default
291SET GLOBAL read_only=1;
292# connection con2
293COMMIT;
294ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
295INSERT INTO t_innodb VALUES(0);
296ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
297INSERT INTO t_myisam VALUES(0);
298ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
299# connection con1
300LOCK TABLES FOR BACKUP;
301# connection con2
302INSERT INTO t_innodb VALUES(0);
303ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
304INSERT INTO t_myisam VALUES(0);
305ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
306# connection default
307SET GLOBAL read_only=0;
308# connection con2
309SET SESSION lock_wait_timeout = 1;
310INSERT INTO t_innodb VALUES(0);
311INSERT INTO t_myisam VALUES(0);
312ERROR HY000: Lock wait timeout exceeded; try restarting transaction
313SET SESSION lock_wait_timeout = 0;
314Warnings:
315Warning 1292 Truncated incorrect lock_wait_timeout value: '0'
316# connection default
317SET GLOBAL read_only=1;
318# connection con2
319INSERT INTO t_innodb VALUES(0);
320ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
321INSERT INTO t_myisam VALUES(0);
322ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
323# connection con1
324UNLOCK TABLES;
325# connection con2
326INSERT INTO t_innodb VALUES(0);
327ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
328INSERT INTO t_myisam VALUES(0);
329ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
330# connection default
331SET GLOBAL read_only=0;
332# connection default
333LOCK TABLES FOR BACKUP;
334# connection con1
335CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
336CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
337CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
338CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
339CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
340CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
341INSERT INTO tt_innodb VALUES(5);
342INSERT INTO tt_myisam VALUES(5);
343INSERT INTO tt_memory VALUES(5);
344INSERT INTO tt_csv VALUES(5);
345INSERT INTO tt_blackhole VALUES(5);
346INSERT INTO tt_archive VALUES(5);
347# connection default
348LOCK BINLOG FOR BACKUP;
349# connection con1
350SET SESSION lock_wait_timeout = 1;
351START TRANSACTION;
352INSERT INTO tt_myisam VALUES(6);
353INSERT INTO tt_innodb VALUES(6);
354SELECT * FROM tt_archive;
355a
3565
357SELECT * FROM tt_blackhole;
358a
359SELECT * FROM tt_memory;
360a
3615
362SELECT * FROM tt_innodb;
363a
3645
3656
366SELECT * FROM tt_myisam;
367a
3685
3696
370SELECT * FROM tt_csv;
371a
3725
373# connection default
374must_be_1
3751
376UNLOCK BINLOG;
377UNLOCK TABLES;
378# connection con1
379COMMIT;
380DROP TEMPORARY TABLE tt_innodb;
381DROP TEMPORARY TABLE tt_myisam;
382DROP TEMPORARY TABLE tt_memory;
383DROP TEMPORARY TABLE tt_csv;
384DROP TEMPORARY TABLE tt_blackhole;
385DROP TEMPORARY TABLE tt_archive;
386# connection default
387LOCK BINLOG FOR BACKUP;
388# connection con1
389SET SESSION lock_wait_timeout = 1;
390INSERT INTO t_innodb VALUES(1);
391ERROR HY000: Lock wait timeout exceeded; try restarting transaction
392INSERT INTO t_myisam VALUES(1);
393ERROR HY000: Lock wait timeout exceeded; try restarting transaction
394SET SESSION lock_wait_timeout = DEFAULT;
395# connection default
396must_be_1
3971
398UNLOCK BINLOG;
399# connection default
400LOCK BINLOG FOR BACKUP;
401# connection con1
402SET SESSION lock_wait_timeout = 1;
403DELETE FROM t_innodb;
404ERROR HY000: Lock wait timeout exceeded; try restarting transaction
405INSERT INTO t_innodb VALUES(0);
406ERROR HY000: Lock wait timeout exceeded; try restarting transaction
407UPDATE t_innodb SET a = 1;
408ERROR HY000: Lock wait timeout exceeded; try restarting transaction
409REPLACE INTO t_innodb VALUES(1);
410ERROR HY000: Lock wait timeout exceeded; try restarting transaction
411SELECT * from t_innodb;
412a
4130
4140
4150
4160
4171
4181
419HANDLER t_innodb OPEN;
420HANDLER t_innodb READ a FIRST;
421a
4220
423HANDLER t_innodb CLOSE;
424START TRANSACTION;
425SELECT * from t_innodb;
426a
4270
4280
4290
4300
4311
4321
433DELETE FROM t_innodb;
434INSERT INTO t_innodb VALUES(0);
435UPDATE t_innodb SET a = 1;
436REPLACE INTO t_innodb VALUES(1);
437COMMIT;
438ERROR HY000: Lock wait timeout exceeded; try restarting transaction
439SELECT * FROM t_innodb;
440a
4410
4420
4430
4440
4451
4461
447COMMIT;
448START TRANSACTION;
449INSERT INTO t_myisam VALUES(1);
450ERROR HY000: Lock wait timeout exceeded; try restarting transaction
451COMMIT;
452INSERT INTO t_myisam VALUES(0);
453ERROR HY000: Lock wait timeout exceeded; try restarting transaction
454UPDATE t_myisam SET a = 1;
455ERROR HY000: Lock wait timeout exceeded; try restarting transaction
456SELECT * FROM t_myisam;
457a
4581
4591
4601
4611
4621
4631
4641
465HANDLER t_myisam OPEN;
466HANDLER t_myisam READ a FIRST;
467a
4681
469HANDLER t_myisam CLOSE;
470DELETE FROM t_blackhole;
471Warnings:
472Warning 1870 Row events are not logged for DELETE statements that modify BLACKHOLE tables in row format. Table(s): 't_blackhole.'
473INSERT INTO t_blackhole VALUES(0);
474ERROR HY000: Lock wait timeout exceeded; try restarting transaction
475UPDATE t_blackhole SET a = 1;
476Warnings:
477Warning 1870 Row events are not logged for UPDATE statements that modify BLACKHOLE tables in row format. Table(s): 't_blackhole.'
478REPLACE INTO t_blackhole VALUES(1);
479ERROR HY000: Lock wait timeout exceeded; try restarting transaction
480SELECT * FROM t_blackhole;
481a
482CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
483ERROR HY000: Lock wait timeout exceeded; try restarting transaction
484DROP TABLE tt_innodb;
485ERROR HY000: Lock wait timeout exceeded; try restarting transaction
486DROP TABLE non_existing;
487ERROR 42S02: Unknown table 'test.non_existing'
488CREATE TABLE t_innodb(a INT NOT NULL) ENGINE=InnoDB;
489ERROR 42S01: Table 't_innodb' already exists
490TRUNCATE TABLE t_innodb;
491ERROR HY000: Lock wait timeout exceeded; try restarting transaction
492RENAME TABLE t_innodb TO tmp, tmp to t_innodb;
493ERROR HY000: Lock wait timeout exceeded; try restarting transaction
494ALTER TABLE t_innodb ADD COLUMN b CHAR(10);
495ERROR HY000: Lock wait timeout exceeded; try restarting transaction
496ALTER TABLE t_innodb ADD KEY (a);
497ERROR HY000: Lock wait timeout exceeded; try restarting transaction
498CREATE DATABASE test1;
499ERROR HY000: Lock wait timeout exceeded; try restarting transaction
500DROP DATABASE test1;
501ERROR HY000: Lock wait timeout exceeded; try restarting transaction
502CREATE PROCEDURE p1() SELECT 1;
503ERROR HY000: Lock wait timeout exceeded; try restarting transaction
504DROP PROCEDURE p1;
505ERROR HY000: Lock wait timeout exceeded; try restarting transaction
506CREATE VIEW v1 AS SELECT * FROM t_innodb;
507ERROR HY000: Lock wait timeout exceeded; try restarting transaction
508DROP VIEW v1;
509ERROR HY000: Lock wait timeout exceeded; try restarting transaction
510INSERT INTO v_innodb VALUES(1);
511ERROR HY000: Lock wait timeout exceeded; try restarting transaction
512# connection default
513must_be_1
5141
515UNLOCK BINLOG;
516# connection con1
517SHOW CREATE TABLE t_innodb;
518Table Create Table
519t_innodb CREATE TABLE `t_innodb` (
520 `a` int(11) NOT NULL,
521 `b` char(10) DEFAULT NULL,
522 KEY `a` (`a`),
523 KEY `a_2` (`a`)
524) ENGINE=InnoDB DEFAULT CHARSET=latin1
525DROP TABLE t_innodb;
526CREATE TABLE t_innodb(a INT NOT NULL) ENGINE=InnoDB;
527# connection default
528LOCK BINLOG FOR BACKUP;
529# connection con1
530INSERT DELAYED INTO t_myisam VALUES(0);
531Warnings:
532Warning 1287 'INSERT DELAYED' is deprecated and will be removed in a future release. Please use INSERT instead
533# connection default
534must_be_1
5351
536UNLOCK BINLOG;
537SELECT * FROm t_myisam;
538a
5390
5401
5411
5421
5431
5441
5451
5461
547SET @old_general_log = @@general_log;
548SET @old_slow_query_log = @@slow_query_log;
549SET @old_log_output = @@log_output;
550SET GLOBAL log_output = 'TABLE';
551SET GLOBAL general_log = ON;
552SET GLOBAL slow_query_log = ON;
553LOCK BINLOG FOR BACKUP;
554# connection con1
555SET @old_long_query_time = @@SESSION.long_query_time;
556SET SESSION long_query_time = 0;
557SELECT 1;
5581
5591
560# connection default
561SELECT 1;
5621
5631
564# connection con1
565SET SESSION long_query_time = @old_long_query_time;
566# connection default
567must_be_1
5681
569UNLOCK BINLOG;
570SET GLOBAL log_output = @old_log_output;
571SET GLOBAL slow_query_log = @old_slow_query_log;
572SET GLOBAL general_log = @old_general_log;
573#-----------------------------------------------------------------------
574# Cleanup
575#-----------------------------------------------------------------------
576DROP USER user@localhost;
577DROP VIEW v_innodb, v_myisam, v_memory, v_csv, v_blackhole, v_archive;
578DROP TABLE t_innodb, t_myisam, t_memory, t_csv, t_blackhole, t_archive;
579SET GLOBAL binlog_format = @old_binlog_format;
0580
=== added file 'mysql-test/r/backup_locks_binlog_stmt.result'
--- mysql-test/r/backup_locks_binlog_stmt.result 1970-01-01 00:00:00 +0000
+++ mysql-test/r/backup_locks_binlog_stmt.result 2014-02-20 11:26:00 +0000
@@ -0,0 +1,575 @@
1SET @old_binlog_format=@@binlog_format;
2SET GLOBAL binlog_format='STATEMENT';
3SET SESSION binlog_format='STATEMENT';
4SELECT @@binlog_format;
5@@binlog_format
6STATEMENT
7RESET MASTER;
8SHOW VARIABLES LIKE 'have_backup_locks';
9Variable_name Value
10have_backup_locks YES
11#-----------------------------------------------------------------------
12# Setup
13#-----------------------------------------------------------------------
14CREATE TABLE t_innodb(a INT NOT NULL, KEY (a)) ENGINE=InnoDB;
15CREATE TABLE t_myisam(a INT NOT NULL, KEY (a)) ENGINE=MyISAM;
16CREATE TABLE t_memory(a INT NOT NULL, KEY (a)) ENGINE=MEMORY;
17CREATE TABLE t_csv(a INT NOT NULL) ENGINE=CSV;
18CREATE TABLE t_blackhole(a INT NOT NULL, KEY (a)) ENGINE=BLACKHOLE;
19CREATE TABLE t_archive(a INT NOT NULL) ENGINE=ARCHIVE;
20CREATE VIEW v_innodb AS SELECT * FROM t_innodb;
21CREATE VIEW v_myisam AS SELECT * FROM t_myisam;
22CREATE VIEW v_memory AS SELECT * FROM t_memory;
23CREATE VIEW v_csv AS SELECT * FROM t_csv;
24CREATE VIEW v_blackhole AS SELECT * FROM t_blackhole;
25CREATE VIEW v_archive AS SELECT * FROM t_archive;
26#-----------------------------------------------------------------------
27# Single-threaded tests
28#-----------------------------------------------------------------------
29LOCK BINLOG FOR BACKUP;
30DELETE FROM t_innodb;
31INSERT INTO t_innodb VALUES(0);
32UPDATE t_innodb SET a = 1;
33REPLACE INTO t_innodb VALUES(1);
34SELECT * from t_innodb;
35a
361
371
38HANDLER t_innodb OPEN;
39HANDLER t_innodb READ a FIRST;
40a
411
42HANDLER t_innodb CLOSE;
43DELETE FROM t_myisam;
44INSERT INTO t_myisam VALUES(0);
45UPDATE t_myisam SET a = 1;
46REPLACE INTO t_myisam VALUES(1);
47SELECT * from t_myisam;
48a
491
501
51HANDLER t_myisam OPEN;
52HANDLER t_myisam READ a FIRST;
53a
541
55HANDLER t_myisam CLOSE;
56DELETE FROM t_memory;
57INSERT INTO t_memory VALUES(0);
58UPDATE t_memory SET a = 1;
59REPLACE INTO t_memory VALUES(1);
60SELECT * from t_memory;
61a
621
631
64DELETE FROM t_archive;
65INSERT INTO t_archive VALUES(0);
66SELECT * from t_archive;
67a
680
69DELETE FROM t_csv;
70INSERT INTO t_csv VALUES(0);
71UPDATE t_csv SET a = 1;
72REPLACE INTO t_csv VALUES(1);
73SELECT * from t_csv;
74a
751
761
77DELETE FROM t_blackhole;
78INSERT INTO t_blackhole VALUES(0);
79UPDATE t_blackhole SET a = 1;
80REPLACE INTO t_blackhole VALUES(1);
81SELECT * from t_blackhole;
82a
83CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
84CREATE TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
85CREATE TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
86CREATE TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
87CREATE TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
88CREATE TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
89DROP TABLE tt_innodb;
90DROP TABLE tt_myisam;
91DROP TABLE tt_memory;
92DROP TABLE tt_csv;
93DROP TABLE tt_blackhole;
94DROP TABLE tt_archive;
95DROP TABLE non_existing;
96ERROR 42S02: Unknown table 'test.non_existing'
97TRUNCATE TABLE t_innodb;
98TRUNCATE TABLE t_myisam;
99TRUNCATE TABLE t_memory;
100TRUNCATE TABLE t_csv;
101TRUNCATE TABLE t_blackhole;
102RENAME TABLE t_innodb TO tmp, tmp TO t_innodb;
103RENAME TABLE t_myisam TO tmp, tmp TO t_myisam;
104RENAME TABLE t_memory TO tmp, tmp TO t_memory;
105RENAME TABLE t_csv TO tmp, tmp TO t_csv;
106RENAME TABLE t_blackhole TO tmp, tmp TO t_blackhole;
107RENAME TABLE t_archive TO tmp, tmp TO t_archive;
108ALTER TABLE t_innodb ADD COLUMN b CHAR(10) NOT NULL;
109ALTER TABLE t_innodb DROP COLUMN b;
110ALTER TABLE t_myisam ADD COLUMN b CHAR(10) NOT NULL;
111ALTER TABLE t_myisam DROP COLUMN b;
112ALTER TABLE t_memory ADD COLUMN b CHAR(10) NOT NULL;
113ALTER TABLE t_memory DROP COLUMN b;
114ALTER TABLE t_csv ADD COLUMN b CHAR(10) NOT NULL;
115ALTER TABLE t_csv DROP COLUMN b;
116ALTER TABLE t_blackhole ADD COLUMN b CHAR(10) NOT NULL;
117ALTER TABLE t_blackhole DROP COLUMN b;
118ALTER TABLE t_archive ADD COLUMN b CHAR(10) NOT NULL;
119ALTER TABLE t_archive DROP COLUMN b;
120ALTER TABLE t_innodb ADD KEY tmp (a);
121Warnings:
122Note 1831 Duplicate index 'tmp' defined on the table 'test.t_innodb'. This is deprecated and will be disallowed in a future release.
123ALTER TABLE t_innodb DROP KEY tmp;
124ALTER TABLE t_myisam ADD KEY tmp (a);
125Warnings:
126Note 1831 Duplicate index 'tmp' defined on the table 'test.t_myisam'. This is deprecated and will be disallowed in a future release.
127ALTER TABLE t_myisam DROP KEY tmp;
128ALTER TABLE t_memory ADD KEY tmp (a);
129Warnings:
130Note 1831 Duplicate index 'tmp' defined on the table 'test.t_memory'. This is deprecated and will be disallowed in a future release.
131ALTER TABLE t_memory DROP KEY tmp;
132ALTER TABLE t_blackhole ADD KEY tmp (a);
133Warnings:
134Note 1831 Duplicate index 'tmp' defined on the table 'test.t_blackhole'. This is deprecated and will be disallowed in a future release.
135ALTER TABLE t_blackhole DROP KEY tmp;
136CREATE DATABASE test1;
137DROP DATABASE test1;
138CREATE PROCEDURE p1()
139BEGIN
140SELECT 1;
141END|
142DROP PROCEDURE p1|
143CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
144BEGIN
145RETURN 1;
146END|
147DROP FUNCTION f1|
148CREATE VIEW v1 AS SELECT * FROM t_innodb;
149DROP VIEW v1;
150INSERT INTO v_innodb VALUES(1);
151INSERT INTO v_blackhole VALUES(1);
152INSERT INTO v_myisam VALUES(1);
153INSERT INTO v_csv VALUES(1);
154INSERT INTO v_memory VALUES(1);
155INSERT INTO v_archive VALUES(1);
156UNLOCK BINLOG;
157SELECT @@delay_key_write;
158@@delay_key_write
159ON
160SET GLOBAL delay_key_write=ALL;
161LOCK TABLES FOR BACKUP;
162ERROR HY000: The MySQL server is running with the delay_key_write=ALL option so it cannot execute this statement
163SET GLOBAL delay_key_write=default;
164SELECT @@delay_key_write;
165@@delay_key_write
166ON
167SET GLOBAL read_only=1;
168INSERT INTO t_innodb VALUES(0);
169INSERT INTO t_myisam VALUES(0);
170LOCK TABLES FOR BACKUP;
171INSERT INTO t_innodb VALUES(0);
172INSERT INTO t_myisam VALUES(0);
173ERROR HY000: Can’t execute the query because you have a conflicting backup lock
174UNLOCK TABLES;
175INSERT INTO t_innodb VALUES(0);
176INSERT INTO t_myisam VALUES(0);
177SET GLOBAL read_only=0;
178LOCK TABLES FOR BACKUP;
179CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
180CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
181CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
182CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
183CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
184CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
185INSERT INTO tt_innodb VALUES(5);
186INSERT INTO tt_myisam VALUES(5);
187INSERT INTO tt_memory VALUES(5);
188INSERT INTO tt_csv VALUES(5);
189INSERT INTO tt_blackhole VALUES(5);
190INSERT INTO tt_archive VALUES(5);
191LOCK BINLOG FOR BACKUP;
192START TRANSACTION;
193SELECT * FROM tt_archive;
194a
1955
196SELECT * FROM tt_blackhole;
197a
198SELECT * FROM tt_memory;
199a
2005
201SELECT * FROM tt_innodb;
202a
2035
204SELECT * FROM tt_myisam;
205a
2065
207INSERT INTO tt_innodb VALUES(6);
208INSERT INTO tt_myisam VALUES(6);
209INSERT INTO tt_memory VALUES(6);
210INSERT INTO tt_csv VALUES(6);
211INSERT INTO tt_blackhole VALUES(6);
212INSERT INTO tt_archive VALUES(6);
213COMMIT;
214SELECT * FROM tt_archive;
215a
2165
2176
218SELECT * FROM tt_blackhole;
219a
220SELECT * FROM tt_memory;
221a
2225
2236
224SELECT * FROM tt_innodb;
225a
2265
2276
228SELECT * FROM tt_myisam;
229a
2305
2316
232DROP TEMPORARY TABLE tt_innodb;
233DROP TEMPORARY TABLE tt_myisam;
234DROP TEMPORARY TABLE tt_memory;
235DROP TEMPORARY TABLE tt_csv;
236DROP TEMPORARY TABLE tt_blackhole;
237DROP TEMPORARY TABLE tt_archive;
238UNLOCK BINLOG;
239UNLOCK TABLES;
240SELECT @@log_bin;
241@@log_bin
2421
243LOCK BINLOG FOR BACKUP;
244INSERT INTO t_innodb VALUES(1);
245INSERT INTO t_myisam VALUES(1);
246UNLOCK BINLOG;
247SET @old_general_log = @@general_log;
248SET @old_slow_query_log = @@slow_query_log;
249SET @old_log_output = @@log_output;
250SET @old_long_query_time = @@SESSION.long_query_time;
251SET SESSION long_query_time = 0;
252SET GLOBAL log_output = 'TABLE';
253SET GLOBAL general_log = ON;
254SET GLOBAL slow_query_log = ON;
255LOCK TABLES FOR BACKUP;
256SELECT 1;
2571
2581
259LOCK BINLOG FOR BACKUP;
260SELECT 1;
2611
2621
263UNLOCK BINLOG;
264UNLOCK TABLES;
265SET SESSION long_query_time = @old_long_query_time;
266SET GLOBAL log_output = @old_log_output;
267SET GLOBAL slow_query_log = @old_slow_query_log;
268SET GLOBAL general_log = @old_general_log;
269#-----------------------------------------------------------------------
270# Multi-threaded tests
271#-----------------------------------------------------------------------
272# connection default
273CREATE USER user@localhost;
274GRANT ALL PRIVILEGES ON test.* TO user@localhost;
275LOCK TABLES FOR BACKUP;
276# connection con1
277SET SESSION lock_wait_timeout = 1;
278SET GLOBAL delay_key_write=ALL;
279ERROR HY000: Lock wait timeout exceeded; try restarting transaction
280SET SESSION lock_wait_timeout = DEFAULT;
281# connection default
282UNLOCK TABLES;
283# connection con2
284START TRANSACTION;
285INSERT INTO t_innodb VALUES(0);
286# connection default
287SET GLOBAL read_only=1;
288# connection con2
289COMMIT;
290ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
291INSERT INTO t_innodb VALUES(0);
292ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
293INSERT INTO t_myisam VALUES(0);
294ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
295# connection con1
296LOCK TABLES FOR BACKUP;
297# connection con2
298INSERT INTO t_innodb VALUES(0);
299ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
300INSERT INTO t_myisam VALUES(0);
301ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
302# connection default
303SET GLOBAL read_only=0;
304# connection con2
305SET SESSION lock_wait_timeout = 1;
306INSERT INTO t_innodb VALUES(0);
307INSERT INTO t_myisam VALUES(0);
308ERROR HY000: Lock wait timeout exceeded; try restarting transaction
309SET SESSION lock_wait_timeout = 0;
310Warnings:
311Warning 1292 Truncated incorrect lock_wait_timeout value: '0'
312# connection default
313SET GLOBAL read_only=1;
314# connection con2
315INSERT INTO t_innodb VALUES(0);
316ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
317INSERT INTO t_myisam VALUES(0);
318ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
319# connection con1
320UNLOCK TABLES;
321# connection con2
322INSERT INTO t_innodb VALUES(0);
323ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
324INSERT INTO t_myisam VALUES(0);
325ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
326# connection default
327SET GLOBAL read_only=0;
328# connection default
329LOCK TABLES FOR BACKUP;
330# connection con1
331CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
332CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
333CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
334CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
335CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
336CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
337INSERT INTO tt_innodb VALUES(5);
338INSERT INTO tt_myisam VALUES(5);
339INSERT INTO tt_memory VALUES(5);
340INSERT INTO tt_csv VALUES(5);
341INSERT INTO tt_blackhole VALUES(5);
342INSERT INTO tt_archive VALUES(5);
343# connection default
344LOCK BINLOG FOR BACKUP;
345# connection con1
346SET SESSION lock_wait_timeout = 1;
347START TRANSACTION;
348INSERT INTO tt_myisam VALUES(6);
349ERROR HY000: Lock wait timeout exceeded; try restarting transaction
350INSERT INTO tt_innodb VALUES(6);
351SELECT * FROM tt_archive;
352a
3535
354SELECT * FROM tt_blackhole;
355a
356SELECT * FROM tt_memory;
357a
3585
359SELECT * FROM tt_innodb;
360a
3615
3626
363SELECT * FROM tt_myisam;
364a
3655
3666
367SELECT * FROM tt_csv;
368a
3695
370COMMIT;
371ERROR HY000: Lock wait timeout exceeded; try restarting transaction
372# connection default
373must_be_1
3741
375UNLOCK BINLOG;
376UNLOCK TABLES;
377# connection con1
378COMMIT;
379DROP TEMPORARY TABLE tt_innodb;
380DROP TEMPORARY TABLE tt_myisam;
381DROP TEMPORARY TABLE tt_memory;
382DROP TEMPORARY TABLE tt_csv;
383DROP TEMPORARY TABLE tt_blackhole;
384DROP TEMPORARY TABLE tt_archive;
385# connection default
386LOCK BINLOG FOR BACKUP;
387# connection con1
388SET SESSION lock_wait_timeout = 1;
389INSERT INTO t_innodb VALUES(1);
390ERROR HY000: Lock wait timeout exceeded; try restarting transaction
391INSERT INTO t_myisam VALUES(1);
392ERROR HY000: Lock wait timeout exceeded; try restarting transaction
393SET SESSION lock_wait_timeout = DEFAULT;
394# connection default
395must_be_1
3961
397UNLOCK BINLOG;
398# connection default
399LOCK BINLOG FOR BACKUP;
400# connection con1
401SET SESSION lock_wait_timeout = 1;
402DELETE FROM t_innodb;
403ERROR HY000: Lock wait timeout exceeded; try restarting transaction
404INSERT INTO t_innodb VALUES(0);
405ERROR HY000: Lock wait timeout exceeded; try restarting transaction
406UPDATE t_innodb SET a = 1;
407ERROR HY000: Lock wait timeout exceeded; try restarting transaction
408REPLACE INTO t_innodb VALUES(1);
409ERROR HY000: Lock wait timeout exceeded; try restarting transaction
410SELECT * from t_innodb;
411a
4120
4130
4140
4150
4161
4171
418HANDLER t_innodb OPEN;
419HANDLER t_innodb READ a FIRST;
420a
4210
422HANDLER t_innodb CLOSE;
423START TRANSACTION;
424SELECT * from t_innodb;
425a
4260
4270
4280
4290
4301
4311
432DELETE FROM t_innodb;
433INSERT INTO t_innodb VALUES(0);
434UPDATE t_innodb SET a = 1;
435REPLACE INTO t_innodb VALUES(1);
436COMMIT;
437ERROR HY000: Lock wait timeout exceeded; try restarting transaction
438SELECT * FROM t_innodb;
439a
4400
4410
4420
4430
4441
4451
446COMMIT;
447START TRANSACTION;
448INSERT INTO t_myisam VALUES(1);
449ERROR HY000: Lock wait timeout exceeded; try restarting transaction
450COMMIT;
451INSERT INTO t_myisam VALUES(0);
452ERROR HY000: Lock wait timeout exceeded; try restarting transaction
453UPDATE t_myisam SET a = 1;
454ERROR HY000: Lock wait timeout exceeded; try restarting transaction
455SELECT * FROM t_myisam;
456a
4571
4581
4591
4601
4611
4621
4631
464HANDLER t_myisam OPEN;
465HANDLER t_myisam READ a FIRST;
466a
4671
468HANDLER t_myisam CLOSE;
469DELETE FROM t_blackhole;
470ERROR HY000: Lock wait timeout exceeded; try restarting transaction
471INSERT INTO t_blackhole VALUES(0);
472ERROR HY000: Lock wait timeout exceeded; try restarting transaction
473UPDATE t_blackhole SET a = 1;
474ERROR HY000: Lock wait timeout exceeded; try restarting transaction
475REPLACE INTO t_blackhole VALUES(1);
476ERROR HY000: Lock wait timeout exceeded; try restarting transaction
477SELECT * FROM t_blackhole;
478a
479CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
480ERROR HY000: Lock wait timeout exceeded; try restarting transaction
481DROP TABLE tt_innodb;
482ERROR HY000: Lock wait timeout exceeded; try restarting transaction
483DROP TABLE non_existing;
484ERROR 42S02: Unknown table 'test.non_existing'
485CREATE TABLE t_innodb(a INT NOT NULL) ENGINE=InnoDB;
486ERROR 42S01: Table 't_innodb' already exists
487TRUNCATE TABLE t_innodb;
488ERROR HY000: Lock wait timeout exceeded; try restarting transaction
489RENAME TABLE t_innodb TO tmp, tmp to t_innodb;
490ERROR HY000: Lock wait timeout exceeded; try restarting transaction
491ALTER TABLE t_innodb ADD COLUMN b CHAR(10);
492ERROR HY000: Lock wait timeout exceeded; try restarting transaction
493ALTER TABLE t_innodb ADD KEY (a);
494ERROR HY000: Lock wait timeout exceeded; try restarting transaction
495CREATE DATABASE test1;
496ERROR HY000: Lock wait timeout exceeded; try restarting transaction
497DROP DATABASE test1;
498ERROR HY000: Lock wait timeout exceeded; try restarting transaction
499CREATE PROCEDURE p1() SELECT 1;
500ERROR HY000: Lock wait timeout exceeded; try restarting transaction
501DROP PROCEDURE p1;
502ERROR HY000: Lock wait timeout exceeded; try restarting transaction
503CREATE VIEW v1 AS SELECT * FROM t_innodb;
504ERROR HY000: Lock wait timeout exceeded; try restarting transaction
505DROP VIEW v1;
506ERROR HY000: Lock wait timeout exceeded; try restarting transaction
507INSERT INTO v_innodb VALUES(1);
508ERROR HY000: Lock wait timeout exceeded; try restarting transaction
509# connection default
510must_be_1
5111
512UNLOCK BINLOG;
513# connection con1
514SHOW CREATE TABLE t_innodb;
515Table Create Table
516t_innodb CREATE TABLE `t_innodb` (
517 `a` int(11) NOT NULL,
518 `b` char(10) DEFAULT NULL,
519 KEY `a` (`a`),
520 KEY `a_2` (`a`)
521) ENGINE=InnoDB DEFAULT CHARSET=latin1
522DROP TABLE t_innodb;
523CREATE TABLE t_innodb(a INT NOT NULL) ENGINE=InnoDB;
524# connection default
525LOCK BINLOG FOR BACKUP;
526# connection con1
527INSERT DELAYED INTO t_myisam VALUES(0);
528ERROR HY000: Lock wait timeout exceeded; try restarting transaction
529# connection default
530must_be_1
5311
532UNLOCK BINLOG;
533SELECT * FROm t_myisam;
534a
5350
5361
5371
5381
5391
5401
5411
5421
543SET @old_general_log = @@general_log;
544SET @old_slow_query_log = @@slow_query_log;
545SET @old_log_output = @@log_output;
546SET GLOBAL log_output = 'TABLE';
547SET GLOBAL general_log = ON;
548SET GLOBAL slow_query_log = ON;
549LOCK BINLOG FOR BACKUP;
550# connection con1
551SET @old_long_query_time = @@SESSION.long_query_time;
552SET SESSION long_query_time = 0;
553SELECT 1;
5541
5551
556# connection default
557SELECT 1;
5581
5591
560# connection con1
561SET SESSION long_query_time = @old_long_query_time;
562# connection default
563must_be_1
5641
565UNLOCK BINLOG;
566SET GLOBAL log_output = @old_log_output;
567SET GLOBAL slow_query_log = @old_slow_query_log;
568SET GLOBAL general_log = @old_general_log;
569#-----------------------------------------------------------------------
570# Cleanup
571#-----------------------------------------------------------------------
572DROP USER user@localhost;
573DROP VIEW v_innodb, v_myisam, v_memory, v_csv, v_blackhole, v_archive;
574DROP TABLE t_innodb, t_myisam, t_memory, t_csv, t_blackhole, t_archive;
575SET GLOBAL binlog_format = @old_binlog_format;
0576
=== added file 'mysql-test/r/backup_locks_mysqldump.result'
--- mysql-test/r/backup_locks_mysqldump.result 1970-01-01 00:00:00 +0000
+++ mysql-test/r/backup_locks_mysqldump.result 2014-02-20 11:26:00 +0000
@@ -0,0 +1,143 @@
1SHOW VARIABLES LIKE 'have_backup_locks';
2Variable_name Value
3have_backup_locks YES
4CREATE TABLE t1 (a INT) ENGINE=InnoDB;
5CREATE TABLE t2 (a INT) ENGINE=MyISAM;
6SET @old_general_log = @@general_log;
7SET @old_log_output = @@log_output;
8TRUNCATE TABLE mysql.general_log;
9SET GLOBAL log_output = 'TABLE';
10SET GLOBAL general_log = ON;
11# Check that --lock-for-backup is converted to --lock-all-tables if
12# --single-transaction is not specified
13SELECT argument FROM mysql.general_log WHERE argument != '';
14argument
15SET GLOBAL general_log = ON
16root@localhost on
17/*!40100 SET @@SQL_MODE='' */
18/*!40103 SET TIME_ZONE='+00:00' */
19FLUSH TABLES
20FLUSH TABLES WITH READ LOCK
21SHOW VARIABLES LIKE 'gtid\_mode'
22SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('test'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE ORDER BY LOGFILE_GROUP_NAME
23SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('test')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME
24SHOW VARIABLES LIKE 'ndbinfo\_version'
25test
26show tables
27show table status like 't1'
28SET SQL_QUOTE_SHOW_CREATE=1
29SET SESSION character_set_results = 'binary'
30show create table `t1`
31SET SESSION character_set_results = 'utf8'
32show fields from `t1`
33SELECT /*!40001 SQL_NO_CACHE */ * FROM `t1`
34SET SESSION character_set_results = 'binary'
35use `test`
36select @@collation_database
37SHOW TRIGGERS LIKE 't1'
38SET SESSION character_set_results = 'utf8'
39show table status like 't2'
40SET SQL_QUOTE_SHOW_CREATE=1
41SET SESSION character_set_results = 'binary'
42show create table `t2`
43SET SESSION character_set_results = 'utf8'
44show fields from `t2`
45SELECT /*!40001 SQL_NO_CACHE */ * FROM `t2`
46SET SESSION character_set_results = 'binary'
47use `test`
48select @@collation_database
49SHOW TRIGGERS LIKE 't2'
50SET SESSION character_set_results = 'utf8'
51SELECT argument FROM mysql.general_log WHERE argument != ''
52TRUNCATE TABLE mysql.general_log;
53# Check that --lock-for-backup --single-transaction uses LOCK TABLES FOR
54# BACKUP
55SELECT argument FROM mysql.general_log WHERE argument != '';
56argument
57root@localhost on
58/*!40100 SET @@SQL_MODE='' */
59/*!40103 SET TIME_ZONE='+00:00' */
60SHOW VARIABLES LIKE 'have_backup_locks'
61LOCK TABLES FOR BACKUP
62SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
63START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
64SHOW VARIABLES LIKE 'gtid\_mode'
65SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('test'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE ORDER BY LOGFILE_GROUP_NAME
66SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('test')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME
67SHOW VARIABLES LIKE 'ndbinfo\_version'
68test
69show tables
70show table status like 't1'
71SET SQL_QUOTE_SHOW_CREATE=1
72SET SESSION character_set_results = 'binary'
73show create table `t1`
74SET SESSION character_set_results = 'utf8'
75show fields from `t1`
76SELECT /*!40001 SQL_NO_CACHE */ * FROM `t1`
77SET SESSION character_set_results = 'binary'
78use `test`
79select @@collation_database
80SHOW TRIGGERS LIKE 't1'
81SET SESSION character_set_results = 'utf8'
82show table status like 't2'
83SET SQL_QUOTE_SHOW_CREATE=1
84SET SESSION character_set_results = 'binary'
85show create table `t2`
86SET SESSION character_set_results = 'utf8'
87show fields from `t2`
88SELECT /*!40001 SQL_NO_CACHE */ * FROM `t2`
89SET SESSION character_set_results = 'binary'
90use `test`
91select @@collation_database
92SHOW TRIGGERS LIKE 't2'
93SET SESSION character_set_results = 'utf8'
94SELECT argument FROM mysql.general_log WHERE argument != ''
95TRUNCATE TABLE mysql.general_log;
96# Check that --master-data disables --lock-for-backup
97SELECT argument FROM mysql.general_log WHERE argument != '';
98argument
99root@localhost on
100/*!40100 SET @@SQL_MODE='' */
101/*!40103 SET TIME_ZONE='+00:00' */
102SHOW VARIABLES LIKE 'have_backup_locks'
103FLUSH /*!40101 LOCAL */ TABLES
104FLUSH TABLES WITH READ LOCK
105SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
106START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
107SHOW VARIABLES LIKE 'gtid\_mode'
108SHOW MASTER STATUS
109UNLOCK TABLES
110SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('test'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE ORDER BY LOGFILE_GROUP_NAME
111SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('test')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME
112SHOW VARIABLES LIKE 'ndbinfo\_version'
113test
114show tables
115show table status like 't1'
116SET SQL_QUOTE_SHOW_CREATE=1
117SET SESSION character_set_results = 'binary'
118show create table `t1`
119SET SESSION character_set_results = 'utf8'
120show fields from `t1`
121SELECT /*!40001 SQL_NO_CACHE */ * FROM `t1`
122SET SESSION character_set_results = 'binary'
123use `test`
124select @@collation_database
125SHOW TRIGGERS LIKE 't1'
126SET SESSION character_set_results = 'utf8'
127show table status like 't2'
128SET SQL_QUOTE_SHOW_CREATE=1
129SET SESSION character_set_results = 'binary'
130show create table `t2`
131SET SESSION character_set_results = 'utf8'
132show fields from `t2`
133SELECT /*!40001 SQL_NO_CACHE */ * FROM `t2`
134SET SESSION character_set_results = 'binary'
135use `test`
136select @@collation_database
137SHOW TRIGGERS LIKE 't2'
138SET SESSION character_set_results = 'utf8'
139SELECT argument FROM mysql.general_log WHERE argument != ''
140TRUNCATE TABLE mysql.general_log;
141SET GLOBAL log_output = @old_log_output;
142SET GLOBAL general_log = @old_general_log;
143DROP TABLE t1, t2;
0144
=== modified file 'mysql-test/suite/funcs_1/r/storedproc.result'
--- mysql-test/suite/funcs_1/r/storedproc.result 2013-05-10 09:39:17 +0000
+++ mysql-test/suite/funcs_1/r/storedproc.result 2014-02-20 11:26:00 +0000
@@ -5522,7 +5522,9 @@
5522unlock:BEGIN5522unlock:BEGIN
5523SELECT @x;5523SELECT @x;
5524END//5524END//
5525ERROR 0A000: UNLOCK is not allowed in stored procedures5525ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':BEGIN
5526SELECT @x;
5527END' at line 2
5526DROP PROCEDURE IF EXISTS sp1;5528DROP PROCEDURE IF EXISTS sp1;
5527CREATE PROCEDURE sp1()5529CREATE PROCEDURE sp1()
5528unsigned:BEGIN5530unsigned:BEGIN
55295531
=== modified file 'mysql-test/suite/funcs_1/t/storedproc.test'
--- mysql-test/suite/funcs_1/t/storedproc.test 2011-12-09 21:08:37 +0000
+++ mysql-test/suite/funcs_1/t/storedproc.test 2014-02-20 11:26:00 +0000
@@ -5226,7 +5226,7 @@
5226DROP PROCEDURE IF EXISTS sp1;5226DROP PROCEDURE IF EXISTS sp1;
52275227
5228delimiter //;5228delimiter //;
5229--error ER_SP_BADSTATEMENT5229--error ER_PARSE_ERROR
5230CREATE PROCEDURE sp1()5230CREATE PROCEDURE sp1()
5231 unlock:BEGIN5231 unlock:BEGIN
5232 SELECT @x;5232 SELECT @x;
52335233
=== added file 'mysql-test/suite/rpl/r/rpl_backup_locks.result'
--- mysql-test/suite/rpl/r/rpl_backup_locks.result 1970-01-01 00:00:00 +0000
+++ mysql-test/suite/rpl/r/rpl_backup_locks.result 2014-02-20 11:26:00 +0000
@@ -0,0 +1,34 @@
1include/master-slave.inc
2Warnings:
3Note #### Sending passwords in plain text without SSL/TLS is extremely insecure.
4Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
5[connection master]
6CREATE TABLE t_innodb (a INT) ENGINE=InnoDB;
7CREATE TABLE t_myisam (a INT) ENGINE=MyISAM;
8STOP SLAVE;
9include/wait_for_slave_to_stop.inc
10# connection master
11INSERT INTO t_innodb VALUES (0);
12# connection slave
13LOCK TABLES FOR BACKUP;
14LOCK BINLOG FOR BACKUP;
15START SLAVE;
16include/wait_for_slave_to_start.inc
17include/check_slave_param.inc [Exec_Master_Log_Pos]
18UNLOCK BINLOG;
19UNLOCK TABLES;
20# connection master
21# connection slave
22STOP SLAVE;
23# connection master
24INSERT INTO t_myisam VALUES (0);
25# connection slave
26LOCK TABLES FOR BACKUP;
27START SLAVE;
28LOCK BINLOG FOR BACKUP;
29UNLOCK TABLES;
30include/check_slave_param.inc [Exec_Master_Log_Pos]
31UNLOCK BINLOG;
32# connection master
33DROP TABLE t_innodb, t_myisam;
34include/rpl_end.inc
035
=== added file 'mysql-test/suite/rpl/t/rpl_backup_locks.test'
--- mysql-test/suite/rpl/t/rpl_backup_locks.test 1970-01-01 00:00:00 +0000
+++ mysql-test/suite/rpl/t/rpl_backup_locks.test 2014-02-20 11:26:00 +0000
@@ -0,0 +1,95 @@
1########################################################################
2# Replication-related tests for backup locks
3########################################################################
4
5--source include/have_innodb.inc
6--source include/master-slave.inc
7
8CREATE TABLE t_innodb (a INT) ENGINE=InnoDB;
9CREATE TABLE t_myisam (a INT) ENGINE=MyISAM;
10
11sync_slave_with_master;
12
13STOP SLAVE;
14--source include/wait_for_slave_to_stop.inc
15
16--connection master
17--echo # connection master
18
19INSERT INTO t_innodb VALUES (0);
20
21--connection slave
22--echo # connection slave
23
24--let $master_log_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1)
25
26LOCK TABLES FOR BACKUP;
27LOCK BINLOG FOR BACKUP;
28
29START SLAVE;
30--source include/wait_for_slave_to_start.inc
31
32let $wait_condition=
33 SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
34 WHERE STATE = "Waiting for binlog lock" AND
35 (INFO = "INSERT INTO t_innodb VALUES (0)" OR INFO IS NULL);
36--source include/wait_condition.inc
37
38--let $slave_param= Exec_Master_Log_Pos
39--let $slave_param_value= $master_log_pos
40--source include/check_slave_param.inc
41
42UNLOCK BINLOG;
43UNLOCK TABLES;
44
45--connection master
46--echo # connection master
47sync_slave_with_master;
48
49
50--connection slave
51--echo # connection slave
52STOP SLAVE;
53
54--connection master
55--echo # connection master
56
57INSERT INTO t_myisam VALUES (0);
58
59--connection slave
60--echo # connection slave
61
62--let $master_log_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1)
63
64LOCK TABLES FOR BACKUP;
65
66START SLAVE;
67
68let $wait_condition=
69 SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
70 WHERE STATE = "Waiting for backup lock" AND
71 (INFO = "INSERT INTO t_myisam VALUES (0)" OR INFO IS NULL);
72--source include/wait_condition.inc
73
74LOCK BINLOG FOR BACKUP;
75UNLOCK TABLES;
76
77let $wait_condition=
78 SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
79 WHERE STATE = "Waiting for binlog lock" AND
80 (INFO = "INSERT INTO t_myisam VALUES (0)" OR INFO IS NULL);
81--source include/wait_condition.inc
82
83--let $slave_param= Exec_Master_Log_Pos
84--let $slave_param_value= $master_log_pos
85--source include/check_slave_param.inc
86
87UNLOCK BINLOG;
88
89--connection master
90--echo # connection master
91
92DROP TABLE t_innodb, t_myisam;
93sync_slave_with_master;
94
95--source include/rpl_end.inc
096
=== added file 'mysql-test/suite/sys_vars/r/have_backup_locks_basic.result'
--- mysql-test/suite/sys_vars/r/have_backup_locks_basic.result 1970-01-01 00:00:00 +0000
+++ mysql-test/suite/sys_vars/r/have_backup_locks_basic.result 2014-02-20 11:26:00 +0000
@@ -0,0 +1,11 @@
1SELECT @@GLOBAL.have_backup_locks="YES";
2@@GLOBAL.have_backup_locks="YES"
31
4SELECT @@SESSION.have_backup_locks;
5ERROR HY000: Variable 'have_backup_locks' is a GLOBAL variable
6SHOW GLOBAL VARIABLES LIKE 'have_backup_locks';
7Variable_name Value
8have_backup_locks YES
9SHOW SESSION VARIABLES LIKE 'have_backup_locks';
10Variable_name Value
11have_backup_locks YES
012
=== added file 'mysql-test/suite/sys_vars/t/have_backup_locks_basic.test'
--- mysql-test/suite/sys_vars/t/have_backup_locks_basic.test 1970-01-01 00:00:00 +0000
+++ mysql-test/suite/sys_vars/t/have_backup_locks_basic.test 2014-02-20 11:26:00 +0000
@@ -0,0 +1,7 @@
1SELECT @@GLOBAL.have_backup_locks="YES";
2--error ER_INCORRECT_GLOBAL_LOCAL_VAR
3SELECT @@SESSION.have_backup_locks;
4
5SHOW GLOBAL VARIABLES LIKE 'have_backup_locks';
6
7SHOW SESSION VARIABLES LIKE 'have_backup_locks';
08
=== added file 'mysql-test/t/backup_locks.test'
--- mysql-test/t/backup_locks.test 1970-01-01 00:00:00 +0000
+++ mysql-test/t/backup_locks.test 2014-02-20 11:26:00 +0000
@@ -0,0 +1,1091 @@
1########################################################################
2# Tests for LOCK TABLES FOR BACKUP and LOCK BINLOG FOR BACKUP
3########################################################################
4
5--source include/have_innodb.inc
6--source include/not_embedded.inc
7--source include/have_archive.inc
8--source include/have_csv.inc
9--source include/have_blackhole.inc
10
11SHOW VARIABLES LIKE 'have_backup_locks';
12
13--echo #-----------------------------------------------------------------------
14--echo # Setup
15--echo #-----------------------------------------------------------------------
16
17# Save the initial number of concurrent sessions.
18--source include/count_sessions.inc
19
20CREATE TABLE t_innodb(a INT NOT NULL, KEY (a)) ENGINE=InnoDB;
21CREATE TABLE t_myisam(a INT NOT NULL, KEY (a)) ENGINE=MyISAM;
22CREATE TABLE t_memory(a INT NOT NULL, KEY (a)) ENGINE=MEMORY;
23CREATE TABLE t_csv(a INT NOT NULL) ENGINE=CSV;
24CREATE TABLE t_blackhole(a INT NOT NULL, KEY (a)) ENGINE=BLACKHOLE;
25CREATE TABLE t_archive(a INT NOT NULL) ENGINE=ARCHIVE;
26
27CREATE VIEW v_innodb AS SELECT * FROM t_innodb;
28CREATE VIEW v_myisam AS SELECT * FROM t_myisam;
29CREATE VIEW v_memory AS SELECT * FROM t_memory;
30CREATE VIEW v_csv AS SELECT * FROM t_csv;
31CREATE VIEW v_blackhole AS SELECT * FROM t_blackhole;
32CREATE VIEW v_archive AS SELECT * FROM t_archive;
33
34--echo #-----------------------------------------------------------------------
35--echo # Basic syntax checks
36--echo #-----------------------------------------------------------------------
37
38--error ER_PARSE_ERROR
39LOCK TABLES t_innodb FOR BACKUP;
40--error ER_PARSE_ERROR
41LOCK TABLES t_innodb READ FOR BACKUP;
42--error ER_PARSE_ERROR
43LOCK TABLES t_innodb FOR BACKUP READ;
44--error ER_PARSE_ERROR
45LOCK BINLOG t_innodb FOR BACKUP;
46--error ER_PARSE_ERROR
47LOCK BINLOG t_innodb READ FOR BACKUP;
48--error ER_PARSE_ERROR
49LOCK BINLOG t_innodb FOR BACKUP READ;
50
51LOCK TABLES FOR BACKUP;
52UNLOCK TABLES;
53
54LOCK BINLOG FOR BACKUP;
55UNLOCK BINLOG;
56
57--echo #-----------------------------------------------------------------------
58--echo # No backup locks are allowed in stored routines
59--echo #-----------------------------------------------------------------------
60
61delimiter |;
62--error ER_SP_BADSTATEMENT
63CREATE PROCEDURE p1()
64BEGIN
65 LOCK TABLES FOR BACKUP;
66END|
67
68--error ER_SP_BADSTATEMENT
69CREATE PROCEDURE p2()
70BEGIN
71 LOCK BINLOG FOR BACKUP;
72END|
73
74--error ER_SP_BADSTATEMENT
75CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
76BEGIN
77 LOCK TABLES FOR BACKUP;
78 RETURN 1;
79END|
80
81--error ER_SP_BADSTATEMENT
82CREATE FUNCTION f2() RETURNS INT DETERMINISTIC
83BEGIN
84 LOCK BINLOG FOR BACKUP;
85 RETURN 1;
86END|
87
88delimiter ;|
89
90--echo #-----------------------------------------------------------------------
91--echo # Single-threaded tests
92--echo #-----------------------------------------------------------------------
93
94SET SESSION lock_wait_timeout=1;
95
96FLUSH STATUS;
97
98#
99# Multiple TFB locks in the same connection
100#
101LOCK TABLES FOR BACKUP;
102LOCK TABLES FOR BACKUP;
103SHOW STATUS LIKE 'Com_lock_tables_for_backup';
104
105UNLOCK TABLES;
106SHOW STATUS LIKE 'Com_unlock_tables';
107
108#
109# Multiple BFB locks in the same connection
110#
111LOCK BINLOG FOR BACKUP;
112LOCK BINLOG FOR BACKUP;
113
114SHOW STATUS LIKE 'Com_lock_binlog_for_backup';
115
116UNLOCK BINLOG;
117SHOW STATUS LIKE 'Com_unlock_binlog';
118
119#
120# LTFB + DDL / DML in the same connection
121#
122
123LOCK TABLES FOR BACKUP;
124
125DELETE FROM t_innodb;
126INSERT INTO t_innodb VALUES(0);
127UPDATE t_innodb SET a = 1;
128REPLACE INTO t_innodb VALUES(1);
129SELECT * FROM t_innodb;
130HANDLER t_innodb OPEN;
131HANDLER t_innodb READ a FIRST;
132HANDLER t_innodb CLOSE;
133
134--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
135DELETE FROM t_myisam;
136--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
137INSERT INTO t_myisam VALUES(0);
138--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
139INSERT DELAYED INTO t_myisam VALUES(0);
140--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
141UPDATE t_myisam SET a = 1;
142--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
143REPLACE INTO t_myisam VALUES(1);
144SELECT * FROM t_myisam;
145HANDLER t_myisam OPEN;
146HANDLER t_myisam READ a FIRST;
147HANDLER t_myisam CLOSE;
148
149--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
150DELETE FROM t_memory;
151--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
152INSERT INTO t_memory VALUES(0);
153--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
154INSERT DELAYED INTO t_memory VALUES(0);
155--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
156UPDATE t_memory SET a = 1;
157--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
158REPLACE INTO t_memory VALUES(1);
159SELECT * FROM t_memory;
160
161--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
162DELETE FROM t_archive;
163--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
164INSERT INTO t_archive VALUES(0);
165--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
166INSERT DELAYED INTO t_archive VALUES(0);
167--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
168UPDATE t_archive SET a = 1;
169--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
170REPLACE INTO t_archive VALUES(1);
171SELECT * FROM t_archive;
172
173--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
174DELETE FROM t_csv;
175--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
176INSERT INTO t_csv VALUES(0);
177--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
178UPDATE t_csv SET a = 1;
179--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
180REPLACE INTO t_csv VALUES(1);
181SELECT * FROM t_csv;
182
183DELETE FROM t_blackhole;
184INSERT INTO t_blackhole VALUES(0);
185--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
186INSERT DELAYED INTO t_blackhole VALUES(0);
187UPDATE t_blackhole SET a = 1;
188REPLACE INTO t_blackhole VALUES(1);
189SELECT * FROM t_blackhole;
190
191--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
192CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
193--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
194CREATE TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
195--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
196CREATE TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
197--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
198CREATE TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
199--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
200CREATE TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
201--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
202CREATE TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
203
204--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
205DROP TABLE t_innodb;
206--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
207DROP TABLE t_myisam;
208--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
209DROP TABLE t_memory;
210--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
211DROP TABLE t_csv;
212--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
213DROP TABLE t_blackhole;
214--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
215DROP TABLE t_archive;
216
217--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
218DROP TABLE non_existing;
219
220--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
221TRUNCATE TABLE t_innodb;
222--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
223TRUNCATE TABLE t_myisam;
224--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
225TRUNCATE TABLE t_memory;
226--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
227TRUNCATE TABLE t_csv;
228--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
229TRUNCATE TABLE t_blackhole;
230--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
231TRUNCATE TABLE t_archive;
232
233--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
234RENAME TABLE t_innodb TO tmp;
235--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
236RENAME TABLE t_myisam TO tmp;
237--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
238RENAME TABLE t_memory TO tmp;
239--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
240RENAME TABLE t_csv TO tmp;
241--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
242RENAME TABLE t_blackhole TO tmp;
243--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
244RENAME TABLE t_archive TO tmp;
245
246--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
247ALTER TABLE t_innodb ADD COLUMN b CHAR(10);
248--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
249ALTER TABLE t_myisam ADD COLUMN b CHAR(10);
250--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
251ALTER TABLE t_memory ADD COLUMN b CHAR(10);
252--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
253ALTER TABLE t_csv ADD COLUMN b CHAR(10);
254--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
255ALTER TABLE t_blackhole ADD COLUMN b CHAR(10);
256--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
257ALTER TABLE t_archive ADD COLUMN b CHAR(10);
258
259--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
260ALTER TABLE t_innodb ADD KEY (a);
261--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
262ALTER TABLE t_myisam ADD KEY (a);
263--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
264ALTER TABLE t_memory ADD KEY (a);
265--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
266ALTER TABLE t_csv ADD KEY (a);
267--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
268ALTER TABLE t_blackhole ADD KEY (a);
269--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
270ALTER TABLE t_archive ADD KEY (a);
271
272--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
273DROP DATABASE test;
274--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
275CREATE DATABASE test1;
276
277delimiter |;
278--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
279CREATE PROCEDURE p1()
280BEGIN
281 SELECT 1;
282END|
283
284--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
285CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
286BEGIN
287 RETURN 1;
288END|
289
290delimiter ;|
291
292--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
293CREATE VIEW v1 AS SELECT * FROM t_innodb;
294
295INSERT INTO v_innodb VALUES(1);
296INSERT INTO v_blackhole VALUES(1);
297--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
298INSERT INTO v_myisam VALUES(1);
299--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
300INSERT INTO v_csv VALUES(1);
301--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
302INSERT INTO v_memory VALUES(1);
303--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
304INSERT INTO v_archive VALUES(1);
305
306UNLOCK TABLES;
307
308#
309# LBFB + DML/DDL in the same connection (and binlog disabled)
310#
311
312LOCK BINLOG FOR BACKUP;
313
314DELETE FROM t_innodb;
315INSERT INTO t_innodb VALUES(0);
316UPDATE t_innodb SET a = 1;
317REPLACE INTO t_innodb VALUES(1);
318SELECT * from t_innodb;
319HANDLER t_innodb OPEN;
320HANDLER t_innodb READ a FIRST;
321HANDLER t_innodb CLOSE;
322
323DELETE FROM t_myisam;
324INSERT INTO t_myisam VALUES(0);
325UPDATE t_myisam SET a = 1;
326REPLACE INTO t_myisam VALUES(1);
327SELECT * from t_myisam;
328HANDLER t_myisam OPEN;
329HANDLER t_myisam READ a FIRST;
330HANDLER t_myisam CLOSE;
331
332DELETE FROM t_memory;
333INSERT INTO t_memory VALUES(0);
334UPDATE t_memory SET a = 1;
335REPLACE INTO t_memory VALUES(1);
336SELECT * from t_memory;
337
338DELETE FROM t_archive;
339INSERT INTO t_archive VALUES(0);
340SELECT * from t_archive;
341
342DELETE FROM t_csv;
343INSERT INTO t_csv VALUES(0);
344UPDATE t_csv SET a = 1;
345REPLACE INTO t_csv VALUES(1);
346SELECT * from t_csv;
347
348DELETE FROM t_blackhole;
349INSERT INTO t_blackhole VALUES(0);
350UPDATE t_blackhole SET a = 1;
351REPLACE INTO t_blackhole VALUES(1);
352SELECT * from t_blackhole;
353
354CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
355CREATE TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
356CREATE TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
357CREATE TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
358CREATE TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
359CREATE TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
360
361DROP TABLE tt_innodb;
362DROP TABLE tt_myisam;
363DROP TABLE tt_memory;
364DROP TABLE tt_csv;
365DROP TABLE tt_blackhole;
366DROP TABLE tt_archive;
367
368--error ER_BAD_TABLE_ERROR
369DROP TABLE non_existing;
370
371TRUNCATE TABLE t_innodb;
372TRUNCATE TABLE t_myisam;
373TRUNCATE TABLE t_memory;
374TRUNCATE TABLE t_csv;
375TRUNCATE TABLE t_blackhole;
376
377RENAME TABLE t_innodb TO tmp, tmp TO t_innodb;
378RENAME TABLE t_myisam TO tmp, tmp TO t_myisam;
379RENAME TABLE t_memory TO tmp, tmp TO t_memory;
380RENAME TABLE t_csv TO tmp, tmp TO t_csv;
381RENAME TABLE t_blackhole TO tmp, tmp TO t_blackhole;
382RENAME TABLE t_archive TO tmp, tmp TO t_archive;
383
384ALTER TABLE t_innodb ADD COLUMN b CHAR(10) NOT NULL;
385ALTER TABLE t_innodb DROP COLUMN b;
386ALTER TABLE t_myisam ADD COLUMN b CHAR(10) NOT NULL;
387ALTER TABLE t_myisam DROP COLUMN b;
388ALTER TABLE t_memory ADD COLUMN b CHAR(10) NOT NULL;
389ALTER TABLE t_memory DROP COLUMN b;
390ALTER TABLE t_csv ADD COLUMN b CHAR(10) NOT NULL;
391ALTER TABLE t_csv DROP COLUMN b;
392ALTER TABLE t_blackhole ADD COLUMN b CHAR(10) NOT NULL;
393ALTER TABLE t_blackhole DROP COLUMN b;
394ALTER TABLE t_archive ADD COLUMN b CHAR(10) NOT NULL;
395ALTER TABLE t_archive DROP COLUMN b;
396
397ALTER TABLE t_innodb ADD KEY tmp (a);
398ALTER TABLE t_innodb DROP KEY tmp;
399ALTER TABLE t_myisam ADD KEY tmp (a);
400ALTER TABLE t_myisam DROP KEY tmp;
401ALTER TABLE t_memory ADD KEY tmp (a);
402ALTER TABLE t_memory DROP KEY tmp;
403ALTER TABLE t_blackhole ADD KEY tmp (a);
404ALTER TABLE t_blackhole DROP KEY tmp;
405
406CREATE DATABASE test1;
407DROP DATABASE test1;
408
409delimiter |;
410
411CREATE PROCEDURE p1()
412BEGIN
413 SELECT 1;
414END|
415
416DROP PROCEDURE p1|
417
418CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
419BEGIN
420 RETURN 1;
421END|
422
423DROP FUNCTION f1|
424
425delimiter ;|
426
427CREATE VIEW v1 AS SELECT * FROM t_innodb;
428DROP VIEW v1;
429
430INSERT INTO v_innodb VALUES(1);
431INSERT INTO v_blackhole VALUES(1);
432INSERT INTO v_myisam VALUES(1);
433INSERT INTO v_csv VALUES(1);
434INSERT INTO v_memory VALUES(1);
435INSERT INTO v_archive VALUES(1);
436
437UNLOCK BINLOG;
438
439#
440# Test incompatibility with delay_key_write=ALL
441#
442SELECT @@delay_key_write;
443
444SET GLOBAL delay_key_write=ALL;
445--error ER_OPTION_PREVENTS_STATEMENT
446LOCK TABLES FOR BACKUP;
447
448SET GLOBAL delay_key_write=default;
449SELECT @@delay_key_write;
450
451#
452# read-only=1 + backup locks
453#
454
455SET GLOBAL read_only=1;
456
457INSERT INTO t_innodb VALUES(0);
458INSERT INTO t_myisam VALUES(0);
459
460LOCK TABLES FOR BACKUP;
461
462INSERT INTO t_innodb VALUES(0);
463--error ER_CANT_EXECUTE_WITH_BACKUP_LOCK
464INSERT INTO t_myisam VALUES(0);
465
466UNLOCK TABLES;
467
468INSERT INTO t_innodb VALUES(0);
469INSERT INTO t_myisam VALUES(0);
470
471SET GLOBAL read_only=0;
472
473#
474# Test that temporary tables are not affected by backup locks
475#
476LOCK TABLES FOR BACKUP;
477CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
478CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
479CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
480CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
481CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
482CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
483
484INSERT INTO tt_innodb VALUES(5);
485INSERT INTO tt_myisam VALUES(5);
486INSERT INTO tt_memory VALUES(5);
487INSERT INTO tt_csv VALUES(5);
488INSERT INTO tt_blackhole VALUES(5);
489INSERT INTO tt_archive VALUES(5);
490
491LOCK BINLOG FOR BACKUP;
492
493START TRANSACTION;
494SELECT * FROM tt_archive;
495SELECT * FROM tt_blackhole;
496SELECT * FROM tt_memory;
497SELECT * FROM tt_innodb;
498SELECT * FROM tt_myisam;
499INSERT INTO tt_innodb VALUES(6);
500INSERT INTO tt_myisam VALUES(6);
501INSERT INTO tt_memory VALUES(6);
502INSERT INTO tt_csv VALUES(6);
503INSERT INTO tt_blackhole VALUES(6);
504INSERT INTO tt_archive VALUES(6);
505COMMIT;
506
507SELECT * FROM tt_archive;
508SELECT * FROM tt_blackhole;
509SELECT * FROM tt_memory;
510SELECT * FROM tt_innodb;
511SELECT * FROM tt_myisam;
512
513DROP TEMPORARY TABLE tt_innodb;
514DROP TEMPORARY TABLE tt_myisam;
515DROP TEMPORARY TABLE tt_memory;
516DROP TEMPORARY TABLE tt_csv;
517DROP TEMPORARY TABLE tt_blackhole;
518DROP TEMPORARY TABLE tt_archive;
519
520UNLOCK BINLOG;
521UNLOCK TABLES;
522
523#
524# test that AUTOCOMMIT updates succeed with a BINLOG lock in the same connection with binlog disabled
525#
526
527SELECT @@log_bin;
528
529LOCK BINLOG FOR BACKUP;
530
531INSERT INTO t_innodb VALUES(1);
532INSERT INTO t_myisam VALUES(1);
533
534UNLOCK BINLOG;
535
536#
537# Log tables
538#
539
540SET @old_general_log = @@general_log;
541SET @old_slow_query_log = @@slow_query_log;
542SET @old_log_output = @@log_output;
543SET @old_long_query_time = @@SESSION.long_query_time;
544
545SET SESSION long_query_time = 0;
546SET GLOBAL log_output = 'TABLE';
547SET GLOBAL general_log = ON;
548SET GLOBAL slow_query_log = ON;
549
550LOCK TABLES FOR BACKUP;
551
552SELECT 1;
553
554LOCK BINLOG FOR BACKUP;
555
556SELECT 1;
557
558UNLOCK BINLOG;
559
560UNLOCK TABLES;
561
562SET SESSION long_query_time = @old_long_query_time;
563SET GLOBAL log_output = @old_log_output;
564SET GLOBAL slow_query_log = @old_slow_query_log;
565SET GLOBAL general_log = @old_general_log;
566
567SET SESSION lock_wait_timeout=default;
568
569
570--echo #-----------------------------------------------------------------------
571--echo # Multi-threaded tests
572--echo #-----------------------------------------------------------------------
573
574--echo # connection default
575SET GLOBAL lock_wait_timeout=1;
576
577CREATE USER user@localhost;
578GRANT ALL PRIVILEGES ON test.* TO user@localhost;
579
580--connect(con1,localhost,root,,)
581
582--connect(con2,localhost,user,,)
583
584--connection default
585LOCK TABLES FOR BACKUP;
586
587--connection con1
588--echo # connection con1
589--error ER_LOCK_WAIT_TIMEOUT
590SET GLOBAL delay_key_write=ALL;
591
592--connection default
593--echo # connection default
594UNLOCK TABLES;
595
596#
597# read-only=1 + backup locks
598#
599
600--connection con2
601--echo # connection con2
602
603START TRANSACTION;
604INSERT INTO t_innodb VALUES(0);
605
606--connection default
607--echo # connection default
608
609SET GLOBAL read_only=1;
610
611--connection con2
612--echo # connection con2
613
614--error ER_OPTION_PREVENTS_STATEMENT
615COMMIT;
616
617--error ER_OPTION_PREVENTS_STATEMENT
618INSERT INTO t_innodb VALUES(0);
619--error ER_OPTION_PREVENTS_STATEMENT
620INSERT INTO t_myisam VALUES(0);
621
622--connection con1
623--echo # connection con1
624
625LOCK TABLES FOR BACKUP;
626
627--connection con2
628--echo # connection con2
629
630--error ER_OPTION_PREVENTS_STATEMENT
631INSERT INTO t_innodb VALUES(0);
632--error ER_OPTION_PREVENTS_STATEMENT
633INSERT INTO t_myisam VALUES(0);
634
635--connection default
636--echo # connection default
637
638SET GLOBAL read_only=0;
639
640--connection con2
641--echo # connection con2
642INSERT INTO t_innodb VALUES(0);
643--error ER_LOCK_WAIT_TIMEOUT
644INSERT INTO t_myisam VALUES(0);
645
646--connection default
647--echo # connection default
648
649SET GLOBAL read_only=1;
650
651--connection con2
652--echo # connection con2
653
654--error ER_OPTION_PREVENTS_STATEMENT
655INSERT INTO t_innodb VALUES(0);
656--error ER_OPTION_PREVENTS_STATEMENT
657INSERT INTO t_myisam VALUES(0);
658
659--connection con1
660--echo # connection con1
661
662UNLOCK TABLES;
663
664--connection con2
665--echo # connection con2
666
667--error ER_OPTION_PREVENTS_STATEMENT
668INSERT INTO t_innodb VALUES(0);
669--error ER_OPTION_PREVENTS_STATEMENT
670INSERT INTO t_myisam VALUES(0);
671
672--connection default
673--echo # connection default
674
675SET GLOBAL read_only=0;
676
677#
678# Test that temporary tables are not affected by backup locks
679#
680--connection default
681--echo # connection default
682LOCK TABLES FOR BACKUP;
683
684--connection con1
685--echo # connection con1
686
687CREATE TEMPORARY TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
688CREATE TEMPORARY TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
689CREATE TEMPORARY TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
690CREATE TEMPORARY TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
691CREATE TEMPORARY TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
692CREATE TEMPORARY TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
693
694INSERT INTO tt_innodb VALUES(5);
695INSERT INTO tt_myisam VALUES(5);
696INSERT INTO tt_memory VALUES(5);
697INSERT INTO tt_csv VALUES(5);
698INSERT INTO tt_blackhole VALUES(5);
699INSERT INTO tt_archive VALUES(5);
700
701--connection default
702--echo # connection default
703LOCK BINLOG FOR BACKUP;
704
705--connection con1
706--echo # connection con1
707
708START TRANSACTION;
709SELECT * FROM tt_archive;
710SELECT * FROM tt_blackhole;
711SELECT * FROM tt_memory;
712SELECT * FROM tt_innodb;
713SELECT * FROM tt_myisam;
714INSERT INTO tt_innodb VALUES(6);
715INSERT INTO tt_myisam VALUES(6);
716INSERT INTO tt_memory VALUES(6);
717INSERT INTO tt_csv VALUES(6);
718INSERT INTO tt_blackhole VALUES(6);
719INSERT INTO tt_archive VALUES(6);
720COMMIT;
721
722SELECT * FROM tt_archive;
723SELECT * FROM tt_blackhole;
724SELECT * FROM tt_memory;
725SELECT * FROM tt_innodb;
726SELECT * FROM tt_myisam;
727
728DROP TEMPORARY TABLE tt_innodb;
729DROP TEMPORARY TABLE tt_myisam;
730DROP TEMPORARY TABLE tt_memory;
731DROP TEMPORARY TABLE tt_csv;
732DROP TEMPORARY TABLE tt_blackhole;
733DROP TEMPORARY TABLE tt_archive;
734
735--connection default
736--echo # connection default
737
738UNLOCK BINLOG;
739UNLOCK TABLES;
740
741LOCK BINLOG FOR BACKUP;
742
743--connection con1
744--echo # connection con1
745
746#
747# test that AUTOCOMMIT updates are not blocked with a BINLOG lock in another
748# connection with binlog disabled
749#
750
751SELECT @@log_bin;
752
753INSERT INTO t_innodb VALUES(1);
754INSERT INTO t_myisam VALUES(1);
755
756--connection default
757--echo # connection default
758
759UNLOCK BINLOG;
760
761#
762# LTFB + DDL / DML in another connection
763#
764
765--connection default
766--echo # connection default
767
768LOCK TABLES FOR BACKUP;
769
770--connection con1
771--echo # connection con1
772
773DELETE FROM t_innodb;
774INSERT INTO t_innodb VALUES(0);
775UPDATE t_innodb SET a = 1;
776REPLACE INTO t_innodb VALUES(1);
777SELECT * from t_innodb;
778HANDLER t_innodb OPEN;
779HANDLER t_innodb READ a FIRST;
780HANDLER t_innodb CLOSE;
781
782--error ER_LOCK_WAIT_TIMEOUT
783INSERT INTO t_myisam VALUES(0);
784--error ER_LOCK_WAIT_TIMEOUT
785INSERT DELAYED INTO t_myisam VALUES(0);
786SELECT * FROM t_myisam;
787HANDLER t_myisam OPEN;
788HANDLER t_myisam READ a FIRST;
789HANDLER t_myisam CLOSE;
790
791--error ER_LOCK_WAIT_TIMEOUT
792INSERT INTO t_memory VALUES(0);
793SELECT * FROM t_memory;
794
795--error ER_LOCK_WAIT_TIMEOUT
796INSERT INTO t_archive VALUES(0);
797SELECT * FROM t_archive;
798
799--error ER_LOCK_WAIT_TIMEOUT
800INSERT INTO t_csv VALUES(0);
801SELECT * FROM t_csv;
802
803DELETE FROM t_blackhole;
804INSERT INTO t_blackhole VALUES(0);
805UPDATE t_blackhole SET a = 1;
806REPLACE INTO t_blackhole VALUES(1);
807SELECT * FROM t_blackhole;
808
809--error ER_LOCK_WAIT_TIMEOUT
810CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
811
812--error ER_LOCK_WAIT_TIMEOUT
813DROP TABLE t_innodb;
814
815--error ER_LOCK_WAIT_TIMEOUT
816DROP TABLE non_existing;
817
818--error ER_LOCK_WAIT_TIMEOUT
819TRUNCATE TABLE t_innodb;
820
821--error ER_LOCK_WAIT_TIMEOUT
822RENAME TABLE t_innodb TO tmp;
823
824--error ER_LOCK_WAIT_TIMEOUT
825ALTER TABLE t_innodb ADD COLUMN b CHAR(10);
826
827--error ER_LOCK_WAIT_TIMEOUT
828ALTER TABLE t_innodb ADD KEY (a);
829
830--error ER_LOCK_WAIT_TIMEOUT
831DROP DATABASE test;
832--error ER_LOCK_WAIT_TIMEOUT
833CREATE DATABASE test1;
834
835# The server overrides lock_wait_timeout to 1 year when opening system
836# tables. So ER_LOCK_WAIT_TIMEOUT can't be used here.
837
838--let $id=`SELECT CONNECTION_ID()`
839
840--send CREATE PROCEDURE p1() SELECT 1
841
842--connection default
843--echo # connection default
844
845let $wait_condition=
846 SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
847 WHERE STATE = "Waiting for backup lock" AND
848 INFO = "CREATE PROCEDURE p1() SELECT 1";
849--source include/wait_condition.inc
850
851--disable_query_log
852--echo KILL QUERY #;
853--eval KILL QUERY $id
854--enable_query_log
855
856--connection con1
857--echo # connection con1
858
859--error ER_QUERY_INTERRUPTED
860--reap
861
862--send CREATE FUNCTION f1() RETURNS INT DETERMINISTIC RETURN 1
863
864--connection default
865--echo # connection default
866
867let $wait_condition=
868 SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
869 WHERE STATE = "Waiting for backup lock" AND
870 INFO = "CREATE FUNCTION f1() RETURNS INT DETERMINISTIC RETURN 1";
871--source include/wait_condition.inc
872
873--disable_query_log
874--echo KILL QUERY #;
875--eval KILL QUERY $id
876--enable_query_log
877
878--connection con1
879--echo # connection con1
880
881--error ER_QUERY_INTERRUPTED
882--reap
883
884--error ER_LOCK_WAIT_TIMEOUT
885CREATE VIEW v1 AS SELECT * FROM t_innodb;
886
887INSERT INTO v_innodb VALUES(1);
888INSERT INTO v_blackhole VALUES(1);
889--error ER_LOCK_WAIT_TIMEOUT
890INSERT INTO v_myisam VALUES(1);
891
892--connection default
893--echo # connection default
894
895UNLOCK TABLES;
896
897#
898# LBFB + DML/DDL in another connection (and binlog disabled)
899#
900
901LOCK BINLOG FOR BACKUP;
902
903--connection con1
904--echo # connection con1
905
906DELETE FROM t_innodb;
907INSERT INTO t_innodb VALUES(0);
908UPDATE t_innodb SET a = 1;
909REPLACE INTO t_innodb VALUES(1);
910SELECT * from t_innodb;
911HANDLER t_innodb OPEN;
912HANDLER t_innodb READ a FIRST;
913HANDLER t_innodb CLOSE;
914
915DELETE FROM t_myisam;
916INSERT INTO t_myisam VALUES(0);
917UPDATE t_myisam SET a = 1;
918REPLACE INTO t_myisam VALUES(1);
919SELECT * from t_myisam;
920HANDLER t_myisam OPEN;
921HANDLER t_myisam READ a FIRST;
922HANDLER t_myisam CLOSE;
923
924DELETE FROM t_memory;
925INSERT INTO t_memory VALUES(0);
926UPDATE t_memory SET a = 1;
927REPLACE INTO t_memory VALUES(1);
928SELECT * from t_memory;
929
930INSERT INTO t_archive VALUES(0);
931SELECT * from t_archive;
932
933DELETE FROM t_csv;
934INSERT INTO t_csv VALUES(0);
935UPDATE t_csv SET a = 1;
936REPLACE INTO t_csv VALUES(1);
937SELECT * from t_csv;
938
939DELETE FROM t_blackhole;
940INSERT INTO t_blackhole VALUES(0);
941UPDATE t_blackhole SET a = 1;
942REPLACE INTO t_blackhole VALUES(1);
943SELECT * from t_blackhole;
944
945CREATE TABLE tt_innodb(a INT NOT NULL) ENGINE=InnoDB;
946CREATE TABLE tt_myisam(a INT NOT NULL) ENGINE=MyISAM;
947CREATE TABLE tt_memory(a INT NOT NULL) ENGINE=MEMORY;
948CREATE TABLE tt_csv(a INT NOT NULL) ENGINE=CSV;
949CREATE TABLE tt_blackhole(a INT NOT NULL) ENGINE=BLACKHOLE;
950CREATE TABLE tt_archive(a INT NOT NULL) ENGINE=ARCHIVE;
951
952DROP TABLE tt_innodb;
953DROP TABLE tt_myisam;
954DROP TABLE tt_memory;
955DROP TABLE tt_csv;
956DROP TABLE tt_blackhole;
957DROP TABLE tt_archive;
958
959--error ER_BAD_TABLE_ERROR
960DROP TABLE non_existing;
961
962TRUNCATE TABLE t_innodb;
963TRUNCATE TABLE t_myisam;
964TRUNCATE TABLE t_memory;
965TRUNCATE TABLE t_csv;
966TRUNCATE TABLE t_blackhole;
967
968RENAME TABLE t_innodb TO tmp, tmp TO t_innodb;
969RENAME TABLE t_myisam TO tmp, tmp TO t_myisam;
970RENAME TABLE t_memory TO tmp, tmp TO t_memory;
971RENAME TABLE t_csv TO tmp, tmp TO t_csv;
972RENAME TABLE t_blackhole TO tmp, tmp TO t_blackhole;
973RENAME TABLE t_archive TO tmp, tmp TO t_archive;
974
975ALTER TABLE t_innodb ADD COLUMN b CHAR(10) NOT NULL;
976ALTER TABLE t_innodb DROP COLUMN b;
977ALTER TABLE t_myisam ADD COLUMN b CHAR(10) NOT NULL;
978ALTER TABLE t_myisam DROP COLUMN b;
979ALTER TABLE t_memory ADD COLUMN b CHAR(10) NOT NULL;
980ALTER TABLE t_memory DROP COLUMN b;
981ALTER TABLE t_csv ADD COLUMN b CHAR(10) NOT NULL;
982ALTER TABLE t_csv DROP COLUMN b;
983ALTER TABLE t_blackhole ADD COLUMN b CHAR(10) NOT NULL;
984ALTER TABLE t_blackhole DROP COLUMN b;
985ALTER TABLE t_archive ADD COLUMN b CHAR(10) NOT NULL;
986ALTER TABLE t_archive DROP COLUMN b;
987
988ALTER TABLE t_innodb ADD KEY tmp (a);
989ALTER TABLE t_innodb DROP KEY tmp;
990ALTER TABLE t_myisam ADD KEY tmp (a);
991ALTER TABLE t_myisam DROP KEY tmp;
992ALTER TABLE t_memory ADD KEY tmp (a);
993ALTER TABLE t_memory DROP KEY tmp;
994ALTER TABLE t_blackhole ADD KEY tmp (a);
995ALTER TABLE t_blackhole DROP KEY tmp;
996
997CREATE DATABASE test1;
998DROP DATABASE test1;
999
1000delimiter |;
1001
1002CREATE PROCEDURE p1()
1003BEGIN
1004 SELECT 1;
1005END|
1006
1007DROP PROCEDURE p1|
1008
1009CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
1010BEGIN
1011 RETURN 1;
1012END|
1013
1014DROP FUNCTION f1|
1015
1016delimiter ;|
1017
1018CREATE VIEW v1 AS SELECT * FROM t_innodb;
1019DROP VIEW v1;
1020
1021INSERT INTO v_innodb VALUES(1);
1022INSERT INTO v_blackhole VALUES(1);
1023INSERT INTO v_myisam VALUES(1);
1024INSERT INTO v_csv VALUES(1);
1025INSERT INTO v_memory VALUES(1);
1026INSERT INTO v_archive VALUES(1);
1027
1028--connection default
1029--echo # connection default
1030
1031UNLOCK BINLOG;
1032
1033#
1034# Log tables
1035#
1036
1037SET @old_general_log = @@general_log;
1038SET @old_slow_query_log = @@slow_query_log;
1039SET @old_log_output = @@log_output;
1040
1041SET GLOBAL log_output = 'TABLE';
1042SET GLOBAL general_log = ON;
1043SET GLOBAL slow_query_log = ON;
1044
1045LOCK TABLES FOR BACKUP;
1046
1047--connection con1
1048--echo # connection con1
1049
1050SET @old_long_query_time = @@SESSION.long_query_time;
1051SET SESSION long_query_time = 0;
1052
1053SELECT 1;
1054
1055--connection default
1056--echo # connection default
1057
1058LOCK BINLOG FOR BACKUP;
1059
1060SELECT 1;
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches