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
225b3e48
Commit
225b3e48
authored
Oct 03, 2006
by
msvensson@neptunus.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal:/home/bk/mysql-5.0
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
parents
4f46f3bd
995ac34a
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
62 additions
and
12 deletions
+62
-12
mysql-test/r/rpl_insert_id.result
mysql-test/r/rpl_insert_id.result
+18
-0
mysql-test/t/rpl_insert_id.test
mysql-test/t/rpl_insert_id.test
+17
-0
sql/filesort.cc
sql/filesort.cc
+1
-0
sql/item_func.cc
sql/item_func.cc
+1
-0
sql/log.cc
sql/log.cc
+2
-2
sql/set_var.cc
sql/set_var.cc
+1
-0
sql/sql_class.cc
sql/sql_class.cc
+6
-4
sql/sql_class.h
sql/sql_class.h
+11
-2
sql/sql_parse.cc
sql/sql_parse.cc
+1
-0
sql/sql_select.cc
sql/sql_select.cc
+4
-4
No files found.
mysql-test/r/rpl_insert_id.result
View file @
225b3e48
...
...
@@ -272,6 +272,7 @@ DROP TABLE t1, t2;
DROP 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;
CREATE TABLE t1 (
i INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
...
...
@@ -295,6 +296,11 @@ RETURN 0;
END |
CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC
RETURN LAST_INSERT_ID() |
CREATE FUNCTION f3() RETURNS INT MODIFIES SQL DATA
BEGIN
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
RETURN 0;
END |
INSERT INTO t1 VALUES (NULL, -1);
CALL p1();
SELECT f1();
...
...
@@ -307,6 +313,11 @@ INSERT INTO t1 VALUES (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID(5)),
(NULL, @@LAST_INSERT_ID);
INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());
UPDATE t1 SET j= -1 WHERE i IS NULL;
INSERT INTO t1 (i) VALUES (NULL);
INSERT INTO t1 (i) VALUES (NULL);
SELECT f3();
f3()
0
SELECT * FROM t1;
i j
1 -1
...
...
@@ -327,12 +338,15 @@ i j
16 13
17 -1
18 14
19 0
20 0
SELECT * FROM t2;
i
2
3
5
6
19
SELECT * FROM t1;
i j
1 -1
...
...
@@ -353,15 +367,19 @@ i j
16 13
17 -1
18 14
19 0
20 0
SELECT * FROM t2;
i
2
3
5
6
19
DROP PROCEDURE p1;
DROP FUNCTION f1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1, t2;
# End of 5.0 tests
...
...
mysql-test/t/rpl_insert_id.test
View file @
225b3e48
...
...
@@ -299,6 +299,7 @@ DROP TABLE t1, t2;
DROP
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_warnings
...
...
@@ -328,6 +329,12 @@ END |
CREATE
FUNCTION
f2
()
RETURNS
INT
NOT
DETERMINISTIC
RETURN
LAST_INSERT_ID
()
|
CREATE
FUNCTION
f3
()
RETURNS
INT
MODIFIES
SQL
DATA
BEGIN
INSERT
INTO
t2
(
i
)
VALUES
(
LAST_INSERT_ID
());
RETURN
0
;
END
|
delimiter
;
|
INSERT
INTO
t1
VALUES
(
NULL
,
-
1
);
...
...
@@ -342,6 +349,15 @@ INSERT INTO t1 VALUES (NULL, LAST_INSERT_ID()), (NULL, LAST_INSERT_ID(5)),
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
;
...
...
@@ -353,6 +369,7 @@ connection master;
DROP
PROCEDURE
p1
;
DROP
FUNCTION
f1
;
DROP
FUNCTION
f2
;
DROP
FUNCTION
f3
;
DROP
TABLE
t1
,
t2
;
...
...
sql/filesort.cc
View file @
225b3e48
...
...
@@ -601,6 +601,7 @@ static inline void store_length(uchar *to, uint length, uint pack_length)
break
;
case
3
:
mi_int3store
(
to
,
length
);
break
;
default:
mi_int4store
(
to
,
length
);
break
;
...
...
sql/item_func.cc
View file @
225b3e48
...
...
@@ -3362,6 +3362,7 @@ bool Item_func_last_insert_id::fix_fields(THD *thd, Item **ref)
id of the previous statement in THD::current_insert_id.
*/
thd
->
last_insert_id_used
=
TRUE
;
thd
->
last_insert_id_used_bin_log
=
TRUE
;
thd
->
current_insert_id
=
thd
->
last_insert_id
;
}
null_value
=
FALSE
;
...
...
sql/log.cc
View file @
225b3e48
...
...
@@ -1705,7 +1705,7 @@ bool MYSQL_LOG::write(Log_event *event_info)
if
(
thd
)
{
if
(
thd
->
last_insert_id_used
)
if
(
thd
->
last_insert_id_used
_bin_log
)
{
Intvar_log_event
e
(
thd
,(
uchar
)
LAST_INSERT_ID_EVENT
,
thd
->
current_insert_id
);
...
...
@@ -1997,7 +1997,7 @@ bool MYSQL_LOG::write(THD *thd,const char *query, uint query_length,
tmp_errno
=
errno
;
strmov
(
db
,
thd
->
db
);
}
if
(
thd
->
last_insert_id_used
)
if
(
thd
->
last_insert_id_used
_bin_log
)
{
end
=
strmov
(
end
,
",last_insert_id="
);
end
=
longlong10_to_str
((
longlong
)
thd
->
current_insert_id
,
end
,
-
10
);
...
...
sql/set_var.cc
View file @
225b3e48
...
...
@@ -2579,6 +2579,7 @@ byte *sys_var_last_insert_id::value_ptr(THD *thd, enum_var_type type,
of the previous statement in THD::current_insert_id.
*/
thd
->
last_insert_id_used
=
TRUE
;
thd
->
last_insert_id_used_bin_log
=
TRUE
;
thd
->
current_insert_id
=
thd
->
last_insert_id
;
}
return
(
byte
*
)
&
thd
->
current_insert_id
;
...
...
sql/sql_class.cc
View file @
225b3e48
...
...
@@ -179,9 +179,9 @@ THD::THD()
lock_id
(
&
main_lock_id
),
user_time
(
0
),
in_sub_stmt
(
0
),
global_read_lock
(
0
),
is_fatal_error
(
0
),
rand_used
(
0
),
time_zone_used
(
0
),
last_insert_id_used
(
0
),
insert_id_used
(
0
),
clear_next_insert_i
d
(
0
),
in_lock_tables
(
0
),
bootstrap
(
0
),
derived_tables_processing
(
FALSE
),
spcont
(
NULL
)
last_insert_id_used
(
0
),
last_insert_id_used_bin_log
(
0
),
insert_id_use
d
(
0
),
clear_next_insert_id
(
0
),
in_lock_tables
(
0
),
bootstrap
(
0
),
derived_tables_processing
(
FALSE
),
spcont
(
NULL
)
{
stmt_arena
=
this
;
thread_stack
=
0
;
...
...
@@ -560,7 +560,7 @@ bool THD::store_globals()
THD::cleanup_after_query()
DESCRIPTION
This function is used to reset thread data to it
'
s default state.
This function is used to reset thread data to its default state.
NOTE
This function is not suitable for setting thread data to some
...
...
@@ -568,6 +568,7 @@ bool THD::store_globals()
different master threads may overwrite data of each other on
slave.
*/
void
THD
::
cleanup_after_query
()
{
last_insert_id_used
=
FALSE
;
...
...
@@ -582,6 +583,7 @@ void THD::cleanup_after_query()
where
=
THD
::
DEFAULT_WHERE
;
}
/*
Convert a string to another character set
...
...
sql/sql_class.h
View file @
225b3e48
...
...
@@ -1340,11 +1340,20 @@ public:
/*
last_insert_id_used is set when current statement calls
LAST_INSERT_ID() or reads @@LAST_INSERT_ID, so that binary log
LAST_INSERT_ID_EVENT be generated.
LAST_INSERT_ID() or reads @@LAST_INSERT_ID.
*/
bool
last_insert_id_used
;
/*
last_insert_id_used is set when current statement or any stored
function called from this statement calls LAST_INSERT_ID() or
reads @@LAST_INSERT_ID, so that binary log LAST_INSERT_ID_EVENT be
generated. Required for statement-based binary log for issuing
"SET LAST_INSERT_ID= #" before "SELECT func()", if func() reads
LAST_INSERT_ID.
*/
bool
last_insert_id_used_bin_log
;
/*
insert_id_used is set when current statement updates
THD::last_insert_id, so that binary log INSERT_ID_EVENT be
...
...
sql/sql_parse.cc
View file @
225b3e48
...
...
@@ -5651,6 +5651,7 @@ void mysql_reset_thd_for_next_command(THD *thd)
thd
->
free_list
=
0
;
thd
->
select_number
=
1
;
thd
->
query_start_used
=
thd
->
insert_id_used
=
0
;
thd
->
last_insert_id_used_bin_log
=
FALSE
;
thd
->
is_fatal_error
=
thd
->
time_zone_used
=
0
;
thd
->
server_status
&=
~
(
SERVER_MORE_RESULTS_EXISTS
|
SERVER_QUERY_NO_INDEX_USED
|
...
...
sql/sql_select.cc
View file @
225b3e48
...
...
@@ -8165,11 +8165,11 @@ remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value)
21
))))
{
/*
Set THD::last_insert_id_used
manually, as this statement
uses LAST_INSERT_ID() in a sense, and should issue
LAST_INSERT_ID_EVENT.
Set THD::last_insert_id_used
_bin_log manually, as this
statement uses LAST_INSERT_ID() in a sense, and should
issue
LAST_INSERT_ID_EVENT.
*/
thd
->
last_insert_id_used
=
TRUE
;
thd
->
last_insert_id_used
_bin_log
=
TRUE
;
cond
=
new_cond
;
/*
...
...
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