From c23c4c7cfa80bd4aec0967fdeacd7d32d679c67a Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 13 Apr 2005 12:36:15 -0700 Subject: [PATCH] Allow SQLCOM_CALL in prepared mode. mysql-test/r/ps.result: Test results: adding tests for CALL statement in prepared mode. mysql-test/t/ps.test: Adding tests for CALL statement in prepared mode. --- mysql-test/r/ps.result | 28 ++++++++++++++++++++++++++++ mysql-test/t/ps.test | 26 ++++++++++++++++++++++++++ sql/sql_prepare.cc | 1 + 3 files changed, 55 insertions(+) diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result index 94972ea8721..bbd95da2f82 100644 --- a/mysql-test/r/ps.result +++ b/mysql-test/r/ps.result @@ -542,3 +542,31 @@ execute my_stmt; COUNT(*) 37 deallocate prepare my_stmt; +drop procedure if exists p1| +drop table if exists t1| +create table t1 (id int)| +insert into t1 values(1)| +create procedure p1(a int, b int) +begin +declare c int; +select max(id)+1 into c from t1; +insert into t1 select a+b; +insert into t1 select a-b; +insert into t1 select a-c; +end| +set @a= 3, @b= 4| +prepare stmt from "call p1(?, ?)"| +execute stmt using @a, @b| +execute stmt using @a, @b| +select * from t1| +id +1 +7 +-1 +1 +7 +-1 +-5 +deallocate prepare stmt| +drop procedure p1| +drop table t1| diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test index 271d553e221..820fae12db0 100644 --- a/mysql-test/t/ps.test +++ b/mysql-test/t/ps.test @@ -561,3 +561,29 @@ while ($exec_loop_count) dec $exec_loop_count; } deallocate prepare my_stmt; + +# Test CALL in prepared mode +delimiter |; +--disable_warnings +drop procedure if exists p1| +drop table if exists t1| +--enable_warnings +create table t1 (id int)| +insert into t1 values(1)| +create procedure p1(a int, b int) +begin + declare c int; + select max(id)+1 into c from t1; + insert into t1 select a+b; + insert into t1 select a-b; + insert into t1 select a-c; +end| +set @a= 3, @b= 4| +prepare stmt from "call p1(?, ?)"| +execute stmt using @a, @b| +execute stmt using @a, @b| +select * from t1| +deallocate prepare stmt| +drop procedure p1| +drop table t1| +delimiter ;| diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 416105c6523..7c00299d482 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -1654,6 +1654,7 @@ static int check_prepared_statement(Prepared_statement *stmt, case SQLCOM_DROP_INDEX: case SQLCOM_ROLLBACK: case SQLCOM_TRUNCATE: + case SQLCOM_CALL: break; default: