Manual merge of mysql-5.1-bugteam into mysql-trunk-merge.
Conflicts: Text conflict in mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result Text conflict in sql/log.cc Text conflict in sql/set_var.cc Text conflict in sql/sql_class.cc
This commit is contained in:
commit
7320a95808
@ -736,9 +736,7 @@ Exit_status process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev,
|
|||||||
|
|
||||||
switch (ev_type) {
|
switch (ev_type) {
|
||||||
case QUERY_EVENT:
|
case QUERY_EVENT:
|
||||||
if (strncmp(((Query_log_event*)ev)->query, "BEGIN", 5) &&
|
if (!((Query_log_event*)ev)->is_trans_keyword() &&
|
||||||
strncmp(((Query_log_event*)ev)->query, "COMMIT", 6) &&
|
|
||||||
strncmp(((Query_log_event*)ev)->query, "ROLLBACK", 8) &&
|
|
||||||
shall_skip_database(((Query_log_event*)ev)->db))
|
shall_skip_database(((Query_log_event*)ev)->db))
|
||||||
goto end;
|
goto end;
|
||||||
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
|
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
|
||||||
|
@ -1003,6 +1003,21 @@ SELECT 1 FROM
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug #52397: another crash with explain extended and group_concat
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (0), (0);
|
||||||
|
EXPLAIN EXTENDED SELECT 1 FROM
|
||||||
|
(SELECT GROUP_CONCAT(t1.a ORDER BY t1.a ASC) FROM
|
||||||
|
t1 t2, t1 GROUP BY t1.a) AS d;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY <derived2> system NULL NULL NULL NULL 1 100.00
|
||||||
|
2 DERIVED t2 ALL NULL NULL NULL NULL 2 100.00 Using temporary; Using filesort
|
||||||
|
2 DERIVED t1 ALL NULL NULL NULL NULL 2 100.00 Using join buffer
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 1 AS `1` from dual
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
DROP TABLE IF EXISTS t1, t2;
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
CREATE TABLE t1 (a VARCHAR(6), b INT);
|
CREATE TABLE t1 (a VARCHAR(6), b INT);
|
||||||
|
@ -1134,6 +1134,18 @@ Warnings:
|
|||||||
Note 1003 select 1 AS `1` from `test`.`t1` left join `test`.`t1` `t2` on((1 = 1)) left join (`test`.`t1` left join `test`.`t1` `t2` on((1 = 1))) on(rand()) where 1
|
Note 1003 select 1 AS `1` from `test`.`t1` left join `test`.`t1` `t2` on((1 = 1)) left join (`test`.`t1` left join `test`.`t1` `t2` on((1 = 1))) on(rand()) where 1
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#52177 crash with explain, row comparison, join, text field
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a TINYINT, b TEXT, KEY (a));
|
||||||
|
INSERT INTO t1 VALUES (0,''),(0,'');
|
||||||
|
FLUSH TABLES;
|
||||||
|
EXPLAIN SELECT 1 FROM t1 LEFT JOIN t1 a ON 1
|
||||||
|
WHERE ROW(t1.a, 1111.11) = ROW(1111.11, 1111.11) AND
|
||||||
|
ROW(t1.b, 1111.11) <=> ROW('','');
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
CREATE TABLE t1 (f1 int);
|
CREATE TABLE t1 (f1 int);
|
||||||
CREATE TABLE t2 (f1 int);
|
CREATE TABLE t2 (f1 int);
|
||||||
|
7
mysql-test/r/loaddata.result
Normal file → Executable file
7
mysql-test/r/loaddata.result
Normal file → Executable file
@ -456,6 +456,13 @@ LOAD_FILE("MYSQLTEST_VARDIR/tmp/bug37114.txt")
|
|||||||
|
|
||||||
set session sql_mode=@OLD_SQL_MODE;
|
set session sql_mode=@OLD_SQL_MODE;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# Bug #51893: crash with certain characters given to load_file
|
||||||
|
# function on windows
|
||||||
|
#
|
||||||
|
select load_file(0x0A9FB76C661B409C4BEC88098C5DD71B1072F9691F2E827D7EC8F092B299868A3CE196C04F0FB18CAB4E1557EB72331D812379DE7A75CA21C32E7C722C59E5CC33EF262EF04187B0F0EE756FA984DF2EAD37B1E4ADB064C3C5038F2E3B2D661B1C1150AAEB5425512E14D7506166D92D4533872E662F4B2D1428AAB5CCA72E75AA2EF325E196A5A02E2E8278873C64375845994B0F39BE2FF7B478332A7B0AA5E48877C47B6F513E997848AF8CCB8A899F3393AB35333CF0871E36698193862D486B4B9078B70C0A0A507B8A250F3F876F5A067632D5E65193E4445A1EC3A2C9B4C6F07AC334F0F62BC33357CB502E9B1C19D2398B6972AEC2EF21630F8C9134C4F7DD662D8AD7BDC9E19C46720F334B66C22D4BF32ED275144E20E7669FFCF6FC143667C9F02A577F32960FA9F2371BE1FA90E49CBC69C01531F140556854D588DD0E55E1307D78CA38E975CD999F9AEA604266329EE62BFB5ADDA67F549E211ECFBA906C60063696352ABB82AA782D25B17E872EA587871F450446DB1BAE0123D20404A8F2D2698B371002E986C8FCB969A99FF0E150A2709E2ED7633D02ADA87D5B3C9487D27B2BD9D21E2EC3215DCC3CDCD884371281B95A2E9987AAF82EB499C058D9C3E7DC1B66635F60DB121C72F929622DD47B6B2E69F59FF2AE6B63CC2EC60FFBA20EA50569DBAB5DAEFAEB4F03966C9637AB55662EDD28439155A82D053A5299448EDB2E7BEB0F62889E2F84E6C7F34B3212C9AAC32D521D5AB8480993F1906D5450FAB342A0FA6ED223E178BAC036B81E15783604C32A961EA1EF20BE2EBB93D34ED37BC03142B7583303E4557E48551E4BD7CBDDEA146D5485A5D212C35189F0BD6497E66912D2780A59A53B532E12C0A5ED1EC0445D96E8F2DD825221CFE4A65A87AA21DC8750481B9849DD81694C3357A0ED9B78D608D8EDDE28FAFBEC17844DE5709F41E121838DB55639D77E32A259A416D7013B2EB1259FDE1B498CBB9CAEE1D601DF3C915EA91C69B44E6B72062F5F4B3C73F06F2D5AD185E1692E2E0A01E7DD5133693681C52EE13B2BE42D03BDCF48E4E133CF06662339B778E1C3034F9939A433E157449172F7969ACCE1F5D2F65A4E09E4A5D5611EBEDDDBDB0C0C0A);
|
||||||
|
load_file(0x0A9FB76C661B409C4BEC88098C5DD71B1072F9691F2E827D7EC8F092B299868A3CE196C04F0FB18CAB4E1557EB72331D812379DE7A75CA21C32E7C722C59E5CC33EF262EF04187B0F0EE756FA984DF2EAD37B1E4ADB064C3C5038F2E3B2D661B1C1150AAEB5425512E14D7506166D92D4533872E662F4B2D142
|
||||||
|
NULL
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
CREATE TABLE t1 (a int);
|
CREATE TABLE t1 (a int);
|
||||||
INSERT INTO t1 VALUES (1);
|
INSERT INTO t1 VALUES (1);
|
||||||
|
@ -720,7 +720,7 @@ FLUSH LOGS;
|
|||||||
RESET MASTER;
|
RESET MASTER;
|
||||||
FLUSH LOGS;
|
FLUSH LOGS;
|
||||||
#
|
#
|
||||||
# Test if the 'BEGIN', 'ROLLBACK' and 'COMMIT' are output if the database specified is exist
|
# Test if the 'BEGIN', 'ROLLBACK' and 'COMMIT' are output if the database specified exists
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
DELIMITER /*!*/;
|
DELIMITER /*!*/;
|
||||||
@ -773,7 +773,7 @@ DELIMITER ;
|
|||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
#
|
#
|
||||||
# Test if the 'BEGIN', 'ROLLBACK' and 'COMMIT' are output if the database specified is not exist
|
# Test if the 'BEGIN', 'ROLLBACK' and 'COMMIT' are output if the database specified does not exist
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
DELIMITER /*!*/;
|
DELIMITER /*!*/;
|
||||||
@ -806,5 +806,76 @@ DELIMITER ;
|
|||||||
# End of log file
|
# End of log file
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
|
#
|
||||||
|
# Test if the 'SAVEPOINT', 'ROLLBACK TO' are output if the database specified exists
|
||||||
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
|
DELIMITER /*!*/;
|
||||||
|
SET TIMESTAMP=1266652094/*!*/;
|
||||||
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||||
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||||
|
SET @@session.sql_mode=0/*!*/;
|
||||||
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||||
|
/*!\C latin1 *//*!*/;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
|
SET @@session.lc_time_names=0/*!*/;
|
||||||
|
SET @@session.collation_database=DEFAULT/*!*/;
|
||||||
|
BEGIN
|
||||||
|
/*!*/;
|
||||||
|
use test/*!*/;
|
||||||
|
SET TIMESTAMP=1266652094/*!*/;
|
||||||
|
SavePoint mixed_cases
|
||||||
|
/*!*/;
|
||||||
|
use db1/*!*/;
|
||||||
|
SET TIMESTAMP=1266652094/*!*/;
|
||||||
|
INSERT INTO db1.t2 VALUES("in savepoint mixed_cases")
|
||||||
|
/*!*/;
|
||||||
|
SET TIMESTAMP=1266652094/*!*/;
|
||||||
|
INSERT INTO db1.t1 VALUES(40)
|
||||||
|
/*!*/;
|
||||||
|
use test/*!*/;
|
||||||
|
SET TIMESTAMP=1266652094/*!*/;
|
||||||
|
ROLLBACK TO mixed_cases
|
||||||
|
/*!*/;
|
||||||
|
use db1/*!*/;
|
||||||
|
SET TIMESTAMP=1266652094/*!*/;
|
||||||
|
INSERT INTO db1.t2 VALUES("after rollback to")
|
||||||
|
/*!*/;
|
||||||
|
SET TIMESTAMP=1266652094/*!*/;
|
||||||
|
INSERT INTO db1.t1 VALUES(50)
|
||||||
|
/*!*/;
|
||||||
|
COMMIT/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
|
# End of log file
|
||||||
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
|
#
|
||||||
|
# Test if the 'SAVEPOINT', 'ROLLBACK TO' are output if the database specified does not exist
|
||||||
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
|
DELIMITER /*!*/;
|
||||||
|
SET TIMESTAMP=1266652094/*!*/;
|
||||||
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||||
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||||
|
SET @@session.sql_mode=0/*!*/;
|
||||||
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||||
|
/*!\C latin1 *//*!*/;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
|
SET @@session.lc_time_names=0/*!*/;
|
||||||
|
SET @@session.collation_database=DEFAULT/*!*/;
|
||||||
|
BEGIN
|
||||||
|
/*!*/;
|
||||||
|
use test/*!*/;
|
||||||
|
SET TIMESTAMP=1266652094/*!*/;
|
||||||
|
SavePoint mixed_cases
|
||||||
|
/*!*/;
|
||||||
|
SET TIMESTAMP=1266652094/*!*/;
|
||||||
|
ROLLBACK TO mixed_cases
|
||||||
|
/*!*/;
|
||||||
|
COMMIT/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
|
# End of log file
|
||||||
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -9,3 +9,30 @@ SELECT USER();
|
|||||||
USER()
|
USER()
|
||||||
#
|
#
|
||||||
SHOW PROCESSLIST;
|
SHOW PROCESSLIST;
|
||||||
|
#
|
||||||
|
# Bug #37168: Missing variable - skip_name_resolve
|
||||||
|
#
|
||||||
|
SHOW VARIABLES LIKE 'skip_name_resolve';
|
||||||
|
Variable_name Value
|
||||||
|
skip_name_resolve ON
|
||||||
|
SHOW GLOBAL VARIABLES LIKE 'skip_name_resolve';
|
||||||
|
Variable_name Value
|
||||||
|
skip_name_resolve ON
|
||||||
|
SHOW SESSION VARIABLES LIKE 'skip_name_resolve';
|
||||||
|
Variable_name Value
|
||||||
|
skip_name_resolve ON
|
||||||
|
SELECT @@skip_name_resolve;
|
||||||
|
@@skip_name_resolve
|
||||||
|
1
|
||||||
|
SELECT @@LOCAL.skip_name_resolve;
|
||||||
|
ERROR HY000: Variable 'skip_name_resolve' is a GLOBAL variable
|
||||||
|
SELECT @@GLOBAL.skip_name_resolve;
|
||||||
|
@@GLOBAL.skip_name_resolve
|
||||||
|
1
|
||||||
|
SET @@skip_name_resolve=0;
|
||||||
|
ERROR HY000: Variable 'skip_name_resolve' is a read only variable
|
||||||
|
SET @@LOCAL.skip_name_resolve=0;
|
||||||
|
ERROR HY000: Variable 'skip_name_resolve' is a read only variable
|
||||||
|
SET @@GLOBAL.skip_name_resolve=0;
|
||||||
|
ERROR HY000: Variable 'skip_name_resolve' is a read only variable
|
||||||
|
End of 5.1 tests
|
||||||
|
@ -2111,6 +2111,23 @@ SET @bug51650 = 1;
|
|||||||
INSERT IGNORE INTO t2 SET a = '777';
|
INSERT IGNORE INTO t2 SET a = '777';
|
||||||
DROP TRIGGER trg1;
|
DROP TRIGGER trg1;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
CREATE TABLE t1 (id INT NOT NULL);
|
||||||
|
CREATE TABLE t2 (id INT NOT NULL);
|
||||||
|
INSERT t1 VALUES (1),(2),(3);
|
||||||
|
UPDATE t1 SET id=NULL;
|
||||||
|
Warnings:
|
||||||
|
Warning 1048 Column 'id' cannot be null
|
||||||
|
Warning 1048 Column 'id' cannot be null
|
||||||
|
Warning 1048 Column 'id' cannot be null
|
||||||
|
CREATE TRIGGER t1_bu BEFORE UPDATE ON t1 FOR EACH ROW
|
||||||
|
INSERT INTO t2 VALUES (3);
|
||||||
|
UPDATE t1 SET id=NULL;
|
||||||
|
Warnings:
|
||||||
|
Warning 1048 Column 'id' cannot be null
|
||||||
|
Warning 1048 Column 'id' cannot be null
|
||||||
|
Warning 1048 Column 'id' cannot be null
|
||||||
|
DROP TRIGGER t1_bu;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
End of 5.1 tests.
|
End of 5.1 tests.
|
||||||
#
|
#
|
||||||
# Bug#34453 Can't change size of file (Errcode: 1224)
|
# Bug#34453 Can't change size of file (Errcode: 1224)
|
||||||
|
@ -1495,6 +1495,15 @@ SELECT @@GLOBAL.max_binlog_cache_size;
|
|||||||
@@GLOBAL.max_binlog_cache_size
|
@@GLOBAL.max_binlog_cache_size
|
||||||
5368709120
|
5368709120
|
||||||
SET GLOBAL max_binlog_cache_size = @old_max_binlog_cache_size;
|
SET GLOBAL max_binlog_cache_size = @old_max_binlog_cache_size;
|
||||||
|
#
|
||||||
|
# Bug #37168 : Missing variable - skip_name_resolve
|
||||||
|
#
|
||||||
|
SELECT @@skip_name_resolve;
|
||||||
|
@@skip_name_resolve
|
||||||
|
0
|
||||||
|
SHOW VARIABLES LIKE 'skip_name_resolve';
|
||||||
|
Variable_name Value
|
||||||
|
skip_name_resolve OFF
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
BIN
mysql-test/std_data/binlog_savepoint.000001
Normal file
BIN
mysql-test/std_data/binlog_savepoint.000001
Normal file
Binary file not shown.
@ -53,10 +53,10 @@ master-bin.000001 # Query # # COMMIT
|
|||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Query # # use `test`; savepoint my_savepoint
|
master-bin.000001 # Query # # SAVEPOINT my_savepoint
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Query # # use `test`; rollback to savepoint my_savepoint
|
master-bin.000001 # Query # # ROLLBACK TO my_savepoint
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
@ -84,10 +84,10 @@ master-bin.000001 # Query # # COMMIT
|
|||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Query # # use `test`; savepoint my_savepoint
|
master-bin.000001 # Query # # SAVEPOINT my_savepoint
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Query # # use `test`; rollback to savepoint my_savepoint
|
master-bin.000001 # Query # # ROLLBACK TO my_savepoint
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
@ -51,10 +51,10 @@ show binlog events from <binlog_start>;
|
|||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; insert into t1 values(3)
|
master-bin.000001 # Query # # use `test`; insert into t1 values(3)
|
||||||
master-bin.000001 # Query # # use `test`; savepoint my_savepoint
|
master-bin.000001 # Query # # SAVEPOINT my_savepoint
|
||||||
master-bin.000001 # Query # # use `test`; insert into t1 values(4)
|
master-bin.000001 # Query # # use `test`; insert into t1 values(4)
|
||||||
master-bin.000001 # Query # # use `test`; insert into t2 select * from t1
|
master-bin.000001 # Query # # use `test`; insert into t2 select * from t1
|
||||||
master-bin.000001 # Query # # use `test`; rollback to savepoint my_savepoint
|
master-bin.000001 # Query # # ROLLBACK TO my_savepoint
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
delete from t1;
|
delete from t1;
|
||||||
delete from t2;
|
delete from t2;
|
||||||
@ -79,10 +79,10 @@ show binlog events from <binlog_start>;
|
|||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; insert into t1 values(5)
|
master-bin.000001 # Query # # use `test`; insert into t1 values(5)
|
||||||
master-bin.000001 # Query # # use `test`; savepoint my_savepoint
|
master-bin.000001 # Query # # SAVEPOINT my_savepoint
|
||||||
master-bin.000001 # Query # # use `test`; insert into t1 values(6)
|
master-bin.000001 # Query # # use `test`; insert into t1 values(6)
|
||||||
master-bin.000001 # Query # # use `test`; insert into t2 select * from t1
|
master-bin.000001 # Query # # use `test`; insert into t2 select * from t1
|
||||||
master-bin.000001 # Query # # use `test`; rollback to savepoint my_savepoint
|
master-bin.000001 # Query # # ROLLBACK TO my_savepoint
|
||||||
master-bin.000001 # Query # # use `test`; insert into t1 values(7)
|
master-bin.000001 # Query # # use `test`; insert into t1 values(7)
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
delete from t1;
|
delete from t1;
|
||||||
|
@ -8,7 +8,9 @@ call mtr.add_suppression("Unsafe statement binlogged in statement format since B
|
|||||||
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
|
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
|
||||||
SET @@session.binlog_direct_non_transactional_updates= FALSE;
|
SET @@session.binlog_direct_non_transactional_updates= FALSE;
|
||||||
DROP DATABASE IF EXISTS db1;
|
DROP DATABASE IF EXISTS db1;
|
||||||
|
DROP DATABASE IF EXISTS db2;
|
||||||
CREATE DATABASE db1;
|
CREATE DATABASE db1;
|
||||||
|
CREATE DATABASE db2;
|
||||||
use db1;
|
use db1;
|
||||||
CREATE TABLE db1.t1 (a INT) ENGINE=InnoDB;
|
CREATE TABLE db1.t1 (a INT) ENGINE=InnoDB;
|
||||||
CREATE TABLE db1.t2 (s CHAR(255)) ENGINE=MyISAM;
|
CREATE TABLE db1.t2 (s CHAR(255)) ENGINE=MyISAM;
|
||||||
@ -107,8 +109,72 @@ SELECT * from db1.t2;
|
|||||||
s
|
s
|
||||||
before call db1.p1()
|
before call db1.p1()
|
||||||
executed db1.p2()
|
executed db1.p2()
|
||||||
|
START SLAVE;
|
||||||
|
#
|
||||||
|
# SAVEPOINT and ROLLBACK TO have the same problem in BUG#43263
|
||||||
|
# This was reported by BUG#50407
|
||||||
|
[on master]
|
||||||
|
SET SESSION AUTOCOMMIT=0
|
||||||
|
BEGIN;
|
||||||
|
INSERT INTO db1.t1 VALUES(20);
|
||||||
|
#
|
||||||
|
# Verify whether this statement is binlogged correctly
|
||||||
|
/*comment*/ SAVEPOINT has_comment;
|
||||||
|
USE db1;
|
||||||
|
INSERT INTO db1.t1 VALUES(30);
|
||||||
|
INSERT INTO db1.t2 VALUES("in savepoint has_comment");
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
|
||||||
|
USE db2;
|
||||||
|
SavePoint mixed_cases;
|
||||||
|
USE db1;
|
||||||
|
INSERT INTO db1.t2 VALUES("in savepoint mixed_cases");
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
|
||||||
|
INSERT INTO db1.t1 VALUES(40);
|
||||||
|
USE db2;
|
||||||
|
ROLLBACK TO mixed_cases;
|
||||||
|
Warnings:
|
||||||
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||||
|
ROLLBACK TO has_comment;
|
||||||
|
Warnings:
|
||||||
|
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||||
|
USE db1;
|
||||||
|
INSERT INTO db1.t2 VALUES("after rollback to");
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
|
||||||
|
INSERT INTO db1.t1 VALUES(50);
|
||||||
|
USE db2;
|
||||||
|
COMMIT;
|
||||||
|
show binlog events from <binlog_start>;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Query # # BEGIN
|
||||||
|
master-bin.000001 # Query # # use `test`; INSERT INTO db1.t1 VALUES(20)
|
||||||
|
master-bin.000001 # Query # # SAVEPOINT has_comment
|
||||||
|
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t1 VALUES(30)
|
||||||
|
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t2 VALUES("in savepoint has_comment")
|
||||||
|
master-bin.000001 # Query # # SAVEPOINT mixed_cases
|
||||||
|
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t2 VALUES("in savepoint mixed_cases")
|
||||||
|
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t1 VALUES(40)
|
||||||
|
master-bin.000001 # Query # # ROLLBACK TO mixed_cases
|
||||||
|
master-bin.000001 # Query # # ROLLBACK TO has_comment
|
||||||
|
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t2 VALUES("after rollback to")
|
||||||
|
master-bin.000001 # Query # # use `db1`; INSERT INTO db1.t1 VALUES(50)
|
||||||
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
[on slave]
|
||||||
|
#
|
||||||
|
# Verify INSERT statements in savepoints are executed, for MyISAM table
|
||||||
|
# is not effected by ROLLBACK TO
|
||||||
|
SELECT * FROM db1.t2 WHERE s LIKE '% savepoint %';
|
||||||
|
s
|
||||||
|
in savepoint has_comment
|
||||||
|
in savepoint mixed_cases
|
||||||
|
#
|
||||||
|
# Verify INSERT statements on the Innodb table are rolled back;
|
||||||
|
SELECT * FROM db1.t1 WHERE a IN (30, 40);
|
||||||
|
a
|
||||||
#
|
#
|
||||||
# Clean up
|
# Clean up
|
||||||
#
|
#
|
||||||
DROP DATABASE db1;
|
DROP DATABASE db1;
|
||||||
DROP DATABASE db1;
|
DROP DATABASE db2;
|
||||||
|
@ -118,8 +118,14 @@ CREATE /*!50000 DEFINER='user44331' */ EVENT event44331_4
|
|||||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||||
ON COMPLETION PRESERVE DISABLE
|
ON COMPLETION PRESERVE DISABLE
|
||||||
DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1');
|
DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1');
|
||||||
Warnings:
|
# Test for bug#50095 Multi-statement including CREATE EVENT causes rotten
|
||||||
Note 1449 The user specified as a definer ('user44331'@'%') does not exist
|
# binlog entry
|
||||||
|
SELECT 'ABC';
|
||||||
|
SELECT '123'|
|
||||||
|
ABC
|
||||||
|
ABC
|
||||||
|
123
|
||||||
|
123
|
||||||
#on master
|
#on master
|
||||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||||
where EVENT_NAME='event44331_1';
|
where EVENT_NAME='event44331_1';
|
||||||
|
@ -996,7 +996,7 @@ master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (3, 'before
|
|||||||
master-bin.000001 # Xid 1 # #
|
master-bin.000001 # Xid 1 # #
|
||||||
master-bin.000001 # Query 1 # BEGIN
|
master-bin.000001 # Query 1 # BEGIN
|
||||||
master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (5, 'before savepoint s2')
|
master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (5, 'before savepoint s2')
|
||||||
master-bin.000001 # Query 1 # use `test_rpl`; SAVEPOINT s2
|
master-bin.000001 # Query 1 # SAVEPOINT s2
|
||||||
master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (6, 'after savepoint s2')
|
master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (6, 'after savepoint s2')
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
|
master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||||
|
@ -10762,9 +10762,9 @@ COMMIT;
|
|||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> B N T S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> B N T S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@ -10774,9 +10774,9 @@ master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VA
|
|||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B N T S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B N T S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
|
|
||||||
@ -10815,9 +10815,9 @@ COMMIT;
|
|||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> B T N S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> B T N S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@ -10828,9 +10828,9 @@ master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B T N S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B T N S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
|
|
||||||
@ -10869,9 +10869,9 @@ COMMIT;
|
|||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 N T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 N T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@ -10882,9 +10882,9 @@ master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 N T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 N T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
|
|
||||||
|
@ -10042,9 +10042,9 @@ COMMIT;
|
|||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> B N T S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> B N T S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@ -10054,9 +10054,9 @@ master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VA
|
|||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 4)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (318, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B N T S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B N T S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
|
|
||||||
@ -10096,9 +10096,9 @@ COMMIT;
|
|||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> B T N S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> B T N S1 T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@ -10108,9 +10108,9 @@ master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VA
|
|||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 2)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (319, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B T N S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B T N S1 T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
|
|
||||||
@ -10150,9 +10150,9 @@ COMMIT;
|
|||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 N T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 N T R1 C << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@ -10162,9 +10162,9 @@ master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VA
|
|||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 2)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (320, 7)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 N T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 N T R1 C << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
|
|
||||||
@ -11112,9 +11112,9 @@ ROLLBACK;
|
|||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 2)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 2)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 5)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 5)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Query # # ROLLBACK
|
master-bin.000001 # Query # # ROLLBACK
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> R << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 T CT R1 R << -b-b-b-b-b-b-b-b-b-b-b-
|
-b-b-b-b-b-b-b-b-b-b-b- >> B T S1 T CT R1 R << -b-b-b-b-b-b-b-b-b-b-b-
|
||||||
@ -11124,9 +11124,9 @@ master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tt_xx_12 (a int
|
|||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Query # # BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 2)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 2)
|
||||||
master-bin.000001 # Query # # use `test`; SAVEPOINT s1
|
master-bin.000001 # Query # # SAVEPOINT s1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 5)
|
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (353, 5)
|
||||||
master-bin.000001 # Query # # use `test`; ROLLBACK TO s1
|
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||||
master-bin.000001 # Query # # ROLLBACK
|
master-bin.000001 # Query # # ROLLBACK
|
||||||
-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 T CT R1 R << -e-e-e-e-e-e-e-e-e-e-e-
|
-e-e-e-e-e-e-e-e-e-e-e- >> B T S1 T CT R1 R << -e-e-e-e-e-e-e-e-e-e-e-
|
||||||
|
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
--innodb --binlog-ignore-db=db2
|
@ -12,9 +12,11 @@ SET @@session.binlog_direct_non_transactional_updates= FALSE;
|
|||||||
|
|
||||||
disable_warnings;
|
disable_warnings;
|
||||||
DROP DATABASE IF EXISTS db1;
|
DROP DATABASE IF EXISTS db1;
|
||||||
|
DROP DATABASE IF EXISTS db2;
|
||||||
enable_warnings;
|
enable_warnings;
|
||||||
|
|
||||||
CREATE DATABASE db1;
|
CREATE DATABASE db1;
|
||||||
|
CREATE DATABASE db2;
|
||||||
|
|
||||||
use db1;
|
use db1;
|
||||||
|
|
||||||
@ -124,10 +126,55 @@ eval SELECT $result as 'Must be 0';
|
|||||||
SELECT * from db1.t1;
|
SELECT * from db1.t1;
|
||||||
SELECT * from db1.t2;
|
SELECT * from db1.t2;
|
||||||
|
|
||||||
|
START SLAVE;
|
||||||
|
source include/wait_for_slave_sql_to_start.inc;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # SAVEPOINT and ROLLBACK TO have the same problem in BUG#43263
|
||||||
|
--echo # This was reported by BUG#50407
|
||||||
|
connection master;
|
||||||
|
echo [on master]
|
||||||
|
SET SESSION AUTOCOMMIT=0;
|
||||||
|
let $binlog_start=query_get_value(SHOW MASTER STATUS, Position, 1);
|
||||||
|
|
||||||
|
BEGIN;
|
||||||
|
INSERT INTO db1.t1 VALUES(20);
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Verify whether this statement is binlogged correctly
|
||||||
|
/*comment*/ SAVEPOINT has_comment;
|
||||||
|
USE db1;
|
||||||
|
INSERT INTO db1.t1 VALUES(30);
|
||||||
|
INSERT INTO db1.t2 VALUES("in savepoint has_comment");
|
||||||
|
USE db2;
|
||||||
|
SavePoint mixed_cases;
|
||||||
|
USE db1;
|
||||||
|
INSERT INTO db1.t2 VALUES("in savepoint mixed_cases");
|
||||||
|
INSERT INTO db1.t1 VALUES(40);
|
||||||
|
USE db2;
|
||||||
|
ROLLBACK TO mixed_cases;
|
||||||
|
ROLLBACK TO has_comment;
|
||||||
|
USE db1;
|
||||||
|
INSERT INTO db1.t2 VALUES("after rollback to");
|
||||||
|
INSERT INTO db1.t1 VALUES(50);
|
||||||
|
USE db2;
|
||||||
|
COMMIT;
|
||||||
|
source include/show_binlog_events.inc;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
--echo [on slave]
|
||||||
|
--echo #
|
||||||
|
--echo # Verify INSERT statements in savepoints are executed, for MyISAM table
|
||||||
|
--echo # is not effected by ROLLBACK TO
|
||||||
|
SELECT * FROM db1.t2 WHERE s LIKE '% savepoint %';
|
||||||
|
--echo #
|
||||||
|
--echo # Verify INSERT statements on the Innodb table are rolled back;
|
||||||
|
SELECT * FROM db1.t1 WHERE a IN (30, 40);
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Clean up
|
--echo # Clean up
|
||||||
--echo #
|
--echo #
|
||||||
connection master;
|
connection master;
|
||||||
DROP DATABASE db1;
|
DROP DATABASE db1;
|
||||||
connection slave;
|
DROP DATABASE db2;
|
||||||
DROP DATABASE db1;
|
source include/master-slave-end.inc;
|
||||||
|
@ -59,10 +59,16 @@ CREATE DEFINER=CURRENT_USER() EVENT event44331_3
|
|||||||
ON COMPLETION PRESERVE DISABLE
|
ON COMPLETION PRESERVE DISABLE
|
||||||
DO INSERT INTO test.t1 VALUES('event event44331_3 fired - DEFINER=CURRENT_USER() function');
|
DO INSERT INTO test.t1 VALUES('event event44331_3 fired - DEFINER=CURRENT_USER() function');
|
||||||
|
|
||||||
|
DELIMITER |;
|
||||||
CREATE /*!50000 DEFINER='user44331' */ EVENT event44331_4
|
CREATE /*!50000 DEFINER='user44331' */ EVENT event44331_4
|
||||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||||
ON COMPLETION PRESERVE DISABLE
|
ON COMPLETION PRESERVE DISABLE
|
||||||
DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1');
|
DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1');
|
||||||
|
# Test for bug#50095 Multi-statement including CREATE EVENT causes rotten
|
||||||
|
# binlog entry
|
||||||
|
SELECT 'ABC';
|
||||||
|
SELECT '123'|
|
||||||
|
DELIMITER ;|
|
||||||
|
|
||||||
--echo #on master
|
--echo #on master
|
||||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||||
|
@ -708,6 +708,18 @@ SELECT 1 FROM
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #52397: another crash with explain extended and group_concat
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (0), (0);
|
||||||
|
EXPLAIN EXTENDED SELECT 1 FROM
|
||||||
|
(SELECT GROUP_CONCAT(t1.a ORDER BY t1.a ASC) FROM
|
||||||
|
t1 t2, t1 GROUP BY t1.a) AS d;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -796,6 +796,17 @@ SELECT 1 FROM v1 right join v1 AS v2 ON RAND();
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#52177 crash with explain, row comparison, join, text field
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a TINYINT, b TEXT, KEY (a));
|
||||||
|
INSERT INTO t1 VALUES (0,''),(0,'');
|
||||||
|
FLUSH TABLES;
|
||||||
|
EXPLAIN SELECT 1 FROM t1 LEFT JOIN t1 a ON 1
|
||||||
|
WHERE ROW(t1.a, 1111.11) = ROW(1111.11, 1111.11) AND
|
||||||
|
ROW(t1.b, 1111.11) <=> ROW('','');
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests.
|
--echo End of 5.0 tests.
|
||||||
|
|
||||||
|
|
||||||
|
@ -502,6 +502,13 @@ set session sql_mode=@OLD_SQL_MODE;
|
|||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #51893: crash with certain characters given to load_file
|
||||||
|
--echo # function on windows
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
select load_file(0x0A9FB76C661B409C4BEC88098C5DD71B1072F9691F2E827D7EC8F092B299868A3CE196C04F0FB18CAB4E1557EB72331D812379DE7A75CA21C32E7C722C59E5CC33EF262EF04187B0F0EE756FA984DF2EAD37B1E4ADB064C3C5038F2E3B2D661B1C1150AAEB5425512E14D7506166D92D4533872E662F4B2D1428AAB5CCA72E75AA2EF325E196A5A02E2E8278873C64375845994B0F39BE2FF7B478332A7B0AA5E48877C47B6F513E997848AF8CCB8A899F3393AB35333CF0871E36698193862D486B4B9078B70C0A0A507B8A250F3F876F5A067632D5E65193E4445A1EC3A2C9B4C6F07AC334F0F62BC33357CB502E9B1C19D2398B6972AEC2EF21630F8C9134C4F7DD662D8AD7BDC9E19C46720F334B66C22D4BF32ED275144E20E7669FFCF6FC143667C9F02A577F32960FA9F2371BE1FA90E49CBC69C01531F140556854D588DD0E55E1307D78CA38E975CD999F9AEA604266329EE62BFB5ADDA67F549E211ECFBA906C60063696352ABB82AA782D25B17E872EA587871F450446DB1BAE0123D20404A8F2D2698B371002E986C8FCB969A99FF0E150A2709E2ED7633D02ADA87D5B3C9487D27B2BD9D21E2EC3215DCC3CDCD884371281B95A2E9987AAF82EB499C058D9C3E7DC1B66635F60DB121C72F929622DD47B6B2E69F59FF2AE6B63CC2EC60FFBA20EA50569DBAB5DAEFAEB4F03966C9637AB55662EDD28439155A82D053A5299448EDB2E7BEB0F62889E2F84E6C7F34B3212C9AAC32D521D5AB8480993F1906D5450FAB342A0FA6ED223E178BAC036B81E15783604C32A961EA1EF20BE2EBB93D34ED37BC03142B7583303E4557E48551E4BD7CBDDEA146D5485A5D212C35189F0BD6497E66912D2780A59A53B532E12C0A5ED1EC0445D96E8F2DD825221CFE4A65A87AA21DC8750481B9849DD81694C3357A0ED9B78D608D8EDDE28FAFBEC17844DE5709F41E121838DB55639D77E32A259A416D7013B2EB1259FDE1B498CBB9CAEE1D601DF3C915EA91C69B44E6B72062F5F4B3C73F06F2D5AD185E1692E2E0A01E7DD5133693681C52EE13B2BE42D03BDCF48E4E133CF06662339B778E1C3034F9939A433E157449172F7969ACCE1F5D2F65A4E09E4A5D5611EBEDDDBDB0C0C0A);
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
|
@ -434,12 +434,19 @@ FLUSH LOGS;
|
|||||||
# Transaction3 end
|
# Transaction3 end
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Test if the 'BEGIN', 'ROLLBACK' and 'COMMIT' are output if the database specified is exist
|
--echo # Test if the 'BEGIN', 'ROLLBACK' and 'COMMIT' are output if the database specified exists
|
||||||
--exec $MYSQL_BINLOG --database=test --short-form $MYSQLTEST_VARDIR/std_data/binlog_transaction.000001
|
--exec $MYSQL_BINLOG --database=test --short-form $MYSQLTEST_VARDIR/std_data/binlog_transaction.000001
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Test if the 'BEGIN', 'ROLLBACK' and 'COMMIT' are output if the database specified is not exist
|
--echo # Test if the 'BEGIN', 'ROLLBACK' and 'COMMIT' are output if the database specified does not exist
|
||||||
--exec $MYSQL_BINLOG --database=not_exist --short-form $MYSQLTEST_VARDIR/std_data/binlog_transaction.000001
|
--exec $MYSQL_BINLOG --database=not_exist --short-form $MYSQLTEST_VARDIR/std_data/binlog_transaction.000001
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Test if the 'SAVEPOINT', 'ROLLBACK TO' are output if the database specified exists
|
||||||
|
--exec $MYSQL_BINLOG --database=db1 --short-form $MYSQLTEST_VARDIR/std_data/binlog_savepoint.000001
|
||||||
|
--echo #
|
||||||
|
--echo # Test if the 'SAVEPOINT', 'ROLLBACK TO' are output if the database specified does not exist
|
||||||
|
--exec $MYSQL_BINLOG --database=not_exist --short-form $MYSQLTEST_VARDIR/std_data/binlog_savepoint.000001
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -29,3 +29,24 @@ disconnect con1;
|
|||||||
# Wait till all disconnects are completed
|
# Wait till all disconnects are completed
|
||||||
--source include/wait_until_count_sessions.inc
|
--source include/wait_until_count_sessions.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #37168: Missing variable - skip_name_resolve
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SHOW VARIABLES LIKE 'skip_name_resolve';
|
||||||
|
SHOW GLOBAL VARIABLES LIKE 'skip_name_resolve';
|
||||||
|
SHOW SESSION VARIABLES LIKE 'skip_name_resolve';
|
||||||
|
|
||||||
|
SELECT @@skip_name_resolve;
|
||||||
|
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||||
|
SELECT @@LOCAL.skip_name_resolve;
|
||||||
|
SELECT @@GLOBAL.skip_name_resolve;
|
||||||
|
|
||||||
|
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||||
|
SET @@skip_name_resolve=0;
|
||||||
|
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||||
|
SET @@LOCAL.skip_name_resolve=0;
|
||||||
|
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||||
|
SET @@GLOBAL.skip_name_resolve=0;
|
||||||
|
|
||||||
|
--echo End of 5.1 tests
|
||||||
|
@ -2426,6 +2426,19 @@ INSERT IGNORE INTO t2 SET a = '777';
|
|||||||
DROP TRIGGER trg1;
|
DROP TRIGGER trg1;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #48525: trigger changes "Column 'id' cannot be null" behaviour
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (id INT NOT NULL);
|
||||||
|
CREATE TABLE t2 (id INT NOT NULL);
|
||||||
|
INSERT t1 VALUES (1),(2),(3);
|
||||||
|
UPDATE t1 SET id=NULL;
|
||||||
|
CREATE TRIGGER t1_bu BEFORE UPDATE ON t1 FOR EACH ROW
|
||||||
|
INSERT INTO t2 VALUES (3);
|
||||||
|
UPDATE t1 SET id=NULL;
|
||||||
|
DROP TRIGGER t1_bu;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
--echo End of 5.1 tests.
|
--echo End of 5.1 tests.
|
||||||
|
|
||||||
|
|
||||||
|
@ -1220,6 +1220,14 @@ SET @old_max_binlog_cache_size = @@GLOBAL.max_binlog_cache_size;
|
|||||||
SET GLOBAL max_binlog_cache_size = 5 * 1024 * 1024 * 1024;
|
SET GLOBAL max_binlog_cache_size = 5 * 1024 * 1024 * 1024;
|
||||||
SELECT @@GLOBAL.max_binlog_cache_size;
|
SELECT @@GLOBAL.max_binlog_cache_size;
|
||||||
SET GLOBAL max_binlog_cache_size = @old_max_binlog_cache_size;
|
SET GLOBAL max_binlog_cache_size = @old_max_binlog_cache_size;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #37168 : Missing variable - skip_name_resolve
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SELECT @@skip_name_resolve;
|
||||||
|
SHOW VARIABLES LIKE 'skip_name_resolve';
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
|
@ -311,6 +311,9 @@ size_t normalize_dirname(char *to, const char *from)
|
|||||||
#endif
|
#endif
|
||||||
buff[length - 1] != FN_LIBCHAR && buff[length - 1] != '/')
|
buff[length - 1] != FN_LIBCHAR && buff[length - 1] != '/')
|
||||||
{
|
{
|
||||||
|
/* we need reserve 2 bytes for the trailing slash and the zero */
|
||||||
|
if (length >= sizeof (buff) - 1)
|
||||||
|
length= sizeof (buff) - 2;
|
||||||
buff[length]= FN_LIBCHAR;
|
buff[length]= FN_LIBCHAR;
|
||||||
buff[length + 1]= '\0';
|
buff[length + 1]= '\0';
|
||||||
}
|
}
|
||||||
|
@ -267,7 +267,9 @@ create_query_string(THD *thd, String *buf)
|
|||||||
/* Append definer */
|
/* Append definer */
|
||||||
append_definer(thd, buf, &(thd->lex->definer->user), &(thd->lex->definer->host));
|
append_definer(thd, buf, &(thd->lex->definer->user), &(thd->lex->definer->host));
|
||||||
/* Append the left part of thd->query after "DEFINER" part */
|
/* Append the left part of thd->query after "DEFINER" part */
|
||||||
if (buf->append(thd->lex->stmt_definition_begin))
|
if (buf->append(thd->lex->stmt_definition_begin,
|
||||||
|
thd->lex->stmt_definition_end -
|
||||||
|
thd->lex->stmt_definition_begin))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -122,13 +122,18 @@ set_field_to_null(Field *field)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
field->reset();
|
field->reset();
|
||||||
if (field->table->in_use->count_cuted_fields == CHECK_FIELD_WARN)
|
switch (field->table->in_use->count_cuted_fields) {
|
||||||
{
|
case CHECK_FIELD_WARN:
|
||||||
field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
|
field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1);
|
||||||
|
/* fall through */
|
||||||
|
case CHECK_FIELD_IGNORE:
|
||||||
return 0;
|
return 0;
|
||||||
|
case CHECK_FIELD_ERROR_FOR_NULL:
|
||||||
|
if (!field->table->in_use->no_errors)
|
||||||
|
my_error(ER_BAD_NULL_ERROR, MYF(0), field->field_name);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
if (!field->table->in_use->no_errors)
|
DBUG_ASSERT(0); // impossible
|
||||||
my_error(ER_BAD_NULL_ERROR, MYF(0), field->field_name);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,13 +183,18 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions)
|
|||||||
field->table->auto_increment_field_not_null= FALSE;
|
field->table->auto_increment_field_not_null= FALSE;
|
||||||
return 0; // field is set in fill_record()
|
return 0; // field is set in fill_record()
|
||||||
}
|
}
|
||||||
if (field->table->in_use->count_cuted_fields == CHECK_FIELD_WARN)
|
switch (field->table->in_use->count_cuted_fields) {
|
||||||
{
|
case CHECK_FIELD_WARN:
|
||||||
field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_BAD_NULL_ERROR, 1);
|
field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_BAD_NULL_ERROR, 1);
|
||||||
|
/* fall through */
|
||||||
|
case CHECK_FIELD_IGNORE:
|
||||||
return 0;
|
return 0;
|
||||||
|
case CHECK_FIELD_ERROR_FOR_NULL:
|
||||||
|
if (!field->table->in_use->no_errors)
|
||||||
|
my_error(ER_BAD_NULL_ERROR, MYF(0), field->field_name);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
if (!field->table->in_use->no_errors)
|
DBUG_ASSERT(0); // impossible
|
||||||
my_error(ER_BAD_NULL_ERROR, MYF(0), field->field_name);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -722,7 +722,7 @@ public:
|
|||||||
void fix_length_and_dec()
|
void fix_length_and_dec()
|
||||||
{
|
{
|
||||||
ulonglong max_result_length= (ulonglong) args[0]->max_length * 2 + 2;
|
ulonglong max_result_length= (ulonglong) args[0]->max_length * 2 + 2;
|
||||||
max_length= min(max_result_length, MAX_BLOB_WIDTH);
|
max_length= (uint32) min(max_result_length, MAX_BLOB_WIDTH);
|
||||||
collation.set(args[0]->collation);
|
collation.set(args[0]->collation);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -3411,7 +3411,7 @@ void Item_func_group_concat::print(String *str, enum_query_type query_type)
|
|||||||
{
|
{
|
||||||
if (i)
|
if (i)
|
||||||
str->append(',');
|
str->append(',');
|
||||||
(*order[i]->item)->print(str, query_type);
|
pargs[i + arg_count_field]->print(str, query_type);
|
||||||
if (order[i]->asc)
|
if (order[i]->asc)
|
||||||
str->append(STRING_WITH_LEN(" ASC"));
|
str->append(STRING_WITH_LEN(" ASC"));
|
||||||
else
|
else
|
||||||
|
28
sql/log.cc
28
sql/log.cc
@ -1880,12 +1880,14 @@ static int binlog_savepoint_set(handlerton *hton, THD *thd, void *sv)
|
|||||||
binlog_trans_log_savepos(thd, (my_off_t*) sv);
|
binlog_trans_log_savepos(thd, (my_off_t*) sv);
|
||||||
/* Write it to the binary log */
|
/* Write it to the binary log */
|
||||||
|
|
||||||
|
String log_query;
|
||||||
|
if (log_query.append(STRING_WITH_LEN("SAVEPOINT ")) ||
|
||||||
|
log_query.append(thd->lex->ident.str, thd->lex->ident.length))
|
||||||
|
DBUG_RETURN(1);
|
||||||
int errcode= query_error_code(thd, thd->killed == THD::NOT_KILLED);
|
int errcode= query_error_code(thd, thd->killed == THD::NOT_KILLED);
|
||||||
int const error=
|
Query_log_event qinfo(thd, log_query.c_ptr_safe(), log_query.length(),
|
||||||
thd->binlog_query(THD::STMT_QUERY_TYPE,
|
TRUE, FALSE, TRUE, errcode);
|
||||||
thd->query(), thd->query_length(), TRUE, FALSE, FALSE,
|
DBUG_RETURN(mysql_bin_log.write(&qinfo));
|
||||||
errcode);
|
|
||||||
DBUG_RETURN(error);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int binlog_savepoint_rollback(handlerton *hton, THD *thd, void *sv)
|
static int binlog_savepoint_rollback(handlerton *hton, THD *thd, void *sv)
|
||||||
@ -1900,12 +1902,14 @@ static int binlog_savepoint_rollback(handlerton *hton, THD *thd, void *sv)
|
|||||||
if (unlikely(thd->transaction.all.modified_non_trans_table ||
|
if (unlikely(thd->transaction.all.modified_non_trans_table ||
|
||||||
(thd->variables.option_bits & OPTION_KEEP_LOG)))
|
(thd->variables.option_bits & OPTION_KEEP_LOG)))
|
||||||
{
|
{
|
||||||
|
String log_query;
|
||||||
|
if (log_query.append(STRING_WITH_LEN("ROLLBACK TO ")) ||
|
||||||
|
log_query.append(thd->lex->ident.str, thd->lex->ident.length))
|
||||||
|
DBUG_RETURN(1);
|
||||||
int errcode= query_error_code(thd, thd->killed == THD::NOT_KILLED);
|
int errcode= query_error_code(thd, thd->killed == THD::NOT_KILLED);
|
||||||
int error=
|
Query_log_event qinfo(thd, log_query.c_ptr_safe(), log_query.length(),
|
||||||
thd->binlog_query(THD::STMT_QUERY_TYPE,
|
TRUE, FALSE, TRUE, errcode);
|
||||||
thd->query(), thd->query_length(), TRUE, FALSE, FALSE,
|
DBUG_RETURN(mysql_bin_log.write(&qinfo));
|
||||||
errcode);
|
|
||||||
DBUG_RETURN(error);
|
|
||||||
}
|
}
|
||||||
binlog_trans_log_truncate(thd, *(my_off_t*)sv);
|
binlog_trans_log_truncate(thd, *(my_off_t*)sv);
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
@ -4599,7 +4603,9 @@ bool MYSQL_BIN_LOG::write(Log_event *event_info)
|
|||||||
*/
|
*/
|
||||||
const char *local_db= event_info->get_db();
|
const char *local_db= event_info->get_db();
|
||||||
if ((thd && !(thd->variables.option_bits & OPTION_BIN_LOG)) ||
|
if ((thd && !(thd->variables.option_bits & OPTION_BIN_LOG)) ||
|
||||||
!binlog_filter->db_ok(local_db))
|
(thd->lex->sql_command != SQLCOM_ROLLBACK_TO_SAVEPOINT &&
|
||||||
|
thd->lex->sql_command != SQLCOM_SAVEPOINT &&
|
||||||
|
!binlog_filter->db_ok(local_db)))
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
#endif /* HAVE_REPLICATION */
|
#endif /* HAVE_REPLICATION */
|
||||||
|
|
||||||
|
@ -3172,10 +3172,7 @@ int Query_log_event::do_apply_event(Relay_log_info const *rli,
|
|||||||
::do_apply_event(), then the companion SET also have so
|
::do_apply_event(), then the companion SET also have so
|
||||||
we don't need to reset_one_shot_variables().
|
we don't need to reset_one_shot_variables().
|
||||||
*/
|
*/
|
||||||
if (!strncmp(query_arg, "BEGIN", q_len_arg) ||
|
if (is_trans_keyword() || rpl_filter->db_ok(thd->db))
|
||||||
!strncmp(query_arg, "COMMIT", q_len_arg) ||
|
|
||||||
!strncmp(query_arg, "ROLLBACK", q_len_arg) ||
|
|
||||||
rpl_filter->db_ok(thd->db))
|
|
||||||
{
|
{
|
||||||
thd->set_time((time_t)when);
|
thd->set_time((time_t)when);
|
||||||
thd->set_query_and_id((char*)query_arg, q_len_arg, next_query_id());
|
thd->set_query_and_id((char*)query_arg, q_len_arg, next_query_id());
|
||||||
|
@ -1743,6 +1743,28 @@ public: /* !!! Public in this patch to allow old usage */
|
|||||||
const char *query_arg,
|
const char *query_arg,
|
||||||
uint32 q_len_arg);
|
uint32 q_len_arg);
|
||||||
#endif /* HAVE_REPLICATION */
|
#endif /* HAVE_REPLICATION */
|
||||||
|
/*
|
||||||
|
If true, the event always be applied by slave SQL thread or be printed by
|
||||||
|
mysqlbinlog
|
||||||
|
*/
|
||||||
|
bool is_trans_keyword()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Before the patch for bug#50407, The 'SAVEPOINT and ROLLBACK TO'
|
||||||
|
queries input by user was written into log events directly.
|
||||||
|
So the keywords can be written in both upper case and lower case
|
||||||
|
together, strncasecmp is used to check both cases. they also could be
|
||||||
|
binlogged with comments in the front of these keywords. for examples:
|
||||||
|
/ * bla bla * / SAVEPOINT a;
|
||||||
|
/ * bla bla * / ROLLBACK TO a;
|
||||||
|
but we don't handle these cases and after the patch, both quiries are
|
||||||
|
binlogged in upper case with no comments.
|
||||||
|
*/
|
||||||
|
return !strncmp(query, "BEGIN", q_len) ||
|
||||||
|
!strncmp(query, "COMMIT", q_len) ||
|
||||||
|
!strncasecmp(query, "SAVEPOINT", 9) ||
|
||||||
|
!strncasecmp(query, "ROLLBACK", 8);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -2009,6 +2009,7 @@ extern my_bool opt_log, opt_slow_log;
|
|||||||
extern ulonglong log_output_options;
|
extern ulonglong log_output_options;
|
||||||
extern my_bool opt_log_queries_not_using_indexes;
|
extern my_bool opt_log_queries_not_using_indexes;
|
||||||
extern bool opt_disable_networking, opt_skip_show_db;
|
extern bool opt_disable_networking, opt_skip_show_db;
|
||||||
|
extern bool opt_skip_name_resolve;
|
||||||
extern bool opt_ignore_builtin_innodb;
|
extern bool opt_ignore_builtin_innodb;
|
||||||
extern my_bool opt_character_set_client_handshake;
|
extern my_bool opt_character_set_client_handshake;
|
||||||
extern bool volatile abort_loop, shutdown_in_progress;
|
extern bool volatile abort_loop, shutdown_in_progress;
|
||||||
|
@ -364,6 +364,7 @@ ulonglong log_output_options;
|
|||||||
my_bool opt_log_queries_not_using_indexes= 0;
|
my_bool opt_log_queries_not_using_indexes= 0;
|
||||||
bool opt_error_log= IF_WIN(1,0);
|
bool opt_error_log= IF_WIN(1,0);
|
||||||
bool opt_disable_networking=0, opt_skip_show_db=0;
|
bool opt_disable_networking=0, opt_skip_show_db=0;
|
||||||
|
bool opt_skip_name_resolve=0;
|
||||||
my_bool opt_character_set_client_handshake= 1;
|
my_bool opt_character_set_client_handshake= 1;
|
||||||
bool server_id_supplied = 0;
|
bool server_id_supplied = 0;
|
||||||
bool opt_endinfo, using_udf_functions;
|
bool opt_endinfo, using_udf_functions;
|
||||||
@ -6173,9 +6174,6 @@ Can't be set to 1 if --log-slave-updates is used.",
|
|||||||
#endif
|
#endif
|
||||||
{"skip-host-cache", OPT_SKIP_HOST_CACHE, "Don't cache host names.", 0, 0, 0,
|
{"skip-host-cache", OPT_SKIP_HOST_CACHE, "Don't cache host names.", 0, 0, 0,
|
||||||
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"skip-name-resolve", OPT_SKIP_RESOLVE,
|
|
||||||
"Don't resolve hostnames. All hostnames are IP's or 'localhost'.",
|
|
||||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
|
||||||
{"skip-new", OPT_SKIP_NEW, "Don't use new, possibly wrong routines.",
|
{"skip-new", OPT_SKIP_NEW, "Don't use new, possibly wrong routines.",
|
||||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"skip-slave-start", 0,
|
{"skip-slave-start", 0,
|
||||||
@ -6925,6 +6923,7 @@ static int mysql_init_variables(void)
|
|||||||
opt_log= opt_slow_log= 0;
|
opt_log= opt_slow_log= 0;
|
||||||
opt_bin_log= 0;
|
opt_bin_log= 0;
|
||||||
opt_disable_networking= opt_skip_show_db=0;
|
opt_disable_networking= opt_skip_show_db=0;
|
||||||
|
opt_skip_name_resolve= 0;
|
||||||
opt_ignore_builtin_innodb= 0;
|
opt_ignore_builtin_innodb= 0;
|
||||||
opt_logname= opt_update_logname= opt_binlog_index_name= opt_slow_logname= 0;
|
opt_logname= opt_update_logname= opt_binlog_index_name= opt_slow_logname= 0;
|
||||||
opt_tc_log_file= (char *)"tc.log"; // no hostname in tc_log file name !
|
opt_tc_log_file= (char *)"tc.log"; // no hostname in tc_log file name !
|
||||||
@ -7292,6 +7291,7 @@ mysqld_get_one_option(int optid,
|
|||||||
opt_specialflag|= SPECIAL_NO_HOST_CACHE;
|
opt_specialflag|= SPECIAL_NO_HOST_CACHE;
|
||||||
break;
|
break;
|
||||||
case (int) OPT_SKIP_RESOLVE:
|
case (int) OPT_SKIP_RESOLVE:
|
||||||
|
opt_skip_name_resolve= 1;
|
||||||
opt_specialflag|=SPECIAL_NO_RESOLVE;
|
opt_specialflag|=SPECIAL_NO_RESOLVE;
|
||||||
break;
|
break;
|
||||||
case (int) OPT_WANT_CORE:
|
case (int) OPT_WANT_CORE:
|
||||||
|
@ -3026,6 +3026,7 @@ int
|
|||||||
sp_instr_set_trigger_field::execute(THD *thd, uint *nextp)
|
sp_instr_set_trigger_field::execute(THD *thd, uint *nextp)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("sp_instr_set_trigger_field::execute");
|
DBUG_ENTER("sp_instr_set_trigger_field::execute");
|
||||||
|
thd->count_cuted_fields= CHECK_FIELD_ERROR_FOR_NULL;
|
||||||
DBUG_RETURN(m_lex_keeper.reset_lex_and_exec_core(thd, nextp, TRUE, this));
|
DBUG_RETURN(m_lex_keeper.reset_lex_and_exec_core(thd, nextp, TRUE, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3180,6 +3180,7 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
backup->option_bits= variables.option_bits;
|
backup->option_bits= variables.option_bits;
|
||||||
|
backup->count_cuted_fields= count_cuted_fields;
|
||||||
backup->in_sub_stmt= in_sub_stmt;
|
backup->in_sub_stmt= in_sub_stmt;
|
||||||
backup->enable_slow_log= enable_slow_log;
|
backup->enable_slow_log= enable_slow_log;
|
||||||
backup->limit_found_rows= limit_found_rows;
|
backup->limit_found_rows= limit_found_rows;
|
||||||
@ -3217,6 +3218,7 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup,
|
|||||||
|
|
||||||
void THD::restore_sub_statement_state(Sub_statement_state *backup)
|
void THD::restore_sub_statement_state(Sub_statement_state *backup)
|
||||||
{
|
{
|
||||||
|
DBUG_ENTER("THD::restore_sub_statement_state");
|
||||||
#ifndef EMBEDDED_LIBRARY
|
#ifndef EMBEDDED_LIBRARY
|
||||||
/* BUG#33029, if we are replicating from a buggy master, restore
|
/* BUG#33029, if we are replicating from a buggy master, restore
|
||||||
auto_inc_intervals_forced so that the top statement can use the
|
auto_inc_intervals_forced so that the top statement can use the
|
||||||
@ -3243,6 +3245,7 @@ void THD::restore_sub_statement_state(Sub_statement_state *backup)
|
|||||||
/* ha_release_savepoint() never returns error. */
|
/* ha_release_savepoint() never returns error. */
|
||||||
(void)ha_release_savepoint(this, sv);
|
(void)ha_release_savepoint(this, sv);
|
||||||
}
|
}
|
||||||
|
count_cuted_fields= backup->count_cuted_fields;
|
||||||
transaction.savepoints= backup->savepoints;
|
transaction.savepoints= backup->savepoints;
|
||||||
variables.option_bits= backup->option_bits;
|
variables.option_bits= backup->option_bits;
|
||||||
in_sub_stmt= backup->in_sub_stmt;
|
in_sub_stmt= backup->in_sub_stmt;
|
||||||
@ -3272,6 +3275,7 @@ void THD::restore_sub_statement_state(Sub_statement_state *backup)
|
|||||||
*/
|
*/
|
||||||
examined_row_count+= backup->examined_row_count;
|
examined_row_count+= backup->examined_row_count;
|
||||||
cuted_fields+= backup->cuted_fields;
|
cuted_fields+= backup->cuted_fields;
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1044,6 +1044,7 @@ public:
|
|||||||
bool enable_slow_log;
|
bool enable_slow_log;
|
||||||
bool last_insert_id_used;
|
bool last_insert_id_used;
|
||||||
SAVEPOINT *savepoints;
|
SAVEPOINT *savepoints;
|
||||||
|
enum enum_check_fields count_cuted_fields;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -3245,7 +3245,7 @@ bool select_insert::send_data(List<Item> &values)
|
|||||||
|
|
||||||
thd->count_cuted_fields= CHECK_FIELD_WARN; // Calculate cuted fields
|
thd->count_cuted_fields= CHECK_FIELD_WARN; // Calculate cuted fields
|
||||||
store_values(values);
|
store_values(values);
|
||||||
thd->count_cuted_fields= CHECK_FIELD_IGNORE;
|
thd->count_cuted_fields= CHECK_FIELD_ERROR_FOR_NULL;
|
||||||
if (thd->is_error())
|
if (thd->is_error())
|
||||||
{
|
{
|
||||||
table->auto_increment_field_not_null= FALSE;
|
table->auto_increment_field_not_null= FALSE;
|
||||||
|
@ -2008,6 +2008,7 @@ struct LEX: public Query_tables_list
|
|||||||
- CREATE TRIGGER (points to "TRIGGER");
|
- CREATE TRIGGER (points to "TRIGGER");
|
||||||
- CREATE PROCEDURE (points to "PROCEDURE");
|
- CREATE PROCEDURE (points to "PROCEDURE");
|
||||||
- CREATE FUNCTION (points to "FUNCTION" or "AGGREGATE");
|
- CREATE FUNCTION (points to "FUNCTION" or "AGGREGATE");
|
||||||
|
- CREATE EVENT (points to "EVENT")
|
||||||
|
|
||||||
This pointer is required to add possibly omitted DEFINER-clause to the
|
This pointer is required to add possibly omitted DEFINER-clause to the
|
||||||
DDL-statement before dumping it to the binlog.
|
DDL-statement before dumping it to the binlog.
|
||||||
|
@ -1109,7 +1109,7 @@ JOIN::optimize()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (conds &&!outer_join && const_table_map != found_const_table_map &&
|
if (conds && const_table_map != found_const_table_map &&
|
||||||
(select_options & SELECT_DESCRIBE) &&
|
(select_options & SELECT_DESCRIBE) &&
|
||||||
select_lex->master_unit() == &thd->lex->unit) // upper level SELECT
|
select_lex->master_unit() == &thd->lex->unit) // upper level SELECT
|
||||||
{
|
{
|
||||||
|
@ -1579,6 +1579,13 @@ static Sys_var_mybool Sys_skip_networking(
|
|||||||
READ_ONLY GLOBAL_VAR(opt_disable_networking), CMD_LINE(OPT_ARG),
|
READ_ONLY GLOBAL_VAR(opt_disable_networking), CMD_LINE(OPT_ARG),
|
||||||
DEFAULT(FALSE));
|
DEFAULT(FALSE));
|
||||||
|
|
||||||
|
static Sys_var_mybool Sys_skip_name_resolve(
|
||||||
|
"skip_name_resolve",
|
||||||
|
"Don't resolve hostnames. All hostnames are IP's or 'localhost'.",
|
||||||
|
READ_ONLY GLOBAL_VAR(opt_skip_name_resolve),
|
||||||
|
CMD_LINE(OPT_ARG, OPT_SKIP_RESOLVE),
|
||||||
|
DEFAULT(FALSE));
|
||||||
|
|
||||||
static Sys_var_mybool Sys_skip_show_database(
|
static Sys_var_mybool Sys_skip_show_database(
|
||||||
"skip_show_database", "Don't allow 'SHOW DATABASE' commands",
|
"skip_show_database", "Don't allow 'SHOW DATABASE' commands",
|
||||||
READ_ONLY GLOBAL_VAR(opt_skip_show_db), CMD_LINE(OPT_ARG),
|
READ_ONLY GLOBAL_VAR(opt_skip_show_db), CMD_LINE(OPT_ARG),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user