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) {
|
||||
case QUERY_EVENT:
|
||||
if (strncmp(((Query_log_event*)ev)->query, "BEGIN", 5) &&
|
||||
strncmp(((Query_log_event*)ev)->query, "COMMIT", 6) &&
|
||||
strncmp(((Query_log_event*)ev)->query, "ROLLBACK", 8) &&
|
||||
if (!((Query_log_event*)ev)->is_trans_keyword() &&
|
||||
shall_skip_database(((Query_log_event*)ev)->db))
|
||||
goto end;
|
||||
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
|
||||
|
@ -1003,6 +1003,21 @@ SELECT 1 FROM
|
||||
1
|
||||
1
|
||||
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
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
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
|
||||
DROP VIEW v1;
|
||||
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.
|
||||
CREATE TABLE t1 (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;
|
||||
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
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
@ -720,7 +720,7 @@ FLUSH LOGS;
|
||||
RESET MASTER;
|
||||
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*/;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
DELIMITER /*!*/;
|
||||
@ -773,7 +773,7 @@ DELIMITER ;
|
||||
ROLLBACK /* added by mysqlbinlog */;
|
||||
/*!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*/;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
DELIMITER /*!*/;
|
||||
@ -806,5 +806,76 @@ 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 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.1 tests
|
||||
|
@ -9,3 +9,30 @@ SELECT USER();
|
||||
USER()
|
||||
#
|
||||
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';
|
||||
DROP TRIGGER trg1;
|
||||
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.
|
||||
#
|
||||
# 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
|
||||
5368709120
|
||||
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
|
||||
|
||||
#
|
||||
|
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 # Table_map # # table_id: # (test.t1)
|
||||
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 # 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 */
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
@ -84,10 +84,10 @@ master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # use `test`; savepoint my_savepoint
|
||||
master-bin.000001 # Query # # SAVEPOINT my_savepoint
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
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 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
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
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
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 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 */
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
@ -79,10 +79,10 @@ 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 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 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 # Xid # # COMMIT /* XID */
|
||||
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");
|
||||
SET @@session.binlog_direct_non_transactional_updates= FALSE;
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
CREATE DATABASE db1;
|
||||
CREATE DATABASE db2;
|
||||
use db1;
|
||||
CREATE TABLE db1.t1 (a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE db1.t2 (s CHAR(255)) ENGINE=MyISAM;
|
||||
@ -107,8 +109,72 @@ SELECT * from db1.t2;
|
||||
s
|
||||
before call db1.p1()
|
||||
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
|
||||
#
|
||||
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 COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_4 fired - DEFINER=user1');
|
||||
Warnings:
|
||||
Note 1449 The user specified as a definer ('user44331'@'%') does not exist
|
||||
# Test for bug#50095 Multi-statement including CREATE EVENT causes rotten
|
||||
# binlog entry
|
||||
SELECT 'ABC';
|
||||
SELECT '123'|
|
||||
ABC
|
||||
ABC
|
||||
123
|
||||
123
|
||||
#on master
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
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 # 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`; SAVEPOINT s2
|
||||
master-bin.000001 # Query 1 # SAVEPOINT s2
|
||||
master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (6, 'after savepoint s2')
|
||||
master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
|
||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
||||
|
@ -10762,9 +10762,9 @@ COMMIT;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
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`; 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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
-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 # # BEGIN
|
||||
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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
|
||||
@ -10815,9 +10815,9 @@ COMMIT;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
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`; 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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
-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 # # BEGIN
|
||||
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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
|
||||
@ -10869,9 +10869,9 @@ COMMIT;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
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`; 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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
-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 # # BEGIN
|
||||
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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
|
||||
|
@ -10042,9 +10042,9 @@ COMMIT;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
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`; 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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
-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 # # BEGIN
|
||||
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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
|
||||
@ -10096,9 +10096,9 @@ COMMIT;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
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`; 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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
-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 # # BEGIN
|
||||
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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
|
||||
@ -10150,9 +10150,9 @@ COMMIT;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
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`; 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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
-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 # # BEGIN
|
||||
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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
|
||||
@ -11112,9 +11112,9 @@ ROLLBACK;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
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`; 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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
-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 # # BEGIN
|
||||
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`; ROLLBACK TO s1
|
||||
master-bin.000001 # Query # # ROLLBACK TO s1
|
||||
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-
|
||||
|
||||
|
@ -0,0 +1 @@
|
||||
--innodb --binlog-ignore-db=db2
|
@ -12,9 +12,11 @@ SET @@session.binlog_direct_non_transactional_updates= FALSE;
|
||||
|
||||
disable_warnings;
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
enable_warnings;
|
||||
|
||||
CREATE DATABASE db1;
|
||||
CREATE DATABASE db2;
|
||||
|
||||
use db1;
|
||||
|
||||
@ -124,10 +126,55 @@ eval SELECT $result as 'Must be 0';
|
||||
SELECT * from db1.t1;
|
||||
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 # Clean up
|
||||
--echo #
|
||||
connection master;
|
||||
DROP DATABASE db1;
|
||||
connection slave;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
source include/master-slave-end.inc;
|
||||
|
@ -59,10 +59,16 @@ CREATE DEFINER=CURRENT_USER() EVENT event44331_3
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
DO INSERT INTO test.t1 VALUES('event event44331_3 fired - DEFINER=CURRENT_USER() function');
|
||||
|
||||
DELIMITER |;
|
||||
CREATE /*!50000 DEFINER='user44331' */ EVENT event44331_4
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE DISABLE
|
||||
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
|
||||
select EVENT_SCHEMA, EVENT_NAME, DEFINER from information_schema.events
|
||||
|
@ -708,6 +708,18 @@ SELECT 1 FROM
|
||||
|
||||
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
|
||||
|
||||
#
|
||||
|
@ -796,6 +796,17 @@ SELECT 1 FROM v1 right join v1 AS v2 ON RAND();
|
||||
DROP VIEW v1;
|
||||
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.
|
||||
|
||||
|
||||
|
@ -502,6 +502,13 @@ set session sql_mode=@OLD_SQL_MODE;
|
||||
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
|
||||
|
||||
|
@ -434,12 +434,19 @@ FLUSH LOGS;
|
||||
# Transaction3 end
|
||||
|
||||
--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
|
||||
--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
|
||||
|
||||
--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.1 tests
|
||||
|
@ -29,3 +29,24 @@ disconnect con1;
|
||||
# Wait till all disconnects are completed
|
||||
--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 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.
|
||||
|
||||
|
||||
|
@ -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;
|
||||
SELECT @@GLOBAL.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
|
||||
|
||||
###########################################################################
|
||||
|
@ -311,6 +311,9 @@ size_t normalize_dirname(char *to, const char *from)
|
||||
#endif
|
||||
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 + 1]= '\0';
|
||||
}
|
||||
|
@ -267,7 +267,9 @@ create_query_string(THD *thd, String *buf)
|
||||
/* Append definer */
|
||||
append_definer(thd, buf, &(thd->lex->definer->user), &(thd->lex->definer->host));
|
||||
/* 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 0;
|
||||
|
@ -122,13 +122,18 @@ set_field_to_null(Field *field)
|
||||
return 0;
|
||||
}
|
||||
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);
|
||||
/* fall through */
|
||||
case CHECK_FIELD_IGNORE:
|
||||
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)
|
||||
my_error(ER_BAD_NULL_ERROR, MYF(0), field->field_name);
|
||||
DBUG_ASSERT(0); // impossible
|
||||
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;
|
||||
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);
|
||||
/* fall through */
|
||||
case CHECK_FIELD_IGNORE:
|
||||
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)
|
||||
my_error(ER_BAD_NULL_ERROR, MYF(0), field->field_name);
|
||||
DBUG_ASSERT(0); // impossible
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -722,7 +722,7 @@ public:
|
||||
void fix_length_and_dec()
|
||||
{
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
@ -3411,7 +3411,7 @@ void Item_func_group_concat::print(String *str, enum_query_type query_type)
|
||||
{
|
||||
if (i)
|
||||
str->append(',');
|
||||
(*order[i]->item)->print(str, query_type);
|
||||
pargs[i + arg_count_field]->print(str, query_type);
|
||||
if (order[i]->asc)
|
||||
str->append(STRING_WITH_LEN(" ASC"));
|
||||
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);
|
||||
/* 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 const error=
|
||||
thd->binlog_query(THD::STMT_QUERY_TYPE,
|
||||
thd->query(), thd->query_length(), TRUE, FALSE, FALSE,
|
||||
errcode);
|
||||
DBUG_RETURN(error);
|
||||
Query_log_event qinfo(thd, log_query.c_ptr_safe(), log_query.length(),
|
||||
TRUE, FALSE, TRUE, errcode);
|
||||
DBUG_RETURN(mysql_bin_log.write(&qinfo));
|
||||
}
|
||||
|
||||
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 ||
|
||||
(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 error=
|
||||
thd->binlog_query(THD::STMT_QUERY_TYPE,
|
||||
thd->query(), thd->query_length(), TRUE, FALSE, FALSE,
|
||||
errcode);
|
||||
DBUG_RETURN(error);
|
||||
Query_log_event qinfo(thd, log_query.c_ptr_safe(), log_query.length(),
|
||||
TRUE, FALSE, TRUE, errcode);
|
||||
DBUG_RETURN(mysql_bin_log.write(&qinfo));
|
||||
}
|
||||
binlog_trans_log_truncate(thd, *(my_off_t*)sv);
|
||||
DBUG_RETURN(0);
|
||||
@ -4599,7 +4603,9 @@ bool MYSQL_BIN_LOG::write(Log_event *event_info)
|
||||
*/
|
||||
const char *local_db= event_info->get_db();
|
||||
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);
|
||||
#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
|
||||
we don't need to reset_one_shot_variables().
|
||||
*/
|
||||
if (!strncmp(query_arg, "BEGIN", q_len_arg) ||
|
||||
!strncmp(query_arg, "COMMIT", q_len_arg) ||
|
||||
!strncmp(query_arg, "ROLLBACK", q_len_arg) ||
|
||||
rpl_filter->db_ok(thd->db))
|
||||
if (is_trans_keyword() || rpl_filter->db_ok(thd->db))
|
||||
{
|
||||
thd->set_time((time_t)when);
|
||||
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,
|
||||
uint32 q_len_arg);
|
||||
#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 my_bool opt_log_queries_not_using_indexes;
|
||||
extern bool opt_disable_networking, opt_skip_show_db;
|
||||
extern bool opt_skip_name_resolve;
|
||||
extern bool opt_ignore_builtin_innodb;
|
||||
extern my_bool opt_character_set_client_handshake;
|
||||
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;
|
||||
bool opt_error_log= IF_WIN(1,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;
|
||||
bool server_id_supplied = 0;
|
||||
bool opt_endinfo, using_udf_functions;
|
||||
@ -6173,9 +6174,6 @@ Can't be set to 1 if --log-slave-updates is used.",
|
||||
#endif
|
||||
{"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},
|
||||
{"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.",
|
||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"skip-slave-start", 0,
|
||||
@ -6925,6 +6923,7 @@ static int mysql_init_variables(void)
|
||||
opt_log= opt_slow_log= 0;
|
||||
opt_bin_log= 0;
|
||||
opt_disable_networking= opt_skip_show_db=0;
|
||||
opt_skip_name_resolve= 0;
|
||||
opt_ignore_builtin_innodb= 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 !
|
||||
@ -7292,6 +7291,7 @@ mysqld_get_one_option(int optid,
|
||||
opt_specialflag|= SPECIAL_NO_HOST_CACHE;
|
||||
break;
|
||||
case (int) OPT_SKIP_RESOLVE:
|
||||
opt_skip_name_resolve= 1;
|
||||
opt_specialflag|=SPECIAL_NO_RESOLVE;
|
||||
break;
|
||||
case (int) OPT_WANT_CORE:
|
||||
|
@ -3026,6 +3026,7 @@ int
|
||||
sp_instr_set_trigger_field::execute(THD *thd, uint *nextp)
|
||||
{
|
||||
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));
|
||||
}
|
||||
|
||||
|
@ -3180,6 +3180,7 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup,
|
||||
#endif
|
||||
|
||||
backup->option_bits= variables.option_bits;
|
||||
backup->count_cuted_fields= count_cuted_fields;
|
||||
backup->in_sub_stmt= in_sub_stmt;
|
||||
backup->enable_slow_log= enable_slow_log;
|
||||
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)
|
||||
{
|
||||
DBUG_ENTER("THD::restore_sub_statement_state");
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
/* BUG#33029, if we are replicating from a buggy master, restore
|
||||
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. */
|
||||
(void)ha_release_savepoint(this, sv);
|
||||
}
|
||||
count_cuted_fields= backup->count_cuted_fields;
|
||||
transaction.savepoints= backup->savepoints;
|
||||
variables.option_bits= backup->option_bits;
|
||||
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;
|
||||
cuted_fields+= backup->cuted_fields;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1044,6 +1044,7 @@ public:
|
||||
bool enable_slow_log;
|
||||
bool last_insert_id_used;
|
||||
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
|
||||
store_values(values);
|
||||
thd->count_cuted_fields= CHECK_FIELD_IGNORE;
|
||||
thd->count_cuted_fields= CHECK_FIELD_ERROR_FOR_NULL;
|
||||
if (thd->is_error())
|
||||
{
|
||||
table->auto_increment_field_not_null= FALSE;
|
||||
|
@ -2008,6 +2008,7 @@ struct LEX: public Query_tables_list
|
||||
- CREATE TRIGGER (points to "TRIGGER");
|
||||
- CREATE PROCEDURE (points to "PROCEDURE");
|
||||
- CREATE FUNCTION (points to "FUNCTION" or "AGGREGATE");
|
||||
- CREATE EVENT (points to "EVENT")
|
||||
|
||||
This pointer is required to add possibly omitted DEFINER-clause to the
|
||||
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_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),
|
||||
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(
|
||||
"skip_show_database", "Don't allow 'SHOW DATABASE' commands",
|
||||
READ_ONLY GLOBAL_VAR(opt_skip_show_db), CMD_LINE(OPT_ARG),
|
||||
|
Loading…
x
Reference in New Issue
Block a user