Commit d1e5cfd6 authored by andrey@example.com's avatar andrey@example.com

Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.0-maint

into  example.com:/work/bug23760/my50
parents fb30aeaa 9299fd67
...@@ -2705,11 +2705,11 @@ row_count() ...@@ -2705,11 +2705,11 @@ row_count()
call bug4905()| call bug4905()|
select row_count()| select row_count()|
row_count() row_count()
0 -1
call bug4905()| call bug4905()|
select row_count()| select row_count()|
row_count() row_count()
0 -1
select * from t3| select * from t3|
s1 s1
1 1
...@@ -5627,4 +5627,85 @@ Called B ...@@ -5627,4 +5627,85 @@ Called B
drop procedure proc_21462_a| drop procedure proc_21462_a|
drop procedure proc_21462_b| drop procedure proc_21462_b|
End of 5.0 tests End of 5.0 tests
DROP TABLE IF EXISTS bug23760|
DROP TABLE IF EXISTS bug23760_log|
DROP PROCEDURE IF EXISTS bug23760_update_log|
DROP PROCEDURE IF EXISTS bug23760_test_row_count|
DROP FUNCTION IF EXISTS bug23760_rc_test|
CREATE TABLE bug23760 (
id INT NOT NULL AUTO_INCREMENT ,
num INT NOT NULL ,
PRIMARY KEY ( id )
)|
CREATE TABLE bug23760_log (
id INT NOT NULL AUTO_INCREMENT ,
reason VARCHAR(50)NULL ,
ammount INT NOT NULL ,
PRIMARY KEY ( id )
)|
CREATE PROCEDURE bug23760_update_log(r Varchar(50), a INT)
BEGIN
INSERT INTO bug23760_log (reason, ammount) VALUES(r, a);
END|
CREATE PROCEDURE bug23760_test_row_count()
BEGIN
UPDATE bug23760 SET num = num + 1;
CALL bug23760_update_log('Test is working', ROW_COUNT());
UPDATE bug23760 SET num = num - 1;
END|
CREATE PROCEDURE bug23760_test_row_count2(level INT)
BEGIN
IF level THEN
UPDATE bug23760 SET num = num + 1;
CALL bug23760_update_log('Test2 is working', ROW_COUNT());
CALL bug23760_test_row_count2(level - 1);
END IF;
END|
CREATE FUNCTION bug23760_rc_test(in_var INT) RETURNS INT RETURN in_var|
INSERT INTO bug23760 (num) VALUES (0), (1), (1), (2), (3), (5), (8)|
SELECT ROW_COUNT()|
ROW_COUNT()
7
CALL bug23760_test_row_count()|
SELECT * FROM bug23760_log ORDER BY id|
id reason ammount
1 Test is working 7
SET @save_max_sp_recursion= @@max_sp_recursion_depth|
SELECT @save_max_sp_recursion|
@save_max_sp_recursion
0
SET max_sp_recursion_depth= 5|
SELECT @@max_sp_recursion_depth|
@@max_sp_recursion_depth
5
CALL bug23760_test_row_count2(2)|
SELECT ROW_COUNT()|
ROW_COUNT()
1
SELECT * FROM bug23760_log ORDER BY id|
id reason ammount
1 Test is working 7
2 Test2 is working 7
3 Test2 is working 7
SELECT * FROM bug23760 ORDER by ID|
id num
1 2
2 3
3 3
4 4
5 5
6 7
7 10
SET max_sp_recursion_depth= @save_max_sp_recursion|
SELECT bug23760_rc_test(123)|
bug23760_rc_test(123)
123
INSERT INTO bug23760 (num) VALUES (13), (21), (34), (55)|
SELECT bug23760_rc_test(ROW_COUNT())|
bug23760_rc_test(ROW_COUNT())
4
DROP TABLE bug23760, bug23760_log|
DROP PROCEDURE bug23760_update_log|
DROP PROCEDURE bug23760_test_row_count|
DROP FUNCTION bug23760_rc_test|
drop table t1,t2; drop table t1,t2;
...@@ -6590,6 +6590,83 @@ drop procedure proc_21462_b| ...@@ -6590,6 +6590,83 @@ drop procedure proc_21462_b|
--echo End of 5.0 tests --echo End of 5.0 tests
#
# BUG#23760: ROW_COUNT() and store procedure not owrking together
#
--disable_warnings
DROP TABLE IF EXISTS bug23760|
DROP TABLE IF EXISTS bug23760_log|
DROP PROCEDURE IF EXISTS bug23760_update_log|
DROP PROCEDURE IF EXISTS bug23760_test_row_count|
DROP FUNCTION IF EXISTS bug23760_rc_test|
--enable_warnings
CREATE TABLE bug23760 (
id INT NOT NULL AUTO_INCREMENT ,
num INT NOT NULL ,
PRIMARY KEY ( id )
)|
CREATE TABLE bug23760_log (
id INT NOT NULL AUTO_INCREMENT ,
reason VARCHAR(50)NULL ,
ammount INT NOT NULL ,
PRIMARY KEY ( id )
)|
CREATE PROCEDURE bug23760_update_log(r Varchar(50), a INT)
BEGIN
INSERT INTO bug23760_log (reason, ammount) VALUES(r, a);
END|
CREATE PROCEDURE bug23760_test_row_count()
BEGIN
UPDATE bug23760 SET num = num + 1;
CALL bug23760_update_log('Test is working', ROW_COUNT());
UPDATE bug23760 SET num = num - 1;
END|
CREATE PROCEDURE bug23760_test_row_count2(level INT)
BEGIN
IF level THEN
UPDATE bug23760 SET num = num + 1;
CALL bug23760_update_log('Test2 is working', ROW_COUNT());
CALL bug23760_test_row_count2(level - 1);
END IF;
END|
CREATE FUNCTION bug23760_rc_test(in_var INT) RETURNS INT RETURN in_var|
INSERT INTO bug23760 (num) VALUES (0), (1), (1), (2), (3), (5), (8)|
SELECT ROW_COUNT()|
CALL bug23760_test_row_count()|
SELECT * FROM bug23760_log ORDER BY id|
SET @save_max_sp_recursion= @@max_sp_recursion_depth|
SELECT @save_max_sp_recursion|
SET max_sp_recursion_depth= 5|
SELECT @@max_sp_recursion_depth|
CALL bug23760_test_row_count2(2)|
SELECT ROW_COUNT()|
SELECT * FROM bug23760_log ORDER BY id|
SELECT * FROM bug23760 ORDER by ID|
SET max_sp_recursion_depth= @save_max_sp_recursion|
SELECT bug23760_rc_test(123)|
INSERT INTO bug23760 (num) VALUES (13), (21), (34), (55)|
SELECT bug23760_rc_test(ROW_COUNT())|
DROP TABLE bug23760, bug23760_log|
DROP PROCEDURE bug23760_update_log|
DROP PROCEDURE bug23760_test_row_count|
DROP FUNCTION bug23760_rc_test|
#
# NOTE: The delimiter is `|`, and not `;`. It is changed to `;`
# at the end of the file!
#
# #
# BUG#NNNN: New bug synopsis # BUG#NNNN: New bug synopsis
# #
......
...@@ -4465,8 +4465,6 @@ end_with_restore_list: ...@@ -4465,8 +4465,6 @@ end_with_restore_list:
select_limit= thd->variables.select_limit; select_limit= thd->variables.select_limit;
thd->variables.select_limit= HA_POS_ERROR; thd->variables.select_limit= HA_POS_ERROR;
thd->row_count_func= 0;
/* /*
We never write CALL statements into binlog: We never write CALL statements into binlog:
- If the mode is non-prelocked, each statement will be logged - If the mode is non-prelocked, each statement will be logged
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment