summaryrefslogtreecommitdiff
path: root/mysql-test/include/ps_modify.inc
diff options
context:
space:
mode:
authorunknown <gordon@zero.local.lan>2004-07-01 16:30:29 +0200
committerunknown <gordon@zero.local.lan>2004-07-01 16:30:29 +0200
commitf2e036aa5fe26abfbe962f63268fd2f1301f1e27 (patch)
tree29c9ff5bbbe6265ffd258b42992aa7aa7f245a41 /mysql-test/include/ps_modify.inc
parentb694101fce99c317291f9992a9223f7bd16b20f6 (diff)
downloadmariadb-git-f2e036aa5fe26abfbe962f63268fd2f1301f1e27.tar.gz
WL#1564 Intensive test of prepared statements via 'mysqltest'
BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
Diffstat (limited to 'mysql-test/include/ps_modify.inc')
-rw-r--r--mysql-test/include/ps_modify.inc207
1 files changed, 207 insertions, 0 deletions
diff --git a/mysql-test/include/ps_modify.inc b/mysql-test/include/ps_modify.inc
new file mode 100644
index 00000000000..85e9690cf04
--- /dev/null
+++ b/mysql-test/include/ps_modify.inc
@@ -0,0 +1,207 @@
+###################### ps_modify.inc #########################
+# #
+# Tests for prepared statements: INSERT/DELETE/UPDATE... #
+# #
+##############################################################
+
+--disable_query_log
+select '------ delete tests ------' as test_sequence ;
+--enable_query_log
+--source include/ps_renew.inc
+
+## delete without parameter
+prepare stmt1 from 'delete from t1 where a=2' ;
+execute stmt1;
+select a,b from t1 where a=2;
+# delete with row not found
+execute stmt1;
+
+## delete with one parameter in the where clause
+insert into t1 values(0,NULL);
+set @arg00=NULL;
+prepare stmt1 from 'delete from t1 where b=?' ;
+execute stmt1 using @arg00;
+select a,b from t1 where b is NULL ;
+set @arg00='one';
+execute stmt1 using @arg00;
+select a,b from t1 where b=@arg00;
+
+## truncate a table
+--error 1295
+prepare stmt1 from 'truncate table t1' ;
+
+
+--disable_query_log
+select '------ update tests ------' as test_sequence ;
+--enable_query_log
+--source include/ps_renew.inc
+
+## update without parameter
+prepare stmt1 from 'update t1 set b=''a=two'' where a=2' ;
+execute stmt1;
+select a,b from t1 where a=2;
+# dummy update
+execute stmt1;
+select a,b from t1 where a=2;
+
+## update with one parameter in the set clause
+set @arg00=NULL;
+prepare stmt1 from 'update t1 set b=? where a=2' ;
+execute stmt1 using @arg00;
+select a,b from t1 where a=2;
+set @arg00='two';
+execute stmt1 using @arg00;
+select a,b from t1 where a=2;
+
+## update with one parameter in the where cause
+set @arg00=2;
+prepare stmt1 from 'update t1 set b=NULL where a=?' ;
+execute stmt1 using @arg00;
+select a,b from t1 where a=@arg00;
+update t1 set b='two' where a=@arg00;
+# row not found in update
+set @arg00=2000;
+execute stmt1 using @arg00;
+select a,b from t1 where a=@arg00;
+
+## update on primary key column (two parameters)
+set @arg00=2;
+set @arg01=22;
+prepare stmt1 from 'update t1 set a=? where a=?' ;
+# dummy update
+execute stmt1 using @arg00, @arg00;
+select a,b from t1 where a=@arg00;
+execute stmt1 using @arg01, @arg00;
+select a,b from t1 where a=@arg01;
+execute stmt1 using @arg00, @arg01;
+select a,b from t1 where a=@arg00;
+set @arg00=NULL;
+set @arg01=2;
+execute stmt1 using @arg00, @arg01;
+select a,b from t1;
+set @arg00=0;
+execute stmt1 using @arg01, @arg00;
+select a,b from t1;
+
+## update with subquery and several parameters
+set @arg00=23;
+set @arg01='two';
+set @arg02=2;
+set @arg03='two';
+set @arg04=2;
+--disable_warnings
+drop table if exists t2;
+--enable_warnings
+create table t2 as select a,b from t1 ;
+prepare stmt1 from 'update t1 set a=? where b=?
+ and a in (select ? from t2
+ where b = ? or a = ?)';
+execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04 ;
+select a,b from t1 where a = @arg00 ;
+prepare stmt1 from 'update t1 set a=? where b=?
+ and a not in (select ? from t2
+ where b = ? or a = ?)';
+execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
+select a,b from t1 ;
+drop table t2 ;
+
+## update with parameters in limit
+set @arg00=1;
+prepare stmt1 from 'update t1 set b=''bla''
+where a=2
+limit 1';
+execute stmt1 ;
+select a,b from t1 where b = 'bla' ;
+# currently (May 2004, Version 4.1) it is impossible
+-- error 1064
+prepare stmt1 from 'update t1 set b=''bla''
+where a=2
+limit ?';
+
+--disable_query_log
+select '------ insert tests ------' as test_sequence ;
+--enable_query_log
+--source include/ps_renew.inc
+
+## insert without parameter
+prepare stmt1 from 'insert into t1 values(5, ''five'' )';
+execute stmt1;
+select a,b from t1 where a = 5;
+
+## insert with one parameter in values part
+set @arg00='six' ;
+prepare stmt1 from 'insert into t1 values(6, ? )';
+execute stmt1 using @arg00;
+select a,b from t1 where b = @arg00;
+# the second insert fails, because the first column is primary key
+--error 1062
+execute stmt1 using @arg00;
+set @arg00=NULL ;
+prepare stmt1 from 'insert into t1 values(0, ? )';
+execute stmt1 using @arg00;
+select a,b from t1 where b is NULL;
+
+## insert with two parameter in values part
+set @arg00=8 ;
+set @arg01='eight' ;
+prepare stmt1 from 'insert into t1 values(?, ? )';
+execute stmt1 using @arg00, @arg01 ;
+select a,b from t1 where b = @arg01;
+
+## insert with two rows in values part
+set @arg00=81 ;
+set @arg01='8-1' ;
+set @arg02=82 ;
+set @arg03='8-2' ;
+prepare stmt1 from 'insert into t1 values(?,?),(?,?)';
+execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
+select a,b from t1 where a in (@arg00,@arg02) ;
+
+## insert with two parameter in the set part
+set @arg00=9 ;
+set @arg01='nine' ;
+prepare stmt1 from 'insert into t1 set a=?, b=? ';
+execute stmt1 using @arg00, @arg01 ;
+select a,b from t1 where a = @arg00 ;
+
+## insert with parameters in the ON DUPLICATE KEY part
+set @arg00=6 ;
+set @arg01=1 ;
+prepare stmt1 from 'insert into t1 set a=?, b=''sechs''
+ on duplicate key update a=a + ?, b=concat(b,''modified'') ';
+execute stmt1 using @arg00, @arg01;
+select * from t1;
+set @arg00=81 ;
+set @arg01=1 ;
+--error 1062
+execute stmt1 using @arg00, @arg01;
+
+## many parameters
+set @1000=1000 ;
+set @x1000_2="x1000_2" ;
+set @x1000_3="x1000_3" ;
+
+set @x1000="x1000" ;
+set @1100=1100 ;
+set @x1100="x1100" ;
+set @100=100 ;
+set @updated="updated" ;
+insert into t1 values(1000,'x1000_1') ;
+insert into t1 values(@1000,@x1000_2),(@1000,@x1000_3)
+ on duplicate key update a = a + @100, b = concat(b,@updated) ;
+select a,b from t1 where a >= 1000 ;
+delete from t1 where a >= 1000 ;
+insert into t1 values(1000,'x1000_1') ;
+prepare stmt1 from ' insert into t1 values(?,?),(?,?)
+ on duplicate key update a = a + ?, b = concat(b,?) ';
+execute stmt1 using @1000, @x1000_2, @1000, @x1000_3, @100, @updated ;
+select a,b from t1 where a >= 1000 ;
+delete from t1 where a >= 1000 ;
+insert into t1 values(1000,'x1000_1') ;
+execute stmt1 using @1000, @x1000_2, @1100, @x1000_3, @100, @updated ;
+select a,b from t1 where a >= 1000 ;
+delete from t1 where a >= 1000 ;
+
+## replace
+--error 1295
+prepare stmt1 from ' replace into t1 (a,b) select 100, ''hundred'' ';