1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-31 22:22:30 +03:00

Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-real-bug21726

into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.1-real-bug21726


mysql-test/t/rpl_insert_id.test:
  Use local.
sql/item_func.cc:
  Use local.
sql/item_func.h:
  Use local.
sql/log_event.cc:
  SCCS merged
sql/set_var.cc:
  Use local.
sql/sql_class.h:
  Use local.
sql/sql_insert.cc:
  Use local.
sql/sql_load.cc:
  Use local.
sql/sql_parse.cc:
  Use local.
sql/sql_select.cc:
  Use local.
sql/sql_update.cc:
  Use local.
mysql-test/r/rpl_insert_id.result:
  Use local.
sql/sql_class.cc:
  Manual merge.  Add comment for THD::cleanup_after_query().
tests/mysql_client_test.c:
  Manual merge.  Add test case for bug#21726: Incorrect result with
  multiple invocations of LAST_INSERT_ID.
This commit is contained in:
unknown
2006-10-02 15:01:19 +04:00
3 changed files with 183 additions and 3 deletions

View File

@@ -263,6 +263,135 @@ n b
2 100
3 350
drop table t1;
DROP PROCEDURE IF EXISTS p1;
DROP TABLE IF EXISTS t1, t2;
SELECT LAST_INSERT_ID(0);
LAST_INSERT_ID(0)
0
CREATE TABLE t1 (
id INT NOT NULL DEFAULT 0,
last_id INT,
PRIMARY KEY (id)
);
CREATE TABLE t2 (
id INT NOT NULL AUTO_INCREMENT,
last_id INT,
PRIMARY KEY (id)
);
CREATE PROCEDURE p1()
BEGIN
INSERT INTO t2 (last_id) VALUES (LAST_INSERT_ID());
INSERT INTO t1 (last_id) VALUES (LAST_INSERT_ID());
END|
CALL p1();
SELECT * FROM t1;
id last_id
0 1
SELECT * FROM t2;
id last_id
1 0
SELECT * FROM t1;
id last_id
0 1
SELECT * FROM t2;
id last_id
1 0
DROP PROCEDURE p1;
DROP TABLE t1, t2;
DROP PROCEDURE IF EXISTS p1;
DROP FUNCTION IF EXISTS f1;
DROP FUNCTION IF EXISTS f2;
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 (
i INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
j INT DEFAULT 0
);
CREATE TABLE t2 (i INT);
CREATE PROCEDURE p1()
BEGIN
INSERT INTO t1 (i) VALUES (NULL);
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
INSERT INTO t1 (i) VALUES (NULL), (NULL);
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
END |
CREATE FUNCTION f1() RETURNS INT MODIFIES SQL DATA
BEGIN
INSERT INTO t1 (i) VALUES (NULL);
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
INSERT INTO t1 (i) VALUES (NULL), (NULL);
INSERT INTO t2 (i) VALUES (LAST_INSERT_ID());
RETURN 0;
END |
CREATE FUNCTION f2() RETURNS INT NOT DETERMINISTIC
RETURN LAST_INSERT_ID() |
INSERT INTO t1 VALUES (NULL, -1);
CALL p1();
SELECT f1();
f1()
0
INSERT INTO t1 VALUES (NULL, f2()), (NULL, LAST_INSERT_ID()),
(NULL, LAST_INSERT_ID()), (NULL, f2()), (NULL, f2());
INSERT INTO t1 VALUES (NULL, f2());
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;
SELECT * FROM t1;
i j
1 -1
2 0
3 0
4 0
5 0
6 0
7 0
8 3
9 3
10 3
11 3
12 3
13 8
14 13
15 5
16 13
17 -1
18 14
SELECT * FROM t2;
i
2
3
5
6
SELECT * FROM t1;
i j
1 -1
2 0
3 0
4 0
5 0
6 0
7 0
8 3
9 3
10 3
11 3
12 3
13 8
14 13
15 5
16 13
17 -1
18 14
SELECT * FROM t2;
i
2
3
5
6
DROP PROCEDURE p1;
DROP FUNCTION f1;
DROP FUNCTION f2;
DROP TABLE t1, t2;
#
# End of 5.0 tests
#