diff options
author | konstantin@mysql.com <> | 2006-07-04 23:46:15 +0400 |
---|---|---|
committer | konstantin@mysql.com <> | 2006-07-04 23:46:15 +0400 |
commit | b99e11c8bdfd27d8aa6f392205aead12bc7a0561 (patch) | |
tree | a7a8aa12da0a32c3c9b7147eb0d41983bdb0aff1 /mysql-test/std_data | |
parent | e87278f4683d8517c6df4e27e0b1bc91214c7fbd (diff) | |
download | mariadb-git-b99e11c8bdfd27d8aa6f392205aead12bc7a0561.tar.gz |
A fix and a test case for Bug#17843 "Certain stored procedures fail to
run at startup"
The server returned an error when trying to execute init-file with a
stored procedure that could return multiple result sets to the client.
A stored procedure can return multiple result sets if it contains
PREPARE, SELECT, SHOW and similar statements.
The fix is to set client_capabilites|=CLIENT_MULTI_RESULTS in
sql_parse.cc:handle_bootstrap(). There is no "client" really, so
nothing is ever sent. This makes init-file feature behave consistently:
the prepared statements that can be called directly in the init-file
can be used in a stored procedure too.
Re-committed the patch originally submitted by Per-Erik after review.
Diffstat (limited to 'mysql-test/std_data')
-rw-r--r-- | mysql-test/std_data/init_file.dat | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/mysql-test/std_data/init_file.dat b/mysql-test/std_data/init_file.dat index 6105ca2ac1b..814e968eb31 100644 --- a/mysql-test/std_data/init_file.dat +++ b/mysql-test/std_data/init_file.dat @@ -1 +1,29 @@ select * from mysql.user as t1, mysql.user as t2, mysql.user as t3; +use test; + +drop table if exists t1; +create table t1 (x int); +drop table if exists t2; +create table t2 (y int); + +drop procedure if exists p1; +create definer=root@localhost procedure p1() select * from t1; +call p1(); +drop procedure p1; + +create definer=root@localhost procedure p1() insert into t1 values (3),(5),(7); +call p1(); + +drop function if exists f1; +create definer=root@localhost function f1() returns int return (select count(*) from t1); +insert into t2 set y = f1()*10; + +drop view if exists v1; +create definer=root@localhost view v1 as select f1(); +insert into t2 (y) select * from v1; + +create trigger trg1 after insert on t2 for each row insert into t1 values (new.y); +insert into t2 values (11), (13); +drop procedure p1; +drop function f1; +drop view v1; |