diff options
author | Michael Widenius <monty@mariadb.org> | 2018-03-09 14:05:35 +0200 |
---|---|---|
committer | Monty <monty@mariadb.org> | 2018-03-29 13:59:44 +0300 |
commit | a7abddeffa6a760ce948c2dfb007cdf3f1a369d5 (patch) | |
tree | 70eb743fa965a17380bbc0ac88ae79ca1075b896 /mysql-test/main/compound.test | |
parent | ab1941266c59a19703a74b5593cf3f508a5752d7 (diff) | |
download | mariadb-git-a7abddeffa6a760ce948c2dfb007cdf3f1a369d5.tar.gz |
Create 'main' test directory and move 't' and 'r' there
Diffstat (limited to 'mysql-test/main/compound.test')
-rw-r--r-- | mysql-test/main/compound.test | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/mysql-test/main/compound.test b/mysql-test/main/compound.test new file mode 100644 index 00000000000..94a6c18b2f5 --- /dev/null +++ b/mysql-test/main/compound.test @@ -0,0 +1,160 @@ +# +# MDEV-5317 Compound statement / anonymous blocks +# +source include/have_log_bin.inc; +delimiter |; + +CREATE TABLE t1 (a INT PRIMARY KEY)| + +BEGIN NOT ATOMIC + INSERT INTO t1 VALUES (1); + INSERT INTO t1 VALUES (2); + INSERT INTO t1 VALUES (3); +END| + +SELECT * FROM t1| +PREPARE stmt FROM "BEGIN NOT ATOMIC + INSERT INTO t1 VALUES (4); + INSERT INTO t1 VALUES (5); + INSERT INTO t1 VALUES (?); +END"; +SET @val = 6| +reset master| +EXECUTE stmt USING @val| +SELECT * FROM t1| + +# see how ?-placeholder was replaced with the value +delimiter ;| +source include/show_binlog_events.inc; +delimiter |; + +DROP TABLE t1| + +# +# test for default database +# +# * SP db is different from the current db +CREATE DATABASE mysqltest1| +CREATE PROCEDURE mysqltest1.sp1() +BEGIN + PREPARE stmt FROM "BEGIN NOT ATOMIC CREATE TABLE t1 AS SELECT DATABASE(); END"; + EXECUTE stmt; +END| + +CALL mysqltest1.sp1()| +SELECT * FROM mysqltest1.t1| + +USE mysqltest1| +DROP DATABASE mysqltest1| + +# * no current db +--error ER_NO_DB_ERROR +BEGIN NOT ATOMIC CREATE TABLE t1(a int); END| + +BEGIN NOT ATOMIC SET @a=1; CREATE TABLE test.t1(a int); END| + +USE test| +show tables| +drop table t1| + +# IF (without /**/ mysqltest treats if as its own command) +/**/ if (select count(*) from information_schema.tables + where table_schema='test' and table_name='t1') = 0 + then + create table t1 (a int); +end if| +show tables| +/**/ if (select count(*) from information_schema.tables + where table_schema='test' and table_name='t1') = 0 + then + create table t1 (a int); +end if| +show tables| + +# CASE simple +case (select table_name from information_schema.tables where table_schema='test') + when 't1' then create table t2 (b int); + when 't2' then create table t3 (b int); + else signal sqlstate '42S02'; +end case| +show tables| + +# CASE searched +case + when database() = 'test' then create table t3 (test text); + when now() < date'2001-02-03' then create table oops (machine time); +end case| +show tables| + +# LOOP +--error ER_TABLE_EXISTS_ERROR +loop + create table t4 (a int); +end loop| +show tables| + +# REPEAT +set @a=0; +repeat + set @a = @a + 1; +until @a > 5 +end repeat| +select @a| + +# WHILE +--vertical_results +/**/ while (select count(*) from information_schema.tables where table_schema='test') +do + select concat('drop table ', table_name) into @a + from information_schema.tables where table_schema='test' + order by table_name limit 1; + select @a as 'executing:'; + prepare dt from @a; + execute dt; +end while| +--horizontal_results + +# see how ?-placeholder and SP variables are replaced with values +create table t1 (x int)| +create function fn(a int) returns int +begin + insert t1 values (a+7); + return a+8; +end| +reset master| +/**/ if fn(9) > 5 then + select 1; +end if| +prepare stmt from "if fn(?) > 6 then + begin + declare a int; + set a=?*2; + insert t1 values(a+?); + end; +end if"| +set @a=1, @b=2, @c=3| +execute stmt using @a, @b, @c| +delimiter ;| +source include/show_binlog_events.inc; +delimiter |; + +drop function fn| +drop table t1| + +# +# MDEV-6606 Server crashes in String::append on selecting sql_mode inside anonymous block +# MDEV-6609 SQL inside an anonymous block is executed with wrong SQL_MODE +# +begin not atomic select @@sql_mode; end| +create table t1 (a int)| +select a from t1 having a > 1| +begin not atomic select a from t1 having a > 1; end| +drop table t1| + +--echo # +--echo # MDEV-8615: Assertion `m_cpp_buf <= begin_ptr && +--echo # begin_ptr <= m_cpp_buf + m_buf_length' failed in +--echo # Lex_input_stream::body_utf8_start +--echo # +--error ER_PARSE_ERROR +--query b' |