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
710ffb2d
Commit
710ffb2d
authored
Jan 28, 2003
by
monty@mashka.mysql.fi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix when using auto_increment and last_insert_id() in the same insert statement.
parent
9aa49681
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
61 additions
and
14 deletions
+61
-14
mysql-test/r/rpl_insert_id.result
mysql-test/r/rpl_insert_id.result
+15
-0
mysql-test/t/rpl_insert_id.test
mysql-test/t/rpl_insert_id.test
+39
-0
sql/log.cc
sql/log.cc
+1
-1
sql/sql_base.cc
sql/sql_base.cc
+6
-13
No files found.
mysql-test/r/rpl_insert_id.result
0 → 100644
View file @
710ffb2d
a
1
2
3
4
b c
1 4
a
10
11
12
13
b c
5 0
6 11
mysql-test/t/rpl_insert_id.test
0 → 100644
View file @
710ffb2d
#see if queries that use both
#auto_increment and LAST_INSERT_ID()
#are replicated well
source
include
/
master
-
slave
.
inc
;
connection
master
;
drop
table
if
exists
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
(
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 way
drop
table
t1
;
drop
table
t2
;
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
values
(
null
,
last_insert_id
());
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
;
sql/log.cc
View file @
710ffb2d
...
@@ -697,7 +697,7 @@ bool MYSQL_LOG::write(Query_log_event* event_info)
...
@@ -697,7 +697,7 @@ bool MYSQL_LOG::write(Query_log_event* event_info)
if
(
thd
->
last_insert_id_used
)
if
(
thd
->
last_insert_id_used
)
{
{
Intvar_log_event
e
((
uchar
)
LAST_INSERT_ID_EVENT
,
thd
->
las
t_insert_id
);
Intvar_log_event
e
((
uchar
)
LAST_INSERT_ID_EVENT
,
thd
->
curren
t_insert_id
);
if
(
thd
->
server_id
)
if
(
thd
->
server_id
)
e
.
server_id
=
thd
->
server_id
;
e
.
server_id
=
thd
->
server_id
;
if
(
e
.
write
(
file
))
if
(
e
.
write
(
file
))
...
...
sql/sql_base.cc
View file @
710ffb2d
...
@@ -522,26 +522,19 @@ void close_temporary_tables(THD *thd)
...
@@ -522,26 +522,19 @@ void close_temporary_tables(THD *thd)
{
{
TABLE
*
table
,
*
next
;
TABLE
*
table
,
*
next
;
char
*
query
,
*
end
;
char
*
query
,
*
end
;
const
uint
init_query_buf_size
=
11
;
// "drop table "
uint
query_buf_size
;
uint
query_buf_size
;
bool
found_user_tables
=
0
;
bool
found_user_tables
=
0
;
LINT_INIT
(
end
);
LINT_INIT
(
end
);
query_buf_size
=
init_query_buf_size
;
for
(
table
=
thd
->
temporary_tables
;
table
;
table
=
table
->
next
)
{
query_buf_size
+=
table
->
key_length
;
}
if
(
query_buf_size
==
init_query_buf_size
)
if
(
!
thd
->
temporary_tables
)
return
;
// no tables to close
return
;
// no tables to close
query_buf_size
=
11
;
// "drop table "
for
(
table
=
thd
->
temporary_tables
;
table
;
table
=
table
->
next
)
query_buf_size
+=
table
->
key_length
+
1
;
if
((
query
=
alloc_root
(
&
thd
->
mem_root
,
query_buf_size
)))
if
((
query
=
alloc_root
(
&
thd
->
mem_root
,
query_buf_size
)))
{
end
=
strmov
(
query
,
"drop table "
);
memcpy
(
query
,
"drop table "
,
init_query_buf_size
);
end
=
query
+
init_query_buf_size
;
}
for
(
table
=
thd
->
temporary_tables
;
table
;
table
=
next
)
for
(
table
=
thd
->
temporary_tables
;
table
;
table
=
next
)
{
{
...
...
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