Commit b7430d73 authored by Rohit Kalhans's avatar Rohit Kalhans

Backout the patch for bug#11758263.

parent de85a600
...@@ -10,8 +10,6 @@ ...@@ -10,8 +10,6 @@
# We also check how the foreign_key_check variable is replicated # We also check how the foreign_key_check variable is replicated
-- source include/master-slave.inc -- source include/master-slave.inc
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
#should work for both SBR and RBR #should work for both SBR and RBR
create table t1(a int auto_increment, primary key(a)); create table t1(a int auto_increment, primary key(a));
...@@ -52,7 +50,6 @@ create table t2(b int auto_increment, c int, primary key(b)); ...@@ -52,7 +50,6 @@ create table t2(b int auto_increment, c int, primary key(b));
insert into t1 values (10); insert into t1 values (10);
insert into t1 values (null),(null),(null); insert into t1 values (null),(null),(null);
insert into t2 values (5,0); insert into t2 values (5,0);
--disable_warnings ONCE
insert into t2 (c) select * from t1 ORDER BY a; insert into t2 (c) select * from t1 ORDER BY a;
select * from t2 ORDER BY b; select * from t2 ORDER BY b;
sync_slave_with_master; sync_slave_with_master;
......
source include/master-slave.inc; source include/master-slave.inc;
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');
eval CREATE TABLE t1 ( eval CREATE TABLE t1 (
a int unsigned not null auto_increment primary key, a int unsigned not null auto_increment primary key,
b int unsigned b int unsigned
...@@ -13,7 +11,6 @@ eval CREATE TABLE t2 ( ...@@ -13,7 +11,6 @@ eval CREATE TABLE t2 (
) ENGINE=$engine_type; ) ENGINE=$engine_type;
INSERT INTO t1 VALUES (NULL, 0); INSERT INTO t1 VALUES (NULL, 0);
--disable_warnings ONCE
INSERT INTO t1 SELECT NULL, 0 FROM t1; INSERT INTO t1 SELECT NULL, 0 FROM t1;
INSERT INTO t2 VALUES (NULL, 0), (NULL,1); INSERT INTO t2 VALUES (NULL, 0), (NULL,1);
...@@ -21,7 +18,6 @@ INSERT INTO t2 VALUES (NULL, 0), (NULL,1); ...@@ -21,7 +18,6 @@ INSERT INTO t2 VALUES (NULL, 0), (NULL,1);
SELECT * FROM t1 ORDER BY a; SELECT * FROM t1 ORDER BY a;
SELECT * FROM t2 ORDER BY a; SELECT * FROM t2 ORDER BY a;
--disable_warnings ONCE
UPDATE t1, t2 SET t1.b = t2.b WHERE t1.a = t2.a; UPDATE t1, t2 SET t1.b = t2.b WHERE t1.a = t2.a;
sync_slave_with_master; sync_slave_with_master;
......
...@@ -17,8 +17,6 @@ eval CREATE TABLE t2 ( ...@@ -17,8 +17,6 @@ eval CREATE TABLE t2 (
) ENGINE=$engine_type; ) ENGINE=$engine_type;
INSERT INTO t1 VALUES (NULL, 0); INSERT INTO t1 VALUES (NULL, 0);
--disable_warnings ONCE
INSERT INTO t1 SELECT NULL, 0 FROM t1; INSERT INTO t1 SELECT NULL, 0 FROM t1;
INSERT INTO t2 VALUES (NULL, 0), (NULL,1); INSERT INTO t2 VALUES (NULL, 0), (NULL,1);
...@@ -26,7 +24,6 @@ INSERT INTO t2 VALUES (NULL, 0), (NULL,1); ...@@ -26,7 +24,6 @@ INSERT INTO t2 VALUES (NULL, 0), (NULL,1);
SELECT * FROM t1 ORDER BY a; SELECT * FROM t1 ORDER BY a;
SELECT * FROM t2 ORDER BY a; SELECT * FROM t2 ORDER BY a;
--disable_warnings ONCE
UPDATE t1, t2 SET t1.b = (t2.b+4) WHERE t1.a = t2.a; UPDATE t1, t2 SET t1.b = (t2.b+4) WHERE t1.a = t2.a;
SELECT * FROM t1 ORDER BY a; SELECT * FROM t1 ORDER BY a;
SELECT * FROM t2 ORDER BY a; SELECT * FROM t2 ORDER BY a;
......
...@@ -18,8 +18,6 @@ eval CREATE TABLE t2 ( ...@@ -18,8 +18,6 @@ eval CREATE TABLE t2 (
) ENGINE=$engine_type; ) ENGINE=$engine_type;
INSERT INTO t1 VALUES (NULL, 0); INSERT INTO t1 VALUES (NULL, 0);
--disable_warnings ONCE
INSERT INTO t1 SELECT NULL, 0 FROM t1; INSERT INTO t1 SELECT NULL, 0 FROM t1;
INSERT INTO t2 VALUES (NULL, 0), (NULL,1); INSERT INTO t2 VALUES (NULL, 0), (NULL,1);
...@@ -27,7 +25,6 @@ INSERT INTO t2 VALUES (NULL, 0), (NULL,1); ...@@ -27,7 +25,6 @@ INSERT INTO t2 VALUES (NULL, 0), (NULL,1);
SELECT * FROM t1 ORDER BY a; SELECT * FROM t1 ORDER BY a;
SELECT * FROM t2 ORDER BY a; SELECT * FROM t2 ORDER BY a;
--disable_warnings ONCE
UPDATE t2, (SELECT a FROM t1 ORDER BY a) AS t SET t2.b = t.a+5 ; UPDATE t2, (SELECT a FROM t1 ORDER BY a) AS t SET t2.b = t.a+5 ;
SELECT * FROM t1 ORDER BY a; SELECT * FROM t1 ORDER BY a;
SELECT * FROM t2 ORDER BY a; SELECT * FROM t2 ORDER BY a;
......
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');
drop table if exists t1,t2,t3,t4; drop table if exists t1,t2,t3,t4;
drop database if exists client_test_db; drop database if exists client_test_db;
create table t1 create table t1
......
...@@ -233,7 +233,7 @@ while ($unsafe_type < 9) { ...@@ -233,7 +233,7 @@ while ($unsafe_type < 9) {
--let $value_0= --let $value_0=
--let $sel_sidef_0= --let $sel_sidef_0=
--let $sel_retval_0= --let $sel_retval_0=
--let $CRC_ARG_expected_number_of_warnings= 7 --let $CRC_ARG_expected_number_of_warnings= 6
} }
if ($unsafe_type == 8) { if ($unsafe_type == 8) {
......
include/master-slave.inc include/master-slave.inc
[connection master] [connection master]
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');
drop database if exists test1; drop database if exists test1;
create database test1; create database test1;
use test1; use test1;
......
include/master-slave.inc include/master-slave.inc
[connection master] [connection master]
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
create table t1(a int auto_increment, primary key(a)); create table t1(a int auto_increment, primary key(a));
create table t2(b int auto_increment, c int, primary key(b)); create table t2(b int auto_increment, c int, primary key(b));
insert into t1 values (1),(2),(3); insert into t1 values (1),(2),(3);
......
include/master-slave.inc include/master-slave.inc
[connection master] [connection master]
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');
CREATE TABLE t1 ( CREATE TABLE t1 (
a int unsigned not null auto_increment primary key, a int unsigned not null auto_increment primary key,
b int unsigned b int unsigned
......
include/master-slave.inc include/master-slave.inc
[connection master] [connection master]
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT');
drop table if exists t1,t2; drop table if exists t1,t2;
CREATE TABLE t1 ( CREATE TABLE t1 (
a int unsigned not null auto_increment primary key, a int unsigned not null auto_increment primary key,
......
include/master-slave.inc include/master-slave.inc
[connection master] [connection master]
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');
-------- Test for BUG#9361 -------- -------- Test for BUG#9361 --------
CREATE TABLE t1 ( CREATE TABLE t1 (
......
CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
start slave; start slave;
Got one of the listed errors Got one of the listed errors
start slave; start slave;
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
# Test supplied by Are Casilla # Test supplied by Are Casilla
source include/master-slave.inc; source include/master-slave.inc;
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');
--disable_warnings --disable_warnings
connection master; connection master;
drop database if exists test1; drop database if exists test1;
...@@ -43,16 +42,12 @@ CREATE PROCEDURE simpleproc3 () ...@@ -43,16 +42,12 @@ CREATE PROCEDURE simpleproc3 ()
$ $
DELIMITER ;$ DELIMITER ;$
--disable_warnings
CALL simpleproc3(); CALL simpleproc3();
--enable_warnings
select * from t2; select * from t2;
TRUNCATE TABLE `t1`; TRUNCATE TABLE `t1`;
--disable_warnings
CALL simpleproc3(); CALL simpleproc3();
--enable_warnings
select * from t1; select * from t1;
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
####################################################### #######################################################
--source include/not_ndb_default.inc --source include/not_ndb_default.inc
--source include/master-slave.inc --source include/master-slave.inc
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT');
let $engine_type=MyISAM; let $engine_type=MyISAM;
--source extra/rpl_tests/rpl_multi_update2.test --source extra/rpl_tests/rpl_multi_update2.test
--source include/rpl_end.inc --source include/rpl_end.inc
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
####################################################### #######################################################
--source include/not_ndb_default.inc --source include/not_ndb_default.inc
--source include/master-slave.inc --source include/master-slave.inc
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');
let $engine_type=MyISAM; let $engine_type=MyISAM;
-- source extra/rpl_tests/rpl_multi_update3.test -- source extra/rpl_tests/rpl_multi_update3.test
--source include/rpl_end.inc --source include/rpl_end.inc
...@@ -19,7 +19,6 @@ enable_query_log; ...@@ -19,7 +19,6 @@ enable_query_log;
create table t1 (a int not null auto_increment primary key, b int, key(b)); create table t1 (a int not null auto_increment primary key, b int, key(b));
INSERT INTO t1 (a) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); INSERT INTO t1 (a) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
--disable_warnings
INSERT INTO t1 (a) SELECT null FROM t1; INSERT INTO t1 (a) SELECT null FROM t1;
INSERT INTO t1 (a) SELECT null FROM t1; INSERT INTO t1 (a) SELECT null FROM t1;
INSERT INTO t1 (a) SELECT null FROM t1; INSERT INTO t1 (a) SELECT null FROM t1;
...@@ -33,7 +32,6 @@ INSERT INTO t1 (a) SELECT null FROM t1; ...@@ -33,7 +32,6 @@ INSERT INTO t1 (a) SELECT null FROM t1;
INSERT INTO t1 (a) SELECT null FROM t1; INSERT INTO t1 (a) SELECT null FROM t1;
INSERT INTO t1 (a) SELECT null FROM t1; INSERT INTO t1 (a) SELECT null FROM t1;
INSERT INTO t1 (a) SELECT null FROM t1; INSERT INTO t1 (a) SELECT null FROM t1;
--enable_warnings
save_master_pos; save_master_pos;
# a few updates to force OPTIMIZE to do something # a few updates to force OPTIMIZE to do something
--disable_warnings --disable_warnings
......
...@@ -27,7 +27,6 @@ EOF ...@@ -27,7 +27,6 @@ EOF
chmod 0000 $MYSQLD_SLAVE_DATADIR/master.info; chmod 0000 $MYSQLD_SLAVE_DATADIR/master.info;
connection slave; connection slave;
CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
# START SLAVE will fail because it can't read the file (mode 000) # START SLAVE will fail because it can't read the file (mode 000)
# (system error 13) # (system error 13)
--replace_result $MYSQL_TEST_DIR TESTDIR --replace_result $MYSQL_TEST_DIR TESTDIR
......
...@@ -52,10 +52,9 @@ SET GLOBAL event_scheduler = ON; ...@@ -52,10 +52,9 @@ SET GLOBAL event_scheduler = ON;
replace_result $engine_type ENGINE_TYPE; replace_result $engine_type ENGINE_TYPE;
eval CREATE TABLE t1 (i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f varchar(8)) ENGINE=$engine_type; eval CREATE TABLE t1 (i INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f varchar(8)) ENGINE=$engine_type;
INSERT INTO t1 (f) VALUES ('a'),('a'),('a'),('a'),('a'); INSERT INTO t1 (f) VALUES ('a'),('a'),('a'),('a'),('a');
--disable_warnings
INSERT INTO t1 SELECT i+5, f FROM t1; INSERT INTO t1 SELECT i+5, f FROM t1;
INSERT INTO t1 SELECT i+10, f FROM t1; INSERT INTO t1 SELECT i+10, f FROM t1;
--enable_warnings
CREATE EVENT ev1 ON SCHEDULE EVERY 1 SECOND CREATE EVENT ev1 ON SCHEDULE EVERY 1 SECOND
DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev1_',CONNECTION_ID())); DO INSERT INTO t1 VALUES (SLEEP(5),CONCAT('ev1_',CONNECTION_ID()));
CREATE EVENT ev2 ON SCHEDULE EVERY 1 SECOND CREATE EVENT ev2 ON SCHEDULE EVERY 1 SECOND
......
...@@ -13,14 +13,14 @@ ...@@ -13,14 +13,14 @@
# timezone used in CONVERT_TZ is not binlogged. To debug (by Guilhem # timezone used in CONVERT_TZ is not binlogged. To debug (by Guilhem
# and possibly Konstantin). # and possibly Konstantin).
source include/master-slave.inc;
--disable_query_log --disable_query_log
CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
--enable_query_log --enable_query_log
--disable_ps_protocol --disable_ps_protocol
source include/master-slave.inc;
# Save original timezone # Save original timezone
set @my_time_zone= @@global.time_zone; set @my_time_zone= @@global.time_zone;
...@@ -90,7 +90,6 @@ insert into t1 values ('20040101000000',NULL), ('20040611093902',NULL); ...@@ -90,7 +90,6 @@ insert into t1 values ('20040101000000',NULL), ('20040611093902',NULL);
# from originally inserted) # from originally inserted)
# #
set time_zone='MET'; set time_zone='MET';
--disable_warnings ONCE
insert into t2 (select * from t1); insert into t2 (select * from t1);
SELECT * FROM t1 ORDER BY n; SELECT * FROM t1 ORDER BY n;
sync_slave_with_master; sync_slave_with_master;
......
...@@ -352,7 +352,6 @@ create table `t2` (`c2_id` int(10) unsigned NULL auto_increment, `c2_p_id` int(1 ...@@ -352,7 +352,6 @@ create table `t2` (`c2_id` int(10) unsigned NULL auto_increment, `c2_p_id` int(1
insert into t1 values (0,'A01-Comp',1); insert into t1 values (0,'A01-Comp',1);
insert into t1 values (0,'B01-Comp',1); insert into t1 values (0,'B01-Comp',1);
insert into t2 values (0,1,'A Note',1); insert into t2 values (0,1,'A Note',1);
--disable_warnings ONCE
update t1 left join t2 on p_id = c2_p_id set c2_note = 'asdf-1' where p_id = 2; update t1 left join t2 on p_id = c2_p_id set c2_note = 'asdf-1' where p_id = 2;
select * from t1; select * from t1;
select * from t2; select * from t2;
......
-- source include/not_embedded.inc -- source include/not_embedded.inc
-- source include/have_log_bin.inc -- source include/have_log_bin.inc
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');
# #
# SQL Syntax for Prepared Statements test # SQL Syntax for Prepared Statements test
# #
...@@ -433,7 +432,6 @@ deallocate prepare stmt; ...@@ -433,7 +432,6 @@ deallocate prepare stmt;
create table t1 (a int); create table t1 (a int);
insert into t1 values (1),(2),(3); insert into t1 values (1),(2),(3);
create table t2 select * from t1; create table t2 select * from t1;
--disable_warnings
prepare stmt FROM 'create table t2 select * from t1'; prepare stmt FROM 'create table t2 select * from t1';
drop table t2; drop table t2;
execute stmt; execute stmt;
...@@ -443,7 +441,6 @@ execute stmt; ...@@ -443,7 +441,6 @@ execute stmt;
execute stmt; execute stmt;
drop table t2; drop table t2;
execute stmt; execute stmt;
--enable_warnings
drop table t1,t2; drop table t1,t2;
deallocate prepare stmt; deallocate prepare stmt;
...@@ -1179,7 +1176,6 @@ create database mysqltest character set utf8; ...@@ -1179,7 +1176,6 @@ create database mysqltest character set utf8;
prepare stmt1 from "create table mysqltest.t1 (c char(10))"; prepare stmt1 from "create table mysqltest.t1 (c char(10))";
prepare stmt2 from "create table mysqltest.t2 select 'test'"; prepare stmt2 from "create table mysqltest.t2 select 'test'";
execute stmt1; execute stmt1;
--disable_warnings ONCE
execute stmt2; execute stmt2;
show create table mysqltest.t1; show create table mysqltest.t1;
show create table mysqltest.t2; show create table mysqltest.t2;
...@@ -1187,7 +1183,6 @@ drop table mysqltest.t1; ...@@ -1187,7 +1183,6 @@ drop table mysqltest.t1;
drop table mysqltest.t2; drop table mysqltest.t2;
alter database mysqltest character set latin1; alter database mysqltest character set latin1;
execute stmt1; execute stmt1;
--disable_warnings ONCE
execute stmt2; execute stmt2;
show create table mysqltest.t1; show create table mysqltest.t1;
show create table mysqltest.t2; show create table mysqltest.t2;
......
...@@ -6486,11 +6486,3 @@ ER_PLUGIN_NO_UNINSTALL ...@@ -6486,11 +6486,3 @@ ER_PLUGIN_NO_UNINSTALL
ER_PLUGIN_NO_INSTALL ER_PLUGIN_NO_INSTALL
eng "Plugin '%s' is marked as not dynamically installable. You have to stop the server to install it." eng "Plugin '%s' is marked as not dynamically installable. You have to stop the server to install it."
ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT
eng "Statements writing to a table with an auto-increment column after selecting from another table are unsafe because the order in which rows are retrieved determines what (if any) rows will be written. This order cannot be predicted and may differ on master and the slave."
ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC
eng "CREATE TABLE... SELECT... on a table with an auto-increment column is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are inserted. This order cannot be predicted and may differ on master and the slave."
...@@ -214,8 +214,7 @@ static bool auto_repair_table(THD *thd, TABLE_LIST *table_list); ...@@ -214,8 +214,7 @@ static bool auto_repair_table(THD *thd, TABLE_LIST *table_list);
static void free_cache_entry(TABLE *entry); static void free_cache_entry(TABLE *entry);
static bool static bool
has_write_table_with_auto_increment(TABLE_LIST *tables); has_write_table_with_auto_increment(TABLE_LIST *tables);
static bool
has_write_table_with_auto_increment_and_select(TABLE_LIST *tables);
uint cached_open_tables(void) uint cached_open_tables(void)
{ {
...@@ -5684,11 +5683,6 @@ bool lock_tables(THD *thd, TABLE_LIST *tables, uint count, ...@@ -5684,11 +5683,6 @@ bool lock_tables(THD *thd, TABLE_LIST *tables, uint count,
/* We have to emulate LOCK TABLES if we are statement needs prelocking. */ /* We have to emulate LOCK TABLES if we are statement needs prelocking. */
if (thd->lex->requires_prelocking()) if (thd->lex->requires_prelocking())
{ {
if (thd->variables.binlog_format != BINLOG_FORMAT_ROW && tables &&
has_write_table_with_auto_increment_and_select(tables))
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_WRITE_AUTOINC_SELECT);
/* /*
A query that modifies autoinc column in sub-statement can make the A query that modifies autoinc column in sub-statement can make the
master and slave inconsistent. master and slave inconsistent.
...@@ -9086,39 +9080,6 @@ has_write_table_with_auto_increment(TABLE_LIST *tables) ...@@ -9086,39 +9080,6 @@ has_write_table_with_auto_increment(TABLE_LIST *tables)
return 0; return 0;
} }
/*
checks if the tables have select tables in the table list and write tables
with auto-increment column.
SYNOPSIS
has_two_write_locked_tables_with_auto_increment_and_select
tables Table list
RETURN VALUES
-true if the table list has atleast one table with auto-increment column
and atleast one table to select from.
-false otherwise
*/
static bool
has_write_table_with_auto_increment_and_select(TABLE_LIST *tables)
{
bool has_select= false;
bool has_auto_increment_tables = has_write_table_with_auto_increment(tables);
for(TABLE_LIST *table= tables; table; table= table->next_global)
{
if (!table->placeholder() &&
(table->lock_type <= TL_READ_NO_INSERT))
{
has_select= true;
break;
}
}
return(has_select && has_auto_increment_tables);
}
/* /*
Open and lock system tables for read. Open and lock system tables for read.
......
...@@ -61,11 +61,9 @@ Query_tables_list::binlog_stmt_unsafe_errcode[BINLOG_STMT_UNSAFE_COUNT] = ...@@ -61,11 +61,9 @@ Query_tables_list::binlog_stmt_unsafe_errcode[BINLOG_STMT_UNSAFE_COUNT] =
ER_BINLOG_UNSAFE_MIXED_STATEMENT, ER_BINLOG_UNSAFE_MIXED_STATEMENT,
ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT, ER_BINLOG_UNSAFE_INSERT_IGNORE_SELECT,
ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE, ER_BINLOG_UNSAFE_INSERT_SELECT_UPDATE,
ER_BINLOG_UNSAFE_WRITE_AUTOINC_SELECT,
ER_BINLOG_UNSAFE_REPLACE_SELECT, ER_BINLOG_UNSAFE_REPLACE_SELECT,
ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT, ER_BINLOG_UNSAFE_CREATE_IGNORE_SELECT,
ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT, ER_BINLOG_UNSAFE_CREATE_REPLACE_SELECT,
ER_BINLOG_UNSAFE_CREATE_SELECT_AUTOINC,
ER_BINLOG_UNSAFE_UPDATE_IGNORE ER_BINLOG_UNSAFE_UPDATE_IGNORE
}; };
......
...@@ -1268,13 +1268,6 @@ public: ...@@ -1268,13 +1268,6 @@ public:
*/ */
BINLOG_STMT_UNSAFE_INSERT_SELECT_UPDATE, BINLOG_STMT_UNSAFE_INSERT_SELECT_UPDATE,
/**
Query that writes to a table with auto_inc column after selecting from
other tables are unsafe as the order in which the rows are retrieved by
select may differ on master and slave.
*/
BINLOG_STMT_UNSAFE_WRITE_AUTOINC_SELECT,
/** /**
INSERT...REPLACE SELECT is unsafe because which rows are replaced depends INSERT...REPLACE SELECT is unsafe because which rows are replaced depends
on the order that rows are retrieved by SELECT. This order cannot be on the order that rows are retrieved by SELECT. This order cannot be
...@@ -1296,14 +1289,6 @@ public: ...@@ -1296,14 +1289,6 @@ public:
*/ */
BINLOG_STMT_UNSAFE_CREATE_REPLACE_SELECT, BINLOG_STMT_UNSAFE_CREATE_REPLACE_SELECT,
/**
CREATE TABLE...SELECT on a table with auto-increment column is unsafe
because which rows are replaced depends on the order that rows are
retrieved from SELECT. This order cannot be predicted and may differ on
master and the slave
*/
BINLOG_STMT_UNSAFE_CREATE_SELECT_AUTOINC,
/** /**
UPDATE...IGNORE is unsafe because which rows are ignored depends on the UPDATE...IGNORE is unsafe because which rows are ignored depends on the
order that rows are updated. This order cannot be predicted and may differ order that rows are updated. This order cannot be predicted and may differ
......
...@@ -2414,12 +2414,9 @@ case SQLCOM_PREPARE: ...@@ -2414,12 +2414,9 @@ case SQLCOM_PREPARE:
select_result *result; select_result *result;
/* /*
- CREATE TABLE...IGNORE CREATE TABLE...IGNORE/REPLACE SELECT... can be unsafe, unless
- REPLACE SELECT... ORDER BY PRIMARY KEY clause is used in SELECT statement. We therefore
- CREATE TABLE [with auto inc. column]...SELECT use row based logging if mixed or row based logging is available.
can be unsafe, unless ORDER BY PRIMARY KEY clause is used in SELECT
statement. We therefore use row based logging if mixed or row based
logging is available.
TODO: Check if the order of the output of the select statement is TODO: Check if the order of the output of the select statement is
deterministic. Waiting for BUG#42415 deterministic. Waiting for BUG#42415
*/ */
...@@ -2429,9 +2426,6 @@ case SQLCOM_PREPARE: ...@@ -2429,9 +2426,6 @@ case SQLCOM_PREPARE:
if(lex->duplicates == DUP_REPLACE) if(lex->duplicates == DUP_REPLACE)
lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_CREATE_REPLACE_SELECT); lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_CREATE_REPLACE_SELECT);
if (lex->type & AUTO_INCREMENT_FLAG)
lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_CREATE_SELECT_AUTOINC);
/* /*
If: If:
a) we inside an SP and there was NAME_CONST substitution, a) we inside an SP and there was NAME_CONST substitution,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment