Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
0bdae38e
Commit
0bdae38e
authored
Jun 07, 2006
by
ramil@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix for bug #6880: LAST_INSERT_ID() within a statement
parent
cb4c6a0d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
74 additions
and
3 deletions
+74
-3
mysql-test/r/auto_increment.result
mysql-test/r/auto_increment.result
+22
-0
mysql-test/r/rpl_log.result
mysql-test/r/rpl_log.result
+17
-0
mysql-test/t/auto_increment.test
mysql-test/t/auto_increment.test
+17
-0
mysql-test/t/rpl_log.test
mysql-test/t/rpl_log.test
+14
-0
sql/item_func.cc
sql/item_func.cc
+4
-3
No files found.
mysql-test/r/auto_increment.result
View file @
0bdae38e
...
...
@@ -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
View file @
0bdae38e
...
...
@@ -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
View file @
0bdae38e
...
...
@@ -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
View file @
0bdae38e
...
...
@@ -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
View file @
0bdae38e
...
...
@@ -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 */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment