mirror of
https://github.com/MariaDB/server.git
synced 2025-01-21 14:32:34 +01:00
086fba7627
BUG#26429: SHOW CREATE EVENT is incorrect for an event that STARTS NOW() BUG#26431: Impossible to re-create an event from backup if its STARTS clause is in the past WL#3698: Events: execution in local time zone The problem was that local times specified by the user in AT, STARTS and ENDS of CREATE EVENT/ALTER EVENT statement were converted to UTC, and the original time zone was forgotten. This way, event scheduler couldn't honor Daylight Saving Time shifts, and times shown to the user were also in UTC. Additionally, CREATE EVENT didn't allow times in the past, thus preventing straightforward event restoration from old backups. This patch reworks event scheduler time computations, performing them in the time zone associated with the event. Also it allows times to be in the past. The patch adds time_zone column to mysql.event table. NOTE: The patch is almost final, but the bug#9953 should be pushed first. client/mysqldump.c: Before every CREATE EVENT, output its time zone. mysql-test/include/wait_condition.inc: Add optional $wait_timeout parameter. mysql-test/lib/init_db.sql: Add time_zone column. mysql-test/r/events.result: Update result. mysql-test/r/events_bugs.result: Update result. mysql-test/r/events_grant.result: Update result. mysql-test/r/events_restart_phase1.result: Update result. mysql-test/r/events_scheduling.result: Update result. mysql-test/r/mysqldump.result: Update result. mysql-test/r/ps.result: Update result. mysql-test/r/system_mysql_db.result: Update result. mysql-test/t/events.test: Remove STARTS from the result, as it depends on current time. mysql-test/t/events_bugs.test: Time in the past is no longer an error. mysql-test/t/events_restart_phase1.test: Fill new column 'time_zone' in mysql.event. mysql-test/t/events_scheduling.test: Cleanup: disable event scheduler. scripts/mysql_create_system_tables.sh: Add new column 'time_zone' to mysql.event. scripts/mysql_fix_privilege_tables.sql: Add new column 'time_zone' to mysql.event. sql/event_data_objects.cc: The essence of the change is the following: - for internal times use my_time_t instead of TIME. Assignment and comparison is done now on plain numbers. - in init_execute_at(), init_starts(), init_ends() convert given time to number of seconds since Epoch (aka Unix time, in UTC). - handle time_zone field loading and storing. - in get_next_time(), Unix time is converted back to event time zone, interval is added, and the result is converted to UTC again. - fix Event_timed::get_create_event() to report STARTS and ENDS. - before executing the event body we set thread time zone to the event time zone. sql/event_data_objects.h: Add time_zone member to Event_basic class. Store internal times in my_time_t (number of seconds since Epoch), rather than in broken down TIME structure. sql/event_db_repository.cc: Add time_zone column handling. Give a warning and do not create an event if its execution time is in the past, and ON COMPLETION NOT PRESERVE is set, because such an event should be dropped by that time. Also, do not allow ALTER EVENT to set execution time in the past when ON COMPLETION NOT PRESERVE is set. sql/event_db_repository.h: Add enum member for new time zone column. sql/event_queue.cc: Replace handling of broken down times with simple handling of my_time_t. sql/event_queue.h: Store internal times in my_time_t (number of seconds since Epoch), rather than in broken down TIME structure. sql/event_scheduler.cc: Add TODO comment. sql/events.cc: Send time_zone column for SHOW CREATE EVENT. sql/share/errmsg.txt: Update error message, and add two more errors. sql/sql_show.cc: Add TIME_ZONE column to the output of SHOW EVENTS. mysql-test/r/events_time_zone.result: BitKeeper file /home/tomash/src/mysql_ab/mysql-5.1-wl3698/mysql-test/r/events_time_zone.result mysql-test/t/events_time_zone.test: BitKeeper file /home/tomash/src/mysql_ab/mysql-5.1-wl3698/mysql-test/t/events_time_zone.test
2527 lines
77 KiB
Text
2527 lines
77 KiB
Text
drop table if exists t1,t2,t3,t4;
|
||
drop database if exists client_test_db;
|
||
create table t1
|
||
(
|
||
a int primary key,
|
||
b char(10)
|
||
);
|
||
insert into t1 values (1,'one');
|
||
insert into t1 values (2,'two');
|
||
insert into t1 values (3,'three');
|
||
insert into t1 values (4,'four');
|
||
set @a=2;
|
||
prepare stmt1 from 'select * from t1 where a <= ?';
|
||
execute stmt1 using @a;
|
||
a b
|
||
1 one
|
||
2 two
|
||
set @a=3;
|
||
execute stmt1 using @a;
|
||
a b
|
||
1 one
|
||
2 two
|
||
3 three
|
||
deallocate prepare no_such_statement;
|
||
ERROR HY000: Unknown prepared statement handler (no_such_statement) given to DEALLOCATE PREPARE
|
||
execute stmt1;
|
||
ERROR HY000: Incorrect arguments to EXECUTE
|
||
prepare stmt2 from 'prepare nested_stmt from "select 1"';
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"select 1"' at line 1
|
||
prepare stmt2 from 'execute stmt1';
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'stmt1' at line 1
|
||
prepare stmt2 from 'deallocate prepare z';
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'z' at line 1
|
||
prepare stmt3 from 'insert into t1 values (?,?)';
|
||
set @arg1=5, @arg2='five';
|
||
execute stmt3 using @arg1, @arg2;
|
||
select * from t1 where a>3;
|
||
a b
|
||
4 four
|
||
5 five
|
||
prepare stmt4 from 'update t1 set a=? where b=?';
|
||
set @arg1=55, @arg2='five';
|
||
execute stmt4 using @arg1, @arg2;
|
||
select * from t1 where a>3;
|
||
a b
|
||
4 four
|
||
55 five
|
||
prepare stmt4 from 'create table t2 (a int)';
|
||
execute stmt4;
|
||
prepare stmt4 from 'drop table t2';
|
||
execute stmt4;
|
||
execute stmt4;
|
||
ERROR 42S02: Unknown table 't2'
|
||
prepare stmt5 from 'select ? + a from t1';
|
||
set @a=1;
|
||
execute stmt5 using @a;
|
||
? + a
|
||
2
|
||
3
|
||
4
|
||
5
|
||
56
|
||
execute stmt5 using @no_such_var;
|
||
? + a
|
||
NULL
|
||
NULL
|
||
NULL
|
||
NULL
|
||
NULL
|
||
set @nullvar=1;
|
||
set @nullvar=NULL;
|
||
execute stmt5 using @nullvar;
|
||
? + a
|
||
NULL
|
||
NULL
|
||
NULL
|
||
NULL
|
||
NULL
|
||
set @nullvar2=NULL;
|
||
execute stmt5 using @nullvar2;
|
||
? + a
|
||
NULL
|
||
NULL
|
||
NULL
|
||
NULL
|
||
NULL
|
||
prepare stmt6 from 'select 1; select2';
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; select2' at line 1
|
||
prepare stmt6 from 'insert into t1 values (5,"five"); select2';
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; select2' at line 1
|
||
explain prepare stmt6 from 'insert into t1 values (5,"five"); select2';
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from 'insert into t1 values (5,"five"); select2'' at line 1
|
||
create table t2
|
||
(
|
||
a int
|
||
);
|
||
insert into t2 values (0);
|
||
set @arg00=NULL ;
|
||
prepare stmt1 from 'select 1 FROM t2 where a=?' ;
|
||
execute stmt1 using @arg00 ;
|
||
1
|
||
prepare stmt1 from @nosuchvar;
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1
|
||
set @ivar= 1234;
|
||
prepare stmt1 from @ivar;
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1234' at line 1
|
||
set @fvar= 123.4567;
|
||
prepare stmt1 from @fvar;
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123.4567' at line 1
|
||
drop table t1,t2;
|
||
deallocate prepare stmt3;
|
||
deallocate prepare stmt4;
|
||
deallocate prepare stmt5;
|
||
PREPARE stmt1 FROM "select _utf8 'A' collate utf8_bin = ?";
|
||
set @var='A';
|
||
EXECUTE stmt1 USING @var;
|
||
_utf8 'A' collate utf8_bin = ?
|
||
1
|
||
DEALLOCATE PREPARE stmt1;
|
||
create table t1 (id int);
|
||
prepare stmt1 from "select FOUND_ROWS()";
|
||
select SQL_CALC_FOUND_ROWS * from t1;
|
||
id
|
||
execute stmt1;
|
||
FOUND_ROWS()
|
||
0
|
||
insert into t1 values (1);
|
||
select SQL_CALC_FOUND_ROWS * from t1;
|
||
id
|
||
1
|
||
execute stmt1;
|
||
FOUND_ROWS()
|
||
1
|
||
execute stmt1;
|
||
FOUND_ROWS()
|
||
1
|
||
deallocate prepare stmt1;
|
||
drop table t1;
|
||
create table t1
|
||
(
|
||
c1 tinyint, c2 smallint, c3 mediumint, c4 int,
|
||
c5 integer, c6 bigint, c7 float, c8 double,
|
||
c9 double precision, c10 real, c11 decimal(7, 4), c12 numeric(8, 4),
|
||
c13 date, c14 datetime, c15 timestamp, c16 time,
|
||
c17 year, c18 bit, c19 bool, c20 char,
|
||
c21 char(10), c22 varchar(30), c23 tinyblob, c24 tinytext,
|
||
c25 blob, c26 text, c27 mediumblob, c28 mediumtext,
|
||
c29 longblob, c30 longtext, c31 enum('one', 'two', 'three'),
|
||
c32 set('monday', 'tuesday', 'wednesday')
|
||
) engine = MYISAM ;
|
||
create table t2 like t1;
|
||
set @stmt= ' explain SELECT (SELECT SUM(c1 + c12 + 0.0) FROM t2 where (t1.c2 - 0e-3) = t2.c2 GROUP BY t1.c15 LIMIT 1) as scalar_s, exists (select 1.0e+0 from t2 where t2.c3 * 9.0000000000 = t1.c4) as exists_s, c5 * 4 in (select c6 + 0.3e+1 from t2) as in_s, (c7 - 4, c8 - 4) in (select c9 + 4.0, c10 + 40e-1 from t2) as in_row_s FROM t1, (select c25 x, c32 y from t2) tt WHERE x * 1 = c25 ' ;
|
||
prepare stmt1 from @stmt ;
|
||
execute stmt1 ;
|
||
id select_type table type possible_keys key key_len ref rows Extra
|
||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
6 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||
5 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
|
||
4 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
|
||
3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
execute stmt1 ;
|
||
id select_type table type possible_keys key key_len ref rows Extra
|
||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
6 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||
5 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
|
||
4 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
|
||
3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
explain SELECT (SELECT SUM(c1 + c12 + 0.0) FROM t2 where (t1.c2 - 0e-3) = t2.c2 GROUP BY t1.c15 LIMIT 1) as scalar_s, exists (select 1.0e+0 from t2 where t2.c3 * 9.0000000000 = t1.c4) as exists_s, c5 * 4 in (select c6 + 0.3e+1 from t2) as in_s, (c7 - 4, c8 - 4) in (select c9 + 4.0, c10 + 40e-1 from t2) as in_row_s FROM t1, (select c25 x, c32 y from t2) tt WHERE x * 1 = c25;
|
||
id select_type table type possible_keys key key_len ref rows Extra
|
||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
6 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||
5 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
|
||
4 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
|
||
3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||
deallocate prepare stmt1;
|
||
drop tables t1,t2;
|
||
set @arg00=1;
|
||
prepare stmt1 from ' create table t1 (m int) as select 1 as m ' ;
|
||
execute stmt1 ;
|
||
select m from t1;
|
||
m
|
||
1
|
||
drop table t1;
|
||
prepare stmt1 from ' create table t1 (m int) as select ? as m ' ;
|
||
execute stmt1 using @arg00;
|
||
select m from t1;
|
||
m
|
||
1
|
||
deallocate prepare stmt1;
|
||
drop table t1;
|
||
create table t1 (id int(10) unsigned NOT NULL default '0',
|
||
name varchar(64) NOT NULL default '',
|
||
PRIMARY KEY (id), UNIQUE KEY `name` (`name`));
|
||
insert into t1 values (1,'1'),(2,'2'),(3,'3'),(4,'4'),(5,'5'),(6,'6'),(7,'7');
|
||
prepare stmt1 from 'select name from t1 where id=? or id=?';
|
||
set @id1=1,@id2=6;
|
||
execute stmt1 using @id1, @id2;
|
||
name
|
||
1
|
||
6
|
||
select name from t1 where id=1 or id=6;
|
||
name
|
||
1
|
||
6
|
||
deallocate prepare stmt1;
|
||
drop table t1;
|
||
create table t1 ( a int primary key, b varchar(30)) engine = MYISAM ;
|
||
prepare stmt1 from ' show table status from test like ''t1%'' ';
|
||
execute stmt1;
|
||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||
t1 MyISAM 10 Dynamic 0 0 0 4294967295 1024 0 NULL # # # latin1_swedish_ci NULL
|
||
show table status from test like 't1%' ;
|
||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||
t1 MyISAM 10 Dynamic 0 0 0 4294967295 1024 0 NULL # # # latin1_swedish_ci NULL
|
||
deallocate prepare stmt1 ;
|
||
drop table t1;
|
||
create table t1(a varchar(2), b varchar(3));
|
||
prepare stmt1 from "select a, b from t1 where (not (a='aa' and b < 'zzz'))";
|
||
execute stmt1;
|
||
a b
|
||
execute stmt1;
|
||
a b
|
||
deallocate prepare stmt1;
|
||
drop table t1;
|
||
prepare stmt1 from "select 1 into @var";
|
||
execute stmt1;
|
||
execute stmt1;
|
||
prepare stmt1 from "create table t1 select 1 as i";
|
||
execute stmt1;
|
||
drop table t1;
|
||
execute stmt1;
|
||
prepare stmt1 from "insert into t1 select i from t1";
|
||
execute stmt1;
|
||
execute stmt1;
|
||
prepare stmt1 from "select * from t1 into outfile 'f1.txt'";
|
||
execute stmt1;
|
||
deallocate prepare stmt1;
|
||
drop table t1;
|
||
prepare stmt1 from 'select 1';
|
||
prepare STMT1 from 'select 2';
|
||
execute sTmT1;
|
||
2
|
||
2
|
||
deallocate prepare StMt1;
|
||
deallocate prepare Stmt1;
|
||
ERROR HY000: Unknown prepared statement handler (Stmt1) given to DEALLOCATE PREPARE
|
||
set names utf8;
|
||
prepare `ü` from 'select 1234';
|
||
execute `ü` ;
|
||
1234
|
||
1234
|
||
set names latin1;
|
||
execute `<60>`;
|
||
1234
|
||
1234
|
||
deallocate prepare `<60>`;
|
||
set names default;
|
||
create table t1 (a varchar(10)) charset=utf8;
|
||
insert into t1 (a) values ('yahoo');
|
||
set character_set_connection=latin1;
|
||
prepare stmt from 'select a from t1 where a like ?';
|
||
set @var='google';
|
||
execute stmt using @var;
|
||
a
|
||
execute stmt using @var;
|
||
a
|
||
deallocate prepare stmt;
|
||
drop table t1;
|
||
create table t1 (a bigint(20) not null primary key auto_increment);
|
||
insert into t1 (a) values (null);
|
||
select * from t1;
|
||
a
|
||
1
|
||
prepare stmt from "insert into t1 (a) values (?)";
|
||
set @var=null;
|
||
execute stmt using @var;
|
||
select * from t1;
|
||
a
|
||
1
|
||
2
|
||
drop table t1;
|
||
create table t1 (a timestamp not null);
|
||
prepare stmt from "insert into t1 (a) values (?)";
|
||
execute stmt using @var;
|
||
select * from t1;
|
||
deallocate prepare stmt;
|
||
drop table t1;
|
||
prepare stmt from "select 'abc' like convert('abc' using utf8)";
|
||
execute stmt;
|
||
'abc' like convert('abc' using utf8)
|
||
1
|
||
execute stmt;
|
||
'abc' like convert('abc' using utf8)
|
||
1
|
||
deallocate prepare stmt;
|
||
create table t1 ( a bigint );
|
||
prepare stmt from 'select a from t1 where a between ? and ?';
|
||
set @a=1;
|
||
execute stmt using @a, @a;
|
||
a
|
||
execute stmt using @a, @a;
|
||
a
|
||
execute stmt using @a, @a;
|
||
a
|
||
drop table t1;
|
||
deallocate prepare stmt;
|
||
create table t1 (a int);
|
||
prepare stmt from "select * from t1 where 1 > (1 in (SELECT * FROM t1))";
|
||
execute stmt;
|
||
a
|
||
execute stmt;
|
||
a
|
||
execute stmt;
|
||
a
|
||
drop table t1;
|
||
deallocate prepare stmt;
|
||
create table t1 (a int, b int);
|
||
insert into t1 (a, b) values (1,1), (1,2), (2,1), (2,2);
|
||
prepare stmt from
|
||
"explain select * from t1 where t1.a=2 and t1.a=t1.b and t1.b > 1 + ?";
|
||
set @v=5;
|
||
execute stmt using @v;
|
||
id select_type table type possible_keys key key_len ref rows Extra
|
||
- - - - - - - - NULL Impossible WHERE
|
||
set @v=0;
|
||
execute stmt using @v;
|
||
id select_type table type possible_keys key key_len ref rows Extra
|
||
- - - - - - - - 4 Using where
|
||
set @v=5;
|
||
execute stmt using @v;
|
||
id select_type table type possible_keys key key_len ref rows Extra
|
||
- - - - - - - - NULL Impossible WHERE
|
||
drop table t1;
|
||
deallocate prepare stmt;
|
||
create table t1 (a int);
|
||
insert into t1 (a) values (1), (2), (3), (4);
|
||
set @precision=10000000000;
|
||
select rand(),
|
||
cast(rand(10)*@precision as unsigned integer) from t1;
|
||
rand() cast(rand(10)*@precision as unsigned integer)
|
||
- 6570515220
|
||
- 1282061302
|
||
- 6698761160
|
||
- 9647622201
|
||
prepare stmt from
|
||
"select rand(),
|
||
cast(rand(10)*@precision as unsigned integer),
|
||
cast(rand(?)*@precision as unsigned integer) from t1";
|
||
set @var=1;
|
||
execute stmt using @var;
|
||
rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer)
|
||
- 6570515220 -
|
||
- 1282061302 -
|
||
- 6698761160 -
|
||
- 9647622201 -
|
||
set @var=2;
|
||
execute stmt using @var;
|
||
rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer)
|
||
- 6570515220 6555866465
|
||
- 1282061302 1223466193
|
||
- 6698761160 6449731874
|
||
- 9647622201 8578261098
|
||
set @var=3;
|
||
execute stmt using @var;
|
||
rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer)
|
||
- 6570515220 9057697560
|
||
- 1282061302 3730790581
|
||
- 6698761160 1480860535
|
||
- 9647622201 6211931236
|
||
drop table t1;
|
||
deallocate prepare stmt;
|
||
create database mysqltest1;
|
||
create table t1 (a int);
|
||
create table mysqltest1.t1 (a int);
|
||
select * from t1, mysqltest1.t1;
|
||
a a
|
||
prepare stmt from "select * from t1, mysqltest1.t1";
|
||
execute stmt;
|
||
a a
|
||
execute stmt;
|
||
a a
|
||
execute stmt;
|
||
a a
|
||
drop table t1;
|
||
drop table mysqltest1.t1;
|
||
drop database mysqltest1;
|
||
deallocate prepare stmt;
|
||
select '1.1' as a, '1.2' as a UNION SELECT '2.1', '2.2';
|
||
a a
|
||
1.1 1.2
|
||
2.1 2.2
|
||
prepare stmt from
|
||
"select '1.1' as a, '1.2' as a UNION SELECT '2.1', '2.2'";
|
||
execute stmt;
|
||
a a
|
||
1.1 1.2
|
||
2.1 2.2
|
||
execute stmt;
|
||
a a
|
||
1.1 1.2
|
||
2.1 2.2
|
||
execute stmt;
|
||
a a
|
||
1.1 1.2
|
||
2.1 2.2
|
||
deallocate prepare stmt;
|
||
create table t1 (a int);
|
||
insert into t1 values (1),(2),(3);
|
||
create table t2 select * from t1;
|
||
prepare stmt FROM 'create table t2 select * from t1';
|
||
drop table t2;
|
||
execute stmt;
|
||
drop table t2;
|
||
execute stmt;
|
||
execute stmt;
|
||
ERROR 42S01: Table 't2' already exists
|
||
drop table t2;
|
||
execute stmt;
|
||
drop table t1,t2;
|
||
deallocate prepare stmt;
|
||
create table t1 (a int);
|
||
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||
prepare stmt from "select sql_calc_found_rows * from t1 limit 2";
|
||
execute stmt;
|
||
a
|
||
1
|
||
2
|
||
select found_rows();
|
||
found_rows()
|
||
10
|
||
execute stmt;
|
||
a
|
||
1
|
||
2
|
||
select found_rows();
|
||
found_rows()
|
||
10
|
||
execute stmt;
|
||
a
|
||
1
|
||
2
|
||
select found_rows();
|
||
found_rows()
|
||
10
|
||
deallocate prepare stmt;
|
||
drop table t1;
|
||
CREATE TABLE t1 (N int, M tinyint);
|
||
INSERT INTO t1 VALUES (1,0),(1,0),(2,0),(2,0),(3,0);
|
||
PREPARE stmt FROM 'UPDATE t1 AS P1 INNER JOIN (SELECT N FROM t1 GROUP BY N HAVING COUNT(M) > 1) AS P2 ON P1.N = P2.N SET P1.M = 2';
|
||
EXECUTE stmt;
|
||
DEALLOCATE PREPARE stmt;
|
||
DROP TABLE t1;
|
||
prepare stmt from "select ? is null, ? is not null, ?";
|
||
select @no_such_var is null, @no_such_var is not null, @no_such_var;
|
||
@no_such_var is null @no_such_var is not null @no_such_var
|
||
1 0 NULL
|
||
execute stmt using @no_such_var, @no_such_var, @no_such_var;
|
||
? is null ? is not null ?
|
||
1 0 NULL
|
||
set @var='abc';
|
||
select @var is null, @var is not null, @var;
|
||
@var is null @var is not null @var
|
||
0 1 abc
|
||
execute stmt using @var, @var, @var;
|
||
? is null ? is not null ?
|
||
0 1 abc
|
||
set @var=null;
|
||
select @var is null, @var is not null, @var;
|
||
@var is null @var is not null @var
|
||
1 0 NULL
|
||
execute stmt using @var, @var, @var;
|
||
? is null ? is not null ?
|
||
1 0 NULL
|
||
create table t1 (pnum char(3));
|
||
create table t2 (pnum char(3));
|
||
prepare stmt from "select pnum from t2 having pnum in (select 'p1' from t1)";
|
||
execute stmt;
|
||
pnum
|
||
execute stmt;
|
||
pnum
|
||
execute stmt;
|
||
pnum
|
||
deallocate prepare stmt;
|
||
drop table t1, t2;
|
||
drop table if exists t1;
|
||
create temporary table if not exists t1 (a1 int);
|
||
prepare stmt from "delete t1 from t1 where (cast(a1/3 as unsigned) * 3) = a1";
|
||
drop temporary table t1;
|
||
create temporary table if not exists t1 (a1 int);
|
||
execute stmt;
|
||
drop temporary table t1;
|
||
create temporary table if not exists t1 (a1 int);
|
||
execute stmt;
|
||
drop temporary table t1;
|
||
create temporary table if not exists t1 (a1 int);
|
||
execute stmt;
|
||
drop temporary table t1;
|
||
deallocate prepare stmt;
|
||
create table t1 (a varchar(20));
|
||
insert into t1 values ('foo');
|
||
prepare stmt FROM 'SELECT char_length (a) FROM t1';
|
||
prepare stmt2 FROM 'SELECT not_a_function (a) FROM t1';
|
||
ERROR 42000: FUNCTION test.not_a_function does not exist
|
||
drop table t1;
|
||
prepare stmt from "SELECT SQL_CALC_FOUND_ROWS 'foo' UNION SELECT 'bar' LIMIT 0";
|
||
execute stmt;
|
||
foo
|
||
SELECT FOUND_ROWS();
|
||
FOUND_ROWS()
|
||
2
|
||
execute stmt;
|
||
foo
|
||
SELECT FOUND_ROWS();
|
||
FOUND_ROWS()
|
||
2
|
||
deallocate prepare stmt;
|
||
drop table if exists t1;
|
||
Warnings:
|
||
Note 1051 Unknown table 't1'
|
||
create table t1 (c1 int(11) not null, c2 int(11) not null,
|
||
primary key (c1,c2), key c2 (c2), key c1 (c1));
|
||
insert into t1 values (200887, 860);
|
||
insert into t1 values (200887, 200887);
|
||
select * from t1 where (c1=200887 and c2=200887) or c2=860;
|
||
c1 c2
|
||
200887 860
|
||
200887 200887
|
||
prepare stmt from
|
||
"select * from t1 where (c1=200887 and c2=200887) or c2=860";
|
||
execute stmt;
|
||
c1 c2
|
||
200887 860
|
||
200887 200887
|
||
prepare stmt from
|
||
"select * from t1 where (c1=200887 and c2=?) or c2=?";
|
||
set @a=200887, @b=860;
|
||
execute stmt using @a, @b;
|
||
c1 c2
|
||
200887 860
|
||
200887 200887
|
||
deallocate prepare stmt;
|
||
drop table t1;
|
||
create table t1 (
|
||
id bigint(20) not null auto_increment,
|
||
code varchar(20) character set utf8 collate utf8_bin not null default '',
|
||
company_name varchar(250) character set utf8 collate utf8_bin default null,
|
||
setup_mode tinyint(4) default null,
|
||
start_date datetime default null,
|
||
primary key (id), unique key code (code)
|
||
);
|
||
create table t2 (
|
||
id bigint(20) not null auto_increment,
|
||
email varchar(250) character set utf8 collate utf8_bin default null,
|
||
name varchar(250) character set utf8 collate utf8_bin default null,
|
||
t1_id bigint(20) default null,
|
||
password varchar(250) character set utf8 collate utf8_bin default null,
|
||
primary_contact tinyint(4) not null default '0',
|
||
email_opt_in tinyint(4) not null default '1',
|
||
primary key (id), unique key email (email), key t1_id (t1_id),
|
||
constraint t2_fk1 foreign key (t1_id) references t1 (id)
|
||
);
|
||
insert into t1 values
|
||
(1, 'demo', 'demo s', 0, current_date()),
|
||
(2, 'code2', 'name 2', 0, current_date()),
|
||
(3, 'code3', 'name 3', 0, current_date());
|
||
insert into t2 values
|
||
(2, 'email1', 'name1', 3, 'password1', 0, 0),
|
||
(3, 'email2', 'name1', 1, 'password2', 1, 0),
|
||
(5, 'email3', 'name3', 2, 'password3', 0, 0);
|
||
prepare stmt from 'select t2.id from t2, t1 where (t1.id=? and t2.t1_id=t1.id)';
|
||
set @a=1;
|
||
execute stmt using @a;
|
||
id
|
||
3
|
||
select t2.id from t2, t1 where (t1.id=1 and t2.t1_id=t1.id);
|
||
id
|
||
3
|
||
deallocate prepare stmt;
|
||
drop table t1, t2;
|
||
create table t1 (id int);
|
||
prepare stmt from "insert into t1 (id) select id from t1 union select id from t1";
|
||
execute stmt;
|
||
execute stmt;
|
||
deallocate prepare stmt;
|
||
drop table t1;
|
||
create table t1 (
|
||
id int(11) unsigned not null primary key auto_increment,
|
||
partner_id varchar(35) not null,
|
||
t1_status_id int(10) unsigned
|
||
);
|
||
insert into t1 values ("1", "partner1", "10"), ("2", "partner2", "10"),
|
||
("3", "partner3", "10"), ("4", "partner4", "10");
|
||
create table t2 (
|
||
id int(11) unsigned not null default '0',
|
||
t1_line_id int(11) unsigned not null default '0',
|
||
article_id varchar(20),
|
||
sequence int(11) not null default '0',
|
||
primary key (id,t1_line_id)
|
||
);
|
||
insert into t2 values ("1", "1", "sup", "0"), ("2", "1", "sup", "1"),
|
||
("2", "2", "sup", "2"), ("2", "3", "sup", "3"),
|
||
("2", "4", "imp", "4"), ("3", "1", "sup", "0"),
|
||
("4", "1", "sup", "0");
|
||
create table t3 (
|
||
id int(11) not null default '0',
|
||
preceeding_id int(11) not null default '0',
|
||
primary key (id,preceeding_id)
|
||
);
|
||
create table t4 (
|
||
user_id varchar(50) not null,
|
||
article_id varchar(20) not null,
|
||
primary key (user_id,article_id)
|
||
);
|
||
insert into t4 values("nicke", "imp");
|
||
prepare stmt from
|
||
'select distinct t1.partner_id
|
||
from t1 left join t3 on t1.id = t3.id
|
||
left join t1 pp on pp.id = t3.preceeding_id
|
||
where
|
||
exists (
|
||
select *
|
||
from t2 as pl_inner
|
||
where pl_inner.id = t1.id
|
||
and pl_inner.sequence <= (
|
||
select min(sequence) from t2 pl_seqnr
|
||
where pl_seqnr.id = t1.id
|
||
)
|
||
and exists (
|
||
select * from t4
|
||
where t4.article_id = pl_inner.article_id
|
||
and t4.user_id = ?
|
||
)
|
||
)
|
||
and t1.id = ?
|
||
group by t1.id
|
||
having count(pp.id) = 0';
|
||
set @user_id = 'nicke';
|
||
set @id = '2';
|
||
execute stmt using @user_id, @id;
|
||
partner_id
|
||
execute stmt using @user_id, @id;
|
||
partner_id
|
||
deallocate prepare stmt;
|
||
drop table t1, t2, t3, t4;
|
||
prepare stmt from 'select ?=?';
|
||
set @a='CHRISTINE ';
|
||
set @b='CHRISTINE';
|
||
execute stmt using @a, @b;
|
||
?=?
|
||
1
|
||
execute stmt using @a, @b;
|
||
?=?
|
||
1
|
||
set @a=1, @b=2;
|
||
execute stmt using @a, @b;
|
||
?=?
|
||
0
|
||
set @a='CHRISTINE ';
|
||
set @b='CHRISTINE';
|
||
execute stmt using @a, @b;
|
||
?=?
|
||
1
|
||
deallocate prepare stmt;
|
||
create table t1 (a int);
|
||
prepare stmt from "select ??";
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
|
||
prepare stmt from "select ?FROM t1";
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?FROM t1' at line 1
|
||
prepare stmt from "select FROM t1 WHERE?=1";
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM t1 WHERE?=1' at line 1
|
||
prepare stmt from "update t1 set a=a+?WHERE 1";
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?WHERE 1' at line 1
|
||
select ?;
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
|
||
select ??;
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '??' at line 1
|
||
select ? from t1;
|
||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? from t1' at line 1
|
||
drop table t1;
|
||
prepare stmt from "select @@time_zone";
|
||
execute stmt;
|
||
@@time_zone
|
||
SYSTEM
|
||
set @@time_zone:='Japan';
|
||
execute stmt;
|
||
@@time_zone
|
||
Japan
|
||
prepare stmt from "select @@tx_isolation";
|
||
execute stmt;
|
||
@@tx_isolation
|
||
REPEATABLE-READ
|
||
set transaction isolation level read committed;
|
||
execute stmt;
|
||
@@tx_isolation
|
||
READ-COMMITTED
|
||
set transaction isolation level serializable;
|
||
execute stmt;
|
||
@@tx_isolation
|
||
SERIALIZABLE
|
||
set @@tx_isolation=default;
|
||
execute stmt;
|
||
@@tx_isolation
|
||
REPEATABLE-READ
|
||
deallocate prepare stmt;
|
||
prepare stmt from "create temporary table t1 (letter enum('','a','b','c')
|
||
not null)";
|
||
execute stmt;
|
||
drop table t1;
|
||
execute stmt;
|
||
drop table t1;
|
||
execute stmt;
|
||
drop table t1;
|
||
set names latin1;
|
||
prepare stmt from "create table t1 (a enum('test') default 'test')
|
||
character set utf8";
|
||
execute stmt;
|
||
drop table t1;
|
||
execute stmt;
|
||
drop table t1;
|
||
execute stmt;
|
||
drop table t1;
|
||
set names default;
|
||
deallocate prepare stmt;
|
||
create table t1 (
|
||
word_id mediumint(8) unsigned not null default '0',
|
||
formatted varchar(20) not null default ''
|
||
);
|
||
insert into t1 values
|
||
(80,'pendant'), (475,'pretendants'), (989,'tendances'),
|
||
(1019,'cependant'),(1022,'abondance'),(1205,'independants'),
|
||
(13,'lessiver'),(25,'lambiner'),(46,'situer'),(71,'terminer'),
|
||
(82,'decrocher');
|
||
select count(*) from t1 where formatted like '%NDAN%';
|
||
count(*)
|
||
6
|
||
select count(*) from t1 where formatted like '%ER';
|
||
count(*)
|
||
5
|
||
prepare stmt from "select count(*) from t1 where formatted like ?";
|
||
set @like="%NDAN%";
|
||
execute stmt using @like;
|
||
count(*)
|
||
6
|
||
set @like="%ER";
|
||
execute stmt using @like;
|
||
count(*)
|
||
5
|
||
set @like="%NDAN%";
|
||
execute stmt using @like;
|
||
count(*)
|
||
6
|
||
set @like="%ER";
|
||
execute stmt using @like;
|
||
count(*)
|
||
5
|
||
deallocate prepare stmt;
|
||
drop table t1;
|
||
prepare stmt from 'create table t1 (a varchar(10) character set utf8)';
|
||
execute stmt;
|
||
insert into t1 (a) values (repeat('a', 20));
|
||
select length(a) from t1;
|
||
length(a)
|
||
10
|
||
drop table t1;
|
||
execute stmt;
|
||
insert into t1 (a) values (repeat('a', 20));
|
||
select length(a) from t1;
|
||
length(a)
|
||
10
|
||
drop table t1;
|
||
deallocate prepare stmt;
|
||
create table t1 (col1 integer, col2 integer);
|
||
insert into t1 values(100,100),(101,101),(102,102),(103,103);
|
||
prepare stmt from 'select col1, col2 from t1 where (col1, col2) in ((?,?))';
|
||
set @a=100, @b=100;
|
||
execute stmt using @a,@b;
|
||
col1 col2
|
||
100 100
|
||
set @a=101, @b=101;
|
||
execute stmt using @a,@b;
|
||
col1 col2
|
||
101 101
|
||
set @a=102, @b=102;
|
||
execute stmt using @a,@b;
|
||
col1 col2
|
||
102 102
|
||
set @a=102, @b=103;
|
||
execute stmt using @a,@b;
|
||
col1 col2
|
||
deallocate prepare stmt;
|
||
drop table t1;
|
||
set @old_max_prepared_stmt_count= @@max_prepared_stmt_count;
|
||
show variables like 'max_prepared_stmt_count';
|
||
Variable_name Value
|
||
max_prepared_stmt_count 16382
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 0
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
16382
|
||
set global max_prepared_stmt_count=-1;
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
0
|
||
set global max_prepared_stmt_count=10000000000000000;
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
1048576
|
||
set global max_prepared_stmt_count=default;
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
16382
|
||
set @@max_prepared_stmt_count=1;
|
||
ERROR HY000: Variable 'max_prepared_stmt_count' is a GLOBAL variable and should be set with SET GLOBAL
|
||
set max_prepared_stmt_count=1;
|
||
ERROR HY000: Variable 'max_prepared_stmt_count' is a GLOBAL variable and should be set with SET GLOBAL
|
||
set local max_prepared_stmt_count=1;
|
||
ERROR HY000: Variable 'max_prepared_stmt_count' is a GLOBAL variable and should be set with SET GLOBAL
|
||
set global max_prepared_stmt_count=1;
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
1
|
||
set global max_prepared_stmt_count=0;
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
0
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 0
|
||
prepare stmt from "select 1";
|
||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 0)
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 0
|
||
set global max_prepared_stmt_count=1;
|
||
prepare stmt from "select 1";
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 1
|
||
prepare stmt1 from "select 1";
|
||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 1)
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 1
|
||
deallocate prepare stmt;
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 0
|
||
prepare stmt from "select 1";
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 1
|
||
prepare stmt from "select 2";
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 1
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 1
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
1
|
||
set global max_prepared_stmt_count=0;
|
||
prepare stmt from "select 1";
|
||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 0)
|
||
execute stmt;
|
||
ERROR HY000: Unknown prepared statement handler (stmt) given to EXECUTE
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 0
|
||
prepare stmt from "select 1";
|
||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 0)
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 0
|
||
set global max_prepared_stmt_count=3;
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
3
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 0
|
||
prepare stmt from "select 1";
|
||
prepare stmt from "select 2";
|
||
prepare stmt1 from "select 3";
|
||
prepare stmt2 from "select 4";
|
||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 3)
|
||
prepare stmt2 from "select 4";
|
||
ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 3)
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
3
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 3
|
||
deallocate prepare stmt;
|
||
select @@max_prepared_stmt_count;
|
||
@@max_prepared_stmt_count
|
||
3
|
||
show status like 'prepared_stmt_count';
|
||
Variable_name Value
|
||
Prepared_stmt_count 0
|
||
set global max_prepared_stmt_count= @old_max_prepared_stmt_count;
|
||
drop table if exists t1;
|
||
create temporary table if not exists t1 (a1 int);
|
||
prepare stmt from "delete t1 from t1 where (cast(a1/3 as unsigned) * 3) = a1";
|
||
drop temporary table t1;
|
||
create temporary table if not exists t1 (a1 int);
|
||
execute stmt;
|
||
drop temporary table t1;
|
||
create temporary table if not exists t1 (a1 int);
|
||
execute stmt;
|
||
drop temporary table t1;
|
||
create temporary table if not exists t1 (a1 int);
|
||
execute stmt;
|
||
drop temporary table t1;
|
||
deallocate prepare stmt;
|
||
CREATE TABLE t1(
|
||
ID int(10) unsigned NOT NULL auto_increment,
|
||
Member_ID varchar(15) NOT NULL default '',
|
||
Action varchar(12) NOT NULL,
|
||
Action_Date datetime NOT NULL,
|
||
Track varchar(15) default NULL,
|
||
User varchar(12) default NULL,
|
||
Date_Updated timestamp NOT NULL default CURRENT_TIMESTAMP on update
|
||
CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (ID),
|
||
KEY Action (Action),
|
||
KEY Action_Date (Action_Date)
|
||
);
|
||
INSERT INTO t1(Member_ID, Action, Action_Date, Track) VALUES
|
||
('111111', 'Disenrolled', '2006-03-01', 'CAD' ),
|
||
('111111', 'Enrolled', '2006-03-01', 'CAD' ),
|
||
('111111', 'Disenrolled', '2006-07-03', 'CAD' ),
|
||
('222222', 'Enrolled', '2006-03-07', 'CAD' ),
|
||
('222222', 'Enrolled', '2006-03-07', 'CHF' ),
|
||
('222222', 'Disenrolled', '2006-08-02', 'CHF' ),
|
||
('333333', 'Enrolled', '2006-03-01', 'CAD' ),
|
||
('333333', 'Disenrolled', '2006-03-01', 'CAD' ),
|
||
('444444', 'Enrolled', '2006-03-01', 'CAD' ),
|
||
('555555', 'Disenrolled', '2006-03-01', 'CAD' ),
|
||
('555555', 'Enrolled', '2006-07-21', 'CAD' ),
|
||
('555555', 'Disenrolled', '2006-03-01', 'CHF' ),
|
||
('666666', 'Enrolled', '2006-02-09', 'CAD' ),
|
||
('666666', 'Enrolled', '2006-05-12', 'CHF' ),
|
||
('666666', 'Disenrolled', '2006-06-01', 'CAD' );
|
||
PREPARE STMT FROM
|
||
"SELECT GROUP_CONCAT(Track SEPARATOR ', ') FROM t1
|
||
WHERE Member_ID=? AND Action='Enrolled' AND
|
||
(Track,Action_Date) IN (SELECT Track, MAX(Action_Date) FROM t1
|
||
WHERE Member_ID=?
|
||
GROUP BY Track
|
||
HAVING Track>='CAD' AND
|
||
MAX(Action_Date)>'2006-03-01')";
|
||
SET @id='111111';
|
||
EXECUTE STMT USING @id,@id;
|
||
GROUP_CONCAT(Track SEPARATOR ', ')
|
||
NULL
|
||
SET @id='222222';
|
||
EXECUTE STMT USING @id,@id;
|
||
GROUP_CONCAT(Track SEPARATOR ', ')
|
||
CAD
|
||
DEALLOCATE PREPARE STMT;
|
||
DROP TABLE t1;
|
||
DROP TABLE IF EXISTS t1;
|
||
CREATE TABLE t1 (i INT, INDEX(i));
|
||
INSERT INTO t1 VALUES (1);
|
||
PREPARE stmt FROM "SELECT (COUNT(i) = 1), COUNT(i) FROM t1 WHERE i = ?";
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(COUNT(i) = 1) COUNT(i)
|
||
0 0
|
||
SET @a = 1;
|
||
EXECUTE stmt USING @a;
|
||
(COUNT(i) = 1) COUNT(i)
|
||
1 1
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(COUNT(i) = 1) COUNT(i)
|
||
0 0
|
||
PREPARE stmt FROM "SELECT (AVG(i) = 1), AVG(i) FROM t1 WHERE i = ?";
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(AVG(i) = 1) AVG(i)
|
||
NULL NULL
|
||
SET @a = 1;
|
||
EXECUTE stmt USING @a;
|
||
(AVG(i) = 1) AVG(i)
|
||
1 1.0000
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(AVG(i) = 1) AVG(i)
|
||
NULL NULL
|
||
PREPARE stmt FROM "SELECT (VARIANCE(i) = 1), VARIANCE(i) FROM t1 WHERE i = ?";
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(VARIANCE(i) = 1) VARIANCE(i)
|
||
NULL NULL
|
||
SET @a = 1;
|
||
EXECUTE stmt USING @a;
|
||
(VARIANCE(i) = 1) VARIANCE(i)
|
||
0 0.0000
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(VARIANCE(i) = 1) VARIANCE(i)
|
||
NULL NULL
|
||
PREPARE stmt FROM "SELECT (STDDEV(i) = 1), STDDEV(i) FROM t1 WHERE i = ?";
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(STDDEV(i) = 1) STDDEV(i)
|
||
NULL NULL
|
||
SET @a = 1;
|
||
EXECUTE stmt USING @a;
|
||
(STDDEV(i) = 1) STDDEV(i)
|
||
0 0.0000
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(STDDEV(i) = 1) STDDEV(i)
|
||
NULL NULL
|
||
PREPARE stmt FROM "SELECT (BIT_OR(i) = 1), BIT_OR(i) FROM t1 WHERE i = ?";
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(BIT_OR(i) = 1) BIT_OR(i)
|
||
0 0
|
||
SET @a = 1;
|
||
EXECUTE stmt USING @a;
|
||
(BIT_OR(i) = 1) BIT_OR(i)
|
||
1 1
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(BIT_OR(i) = 1) BIT_OR(i)
|
||
0 0
|
||
PREPARE stmt FROM "SELECT (BIT_AND(i) = 1), BIT_AND(i) FROM t1 WHERE i = ?";
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(BIT_AND(i) = 1) BIT_AND(i)
|
||
0 18446744073709551615
|
||
SET @a = 1;
|
||
EXECUTE stmt USING @a;
|
||
(BIT_AND(i) = 1) BIT_AND(i)
|
||
1 1
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(BIT_AND(i) = 1) BIT_AND(i)
|
||
0 18446744073709551615
|
||
PREPARE stmt FROM "SELECT (BIT_XOR(i) = 1), BIT_XOR(i) FROM t1 WHERE i = ?";
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(BIT_XOR(i) = 1) BIT_XOR(i)
|
||
0 0
|
||
SET @a = 1;
|
||
EXECUTE stmt USING @a;
|
||
(BIT_XOR(i) = 1) BIT_XOR(i)
|
||
1 1
|
||
SET @a = 0;
|
||
EXECUTE stmt USING @a;
|
||
(BIT_XOR(i) = 1) BIT_XOR(i)
|
||
0 0
|
||
DEALLOCATE PREPARE stmt;
|
||
DROP TABLE t1;
|
||
End of 4.1 tests.
|
||
create table t1 (a varchar(20));
|
||
insert into t1 values ('foo');
|
||
prepare stmt FROM 'SELECT char_length (a) FROM t1';
|
||
prepare stmt2 FROM 'SELECT not_a_function (a) FROM t1';
|
||
ERROR 42000: FUNCTION test.not_a_function does not exist
|
||
drop table t1;
|
||
create table t1 (a char(3) not null, b char(3) not null,
|
||
c char(3) not null, primary key (a, b, c));
|
||
create table t2 like t1;
|
||
prepare stmt from
|
||
"select t1.a from (t1 left outer join t2 on t2.a=1 and t1.b=t2.b)
|
||
where t1.a=1";
|
||
execute stmt;
|
||
a
|
||
execute stmt;
|
||
a
|
||
execute stmt;
|
||
a
|
||
prepare stmt from
|
||
"select t1.a, t1.b, t1.c, t2.a, t2.b, t2.c from
|
||
(t1 left outer join t2 on t2.a=? and t1.b=t2.b)
|
||
left outer join t2 t3 on t3.a=? where t1.a=?";
|
||
set @a:=1, @b:=1, @c:=1;
|
||
execute stmt using @a, @b, @c;
|
||
a b c a b c
|
||
execute stmt using @a, @b, @c;
|
||
a b c a b c
|
||
execute stmt using @a, @b, @c;
|
||
a b c a b c
|
||
deallocate prepare stmt;
|
||
drop table t1,t2;
|
||
SET @aux= "SELECT COUNT(*)
|
||
FROM INFORMATION_SCHEMA.COLUMNS A,
|
||
INFORMATION_SCHEMA.COLUMNS B
|
||
WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
|
||
AND A.TABLE_NAME = B.TABLE_NAME
|
||
AND A.COLUMN_NAME = B.COLUMN_NAME AND
|
||
A.TABLE_NAME = 'user'";
|
||
prepare my_stmt from @aux;
|
||
execute my_stmt;
|
||
COUNT(*)
|
||
39
|
||
execute my_stmt;
|
||
COUNT(*)
|
||
39
|
||
execute my_stmt;
|
||
COUNT(*)
|
||
39
|
||
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|
|
||
create table t1 (a int);
|
||
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||
prepare stmt from "select * from t1 limit ?, ?";
|
||
set @offset=0, @limit=1;
|
||
execute stmt using @offset, @limit;
|
||
a
|
||
1
|
||
select * from t1 limit 0, 1;
|
||
a
|
||
1
|
||
set @offset=3, @limit=2;
|
||
execute stmt using @offset, @limit;
|
||
a
|
||
4
|
||
5
|
||
select * from t1 limit 3, 2;
|
||
a
|
||
4
|
||
5
|
||
prepare stmt from "select * from t1 limit ?";
|
||
execute stmt using @limit;
|
||
a
|
||
1
|
||
2
|
||
prepare stmt from "select * from t1 where a in (select a from t1 limit ?)";
|
||
ERROR 42000: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
|
||
prepare stmt from "select * from t1 union all select * from t1 limit ?, ?";
|
||
set @offset=9;
|
||
set @limit=2;
|
||
execute stmt using @offset, @limit;
|
||
a
|
||
10
|
||
1
|
||
prepare stmt from "(select * from t1 limit ?, ?) union all
|
||
(select * from t1 limit ?, ?) order by a limit ?";
|
||
execute stmt using @offset, @limit, @offset, @limit, @limit;
|
||
a
|
||
10
|
||
10
|
||
drop table t1;
|
||
deallocate prepare stmt;
|
||
CREATE TABLE b12651_T1(a int) ENGINE=MYISAM;
|
||
CREATE TABLE b12651_T2(b int) ENGINE=MYISAM;
|
||
CREATE VIEW b12651_V1 as SELECT b FROM b12651_T2;
|
||
PREPARE b12651 FROM 'SELECT 1 FROM b12651_T1 WHERE a IN (SELECT b FROM b12651_V1)';
|
||
EXECUTE b12651;
|
||
1
|
||
DROP VIEW b12651_V1;
|
||
DROP TABLE b12651_T1, b12651_T2;
|
||
DEALLOCATE PREPARE b12651;
|
||
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;
|
||
create table t1 (a int, b int);
|
||
insert into t1 (a,b) values (2,8),(1,9),(3,7);
|
||
prepare stmt from "select * from t1 order by ?";
|
||
set @a=NULL;
|
||
execute stmt using @a;
|
||
a b
|
||
2 8
|
||
1 9
|
||
3 7
|
||
set @a=1;
|
||
execute stmt using @a;
|
||
a b
|
||
1 9
|
||
2 8
|
||
3 7
|
||
set @a=2;
|
||
execute stmt using @a;
|
||
a b
|
||
3 7
|
||
2 8
|
||
1 9
|
||
deallocate prepare stmt;
|
||
select * from t1 order by 1;
|
||
a b
|
||
1 9
|
||
2 8
|
||
3 7
|
||
prepare stmt from "select * from t1 order by ?+1";
|
||
set @a=0;
|
||
execute stmt using @a;
|
||
a b
|
||
2 8
|
||
1 9
|
||
3 7
|
||
set @a=1;
|
||
execute stmt using @a;
|
||
a b
|
||
2 8
|
||
1 9
|
||
3 7
|
||
deallocate prepare stmt;
|
||
select * from t1 order by 1+1;
|
||
a b
|
||
2 8
|
||
1 9
|
||
3 7
|
||
drop table t1;
|
||
create table t1 (a int);
|
||
create table t2 like t1;
|
||
create table t3 like t2;
|
||
prepare stmt from "repair table t1";
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 repair status OK
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 repair status OK
|
||
prepare stmt from "optimize table t1";
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 optimize status OK
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 optimize status Table is already up to date
|
||
prepare stmt from "analyze table t1";
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 analyze status Table is already up to date
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 analyze status Table is already up to date
|
||
prepare stmt from "repair table t1, t2, t3";
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 repair status OK
|
||
test.t2 repair status OK
|
||
test.t3 repair status OK
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 repair status OK
|
||
test.t2 repair status OK
|
||
test.t3 repair status OK
|
||
prepare stmt from "optimize table t1, t2, t3";
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 optimize status OK
|
||
test.t2 optimize status OK
|
||
test.t3 optimize status OK
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 optimize status Table is already up to date
|
||
test.t2 optimize status Table is already up to date
|
||
test.t3 optimize status Table is already up to date
|
||
prepare stmt from "analyze table t1, t2, t3";
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 analyze status Table is already up to date
|
||
test.t2 analyze status Table is already up to date
|
||
test.t3 analyze status Table is already up to date
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 analyze status Table is already up to date
|
||
test.t2 analyze status Table is already up to date
|
||
test.t3 analyze status Table is already up to date
|
||
prepare stmt from "repair table t1, t4, t3";
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 repair status OK
|
||
test.t4 repair error Table 'test.t4' doesn't exist
|
||
test.t3 repair status OK
|
||
Warnings:
|
||
Error 1146 Table 'test.t4' doesn't exist
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 repair status OK
|
||
test.t4 repair error Table 'test.t4' doesn't exist
|
||
test.t3 repair status OK
|
||
Warnings:
|
||
Error 1146 Table 'test.t4' doesn't exist
|
||
prepare stmt from "optimize table t1, t3, t4";
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 optimize status OK
|
||
test.t3 optimize status OK
|
||
test.t4 optimize error Table 'test.t4' doesn't exist
|
||
Warnings:
|
||
Error 1146 Table 'test.t4' doesn't exist
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 optimize status Table is already up to date
|
||
test.t3 optimize status Table is already up to date
|
||
test.t4 optimize error Table 'test.t4' doesn't exist
|
||
Warnings:
|
||
Error 1146 Table 'test.t4' doesn't exist
|
||
prepare stmt from "analyze table t4, t1";
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t4 analyze error Table 'test.t4' doesn't exist
|
||
test.t1 analyze status Table is already up to date
|
||
Warnings:
|
||
Error 1146 Table 'test.t4' doesn't exist
|
||
execute stmt;
|
||
Table Op Msg_type Msg_text
|
||
test.t4 analyze error Table 'test.t4' doesn't exist
|
||
test.t1 analyze status Table is already up to date
|
||
Warnings:
|
||
Error 1146 Table 'test.t4' doesn't exist
|
||
deallocate prepare stmt;
|
||
drop table t1, t2, t3;
|
||
create database mysqltest_long_database_name_to_thrash_heap;
|
||
use test;
|
||
create table t1 (i int);
|
||
prepare stmt from "alter table test.t1 rename t1";
|
||
use mysqltest_long_database_name_to_thrash_heap;
|
||
execute stmt;
|
||
show tables like 't1';
|
||
Tables_in_mysqltest_long_database_name_to_thrash_heap (t1)
|
||
prepare stmt from "alter table test.t1 rename t1";
|
||
use test;
|
||
execute stmt;
|
||
show tables like 't1';
|
||
Tables_in_test (t1)
|
||
use mysqltest_long_database_name_to_thrash_heap;
|
||
show tables like 't1';
|
||
Tables_in_mysqltest_long_database_name_to_thrash_heap (t1)
|
||
t1
|
||
deallocate prepare stmt;
|
||
use mysqltest_long_database_name_to_thrash_heap;
|
||
prepare stmt_create from "create table t1 (i int)";
|
||
prepare stmt_insert from "insert into t1 (i) values (1)";
|
||
prepare stmt_update from "update t1 set i=2";
|
||
prepare stmt_delete from "delete from t1 where i=2";
|
||
prepare stmt_select from "select * from t1";
|
||
prepare stmt_alter from "alter table t1 add column (b int)";
|
||
prepare stmt_alter1 from "alter table t1 drop column b";
|
||
prepare stmt_analyze from "analyze table t1";
|
||
prepare stmt_optimize from "optimize table t1";
|
||
prepare stmt_show from "show tables like 't1'";
|
||
prepare stmt_truncate from "truncate table t1";
|
||
prepare stmt_drop from "drop table t1";
|
||
drop table t1;
|
||
use test;
|
||
execute stmt_create;
|
||
show tables like 't1';
|
||
Tables_in_test (t1)
|
||
use mysqltest_long_database_name_to_thrash_heap;
|
||
show tables like 't1';
|
||
Tables_in_mysqltest_long_database_name_to_thrash_heap (t1)
|
||
t1
|
||
use test;
|
||
execute stmt_insert;
|
||
select * from mysqltest_long_database_name_to_thrash_heap.t1;
|
||
i
|
||
1
|
||
execute stmt_update;
|
||
select * from mysqltest_long_database_name_to_thrash_heap.t1;
|
||
i
|
||
2
|
||
execute stmt_delete;
|
||
execute stmt_select;
|
||
i
|
||
execute stmt_alter;
|
||
show columns from mysqltest_long_database_name_to_thrash_heap.t1;
|
||
Field Type Null Key Default Extra
|
||
i int(11) YES NULL
|
||
b int(11) YES NULL
|
||
execute stmt_alter1;
|
||
show columns from mysqltest_long_database_name_to_thrash_heap.t1;
|
||
Field Type Null Key Default Extra
|
||
i int(11) YES NULL
|
||
execute stmt_analyze;
|
||
Table Op Msg_type Msg_text
|
||
mysqltest_long_database_name_to_thrash_heap.t1 analyze status Table is already up to date
|
||
execute stmt_optimize;
|
||
Table Op Msg_type Msg_text
|
||
mysqltest_long_database_name_to_thrash_heap.t1 optimize status Table is already up to date
|
||
execute stmt_show;
|
||
Tables_in_mysqltest_long_database_name_to_thrash_heap (t1)
|
||
t1
|
||
execute stmt_truncate;
|
||
execute stmt_drop;
|
||
show tables like 't1';
|
||
Tables_in_test (t1)
|
||
use mysqltest_long_database_name_to_thrash_heap;
|
||
show tables like 't1';
|
||
Tables_in_mysqltest_long_database_name_to_thrash_heap (t1)
|
||
drop database mysqltest_long_database_name_to_thrash_heap;
|
||
prepare stmt_create from "create table t1 (i int)";
|
||
ERROR 3D000: No database selected
|
||
prepare stmt_insert from "insert into t1 (i) values (1)";
|
||
ERROR 3D000: No database selected
|
||
prepare stmt_update from "update t1 set i=2";
|
||
ERROR 3D000: No database selected
|
||
prepare stmt_delete from "delete from t1 where i=2";
|
||
ERROR 3D000: No database selected
|
||
prepare stmt_select from "select * from t1";
|
||
ERROR 3D000: No database selected
|
||
prepare stmt_alter from "alter table t1 add column (b int)";
|
||
ERROR 3D000: No database selected
|
||
prepare stmt_alter1 from "alter table t1 drop column b";
|
||
ERROR 3D000: No database selected
|
||
prepare stmt_analyze from "analyze table t1";
|
||
ERROR 3D000: No database selected
|
||
prepare stmt_optimize from "optimize table t1";
|
||
ERROR 3D000: No database selected
|
||
prepare stmt_show from "show tables like 't1'";
|
||
ERROR 3D000: No database selected
|
||
prepare stmt_truncate from "truncate table t1";
|
||
ERROR 3D000: No database selected
|
||
prepare stmt_drop from "drop table t1";
|
||
ERROR 3D000: No database selected
|
||
create temporary table t1 (i int);
|
||
ERROR 3D000: No database selected
|
||
use test;
|
||
DROP TABLE IF EXISTS t1, t2, t3;
|
||
CREATE TABLE t1 (i BIGINT, j BIGINT);
|
||
CREATE TABLE t2 (i BIGINT);
|
||
CREATE TABLE t3 (i BIGINT, j BIGINT);
|
||
PREPARE stmt FROM "SELECT * FROM t1 JOIN t2 ON (t2.i = t1.i)
|
||
LEFT JOIN t3 ON ((t3.i, t3.j) = (t1.i, t1.j))
|
||
WHERE t1.i = ?";
|
||
SET @a= 1;
|
||
EXECUTE stmt USING @a;
|
||
i j i i j
|
||
EXECUTE stmt USING @a;
|
||
i j i i j
|
||
DEALLOCATE PREPARE stmt;
|
||
DROP TABLE IF EXISTS t1, t2, t3;
|
||
DROP TABLE IF EXISTS t1, t2;
|
||
CREATE TABLE t1 (i INT KEY);
|
||
CREATE TABLE t2 (i INT);
|
||
INSERT INTO t1 VALUES (1), (2);
|
||
INSERT INTO t2 VALUES (1);
|
||
PREPARE stmt FROM "SELECT t2.i FROM t1 LEFT JOIN t2 ON t2.i = t1.i
|
||
WHERE t1.i = ?";
|
||
SET @arg= 1;
|
||
EXECUTE stmt USING @arg;
|
||
i
|
||
1
|
||
SET @arg= 2;
|
||
EXECUTE stmt USING @arg;
|
||
i
|
||
NULL
|
||
SET @arg= 1;
|
||
EXECUTE stmt USING @arg;
|
||
i
|
||
1
|
||
DEALLOCATE PREPARE stmt;
|
||
DROP TABLE t1, t2;
|
||
CREATE TABLE t1 (i INT);
|
||
CREATE VIEW v1 AS SELECT * FROM t1;
|
||
INSERT INTO t1 VALUES (1), (2);
|
||
SELECT t1.i FROM t1 JOIN v1 ON t1.i = v1.i
|
||
WHERE EXISTS (SELECT * FROM t1 WHERE v1.i = 1);
|
||
i
|
||
1
|
||
PREPARE stmt FROM "SELECT t1.i FROM t1 JOIN v1 ON t1.i = v1.i
|
||
WHERE EXISTS (SELECT * FROM t1 WHERE v1.i = 1)";
|
||
EXECUTE stmt;
|
||
i
|
||
1
|
||
EXECUTE stmt;
|
||
i
|
||
1
|
||
DEALLOCATE PREPARE stmt;
|
||
DROP VIEW v1;
|
||
DROP TABLE t1;
|
||
DROP PROCEDURE IF EXISTS p1;
|
||
flush status;
|
||
prepare sq from 'show status like "slow_queries"';
|
||
execute sq;
|
||
Variable_name Value
|
||
Slow_queries 0
|
||
prepare no_index from 'select 1 from information_schema.tables limit 1';
|
||
execute sq;
|
||
Variable_name Value
|
||
Slow_queries 0
|
||
execute no_index;
|
||
1
|
||
1
|
||
execute sq;
|
||
Variable_name Value
|
||
Slow_queries 1
|
||
deallocate prepare no_index;
|
||
deallocate prepare sq;
|
||
CREATE TABLE t1 (a int);
|
||
INSERT INTO t1 VALUES (1), (2);
|
||
CREATE TABLE t2 (b int);
|
||
INSERT INTO t2 VALUES (NULL);
|
||
SELECT a FROM t1 WHERE (SELECT b FROM t2) IS NULL;
|
||
a
|
||
1
|
||
2
|
||
PREPARE stmt FROM 'SELECT a FROM t1 WHERE (SELECT b FROM t2) IS NULL';
|
||
EXECUTE stmt;
|
||
a
|
||
1
|
||
2
|
||
DEALLOCATE PREPARE stmt;
|
||
PREPARE stmt FROM 'SELECT a FROM t1 WHERE (SELECT b FROM t2 limit ?) IS NULL';
|
||
SET @arg=1;
|
||
EXECUTE stmt USING @arg;
|
||
a
|
||
1
|
||
2
|
||
DEALLOCATE PREPARE stmt;
|
||
DROP TABLE t1,t2;
|
||
drop tables if exists t1;
|
||
create table t1 (id int primary key auto_increment, value varchar(10));
|
||
insert into t1 (id, value) values (1, 'FIRST'), (2, 'SECOND'), (3, 'THIRD');
|
||
prepare stmt from "insert into t1 (id, value) select * from (select 4 as i, 'FOURTH' as v) as y on duplicate key update v = 'DUP'";
|
||
execute stmt;
|
||
ERROR 42S22: Unknown column 'v' in 'field list'
|
||
execute stmt;
|
||
ERROR 42S22: Unknown column 'v' in 'field list'
|
||
deallocate prepare stmt;
|
||
prepare stmt from "insert into t1 (id, value) select * from (select 4 as id, 'FOURTH' as value) as y on duplicate key update y.value = 'DUP'";
|
||
execute stmt;
|
||
ERROR 42S22: Unknown column 'y.value' in 'field list'
|
||
execute stmt;
|
||
ERROR 42S22: Unknown column 'y.value' in 'field list'
|
||
deallocate prepare stmt;
|
||
drop tables t1;
|
||
End of 5.0 tests.
|
||
create procedure proc_1() reset query cache;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int deterministic begin reset query cache; return 1; end|
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
create function func_1() returns int deterministic begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "reset query cache";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() reset master;
|
||
create function func_1() returns int begin reset master; return 1; end|
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "reset master";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() reset slave;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin reset slave; return 1; end|
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: RESET is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "reset slave";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1(a integer) kill a;
|
||
call proc_1(0);
|
||
ERROR HY000: Unknown thread id: 0
|
||
call proc_1(0);
|
||
ERROR HY000: Unknown thread id: 0
|
||
call proc_1(0);
|
||
ERROR HY000: Unknown thread id: 0
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin kill 0; return 1; end|
|
||
select func_1() from dual;
|
||
ERROR HY000: Unknown thread id: 0
|
||
select func_1() from dual;
|
||
ERROR HY000: Unknown thread id: 0
|
||
select func_1() from dual;
|
||
ERROR HY000: Unknown thread id: 0
|
||
drop function func_1;
|
||
prepare abc from "kill 0";
|
||
execute abc;
|
||
ERROR HY000: Unknown thread id: 0
|
||
execute abc;
|
||
ERROR HY000: Unknown thread id: 0
|
||
execute abc;
|
||
ERROR HY000: Unknown thread id: 0
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush hosts;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush hosts; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush hosts";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush privileges;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush privileges; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush privileges";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush tables with read lock;
|
||
call proc_1();
|
||
unlock tables;
|
||
call proc_1();
|
||
unlock tables;
|
||
call proc_1();
|
||
unlock tables;
|
||
create function func_1() returns int begin flush tables with read lock; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush tables with read lock";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
unlock tables;
|
||
create procedure proc_1() flush tables;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush tables; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush tables";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush tables;
|
||
flush tables;
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
mysql host 0 0
|
||
mysql user 0 0
|
||
call proc_1();
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
mysql host 0 0
|
||
mysql user 0 0
|
||
call proc_1();
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
mysql host 0 0
|
||
mysql user 0 0
|
||
call proc_1();
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
mysql host 0 0
|
||
mysql user 0 0
|
||
flush tables;
|
||
create function func_1() returns int begin flush tables; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
flush tables;
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
mysql host 0 0
|
||
mysql user 0 0
|
||
prepare abc from "flush tables";
|
||
execute abc;
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
mysql host 0 0
|
||
mysql user 0 0
|
||
execute abc;
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
mysql host 0 0
|
||
mysql user 0 0
|
||
execute abc;
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
select Host, User from mysql.user limit 0;
|
||
Host User
|
||
select Host, Db from mysql.host limit 0;
|
||
Host Db
|
||
show open tables from mysql;
|
||
Database Table In_use Name_locked
|
||
mysql general_log 1 0
|
||
mysql slow_log 1 0
|
||
mysql host 0 0
|
||
mysql user 0 0
|
||
flush tables;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush logs;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush logs; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush logs";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush status;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush status; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush status";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush slave;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush slave; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush slave";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush master;
|
||
create function func_1() returns int begin flush master; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush master";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush des_key_file;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush des_key_file; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush des_key_file";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() flush user_resources;
|
||
call proc_1();
|
||
call proc_1();
|
||
call proc_1();
|
||
create function func_1() returns int begin flush user_resources; return 1; end|
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
create function func_1() returns int begin call proc_1(); return 1; end|
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||
drop function func_1;
|
||
drop procedure proc_1;
|
||
prepare abc from "flush user_resources";
|
||
execute abc;
|
||
execute abc;
|
||
execute abc;
|
||
deallocate prepare abc;
|
||
create procedure proc_1() start slave;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin start slave; return 1; end|
|
||
drop function func_1;
|
||
prepare abc from "start slave";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() stop slave;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin stop slave; return 1; end|
|
||
drop function func_1;
|
||
prepare abc from "stop slave";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() show binlog events;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show binlog events; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show binlog events";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() show slave status;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show slave status; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show slave status";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() show master status;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show master status; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show master status";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() show master logs;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show master logs; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show master logs";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() show events;
|
||
call proc_1();
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status
|
||
call proc_1();
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status
|
||
call proc_1();
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show events; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show events";
|
||
execute abc;
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status
|
||
execute abc;
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status
|
||
execute abc;
|
||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status
|
||
deallocate prepare abc;
|
||
drop procedure if exists a;
|
||
create procedure a() select 42;
|
||
create procedure proc_1(a char(2)) show create procedure a;
|
||
call proc_1("bb");
|
||
Procedure sql_mode Create Procedure
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42
|
||
call proc_1("bb");
|
||
Procedure sql_mode Create Procedure
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42
|
||
call proc_1("bb");
|
||
Procedure sql_mode Create Procedure
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show create procedure a; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show create procedure a";
|
||
execute abc;
|
||
Procedure sql_mode Create Procedure
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42
|
||
execute abc;
|
||
Procedure sql_mode Create Procedure
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42
|
||
execute abc;
|
||
Procedure sql_mode Create Procedure
|
||
a CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
|
||
select 42
|
||
deallocate prepare abc;
|
||
drop procedure a;
|
||
drop function if exists a;
|
||
create function a() returns int return 42+13;
|
||
create procedure proc_1(a char(2)) show create function a;
|
||
call proc_1("bb");
|
||
Function sql_mode Create Function
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13
|
||
call proc_1("bb");
|
||
Function sql_mode Create Function
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13
|
||
call proc_1("bb");
|
||
Function sql_mode Create Function
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show create function a; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show create function a";
|
||
execute abc;
|
||
Function sql_mode Create Function
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13
|
||
execute abc;
|
||
Function sql_mode Create Function
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13
|
||
execute abc;
|
||
Function sql_mode Create Function
|
||
a CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
|
||
return 42+13
|
||
deallocate prepare abc;
|
||
drop function a;
|
||
drop table if exists tab1;
|
||
create table tab1(a int, b char(1), primary key(a,b));
|
||
create procedure proc_1() show create table tab1;
|
||
call proc_1();
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
call proc_1();
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
call proc_1();
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show create table tab1; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show create table tab1";
|
||
execute abc;
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
execute abc;
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
execute abc;
|
||
Table Create Table
|
||
tab1 CREATE TABLE `tab1` (
|
||
`a` int(11) NOT NULL DEFAULT '0',
|
||
`b` char(1) NOT NULL DEFAULT '',
|
||
PRIMARY KEY (`a`,`b`)
|
||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||
deallocate prepare abc;
|
||
drop table tab1;
|
||
drop view if exists v1;
|
||
drop table if exists t1;
|
||
create table t1(a int, b char(5));
|
||
insert into t1 values (1, "one"), (1, "edno"), (2, "two"), (2, "dve");
|
||
create view v1 as
|
||
(select a, count(*) from t1 group by a)
|
||
union all
|
||
(select b, count(*) from t1 group by b);
|
||
create procedure proc_1() show create view v1;
|
||
call proc_1();
|
||
View Create View
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`)
|
||
call proc_1();
|
||
View Create View
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`)
|
||
call proc_1();
|
||
View Create View
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`)
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show create view v1; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "show create view v1";
|
||
execute abc;
|
||
View Create View
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`)
|
||
execute abc;
|
||
View Create View
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`)
|
||
execute abc;
|
||
View Create View
|
||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` group by `t1`.`a`) union all (select `t1`.`b` AS `b`,count(0) AS `count(*)` from `t1` group by `t1`.`b`)
|
||
deallocate prepare abc;
|
||
drop view v1;
|
||
drop table t1;
|
||
create procedure proc_1() install plugin my_plug soname 'some_plugin.so';
|
||
call proc_1();
|
||
Got one of the listed errors
|
||
call proc_1();
|
||
Got one of the listed errors
|
||
call proc_1();
|
||
Got one of the listed errors
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin install plugin my_plug soname '/tmp/plugin'; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "install plugin my_plug soname 'some_plugin.so'";
|
||
deallocate prepare abc;
|
||
create procedure proc_1() uninstall plugin my_plug;
|
||
call proc_1();
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
call proc_1();
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
call proc_1();
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin uninstall plugin my_plug; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "uninstall plugin my_plug";
|
||
execute abc;
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
execute abc;
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
execute abc;
|
||
ERROR 42000: PLUGIN my_plug does not exist
|
||
deallocate prepare abc;
|
||
drop database if exists mysqltest_xyz;
|
||
create procedure proc_1() create database mysqltest_xyz;
|
||
call proc_1();
|
||
drop database if exists mysqltest_xyz;
|
||
call proc_1();
|
||
call proc_1();
|
||
ERROR HY000: Can't create database 'mysqltest_xyz'; database exists
|
||
drop database if exists mysqltest_xyz;
|
||
call proc_1();
|
||
drop database if exists mysqltest_xyz;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin create database mysqltest_xyz; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "create database mysqltest_xyz";
|
||
execute abc;
|
||
drop database if exists mysqltest_xyz;
|
||
execute abc;
|
||
execute abc;
|
||
ERROR HY000: Can't create database 'mysqltest_xyz'; database exists
|
||
drop database if exists mysqltest_xyz;
|
||
execute abc;
|
||
drop database if exists mysqltest_xyz;
|
||
deallocate prepare abc;
|
||
drop table if exists t1;
|
||
create table t1 (a int, b char(5));
|
||
insert into t1 values (1, "one"), (2, "two"), (3, "three");
|
||
create procedure proc_1() checksum table xyz;
|
||
call proc_1();
|
||
Table Checksum
|
||
test.xyz NULL
|
||
Warnings:
|
||
Error 1146 Table 'test.xyz' doesn't exist
|
||
call proc_1();
|
||
Table Checksum
|
||
test.xyz NULL
|
||
Warnings:
|
||
Error 1146 Table 'test.xyz' doesn't exist
|
||
call proc_1();
|
||
Table Checksum
|
||
test.xyz NULL
|
||
Warnings:
|
||
Error 1146 Table 'test.xyz' doesn't exist
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin checksum table t1; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "checksum table t1";
|
||
execute abc;
|
||
Table Checksum
|
||
test.t1 645809265
|
||
execute abc;
|
||
Table Checksum
|
||
test.t1 645809265
|
||
execute abc;
|
||
Table Checksum
|
||
test.t1 645809265
|
||
deallocate prepare abc;
|
||
create procedure proc_1() create user pstest_xyz@localhost;
|
||
call proc_1();
|
||
drop user pstest_xyz@localhost;
|
||
call proc_1();
|
||
call proc_1();
|
||
ERROR HY000: Operation CREATE USER failed for 'pstest_xyz'@'localhost'
|
||
drop user pstest_xyz@localhost;
|
||
call proc_1();
|
||
drop user pstest_xyz@localhost;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin create user pstest_xyz@localhost; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "create user pstest_xyz@localhost";
|
||
execute abc;
|
||
drop user pstest_xyz@localhost;
|
||
execute abc;
|
||
execute abc;
|
||
ERROR HY000: Operation CREATE USER failed for 'pstest_xyz'@'localhost'
|
||
drop user pstest_xyz@localhost;
|
||
execute abc;
|
||
drop user pstest_xyz@localhost;
|
||
deallocate prepare abc;
|
||
drop event if exists xyz;
|
||
create function func_1() returns int begin create event xyz on schedule at now() do select 123; return 1; end|
|
||
ERROR HY000: Recursivity of EVENT DDL statements is forbidden when body is present
|
||
select func_1(), func_1(), func_1() from dual;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
drop function func_1;
|
||
ERROR 42000: FUNCTION test.func_1 does not exist
|
||
prepare abc from "create event xyz on schedule at now() do select 123";
|
||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||
deallocate prepare abc;
|
||
ERROR HY000: Unknown prepared statement handler (abc) given to DEALLOCATE PREPARE
|
||
drop event if exists xyz;
|
||
create event xyz on schedule every 5 minute disable do select 123;
|
||
create procedure proc_1() alter event xyz comment 'xyz';
|
||
call proc_1();
|
||
drop event xyz;
|
||
create event xyz on schedule every 5 minute disable do select 123;
|
||
call proc_1();
|
||
drop event xyz;
|
||
create event xyz on schedule every 5 minute disable do select 123;
|
||
call proc_1();
|
||
drop event xyz;
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin alter event xyz comment 'xyz'; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
prepare abc from "alter event xyz comment 'xyz'";
|
||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||
deallocate prepare abc;
|
||
ERROR HY000: Unknown prepared statement handler (abc) given to DEALLOCATE PREPARE
|
||
drop event if exists xyz;
|
||
create event xyz on schedule every 5 minute disable do select 123;
|
||
create procedure proc_1() drop event xyz;
|
||
call proc_1();
|
||
create event xyz on schedule every 5 minute disable do select 123;
|
||
call proc_1();
|
||
call proc_1();
|
||
ERROR HY000: Unknown event 'xyz'
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin drop event xyz; return 1; end|
|
||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||
prepare abc from "drop event xyz";
|
||
ERROR HY000: This command is not supported in the prepared statement protocol yet
|
||
deallocate prepare abc;
|
||
ERROR HY000: Unknown prepared statement handler (abc) given to DEALLOCATE PREPARE
|
||
drop table if exists t1;
|
||
create table t1 (a int, b char(5)) engine=myisam;
|
||
insert into t1 values (1, "one"), (2, "two"), (3, "three");
|
||
SET GLOBAL new_cache.key_buffer_size=128*1024;
|
||
create procedure proc_1() cache index t1 in new_cache;
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
drop procedure proc_1;
|
||
SET GLOBAL second_cache.key_buffer_size=128*1024;
|
||
prepare abc from "cache index t1 in second_cache";
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t1 assign_to_keycache status OK
|
||
deallocate prepare abc;
|
||
drop table t1;
|
||
drop table if exists t1;
|
||
drop table if exists t2;
|
||
create table t1 (a int, b char(5)) engine=myisam;
|
||
insert into t1 values (1, "one"), (2, "two"), (3, "three");
|
||
create table t2 (a int, b char(5)) engine=myisam;
|
||
insert into t2 values (1, "one"), (2, "two"), (3, "three");
|
||
create procedure proc_1() load index into cache t1 ignore leaves;
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 preload_keys status OK
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 preload_keys status OK
|
||
call proc_1();
|
||
Table Op Msg_type Msg_text
|
||
test.t1 preload_keys status OK
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin load index into cache t1 ignore leaves; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
prepare abc from "load index into cache t2 ignore leaves";
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t2 preload_keys status OK
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t2 preload_keys status OK
|
||
execute abc;
|
||
Table Op Msg_type Msg_text
|
||
test.t2 preload_keys status OK
|
||
deallocate prepare abc;
|
||
drop table t1, t2;
|
||
create procedure proc_1() show errors;
|
||
call proc_1();
|
||
Level Code Message
|
||
call proc_1();
|
||
Level Code Message
|
||
call proc_1();
|
||
Level Code Message
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show errors; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
prepare abc from "show errors";
|
||
deallocate prepare abc;
|
||
drop table if exists t1;
|
||
drop table if exists t2;
|
||
create procedure proc_1() show warnings;
|
||
drop table if exists t1;
|
||
Warnings:
|
||
Note 1051 Unknown table 't1'
|
||
call proc_1();
|
||
Level Code Message
|
||
drop table if exists t2;
|
||
Warnings:
|
||
Note 1051 Unknown table 't2'
|
||
call proc_1();
|
||
Level Code Message
|
||
drop table if exists t1, t2;
|
||
Warnings:
|
||
Note 1051 Unknown table 't1'
|
||
Note 1051 Unknown table 't2'
|
||
call proc_1();
|
||
Level Code Message
|
||
drop procedure proc_1;
|
||
create function func_1() returns int begin show warnings; return 1; end|
|
||
ERROR 0A000: Not allowed to return a result set from a function
|
||
prepare abc from "show warnings";
|
||
drop table if exists t1;
|
||
Warnings:
|
||
Note 1051 Unknown table 't1'
|
||
execute abc;
|
||
Level Code Message
|
||
Note 1051 Unknown table 't1'
|
||
drop table if exists t2;
|
||
Warnings:
|
||
Note 1051 Unknown table 't2'
|
||
execute abc;
|
||
Level Code Message
|
||
Note 1051 Unknown table 't2'
|
||
drop table if exists t1, t2;
|
||
Warnings:
|
||
Note 1051 Unknown table 't1'
|
||
Note 1051 Unknown table 't2'
|
||
execute abc;
|
||
Level Code Message
|
||
Note 1051 Unknown table 't1'
|
||
Note 1051 Unknown table 't2'
|
||
deallocate prepare abc;
|
||
set @my_password="password";
|
||
set @my_data="clear text to encode";
|
||
prepare stmt1 from 'select decode(encode(?, ?), ?)';
|
||
execute stmt1 using @my_data, @my_password, @my_password;
|
||
decode(encode(?, ?), ?)
|
||
clear text to encode
|
||
set @my_data="more text to encode";
|
||
execute stmt1 using @my_data, @my_password, @my_password;
|
||
decode(encode(?, ?), ?)
|
||
more text to encode
|
||
set @my_password="new password";
|
||
execute stmt1 using @my_data, @my_password, @my_password;
|
||
decode(encode(?, ?), ?)
|
||
more text to encode
|
||
deallocate prepare stmt1;
|
||
set @to_format="123456789.123456789";
|
||
set @dec=0;
|
||
prepare stmt2 from 'select format(?, ?)';
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
123,456,789
|
||
set @dec=4;
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
123,456,789.1235
|
||
set @dec=6;
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
123,456,789.123457
|
||
set @dec=2;
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
123,456,789.12
|
||
set @to_format="100";
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
100.00
|
||
set @to_format="1000000";
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
1,000,000.00
|
||
set @to_format="10000";
|
||
execute stmt2 using @to_format, @dec;
|
||
format(?, ?)
|
||
10,000.00
|
||
deallocate prepare stmt2;
|
||
DROP TABLE IF EXISTS t1, t2;
|
||
CREATE TABLE t1 (i INT);
|
||
INSERT INTO t1 VALUES (1);
|
||
CREATE TABLE t2 (i INT);
|
||
INSERT INTO t2 VALUES (2);
|
||
LOCK TABLE t1 READ, t2 WRITE;
|
||
PREPARE stmt1 FROM "SELECT i FROM t1";
|
||
PREPARE stmt2 FROM "INSERT INTO t2 (i) VALUES (3)";
|
||
EXECUTE stmt1;
|
||
i
|
||
1
|
||
EXECUTE stmt2;
|
||
SELECT * FROM t2;
|
||
i
|
||
2
|
||
UNLOCK TABLES;
|
||
SELECT * FROM t2;
|
||
i
|
||
2
|
||
3
|
||
ALTER TABLE t1 ADD COLUMN j INT;
|
||
ALTER TABLE t2 ADD COLUMN j INT;
|
||
INSERT INTO t1 VALUES (4, 5);
|
||
INSERT INTO t2 VALUES (4, 5);
|
||
EXECUTE stmt1;
|
||
i
|
||
1
|
||
4
|
||
EXECUTE stmt2;
|
||
SELECT * FROM t2;
|
||
i j
|
||
2 NULL
|
||
3 NULL
|
||
4 5
|
||
3 NULL
|
||
DROP TABLE t1, t2;
|
||
End of 5.1 tests.
|