Commit 3cbf2eaf authored by unknown's avatar unknown
Browse files

Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1

into  mysql.com:/usr/home/ram/work/4.1.b6880

parents 5efb70d7 febe7eb6
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -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
+17 −0
Original line number Diff line number Diff line
@@ -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;
+17 −0
Original line number Diff line number Diff line
@@ -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
+14 −0
Original line number Diff line number Diff line
@@ -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
+4 −3
Original line number Diff line number Diff line
@@ -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 */