Commit 9df4951a authored by jimw@mysql.com's avatar jimw@mysql.com

Merge mysql.com:/home/jimw/my/mysql-5.0-14956

into  mysql.com:/home/jimw/my/mysql-5.0-clean
parents 99297e44 86beb208
...@@ -825,3 +825,10 @@ execute stmt; ...@@ -825,3 +825,10 @@ execute stmt;
drop table t1; drop table t1;
set names default; set names default;
deallocate prepare stmt; deallocate prepare stmt;
create table t1 (id int);
prepare ins_call from "insert into t1 (id) values (1)";
execute ins_call;
select row_count();
row_count()
1
drop table t1;
...@@ -871,3 +871,15 @@ set names default; ...@@ -871,3 +871,15 @@ set names default;
deallocate prepare stmt; deallocate prepare stmt;
# End of 4.1 tests # End of 4.1 tests
#
# Bug #14956: ROW_COUNT() returns incorrect result after EXECUTE of prepared
# statement
#
create table t1 (id int);
prepare ins_call from "insert into t1 (id) values (1)";
execute ins_call;
select row_count();
drop table t1;
# End of 5.0 tests
...@@ -4844,11 +4844,15 @@ end_with_restore_list: ...@@ -4844,11 +4844,15 @@ end_with_restore_list:
/* /*
The return value for ROW_COUNT() is "implementation dependent" if The return value for ROW_COUNT() is "implementation dependent" if the
the statement is not DELETE, INSERT or UPDATE (or a CALL executing statement is not DELETE, INSERT or UPDATE, but -1 is what JDBC and ODBC
such a statement), but -1 is what JDBC and ODBC wants. wants.
We do not change the value for a CALL or EXECUTE statement, so the value
generated by the last called (or executed) statement is preserved.
*/ */
if (lex->sql_command != SQLCOM_CALL && uc_update_queries[lex->sql_command]<2) if (lex->sql_command != SQLCOM_CALL && lex->sql_command != SQLCOM_EXECUTE &&
uc_update_queries[lex->sql_command]<2)
thd->row_count_func= -1; thd->row_count_func= -1;
goto cleanup; goto cleanup;
......
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