Loading mysql-test/r/auto_increment.result +22 −0 Original line number Diff line number Diff line Loading @@ -378,4 +378,26 @@ t1 CREATE TABLE `t1` ( KEY `t1_name` (`t1_name`) ) ENGINE=MyISAM AUTO_INCREMENT=1003 DEFAULT CHARSET=latin1 DROP TABLE `t1`; create table t1(a int not null auto_increment primary key); create table t2(a int not null auto_increment primary key, t1a int); insert into t1 values(NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); insert into t1 values (NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); insert into t1 values (NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); select * from t2; a t1a 1 1 2 1 3 2 4 2 5 2 6 3 7 3 8 3 9 3 drop table t1, t2; End of 4.1 tests mysql-test/r/rpl_log.result +17 −0 Original line number Diff line number Diff line Loading @@ -99,3 +99,20 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 276 slave-relay-bin.000003 214 master-bin.000002 Yes Yes 0 0 276 214 None 0 No # show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log create table t1(a int auto_increment primary key, b int); insert into t1 values (NULL, 1); reset master; set insert_id=5; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); show binlog events; Log_name Pos Event_type Server_id Orig_log_pos Info slave-bin.000001 4 Start 2 4 Server ver: VERSION, Binlog ver: 3 slave-bin.000001 79 Intvar 2 79 LAST_INSERT_ID=1 slave-bin.000001 107 Intvar 2 107 INSERT_ID=5 slave-bin.000001 135 Query 2 135 use `test`; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()) select * from t1; a b 1 1 5 1 6 1 drop table t1; mysql-test/t/auto_increment.test +17 −0 Original line number Diff line number Diff line Loading @@ -238,4 +238,21 @@ SHOW CREATE TABLE `t1`; DROP TABLE `t1`; # # Bug #6880: LAST_INSERT_ID() within a statement # create table t1(a int not null auto_increment primary key); create table t2(a int not null auto_increment primary key, t1a int); insert into t1 values(NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); insert into t1 values (NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); insert into t1 values (NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); select * from t2; drop table t1, t2; --echo End of 4.1 tests mysql-test/t/rpl_log.test +14 −0 Original line number Diff line number Diff line Loading @@ -108,4 +108,18 @@ show slave status; --error 1220 show binlog events in 'slave-bin.000005' from 4; # # Bug #6880: LAST_INSERT_ID() within a statement # create table t1(a int auto_increment primary key, b int); insert into t1 values (NULL, 1); reset master; set insert_id=5; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); --replace_result $VERSION VERSION show binlog events; select * from t1; drop table t1; # End of 4.1 tests sql/item_func.cc +4 −3 Original line number Diff line number Diff line Loading @@ -2233,15 +2233,16 @@ longlong Item_func_release_lock::val_int() longlong Item_func_last_insert_id::val_int() { DBUG_ASSERT(fixed == 1); THD* thd= current_thd; if (arg_count) { longlong value=args[0]->val_int(); current_thd->insert_id(value); thd->insert_id(value); null_value=args[0]->null_value; } else current_thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); return current_thd->insert_id(); thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); return thd->last_insert_id_used ? thd->current_insert_id : thd->insert_id(); } /* This function is just used to test speed of different functions */ Loading Loading
mysql-test/r/auto_increment.result +22 −0 Original line number Diff line number Diff line Loading @@ -378,4 +378,26 @@ t1 CREATE TABLE `t1` ( KEY `t1_name` (`t1_name`) ) ENGINE=MyISAM AUTO_INCREMENT=1003 DEFAULT CHARSET=latin1 DROP TABLE `t1`; create table t1(a int not null auto_increment primary key); create table t2(a int not null auto_increment primary key, t1a int); insert into t1 values(NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); insert into t1 values (NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); insert into t1 values (NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); select * from t2; a t1a 1 1 2 1 3 2 4 2 5 2 6 3 7 3 8 3 9 3 drop table t1, t2; End of 4.1 tests
mysql-test/r/rpl_log.result +17 −0 Original line number Diff line number Diff line Loading @@ -99,3 +99,20 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File # 127.0.0.1 root MASTER_PORT 1 master-bin.000002 276 slave-relay-bin.000003 214 master-bin.000002 Yes Yes 0 0 276 214 None 0 No # show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log create table t1(a int auto_increment primary key, b int); insert into t1 values (NULL, 1); reset master; set insert_id=5; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); show binlog events; Log_name Pos Event_type Server_id Orig_log_pos Info slave-bin.000001 4 Start 2 4 Server ver: VERSION, Binlog ver: 3 slave-bin.000001 79 Intvar 2 79 LAST_INSERT_ID=1 slave-bin.000001 107 Intvar 2 107 INSERT_ID=5 slave-bin.000001 135 Query 2 135 use `test`; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()) select * from t1; a b 1 1 5 1 6 1 drop table t1;
mysql-test/t/auto_increment.test +17 −0 Original line number Diff line number Diff line Loading @@ -238,4 +238,21 @@ SHOW CREATE TABLE `t1`; DROP TABLE `t1`; # # Bug #6880: LAST_INSERT_ID() within a statement # create table t1(a int not null auto_increment primary key); create table t2(a int not null auto_increment primary key, t1a int); insert into t1 values(NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); insert into t1 values (NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); insert into t1 values (NULL); insert into t2 values (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID()); select * from t2; drop table t1, t2; --echo End of 4.1 tests
mysql-test/t/rpl_log.test +14 −0 Original line number Diff line number Diff line Loading @@ -108,4 +108,18 @@ show slave status; --error 1220 show binlog events in 'slave-bin.000005' from 4; # # Bug #6880: LAST_INSERT_ID() within a statement # create table t1(a int auto_increment primary key, b int); insert into t1 values (NULL, 1); reset master; set insert_id=5; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); --replace_result $VERSION VERSION show binlog events; select * from t1; drop table t1; # End of 4.1 tests
sql/item_func.cc +4 −3 Original line number Diff line number Diff line Loading @@ -2233,15 +2233,16 @@ longlong Item_func_release_lock::val_int() longlong Item_func_last_insert_id::val_int() { DBUG_ASSERT(fixed == 1); THD* thd= current_thd; if (arg_count) { longlong value=args[0]->val_int(); current_thd->insert_id(value); thd->insert_id(value); null_value=args[0]->null_value; } else current_thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); return current_thd->insert_id(); thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); return thd->last_insert_id_used ? thd->current_insert_id : thd->insert_id(); } /* This function is just used to test speed of different functions */ Loading