⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rpl_insert_id.test

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 TEST
字号:
--echo #--echo # Setup--echo #source include/master-slave.inc;source include/have_innodb.inc;use test;--disable_warningsdrop table if exists t1, t2, t3;--enable_warnings--echo #--echo # See if queries that use both auto_increment and LAST_INSERT_ID()--echo # are replicated well--echo #--echo # We also check how the foreign_key_check variable is replicated--echo #connection master;create table t1(a int auto_increment, key(a));create table t2(b int auto_increment, c int, key(b));insert into t1 values (1),(2),(3);insert into t1 values (null);insert into t2 values (null,last_insert_id());save_master_pos;connection slave;sync_with_master;select * from t1;select * from t2;connection master;#check if multi-line inserts,#which set last_insert_id to the first id inserted,#are replicated the same waydrop table t1;drop table t2;--disable_warningscreate table t1(a int auto_increment, key(a)) engine=innodb;create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=innodb;--enable_warningsSET FOREIGN_KEY_CHECKS=0;insert into t1 values (10);insert into t1 values (null),(null),(null);insert into t2 values (5,0);insert into t2 values (null,last_insert_id());SET FOREIGN_KEY_CHECKS=1;save_master_pos;connection slave;sync_with_master;select * from t1;select * from t2;connection master;--echo #--echo # check if INSERT SELECT in auto_increment is well replicated (bug #490)--echo #drop table t2;drop table t1;create table t1(a int auto_increment, key(a));create table t2(b int auto_increment, c int, key(b));insert into t1 values (10);insert into t1 values (null),(null),(null);insert into t2 values (5,0);insert into t2 (c) select * from t1;select * from t2;save_master_pos;connection slave;sync_with_master;select * from t1;select * from t2;connection master;drop table t1;drop table t2;save_master_pos;connection slave;sync_with_master;--echo #--echo # Bug#8412: Error codes reported in binary log for CHARACTER SET,--echo #           FOREIGN_KEY_CHECKS--echo #connection master;SET TIMESTAMP=1000000000;CREATE TABLE t1 ( a INT UNIQUE );SET FOREIGN_KEY_CHECKS=0;--error 1062INSERT INTO t1 VALUES (1),(1);sync_slave_with_master;connection master;drop table t1;sync_slave_with_master; --echo #--echo # Bug#14553: NULL in WHERE resets LAST_INSERT_ID--echo #connection master;create table t1(a int auto_increment, key(a));create table t2(a int);insert into t1 (a) values (null);insert into t2 (a) select a from t1 where a is null;insert into t2 (a) select a from t1 where a is null;select * from t2;sync_slave_with_master;connection slave;select * from t2;connection master;drop table t1;drop table t2;sync_slave_with_master;--echo #--echo # End of 4.1 tests--echo ### BUG#15728: LAST_INSERT_ID function inside a stored function returns 0## The solution is not to reset last_insert_id on enter to sub-statement.#connection master;--disable_warningsdrop function if exists bug15728;drop function if exists bug15728_insert;drop table if exists t1, t2;--enable_warningscreate table t1 (  id int not null auto_increment,  last_id int,  primary key (id));create function bug15728() returns int(11)  return last_insert_id();insert into t1 (last_id) values (0);insert into t1 (last_id) values (last_insert_id());insert into t1 (last_id) values (bug15728());# Check that nested call replicates too.create table t2 (  id int not null auto_increment,  last_id int,  primary key (id));delimiter |;create function bug15728_insert() returns int(11) modifies sql databegin  insert into t2 (last_id) values (bug15728());  return bug15728();end|create trigger t1_bi before insert on t1 for each rowbegin  declare res int;  select bug15728_insert() into res;  set NEW.last_id = res;end|delimiter ;|insert into t1 (last_id) values (0);drop trigger t1_bi;# Check that nested call doesn't affect outer context.select last_insert_id();select bug15728_insert();select last_insert_id();insert into t1 (last_id) values (bug15728());# This should be exactly one greater than in the previous call.select last_insert_id();save_master_pos;connection slave;sync_with_master;select * from t1;select * from t2;connection master;drop function bug15728;drop function bug15728_insert;drop table t1, t2;# test of BUG#20188 REPLACE or ON DUPLICATE KEY UPDATE in# auto_increment breaks binlogcreate table t1 (n int primary key auto_increment not null,b int, unique(b));# First, test that we do not call restore_auto_increment() too early# in write_record():set sql_log_bin=0;insert into t1 values(null,100);replace into t1 values(null,50),(null,100),(null,150);select * from t1 order by n;truncate table t1;set sql_log_bin=1;insert into t1 values(null,100);select * from t1 order by n;sync_slave_with_master;# make slave's table autoinc counter biggerinsert into t1 values(null,200),(null,300);delete from t1 where b <> 100;# check that slave's table content is identical to masterselect * from t1 order by n;# only the auto_inc counter differs.connection master;replace into t1 values(null,100),(null,350);select * from t1 order by n;sync_slave_with_master;select * from t1 order by n;# Same test as for REPLACE, but for ON DUPLICATE KEY UPDATE# We first check that if we update a row using a value larger than the# table's counter, the counter for next row is bigger than the# after-value of the updated row.connection master;insert into t1 values (NULL,400),(3,500),(NULL,600) on duplicate key UPDATE n=1000;select * from t1 order by n;sync_slave_with_master;select * from t1 order by n;# and now test for the bug:connection master;drop table t1;create table t1 (n int primary key auto_increment not null,b int, unique(b));insert into t1 values(null,100);select * from t1 order by n;sync_slave_with_master;insert into t1 values(null,200),(null,300);delete from t1 where b <> 100;select * from t1 order by n;connection master;insert into t1 values(null,100),(null,350) on duplicate key update n=2;select * from t1 order by n;sync_slave_with_master;select * from t1 order by n;connection master;drop table t1;## BUG#24432 "INSERT... ON DUPLICATE KEY UPDATE skips auto_increment values"## testcase with INSERT VALUESCREATE TABLE t1 (a INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b INT,UNIQUE(b));INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10;SELECT * FROM t1;sync_slave_with_master;SELECT * FROM t1;connection master;drop table t1;# tescase with INSERT SELECTCREATE TABLE t1 (  id bigint(20) unsigned NOT NULL auto_increment,  field_1 int(10) unsigned NOT NULL,  field_2 varchar(255) NOT NULL,  field_3 varchar(255) NOT NULL,  PRIMARY KEY (id),  UNIQUE KEY field_1 (field_1, field_2));CREATE TABLE t2 (  field_a int(10) unsigned NOT NULL,  field_b varchar(255) NOT NULL,  field_c varchar(255) NOT NULL);INSERT INTO t2 (field_a, field_b, field_c) VALUES (1, 'a', '1a');INSERT INTO t2 (field_a, field_b, field_c) VALUES (2, 'b', '2b');INSERT INTO t2 (field_a, field_b, field_c) VALUES (3, 'c', '3c');INSERT INTO t2 (field_a, field_b, field_c) VALUES (4, 'd', '4d');INSERT INTO t2 (field_a, field_b, field_c) VALUES (5, 'e', '5e');# Updating table t1 based on values from table t2INSERT INTO t1 (field_1, field_2, field_3)SELECT t2.field_a, t2.field_b, t2.field_cFROM t2ON DUPLICATE KEY UPDATEt1.field_3 = t2.field_c;# Inserting new record into t2INSERT INTO t2 (field_a, field_b, field_c) VALUES (6, 'f', '6f');# Updating t1 againINSERT INTO t1 (field_1, field_2, field_3)SELECT t2.field_a, t2.field_b, t2.field_cFROM t2ON DUPLICATE KEY UPDATEt1.field_3 = t2.field_c;SELECT * FROM t1;sync_slave_with_master;SELECT * FROM t1;connection master;drop table t1, t2;## BUG#20339: stored procedure using LAST_INSERT_ID() does not# replicate statement-based #--disable_warningsDROP PROCEDURE IF EXISTS p1;DROP TABLE IF EXISTS t1, t2;--enable_warnings# Reset result of LAST_INSERT_ID().SELECT LAST_INSERT_ID(0);CREATE TABLE t1 (  id INT NOT NULL DEFAULT 0,  last_id INT,  PRIMARY KEY (id));CREATE TABLE t2 (  id INT NOT NULL AUTO_INCREMENT,  last_id INT,  PRIMARY KEY (id));delimiter |;CREATE PROCEDURE p1()BEGIN  INSERT INTO t2 (last_id) VALUES (LAST_INSERT_ID());  INSERT INTO t1 (last_id) VALUES (LAST_INSERT_ID());END|delimiter ;|CALL p1();SELECT * FROM t1;SELECT * FROM t2;sync_slave_with_master;SELECT * FROM t1;SELECT * FROM t2;connection master;DROP PROCEDURE p1;DROP TABLE t1, t2;## BUG#21726: Incorrect result with multiple invocations of# LAST_INSERT_ID#--disable_warningsDROP PROCEDURE IF EXISTS p1;DROP FUNCTION IF EXISTS f1;DROP FUNCTION IF EXISTS f2;DROP FUNCTION IF EXISTS f3;DROP TABLE IF EXISTS t1, t2;--enable_warningsCREATE TABLE t1 (    i INT NOT NULL AUTO_INCREMENT PRIMARY KEY,    j INT DEFAULT 0);CREATE TABLE t2 (i INT);delimiter |;CREATE PROCEDURE p1()BEGIN  INSERT INTO t1 (i) VALUES (NULL);  INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());  INSERT INTO t1 (i) VALUES (NULL), (NULL);  INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());END |CREATE FUNCTION f1() RETURNS INT MODIFIES SQL DATABEGIN  INSERT INTO t1 (i) VALUES (NULL);  INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());  INSERT INTO t1 (i) VALUES (NULL), (NULL);  INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());  RETURN 0;END |CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC  RETURN LAST_INSERT_ID() |CREATE FUNCTION f3() RETURNS INT MODIFIES SQL DATABEGIN  INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());  RETURN 0;END |delimiter ;|INSERT INTO t1 VALUES (NULL, -1);CALL p1();SELECT f1();INSERT INTO t1 VALUES (NULL, f2()), (NULL, LAST_INSERT_ID()),                      (NULL, LAST_INSERT_ID()), (NULL, f2()), (NULL, f2());INSERT INTO t1 VALUES (NULL, f2());INSERT INTO t1 VALUES (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID(5)),                      (NULL, @@LAST_INSERT_ID);# Test replication of substitution "IS NULL" -> "= LAST_INSERT_ID".INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());UPDATE t1 SET j= -1 WHERE i IS NULL;# Test statement-based replication of function calls.INSERT INTO t1 (i) VALUES (NULL);connection master1;INSERT INTO t1 (i) VALUES (NULL);connection master;SELECT f3();SELECT * FROM t1;SELECT * FROM t2;sync_slave_with_master;SELECT * FROM t1;SELECT * FROM t2;connection master;DROP PROCEDURE p1;DROP FUNCTION f1;DROP FUNCTION f2;DROP FUNCTION f3;DROP TABLE t1, t2;sync_slave_with_master;--echo --echo # End of 5.0 tests--echo 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -