mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 19:06:14 +01:00 
			
		
		
		
	 3942681913
			
		
	
	
	3942681913
	
	
	
		
			
			Problem: When a parameter in a prepared UPDATE statement uses DEFAULT value for a column (e.g., `EXECUTE IMMEDIATE 'UPDATE t SET b=?' USING DEFAULT`), and that column's default is derived from an expression or a function referencing another column (e.g., `FROM_UNIXTIME(a)`), the server fails to correctly mark the dependent column (`a`) for reading. This happened because the server failed to associate the `Item_param` (representing the `?` parameter) with its target field (`b`), leaving `Item_param::m_associated_field` uninitialized. This prevented the correct code path for evaluating the `DEFAULT` value, leading to the dependent column not being marked for read. When the column's value was later accessed, an assertion failed, causing a crash. Fix: In the prepare stage of the UPDATE statement, associate each value with the target field, causing the server to take the correct code path (`Item_param::assign_default`) for evaluating DEFAULT values and marking dependent column for reading beforehand.
		
			
				
	
	
		
			6049 lines
		
	
	
	
		
			182 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			6049 lines
		
	
	
	
		
			182 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');
 | |
| drop table if exists t1,t2,t3,t4;
 | |
| drop database if exists mysqltest1;
 | |
| 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 HY000: This command is not supported in the prepared statement protocol yet
 | |
| prepare stmt2 from 'execute stmt1';
 | |
| ERROR HY000: This command is not supported in the prepared statement protocol yet
 | |
| prepare stmt2 from 'deallocate prepare z';
 | |
| ERROR HY000: This command is not supported in the prepared statement protocol yet
 | |
| 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 'test.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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 @save_optimizer_switch=@@optimizer_switch;
 | |
| set @@optimizer_switch="partial_match_rowid_merge=off,partial_match_table_scan=off";
 | |
| set @tmp_optimizer_switch=@@optimizer_switch;
 | |
| set optimizer_switch='derived_merge=off,derived_with_keys=off';
 | |
| 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	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| 4	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| 3	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| 2	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	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| 4	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| 3	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| 2	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	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| 4	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| 3	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| 2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| deallocate prepare stmt1;
 | |
| set optimizer_switch=@tmp_optimizer_switch;
 | |
| drop tables t1,t2;
 | |
| set @@optimizer_switch=@save_optimizer_switch;
 | |
| 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	Max_index_length	Temporary
 | |
| t1	MyISAM	10	Dynamic	0	0	0	4294967295	1024	0	NULL	#	#	#	latin1_swedish_ci	NULL			288230376151710720	N
 | |
| 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	Max_index_length	Temporary
 | |
| t1	MyISAM	10	Dynamic	0	0	0	4294967295	1024	0	NULL	#	#	#	latin1_swedish_ci	NULL			288230376151710720	N
 | |
| 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 '<MYSQLTEST_VARDIR>/tmp/f1.txt'";
 | |
| Warnings:
 | |
| Warning	1287	'<select expression> INTO <destination>;' is deprecated and will be removed in a future release. Please use 'SELECT <select list> INTO <destination> FROM...' instead
 | |
| 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 `ü`;
 | |
| 1234
 | |
| 1234
 | |
| deallocate prepare `ü`;
 | |
| 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 'test.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',
 | |
| preceding_id int(11) not null default '0',
 | |
| primary key  (id,preceding_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.preceding_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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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 MariaDB 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
 | |
| REPEATABLE-READ
 | |
| set transaction isolation level serializable;
 | |
| execute stmt;
 | |
| @@tx_isolation
 | |
| REPEATABLE-READ
 | |
| 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 ignore into t1 (a) values (repeat('a', 20));
 | |
| select length(a) from t1;
 | |
| length(a)
 | |
| 10
 | |
| drop table t1;
 | |
| execute stmt;
 | |
| insert ignore 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;
 | |
| Warnings:
 | |
| Warning	1292	Truncated incorrect max_prepared_stmt_count value: '-1'
 | |
| select @@max_prepared_stmt_count;
 | |
| @@max_prepared_stmt_count
 | |
| 0
 | |
| set global max_prepared_stmt_count=10000000000000000;
 | |
| Warnings:
 | |
| Warning	1292	Truncated incorrect max_prepared_stmt_count value: '10000000000000000'
 | |
| select @@max_prepared_stmt_count;
 | |
| @@max_prepared_stmt_count
 | |
| 4294967295
 | |
| 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";
 | |
| connect  con1,localhost,root,,;
 | |
| connection con1;
 | |
| 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)
 | |
| connection default;
 | |
| 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
 | |
| disconnect con1;
 | |
| connection default;
 | |
| 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;
 | |
| DROP TABLE IF EXISTS t1, t2;
 | |
| CREATE TABLE t1 (i INT);
 | |
| PREPARE st_19182
 | |
| FROM "CREATE TABLE t2 (i INT, j INT, KEY (i), KEY(j)) SELECT i FROM t1";
 | |
| EXECUTE st_19182;
 | |
| DESC t2;
 | |
| Field	Type	Null	Key	Default	Extra
 | |
| j	int(11)	YES	MUL	NULL	
 | |
| i	int(11)	YES	MUL	NULL	
 | |
| DROP TABLE t2;
 | |
| EXECUTE st_19182;
 | |
| DESC t2;
 | |
| Field	Type	Null	Key	Default	Extra
 | |
| j	int(11)	YES	MUL	NULL	
 | |
| i	int(11)	YES	MUL	NULL	
 | |
| DEALLOCATE PREPARE st_19182;
 | |
| DROP TABLE t2, t1;
 | |
| drop database if exists mysqltest;
 | |
| drop table if exists t1, t2;
 | |
| create database mysqltest character set utf8;
 | |
| prepare stmt1 from "create table mysqltest.t1 (c char(10))";
 | |
| prepare stmt2 from "create table mysqltest.t2 select 'test'";
 | |
| execute stmt1;
 | |
| execute stmt2;
 | |
| show create table mysqltest.t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c` char(10) DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
 | |
| show create table mysqltest.t2;
 | |
| Table	Create Table
 | |
| t2	CREATE TABLE `t2` (
 | |
|   `test` varchar(4) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
 | |
| drop table mysqltest.t1;
 | |
| drop table mysqltest.t2;
 | |
| alter database mysqltest character set latin1;
 | |
| execute stmt1;
 | |
| execute stmt2;
 | |
| show create table mysqltest.t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c` char(10) DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| show create table mysqltest.t2;
 | |
| Table	Create Table
 | |
| t2	CREATE TABLE `t2` (
 | |
|   `test` varchar(4) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| drop database mysqltest;
 | |
| deallocate prepare stmt1;
 | |
| deallocate prepare stmt2;
 | |
| execute stmt;
 | |
| show create table t1;
 | |
| drop table t1;
 | |
| execute stmt;
 | |
| show create table t1;
 | |
| drop table t1;
 | |
| deallocate prepare stmt;
 | |
| CREATE TABLE t1(a int);
 | |
| INSERT INTO t1 VALUES (2), (3), (1);
 | |
| PREPARE st1 FROM
 | |
| '(SELECT a FROM t1) UNION (SELECT a+10 FROM t1) ORDER BY RAND()*0+a';
 | |
| EXECUTE st1;
 | |
| a
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| EXECUTE st1;
 | |
| a
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| DEALLOCATE PREPARE st1;
 | |
| DROP TABLE t1;
 | |
| create table t1 (a int, b tinyint);
 | |
| prepare st1 from 'update t1 set b= (str_to_date(a, a))';
 | |
| execute st1;
 | |
| deallocate prepare st1;
 | |
| 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(*)
 | |
| 47
 | |
| Warnings:
 | |
| Warning	1286	Unknown storage engine 'InnoDB'
 | |
| Warning	1286	Unknown storage engine 'InnoDB'
 | |
| Warning	1286	Unknown storage engine 'InnoDB'
 | |
| execute my_stmt;
 | |
| COUNT(*)
 | |
| 47
 | |
| Warnings:
 | |
| Warning	1286	Unknown storage engine 'InnoDB'
 | |
| Warning	1286	Unknown storage engine 'InnoDB'
 | |
| Warning	1286	Unknown storage engine 'InnoDB'
 | |
| execute my_stmt;
 | |
| COUNT(*)
 | |
| 47
 | |
| Warnings:
 | |
| Warning	1286	Unknown storage engine 'InnoDB'
 | |
| Warning	1286	Unknown storage engine 'InnoDB'
 | |
| Warning	1286	Unknown storage engine 'InnoDB'
 | |
| 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 MariaDB 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	Engine-independent statistics collected
 | |
| test.t1	analyze	status	Table is already up to date
 | |
| execute stmt;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t1	analyze	status	Engine-independent statistics collected
 | |
| 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	Engine-independent statistics collected
 | |
| test.t1	analyze	status	Table is already up to date
 | |
| test.t2	analyze	status	Engine-independent statistics collected
 | |
| test.t2	analyze	status	Table is already up to date
 | |
| test.t3	analyze	status	Engine-independent statistics collected
 | |
| test.t3	analyze	status	Table is already up to date
 | |
| execute stmt;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t1	analyze	status	Engine-independent statistics collected
 | |
| test.t1	analyze	status	Table is already up to date
 | |
| test.t2	analyze	status	Engine-independent statistics collected
 | |
| test.t2	analyze	status	Table is already up to date
 | |
| test.t3	analyze	status	Engine-independent statistics collected
 | |
| 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.t4	repair	status	Operation failed
 | |
| test.t3	repair	status	OK
 | |
| execute stmt;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t1	repair	status	OK
 | |
| test.t4	repair	Error	Table 'test.t4' doesn't exist
 | |
| test.t4	repair	status	Operation failed
 | |
| test.t3	repair	status	OK
 | |
| 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
 | |
| test.t4	optimize	status	Operation failed
 | |
| 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
 | |
| test.t4	optimize	status	Operation failed
 | |
| 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.t4	analyze	status	Operation failed
 | |
| test.t1	analyze	status	Engine-independent statistics collected
 | |
| test.t1	analyze	status	Table is already up to date
 | |
| execute stmt;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t4	analyze	Error	Table 'test.t4' doesn't exist
 | |
| test.t4	analyze	status	Operation failed
 | |
| test.t1	analyze	status	Engine-independent statistics collected
 | |
| test.t1	analyze	status	Table is already up to date
 | |
| 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	Engine-independent statistics collected
 | |
| 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 table if exists t1;
 | |
| create table t1 (s1 char(20));
 | |
| prepare stmt from "alter table t1 modify s1 int";
 | |
| execute stmt;
 | |
| execute stmt;
 | |
| drop table t1;
 | |
| deallocate prepare stmt;
 | |
| drop table if exists t1;
 | |
| create table t1 (a int, b int);
 | |
| prepare s_6895 from "alter table t1 drop column b";
 | |
| execute s_6895;
 | |
| show columns from t1;
 | |
| Field	Type	Null	Key	Default	Extra
 | |
| a	int(11)	YES		NULL	
 | |
| drop table t1;
 | |
| create table t1 (a int, b int);
 | |
| execute s_6895;
 | |
| show columns from t1;
 | |
| Field	Type	Null	Key	Default	Extra
 | |
| a	int(11)	YES		NULL	
 | |
| drop table t1;
 | |
| create table t1 (a int, b int);
 | |
| execute s_6895;
 | |
| show columns from t1;
 | |
| Field	Type	Null	Key	Default	Extra
 | |
| a	int(11)	YES		NULL	
 | |
| deallocate prepare s_6895;
 | |
| drop table t1;
 | |
| create table t1 (i int primary key auto_increment) comment='comment for table t1';
 | |
| create table t2 (i int, j int, k int);
 | |
| prepare stmt from "alter table t1 auto_increment=100";
 | |
| execute stmt;
 | |
| show create table t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `i` int(11) NOT NULL AUTO_INCREMENT,
 | |
|   PRIMARY KEY (`i`)
 | |
| ) ENGINE=MyISAM AUTO_INCREMENT=100 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci COMMENT='comment for table t1'
 | |
| flush tables;
 | |
| select * from t2;
 | |
| i	j	k
 | |
| execute stmt;
 | |
| show create table t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `i` int(11) NOT NULL AUTO_INCREMENT,
 | |
|   PRIMARY KEY (`i`)
 | |
| ) ENGINE=MyISAM AUTO_INCREMENT=100 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci COMMENT='comment for table t1'
 | |
| deallocate prepare stmt;
 | |
| drop table t1, t2;
 | |
| set @old_character_set_server= @@character_set_server;
 | |
| set @@character_set_server= latin1;
 | |
| prepare stmt from "create database mysqltest_1";
 | |
| execute stmt;
 | |
| show create database mysqltest_1;
 | |
| Database	Create Database
 | |
| mysqltest_1	CREATE DATABASE `mysqltest_1` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */
 | |
| drop database mysqltest_1;
 | |
| set @@character_set_server= utf8;
 | |
| execute stmt;
 | |
| show create database mysqltest_1;
 | |
| Database	Create Database
 | |
| mysqltest_1	CREATE DATABASE `mysqltest_1` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci */
 | |
| drop database mysqltest_1;
 | |
| deallocate prepare stmt;
 | |
| set @@character_set_server= @old_character_set_server;
 | |
| 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 'UPDATE'
 | |
| execute stmt;
 | |
| ERROR 42S22: Unknown column 'v' in 'UPDATE'
 | |
| 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 'UPDATE'
 | |
| execute stmt;
 | |
| ERROR 42S22: Unknown column 'y.value' in 'UPDATE'
 | |
| deallocate prepare stmt;
 | |
| drop tables t1;
 | |
| prepare stmt from "create table t1 select ?";
 | |
| set @a=1.0;
 | |
| execute stmt using @a;
 | |
| show create table t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `?` decimal(2,1) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| drop table t1;
 | |
| drop table if exists t1;
 | |
| create table t1 (a bigint unsigned, b bigint(20) unsigned);
 | |
| prepare stmt from "insert into t1 values (?,?)";
 | |
| set @a= 9999999999999999;
 | |
| set @b= 14632475938453979136;
 | |
| insert into t1 values (@a, @b);
 | |
| select * from t1 where a = @a and b = @b;
 | |
| a	b
 | |
| 9999999999999999	14632475938453979136
 | |
| execute stmt using @a, @b;
 | |
| select * from t1 where a = @a and b = @b;
 | |
| a	b
 | |
| 9999999999999999	14632475938453979136
 | |
| 9999999999999999	14632475938453979136
 | |
| deallocate prepare stmt;
 | |
| drop table t1;
 | |
| drop view if exists v1;
 | |
| drop table if exists t1;
 | |
| create table t1 (a int, b int);
 | |
| insert into t1 values (1,1), (2,2), (3,3);
 | |
| insert into t1 values (3,1), (1,2), (2,3);
 | |
| prepare stmt from "create view v1 as select * from t1";
 | |
| execute stmt;
 | |
| drop table t1;
 | |
| create table t1 (a int, b int);
 | |
| drop view v1;
 | |
| execute stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1`	latin1	latin1_swedish_ci
 | |
| drop view v1;
 | |
| prepare stmt from "create view v1 (c,d) as select a,b from t1";
 | |
| execute stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d` from `t1`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| c	d
 | |
| drop view v1;
 | |
| execute stmt;
 | |
| deallocate prepare stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d` from `t1`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| c	d
 | |
| drop view v1;
 | |
| prepare stmt from "create view v1 (c) as select b+1 from t1";
 | |
| execute stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`b` + 1 AS `c` from `t1`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| c
 | |
| drop view v1;
 | |
| execute stmt;
 | |
| deallocate prepare stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`b` + 1 AS `c` from `t1`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| c
 | |
| drop view v1;
 | |
| prepare stmt from "create view v1 (c,d,e,f) as select a,b,a in (select a+2 from t1), a = all (select a from t1) from t1";
 | |
| execute stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d`,`t1`.`a` in (select `t1`.`a` + 2 from `t1`) AS `e`,`t1`.`a` = all (select `t1`.`a` from `t1`) AS `f` from `t1`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| c	d	e	f
 | |
| drop view v1;
 | |
| execute stmt;
 | |
| deallocate prepare stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `c`,`t1`.`b` AS `d`,`t1`.`a` in (select `t1`.`a` + 2 from `t1`) AS `e`,`t1`.`a` = all (select `t1`.`a` from `t1`) AS `f` from `t1`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| c	d	e	f
 | |
| drop view v1;
 | |
| prepare stmt from "create or replace view v1 as select 1";
 | |
| execute stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| 1
 | |
| 1
 | |
| execute stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`	latin1	latin1_swedish_ci
 | |
| deallocate prepare stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| 1
 | |
| 1
 | |
| drop view v1;
 | |
| prepare stmt from "create view v1 as select 1, 1";
 | |
| execute stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`,1 AS `My_exp_1`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| 1	My_exp_1
 | |
| 1	1
 | |
| drop view v1;
 | |
| execute stmt;
 | |
| deallocate prepare stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`,1 AS `My_exp_1`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| 1	My_exp_1
 | |
| 1	1
 | |
| drop view v1;
 | |
| prepare stmt from "create view v1 (x) as select a from t1 where a > 1";
 | |
| execute stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `x` from `t1` where `t1`.`a` > 1	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| x
 | |
| drop view v1;
 | |
| execute stmt;
 | |
| deallocate prepare stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `x` from `t1` where `t1`.`a` > 1	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| x
 | |
| drop view v1;
 | |
| prepare stmt from "create view v1 as select * from `t1` `b`";
 | |
| execute stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `b`.`a` AS `a`,`b`.`b` AS `b` from `t1` `b`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| a	b
 | |
| drop view v1;
 | |
| execute stmt;
 | |
| deallocate prepare stmt;
 | |
| show create view v1;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `b`.`a` AS `a`,`b`.`b` AS `b` from `t1` `b`	latin1	latin1_swedish_ci
 | |
| select * from v1;
 | |
| a	b
 | |
| drop view v1;
 | |
| prepare stmt from "create view v1 (a,b,c) as select * from t1";
 | |
| execute stmt;
 | |
| ERROR HY000: View's SELECT and view's field list have different column counts
 | |
| execute stmt;
 | |
| ERROR HY000: View's SELECT and view's field list have different column counts
 | |
| deallocate prepare stmt;
 | |
| drop table t1;
 | |
| create temporary table t1 (a int, b int);
 | |
| prepare stmt from "create view v1 as select * from t1";
 | |
| execute stmt;
 | |
| ERROR HY000: View's SELECT refers to a temporary table 't1'
 | |
| execute stmt;
 | |
| ERROR HY000: View's SELECT refers to a temporary table 't1'
 | |
| deallocate prepare stmt;
 | |
| drop table t1;
 | |
| prepare stmt from "create view v1 as select * from t1";
 | |
| ERROR 42S02: Table 'test.t1' doesn't exist
 | |
| prepare stmt from "create view v1 as select * from `t1` `b`";
 | |
| ERROR 42S02: Table 'test.t1' doesn't exist
 | |
| prepare stmt from "select ?";
 | |
| set @arg= 123456789.987654321;
 | |
| select @arg;
 | |
| @arg
 | |
| 123456789.987654321
 | |
| execute stmt using @arg;
 | |
| ?
 | |
| 123456789.987654321
 | |
| set @arg= "string";
 | |
| select @arg;
 | |
| @arg
 | |
| string
 | |
| execute stmt using @arg;
 | |
| ?
 | |
| string
 | |
| set @arg= 123456;
 | |
| select @arg;
 | |
| @arg
 | |
| 123456
 | |
| execute stmt using @arg;
 | |
| ?
 | |
| 123456
 | |
| set @arg= cast(-12345.54321 as decimal(20, 10));
 | |
| select @arg;
 | |
| @arg
 | |
| -12345.5432100000
 | |
| execute stmt using @arg;
 | |
| ?
 | |
| -12345.5432100000
 | |
| deallocate prepare stmt;
 | |
| #
 | |
| # Bug#48508: Crash on prepared statement re-execution.
 | |
| #
 | |
| create table t1(b int);
 | |
| insert into t1 values (0);
 | |
| create view v1 AS select 1 as a from t1 where b;
 | |
| prepare stmt from "select * from v1 where a";
 | |
| execute stmt;
 | |
| a
 | |
| execute stmt;
 | |
| a
 | |
| deallocate prepare stmt;
 | |
| drop table t1;
 | |
| drop view v1;
 | |
| create table t1(a bigint);
 | |
| create table t2(b tinyint);
 | |
| insert into t2 values (null);
 | |
| prepare stmt from "select 1 from t1 join  t2 on a xor b where b > 1  and a =1";
 | |
| execute stmt;
 | |
| 1
 | |
| execute stmt;
 | |
| 1
 | |
| deallocate prepare stmt;
 | |
| drop table t1,t2;
 | |
| #
 | |
| #
 | |
| # Bug #49570: Assertion failed: !(order->used & map)
 | |
| # on re-execution of prepared statement
 | |
| #
 | |
| CREATE TABLE t1(a INT PRIMARY KEY);
 | |
| INSERT INTO t1 VALUES(0), (1);
 | |
| PREPARE stmt FROM 
 | |
| "SELECT 1 FROM t1 JOIN t1 t2 USING(a) GROUP BY t2.a, t1.a";
 | |
| EXECUTE stmt;
 | |
| 1
 | |
| 1
 | |
| 1
 | |
| EXECUTE stmt;
 | |
| 1
 | |
| 1
 | |
| 1
 | |
| EXECUTE stmt;
 | |
| 1
 | |
| 1
 | |
| 1
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP TABLE 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	0	0
 | |
| select Host, User from mysql.user limit 0;
 | |
| Host	User
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	column_stats	0	0
 | |
| mysql	general_log	0	0
 | |
| mysql	global_priv	0	0
 | |
| mysql	index_stats	0	0
 | |
| mysql	table_stats	0	0
 | |
| mysql	user	0	0
 | |
| call proc_1();
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	general_log	0	0
 | |
| select Host, User from mysql.user limit 0;
 | |
| Host	User
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	column_stats	0	0
 | |
| mysql	general_log	0	0
 | |
| mysql	global_priv	0	0
 | |
| mysql	index_stats	0	0
 | |
| mysql	table_stats	0	0
 | |
| mysql	user	0	0
 | |
| call proc_1();
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	general_log	0	0
 | |
| select Host, User from mysql.user limit 0;
 | |
| Host	User
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	column_stats	0	0
 | |
| mysql	general_log	0	0
 | |
| mysql	global_priv	0	0
 | |
| mysql	index_stats	0	0
 | |
| mysql	table_stats	0	0
 | |
| mysql	user	0	0
 | |
| call proc_1();
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	general_log	0	0
 | |
| select Host, User from mysql.user limit 0;
 | |
| Host	User
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	column_stats	0	0
 | |
| mysql	general_log	0	0
 | |
| mysql	global_priv	0	0
 | |
| mysql	index_stats	0	0
 | |
| mysql	table_stats	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
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	column_stats	0	0
 | |
| mysql	general_log	0	0
 | |
| mysql	global_priv	0	0
 | |
| mysql	index_stats	0	0
 | |
| mysql	table_stats	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	0	0
 | |
| select Host, User from mysql.user limit 0;
 | |
| Host	User
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	column_stats	0	0
 | |
| mysql	general_log	0	0
 | |
| mysql	global_priv	0	0
 | |
| mysql	index_stats	0	0
 | |
| mysql	table_stats	0	0
 | |
| mysql	user	0	0
 | |
| execute abc;
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	general_log	0	0
 | |
| select Host, User from mysql.user limit 0;
 | |
| Host	User
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	column_stats	0	0
 | |
| mysql	general_log	0	0
 | |
| mysql	global_priv	0	0
 | |
| mysql	index_stats	0	0
 | |
| mysql	table_stats	0	0
 | |
| mysql	user	0	0
 | |
| execute abc;
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	general_log	0	0
 | |
| select Host, User from mysql.user limit 0;
 | |
| Host	User
 | |
| show open tables from mysql;
 | |
| Database	Table	In_use	Name_locked
 | |
| mysql	column_stats	0	0
 | |
| mysql	general_log	0	0
 | |
| mysql	global_priv	0	0
 | |
| mysql	index_stats	0	0
 | |
| mysql	table_stats	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	Originator	character_set_client	collation_connection	Database Collation
 | |
| call proc_1();
 | |
| Db	Name	Definer	Time zone	Type	Execute at	Interval value	Interval field	Starts	Ends	Status	Originator	character_set_client	collation_connection	Database Collation
 | |
| call proc_1();
 | |
| Db	Name	Definer	Time zone	Type	Execute at	Interval value	Interval field	Starts	Ends	Status	Originator	character_set_client	collation_connection	Database Collation
 | |
| 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	Originator	character_set_client	collation_connection	Database Collation
 | |
| execute abc;
 | |
| Db	Name	Definer	Time zone	Type	Execute at	Interval value	Interval field	Starts	Ends	Status	Originator	character_set_client	collation_connection	Database Collation
 | |
| execute abc;
 | |
| Db	Name	Definer	Time zone	Type	Execute at	Interval value	Interval field	Starts	Ends	Status	Originator	character_set_client	collation_connection	Database Collation
 | |
| 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	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
 | |
| select 42	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| call proc_1("bb");
 | |
| Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
 | |
| select 42	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| call proc_1("bb");
 | |
| Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
 | |
| select 42	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| 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	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
 | |
| select 42	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| execute abc;
 | |
| Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
 | |
| select 42	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| execute abc;
 | |
| Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` PROCEDURE `a`()
 | |
| select 42	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| 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	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
 | |
| return 42+13	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| call proc_1("bb");
 | |
| Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
 | |
| return 42+13	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| call proc_1("bb");
 | |
| Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
 | |
| return 42+13	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| 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	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
 | |
| return 42+13	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| execute abc;
 | |
| Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
 | |
| return 42+13	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| execute abc;
 | |
| Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
 | |
| a	STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION	CREATE DEFINER=`root`@`localhost` FUNCTION `a`() RETURNS int(11)
 | |
| return 42+13	latin1	latin1_swedish_ci	latin1_swedish_ci
 | |
| 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,
 | |
|   `b` char(1) NOT NULL,
 | |
|   PRIMARY KEY (`a`,`b`)
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| call proc_1();
 | |
| Table	Create Table
 | |
| tab1	CREATE TABLE `tab1` (
 | |
|   `a` int(11) NOT NULL,
 | |
|   `b` char(1) NOT NULL,
 | |
|   PRIMARY KEY (`a`,`b`)
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| call proc_1();
 | |
| Table	Create Table
 | |
| tab1	CREATE TABLE `tab1` (
 | |
|   `a` int(11) NOT NULL,
 | |
|   `b` char(1) NOT NULL,
 | |
|   PRIMARY KEY (`a`,`b`)
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| 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,
 | |
|   `b` char(1) NOT NULL,
 | |
|   PRIMARY KEY (`a`,`b`)
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| execute abc;
 | |
| Table	Create Table
 | |
| tab1	CREATE TABLE `tab1` (
 | |
|   `a` int(11) NOT NULL,
 | |
|   `b` char(1) NOT NULL,
 | |
|   PRIMARY KEY (`a`,`b`)
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| execute abc;
 | |
| Table	Create Table
 | |
| tab1	CREATE TABLE `tab1` (
 | |
|   `a` int(11) NOT NULL,
 | |
|   `b` char(1) NOT NULL,
 | |
|   PRIMARY KEY (`a`,`b`)
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| 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	character_set_client	collation_connection
 | |
| 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`)	latin1	latin1_swedish_ci
 | |
| call proc_1();
 | |
| View	Create View	character_set_client	collation_connection
 | |
| 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`)	latin1	latin1_swedish_ci
 | |
| call proc_1();
 | |
| View	Create View	character_set_client	collation_connection
 | |
| 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`)	latin1	latin1_swedish_ci
 | |
| 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	character_set_client	collation_connection
 | |
| 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`)	latin1	latin1_swedish_ci
 | |
| execute abc;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| 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`)	latin1	latin1_swedish_ci
 | |
| execute abc;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| 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`)	latin1	latin1_swedish_ci
 | |
| 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: Recursion 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";
 | |
| deallocate prepare abc;
 | |
| 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;
 | |
| Warnings:
 | |
| Warning	1105	Event scheduler is switched off, use SET GLOBAL event_scheduler=ON to enable it.
 | |
| call proc_1();
 | |
| drop event xyz;
 | |
| create event xyz on schedule every 5 minute disable do select 123;
 | |
| Warnings:
 | |
| Warning	1105	Event scheduler is switched off, use SET GLOBAL event_scheduler=ON to enable it.
 | |
| 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'";
 | |
| deallocate prepare abc;
 | |
| 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;
 | |
| Warnings:
 | |
| Warning	1105	Event scheduler is switched off, use SET GLOBAL event_scheduler=ON to enable it.
 | |
| 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";
 | |
| deallocate prepare abc;
 | |
| 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 'test.t1'
 | |
| call proc_1();
 | |
| Level	Code	Message
 | |
| Note	1051	Unknown table 'test.t1'
 | |
| drop table if exists t2;
 | |
| Warnings:
 | |
| Note	1051	Unknown table 'test.t2'
 | |
| call proc_1();
 | |
| Level	Code	Message
 | |
| Note	1051	Unknown table 'test.t2'
 | |
| drop table if exists t1, t2;
 | |
| Warnings:
 | |
| Note	1051	Unknown table 'test.t1,test.t2'
 | |
| call proc_1();
 | |
| Level	Code	Message
 | |
| Note	1051	Unknown table 'test.t1,test.t2'
 | |
| 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 'test.t1'
 | |
| execute abc;
 | |
| Level	Code	Message
 | |
| Note	1051	Unknown table 'test.t1'
 | |
| drop table if exists t2;
 | |
| Warnings:
 | |
| Note	1051	Unknown table 'test.t2'
 | |
| execute abc;
 | |
| Level	Code	Message
 | |
| Note	1051	Unknown table 'test.t2'
 | |
| drop table if exists t1, t2;
 | |
| Warnings:
 | |
| Note	1051	Unknown table 'test.t1,test.t2'
 | |
| execute abc;
 | |
| Level	Code	Message
 | |
| Note	1051	Unknown table 'test.t1,test.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;
 | |
| connect  conn1, localhost, root, , ;
 | |
| PREPARE stmt1 FROM "SELECT i FROM t1";
 | |
| PREPARE stmt2 FROM "INSERT INTO t2 (i) VALUES (3)";
 | |
| EXECUTE stmt1;
 | |
| i
 | |
| 1
 | |
| EXECUTE stmt2;
 | |
| connection default;
 | |
| 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);
 | |
| connection conn1;
 | |
| EXECUTE stmt1;
 | |
| i
 | |
| 1
 | |
| 4
 | |
| EXECUTE stmt2;
 | |
| SELECT * FROM t2;
 | |
| i	j
 | |
| 2	NULL
 | |
| 3	NULL
 | |
| 4	5
 | |
| 3	NULL
 | |
| disconnect conn1;
 | |
| connection default;
 | |
| DROP TABLE t1, t2;
 | |
| drop table if exists t1;
 | |
| Warnings:
 | |
| Note	1051	Unknown table 'test.t1'
 | |
| prepare stmt
 | |
| from "create table t1 (c char(100) character set utf8, key (c(10)))";
 | |
| execute stmt;
 | |
| show create table t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c` char(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
 | |
|   KEY `c` (`c`(10))
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| drop table t1;
 | |
| execute stmt;
 | |
| show create table t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c` char(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
 | |
|   KEY `c` (`c`(10))
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| drop table t1;
 | |
| drop table if exists t1, t2;
 | |
| create table t1 (a int, b int);
 | |
| create table t2 like t1;
 | |
| insert into t1 (a, b) values (1,1), (1,2), (1,3), (1,4), (1,5),
 | |
| (2,2), (2,3), (2,1), (3,1), (4,1), (4,2), (4,3), (4,4), (4,5), (4,6);
 | |
| insert into t2 select a, max(b) from t1 group by a;
 | |
| prepare stmt from "delete from t2 where (select (select max(b) from t1 group
 | |
| by a having a < 2) x from t1) > 10000";
 | |
| delete from t2 where (select (select max(b) from t1 group
 | |
| by a having a < 2) x from t1) > 10000;
 | |
| ERROR 21000: Subquery returns more than 1 row
 | |
| execute stmt;
 | |
| ERROR 21000: Subquery returns more than 1 row
 | |
| execute stmt;
 | |
| ERROR 21000: Subquery returns more than 1 row
 | |
| deallocate prepare stmt;
 | |
| drop table t1, t2;
 | |
| #
 | |
| # Bug#27430 Crash in subquery code when in PS and table DDL changed
 | |
| # after PREPARE
 | |
| #
 | |
| # This part of the test doesn't work in embedded server, this is
 | |
| # why it's here. For the main test see ps_ddl*.test
 | |
| 
 | |
| drop table if exists t1;
 | |
| create table t1 (a int);
 | |
| prepare stmt from "show events where (1) in (select * from t1)";
 | |
| execute stmt;
 | |
| Db	Name	Definer	Time zone	Type	Execute at	Interval value	Interval field	Starts	Ends	Status	Originator	character_set_client	collation_connection	Database Collation
 | |
| drop table t1;
 | |
| create table t1 (x int);
 | |
| execute stmt;
 | |
| Db	Name	Definer	Time zone	Type	Execute at	Interval value	Interval field	Starts	Ends	Status	Originator	character_set_client	collation_connection	Database Collation
 | |
| drop table t1;
 | |
| deallocate prepare stmt;
 | |
| #
 | |
| # Bug#49141: Encode function is significantly slower in 5.1 compared to 5.0
 | |
| #
 | |
| prepare encode from "select encode(?, ?) into @ciphertext";
 | |
| prepare decode from "select decode(?, ?) into @plaintext";
 | |
| set @str="abc", @key="cba";
 | |
| execute encode using @str, @key;
 | |
| execute decode using @ciphertext, @key;
 | |
| select @plaintext;
 | |
| @plaintext
 | |
| abc
 | |
| set @str="bcd", @key="dcb";
 | |
| execute encode using @str, @key;
 | |
| execute decode using @ciphertext, @key;
 | |
| select @plaintext;
 | |
| @plaintext
 | |
| bcd
 | |
| deallocate prepare encode;
 | |
| deallocate prepare decode;
 | |
| #
 | |
| # Bug#52124 memory leaks like a sieve in datetime, timestamp, time, date fields + warnings
 | |
| #
 | |
| CREATE TABLE t1 (a DATETIME NOT NULL, b TINYINT);
 | |
| INSERT INTO t1 VALUES (0, 0),(0, 0);
 | |
| PREPARE stmt FROM "SELECT 1 FROM t1 WHERE
 | |
| ROW(a, b) >= ROW('1', (SELECT 1 FROM t1 WHERE a > 1234))";
 | |
| EXECUTE stmt;
 | |
| 1
 | |
| EXECUTE stmt;
 | |
| 1
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # Bug#54494 crash with explain extended and prepared statements
 | |
| #
 | |
| CREATE TABLE t1(a INT);
 | |
| INSERT INTO t1 VALUES (1),(2);
 | |
| SET @save_optimizer_switch=@@optimizer_switch;
 | |
| SET optimizer_switch='outer_join_with_cache=off';
 | |
| PREPARE stmt FROM 'EXPLAIN EXTENDED SELECT 1 FROM t1 RIGHT JOIN t1 t2 ON 1';
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	
 | |
| 1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
 | |
| Warnings:
 | |
| Note	1003	select 1 AS `1` from `test`.`t1` `t2` left join `test`.`t1` on(1) where 1
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	
 | |
| 1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
 | |
| Warnings:
 | |
| Note	1003	select 1 AS `1` from `test`.`t1` `t2` left join `test`.`t1` on(1) where 1
 | |
| DEALLOCATE PREPARE stmt;
 | |
| SET optimizer_switch=@save_optimizer_switch;
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # Bug#54488 crash when using explain and prepared statements with subqueries
 | |
| #
 | |
| CREATE TABLE t1(f1 INT);
 | |
| INSERT INTO t1 VALUES (1),(1);
 | |
| PREPARE stmt FROM 'EXPLAIN SELECT 1 FROM t1 WHERE (SELECT (SELECT 1 FROM t1 GROUP BY f1))';
 | |
| Warnings:
 | |
| Note	1249	Select 2 was reduced during optimization
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	
 | |
| 3	SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	2	Using temporary; Using filesort
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	
 | |
| 3	SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	2	Using temporary; Using filesort
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP TABLE t1;
 | |
| 
 | |
| End of 5.1 tests.
 | |
| #
 | |
| # lp:1001500 Crash on the second execution of the PS for
 | |
| # a query with degenerated conjunctive condition
 | |
| # (see also mysql bug#12582849)
 | |
| #
 | |
| CREATE TABLE t1 (
 | |
| pk INTEGER AUTO_INCREMENT,
 | |
| col_int_nokey INTEGER,
 | |
| col_int_key INTEGER,
 | |
| col_varchar_key VARCHAR(1),
 | |
| col_varchar_nokey VARCHAR(1),
 | |
| PRIMARY KEY (pk),
 | |
| KEY (col_int_key),
 | |
| KEY (col_varchar_key, col_int_key)
 | |
| );
 | |
| INSERT INTO t1 (
 | |
| col_int_key, col_int_nokey,
 | |
| col_varchar_key, col_varchar_nokey
 | |
| ) VALUES 
 | |
| (4,    2, 'v', 'v'),
 | |
| (62, 150, 'v', 'v');
 | |
| CREATE TABLE t2 (
 | |
| pk INTEGER AUTO_INCREMENT,
 | |
| col_int_nokey INTEGER,
 | |
| col_int_key INTEGER,
 | |
| col_varchar_key VARCHAR(1),
 | |
| col_varchar_nokey VARCHAR(1),
 | |
| PRIMARY KEY (pk),
 | |
| KEY (col_int_key),
 | |
| KEY (col_varchar_key, col_int_key)
 | |
| );
 | |
| INSERT INTO t2 (
 | |
| col_int_key, col_int_nokey,
 | |
| col_varchar_key, col_varchar_nokey
 | |
| ) VALUES 
 | |
| (8, NULL, 'x', 'x'),
 | |
| (7, 8,    'd', 'd');
 | |
| PREPARE stmt FROM ' 
 | |
| SELECT
 | |
|   ( SELECT MAX( SQ1_alias2 .col_int_nokey ) AS SQ1_field1
 | |
|     FROM ( t2 AS SQ1_alias1 RIGHT JOIN t1 AS SQ1_alias2
 | |
|            ON ( SQ1_alias2.col_varchar_key = SQ1_alias1.col_varchar_nokey )
 | |
|          )
 | |
|     WHERE SQ1_alias2.pk < alias1.col_int_nokey OR alias1.pk
 | |
|   ) AS field1
 | |
| FROM ( t1 AS alias1 JOIN t2 AS alias2 ON alias2.pk )
 | |
| GROUP BY field1
 | |
| ';
 | |
| EXECUTE stmt;
 | |
| field1
 | |
| 150
 | |
| EXECUTE stmt;
 | |
| field1
 | |
| 150
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP TABLE t1, t2;
 | |
| 
 | |
| #
 | |
| # WL#4435: Support OUT-parameters in prepared statements.
 | |
| #
 | |
| 
 | |
| DROP PROCEDURE IF EXISTS p_string;
 | |
| DROP PROCEDURE IF EXISTS p_double;
 | |
| DROP PROCEDURE IF EXISTS p_int;
 | |
| DROP PROCEDURE IF EXISTS p_decimal;
 | |
| 
 | |
| CREATE PROCEDURE p_string(
 | |
| IN v0 INT,
 | |
| OUT v1 CHAR(32),
 | |
| IN v2 CHAR(32),
 | |
| INOUT v3 CHAR(32))
 | |
| BEGIN
 | |
| SET v0 = -1;
 | |
| SET v1 = 'test_v1';
 | |
| SET v2 = 'n/a';
 | |
| SET v3 = 'test_v3';
 | |
| END|
 | |
| 
 | |
| CREATE PROCEDURE p_double(
 | |
| IN v0 INT,
 | |
| OUT v1 DOUBLE(4, 2),
 | |
| IN v2 DOUBLE(4, 2),
 | |
| INOUT v3 DOUBLE(4, 2))
 | |
| BEGIN
 | |
| SET v0 = -1;
 | |
| SET v1 = 12.34;
 | |
| SET v2 = 98.67;
 | |
| SET v3 = 56.78;
 | |
| END|
 | |
| 
 | |
| CREATE PROCEDURE p_int(
 | |
| IN v0 CHAR(10),
 | |
| OUT v1 INT,
 | |
| IN v2 INT,
 | |
| INOUT v3 INT)
 | |
| BEGIN
 | |
| SET v0 = 'n/a';
 | |
| SET v1 = 1234;
 | |
| SET v2 = 9876;
 | |
| SET v3 = 5678;
 | |
| END|
 | |
| 
 | |
| CREATE PROCEDURE p_decimal(
 | |
| IN v0 INT,
 | |
| OUT v1 DECIMAL(4, 2),
 | |
| IN v2 DECIMAL(4, 2),
 | |
| INOUT v3 DECIMAL(4, 2))
 | |
| BEGIN
 | |
| SET v0 = -1;
 | |
| SET v1 = 12.34;
 | |
| SET v2 = 98.67;
 | |
| SET v3 = 56.78;
 | |
| END|
 | |
| 
 | |
| PREPARE stmt_str FROM 'CALL p_string(?, ?, ?, ?)';
 | |
| PREPARE stmt_dbl FROM 'CALL p_double(?, ?, ?, ?)';
 | |
| PREPARE stmt_int FROM 'CALL p_int(?, ?, ?, ?)';
 | |
| PREPARE stmt_dec FROM 'CALL p_decimal(?, ?, ?, ?)';
 | |
| 
 | |
| SET @x_str_1 = NULL;
 | |
| SET @x_str_2 = NULL;
 | |
| SET @x_str_3 = NULL;
 | |
| SET @x_dbl_1 = NULL;
 | |
| SET @x_dbl_2 = NULL;
 | |
| SET @x_dbl_3 = NULL;
 | |
| SET @x_int_1 = NULL;
 | |
| SET @x_int_2 = NULL;
 | |
| SET @x_int_3 = NULL;
 | |
| SET @x_dec_1 = NULL;
 | |
| SET @x_dec_2 = NULL;
 | |
| SET @x_dec_3 = NULL;
 | |
| 
 | |
| -- Testing strings...
 | |
| 
 | |
| EXECUTE stmt_str USING @x_int_1, @x_str_1, @x_str_2, @x_str_3;
 | |
| SELECT @x_int_1, @x_str_1, @x_str_2, @x_str_3;
 | |
| @x_int_1	@x_str_1	@x_str_2	@x_str_3
 | |
| NULL	test_v1	NULL	test_v3
 | |
| 
 | |
| EXECUTE stmt_str USING @x_int_1, @x_str_1, @x_str_2, @x_str_3;
 | |
| SELECT @x_int_1, @x_str_1, @x_str_2, @x_str_3;
 | |
| @x_int_1	@x_str_1	@x_str_2	@x_str_3
 | |
| NULL	test_v1	NULL	test_v3
 | |
| 
 | |
| -- Testing doubles...
 | |
| 
 | |
| EXECUTE stmt_dbl USING @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
 | |
| SELECT @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
 | |
| @x_int_1	@x_dbl_1	@x_dbl_2	@x_dbl_3
 | |
| NULL	12.34	NULL	56.78
 | |
| 
 | |
| EXECUTE stmt_dbl USING @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
 | |
| SELECT @x_int_1, @x_dbl_1, @x_dbl_2, @x_dbl_3;
 | |
| @x_int_1	@x_dbl_1	@x_dbl_2	@x_dbl_3
 | |
| NULL	12.34	NULL	56.78
 | |
| 
 | |
| -- Testing ints...
 | |
| 
 | |
| EXECUTE stmt_int USING @x_str_1, @x_int_1, @x_int_2, @x_int_3;
 | |
| SELECT @x_str_1, @x_int_1, @x_int_2, @x_int_3;
 | |
| @x_str_1	@x_int_1	@x_int_2	@x_int_3
 | |
| test_v1	1234	NULL	5678
 | |
| 
 | |
| EXECUTE stmt_int USING @x_str_1, @x_int_1, @x_int_2, @x_int_3;
 | |
| SELECT @x_str_1, @x_int_1, @x_int_2, @x_int_3;
 | |
| @x_str_1	@x_int_1	@x_int_2	@x_int_3
 | |
| test_v1	1234	NULL	5678
 | |
| 
 | |
| -- Testing decs...
 | |
| 
 | |
| EXECUTE stmt_dec USING @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
 | |
| SELECT @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
 | |
| @x_int_1	@x_dec_1	@x_dec_2	@x_dec_3
 | |
| 1234	12.34	NULL	56.78
 | |
| 
 | |
| EXECUTE stmt_dec USING @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
 | |
| SELECT @x_int_1, @x_dec_1, @x_dec_2, @x_dec_3;
 | |
| @x_int_1	@x_dec_1	@x_dec_2	@x_dec_3
 | |
| 1234	12.34	NULL	56.78
 | |
| 
 | |
| DEALLOCATE PREPARE stmt_str;
 | |
| DEALLOCATE PREPARE stmt_dbl;
 | |
| DEALLOCATE PREPARE stmt_int;
 | |
| DEALLOCATE PREPARE stmt_dec;
 | |
| 
 | |
| DROP PROCEDURE p_string;
 | |
| DROP PROCEDURE p_double;
 | |
| DROP PROCEDURE p_int;
 | |
| DROP PROCEDURE p_decimal;
 | |
| 
 | |
| DROP PROCEDURE IF EXISTS p1;
 | |
| DROP PROCEDURE IF EXISTS p2;
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v1 CHAR(10))
 | |
| SET v1 = 'test1';
 | |
| 
 | |
| CREATE PROCEDURE p2(OUT v2 CHAR(10))
 | |
| BEGIN
 | |
| SET @query = 'CALL p1(?)';
 | |
| PREPARE stmt1 FROM @query;
 | |
| EXECUTE stmt1 USING @u1;
 | |
| DEALLOCATE PREPARE stmt1;
 | |
| SET v2 = @u1;
 | |
| END|
 | |
| 
 | |
| CALL p2(@a);
 | |
| SELECT @a;
 | |
| @a
 | |
| test1
 | |
| 
 | |
| DROP PROCEDURE p1;
 | |
| DROP PROCEDURE p2;
 | |
| 
 | |
| TINYINT
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v TINYINT)
 | |
| SET v = 127;
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` bigint(20) DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = 127;
 | |
| @a	@a = 127
 | |
| 127	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| SMALLINT
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v SMALLINT)
 | |
| SET v = 32767;
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` bigint(20) DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = 32767;
 | |
| @a	@a = 32767
 | |
| 32767	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| MEDIUMINT
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v MEDIUMINT)
 | |
| SET v = 8388607;
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` bigint(20) DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = 8388607;
 | |
| @a	@a = 8388607
 | |
| 8388607	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| INT
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v INT)
 | |
| SET v = 2147483647;
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` bigint(20) DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = 2147483647;
 | |
| @a	@a = 2147483647
 | |
| 2147483647	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| BIGINT
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v BIGINT)
 | |
| SET v = 9223372036854775807;
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` bigint(20) DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = 9223372036854775807;
 | |
| @a	@a = 9223372036854775807
 | |
| 9223372036854775807	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| BIT(11)
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v BIT(11))
 | |
| SET v = b'10100100101';
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` bigint(20) unsigned DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = b'10100100101';
 | |
| @a	@a = b'10100100101'
 | |
| 1317	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| TIMESTAMP
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v TIMESTAMP)
 | |
| SET v = '2007-11-18 15:01:02';
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longblob DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = '2007-11-18 15:01:02';
 | |
| @a	@a = '2007-11-18 15:01:02'
 | |
| 2007-11-18 15:01:02	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| DATETIME
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v DATETIME)
 | |
| SET v = '1234-11-12 12:34:59';
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longblob DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = '1234-11-12 12:34:59';
 | |
| @a	@a = '1234-11-12 12:34:59'
 | |
| 1234-11-12 12:34:59	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| TIME
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v TIME)
 | |
| SET v = '123:45:01';
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longblob DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = '123:45:01';
 | |
| @a	@a = '123:45:01'
 | |
| 123:45:01	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| DATE
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v DATE)
 | |
| SET v = '1234-11-12';
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longblob DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = '1234-11-12';
 | |
| @a	@a = '1234-11-12'
 | |
| 1234-11-12	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| YEAR
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v YEAR)
 | |
| SET v = 2010;
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` bigint(20) unsigned DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = 2010;
 | |
| @a	@a = 2010
 | |
| 2010	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| FLOAT(7, 4)
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v FLOAT(7, 4))
 | |
| SET v = 123.4567;
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` double DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a - 123.4567 < 0.00001;
 | |
| @a	@a - 123.4567 < 0.00001
 | |
| 123.45670318603516	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| DOUBLE(8, 5)
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v DOUBLE(8, 5))
 | |
| SET v = 123.45678;
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` double DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a - 123.45678 < 0.000001;
 | |
| @a	@a - 123.45678 < 0.000001
 | |
| 123.45678	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| DECIMAL(9, 6)
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v DECIMAL(9, 6))
 | |
| SET v = 123.456789;
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` decimal(65,38) DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = 123.456789;
 | |
| @a	@a = 123.456789
 | |
| 123.456789	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| CHAR(32)
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v CHAR(32))
 | |
| SET v = REPEAT('a', 16);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longtext DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('a', 16);
 | |
| @a	@a = REPEAT('a', 16)
 | |
| aaaaaaaaaaaaaaaa	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| VARCHAR(32)
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v VARCHAR(32))
 | |
| SET v = REPEAT('b', 16);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longtext DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('b', 16);
 | |
| @a	@a = REPEAT('b', 16)
 | |
| bbbbbbbbbbbbbbbb	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| TINYTEXT
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v TINYTEXT)
 | |
| SET v = REPEAT('c', 16);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longtext DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('c', 16);
 | |
| @a	@a = REPEAT('c', 16)
 | |
| cccccccccccccccc	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| TEXT
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v TEXT)
 | |
| SET v = REPEAT('d', 16);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longtext DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('d', 16);
 | |
| @a	@a = REPEAT('d', 16)
 | |
| dddddddddddddddd	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| MEDIUMTEXT
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v MEDIUMTEXT)
 | |
| SET v = REPEAT('e', 16);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longtext DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('e', 16);
 | |
| @a	@a = REPEAT('e', 16)
 | |
| eeeeeeeeeeeeeeee	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| LONGTEXT
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v LONGTEXT)
 | |
| SET v = REPEAT('f', 16);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longtext DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('f', 16);
 | |
| @a	@a = REPEAT('f', 16)
 | |
| ffffffffffffffff	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| BINARY(32)
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v BINARY(32))
 | |
| SET v = REPEAT('g', 32);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longblob DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('g', 32);
 | |
| @a	@a = REPEAT('g', 32)
 | |
| gggggggggggggggggggggggggggggggg	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| VARBINARY(32)
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v VARBINARY(32))
 | |
| SET v = REPEAT('h', 16);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longblob DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('h', 16);
 | |
| @a	@a = REPEAT('h', 16)
 | |
| hhhhhhhhhhhhhhhh	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| TINYBLOB
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v TINYBLOB)
 | |
| SET v = REPEAT('i', 16);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longblob DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('i', 16);
 | |
| @a	@a = REPEAT('i', 16)
 | |
| iiiiiiiiiiiiiiii	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| BLOB
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v BLOB)
 | |
| SET v = REPEAT('j', 16);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longblob DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('j', 16);
 | |
| @a	@a = REPEAT('j', 16)
 | |
| jjjjjjjjjjjjjjjj	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| MEDIUMBLOB
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v MEDIUMBLOB)
 | |
| SET v = REPEAT('k', 16);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longblob DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('k', 16);
 | |
| @a	@a = REPEAT('k', 16)
 | |
| kkkkkkkkkkkkkkkk	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| LONGBLOB
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v LONGBLOB)
 | |
| SET v = REPEAT('l', 16);
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longblob DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = REPEAT('l', 16);
 | |
| @a	@a = REPEAT('l', 16)
 | |
| llllllllllllllll	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| SET('aaa', 'bbb')
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v SET('aaa', 'bbb'))
 | |
| SET v = 'aaa';
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longtext DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = 'aaa';
 | |
| @a	@a = 'aaa'
 | |
| aaa	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| ENUM('aaa', 'bbb')
 | |
| 
 | |
| CREATE PROCEDURE p1(OUT v ENUM('aaa', 'bbb'))
 | |
| SET v = 'aaa';
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TEMPORARY TABLE tmp1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE tmp1;
 | |
| Table	Create Table
 | |
| tmp1	CREATE TEMPORARY TABLE `tmp1` (
 | |
|   `c1` longtext DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SELECT @a, @a = 'aaa';
 | |
| @a	@a = 'aaa'
 | |
| aaa	1
 | |
| DROP TEMPORARY TABLE tmp1;
 | |
| DROP PROCEDURE p1;
 | |
| 
 | |
| # End of WL#4435.
 | |
| #
 | |
| # WL#4284: Transactional DDL locking
 | |
| #
 | |
| DROP TABLE IF EXISTS t1;
 | |
| CREATE TABLE t1 (a INT);
 | |
| BEGIN;
 | |
| SELECT * FROM t1;
 | |
| a
 | |
| # Test that preparing a CREATE TABLE does not take a exclusive metdata lock.
 | |
| PREPARE stmt1 FROM "CREATE TABLE t1 AS SELECT 1";
 | |
| EXECUTE stmt1;
 | |
| ERROR 42S01: Table 't1' already exists
 | |
| DEALLOCATE PREPARE stmt1;
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # WL#4284: Transactional DDL locking
 | |
| #
 | |
| # Test that metadata locks taken during prepare are released.
 | |
| #
 | |
| connect con1,localhost,root,,;
 | |
| connection default;
 | |
| DROP TABLE IF EXISTS t1;
 | |
| CREATE TABLE t1 (a INT);
 | |
| connection con1;
 | |
| BEGIN;
 | |
| PREPARE stmt1 FROM "SELECT * FROM t1";
 | |
| connection default;
 | |
| DROP TABLE t1;
 | |
| disconnect con1;
 | |
| 
 | |
| #
 | |
| # Bug#56115: invalid memory reads when PS selecting from
 | |
| #            information_schema tables
 | |
| # Bug#58701: crash in Field::make_field, cursor-protocol
 | |
| #
 | |
| # NOTE: MTR should be run both with --ps-protocol and --cursor-protocol.
 | |
| #
 | |
| 
 | |
| SELECT *
 | |
| FROM (SELECT 1 UNION SELECT 2) t;
 | |
| 1
 | |
| 1
 | |
| 2
 | |
| 
 | |
| # Bug#13805127: Stored program cache produces wrong result in same THD
 | |
| 
 | |
| PREPARE s1 FROM 
 | |
| "
 | |
| SELECT c1, t2.c2, count(c3)
 | |
| FROM
 | |
|   (
 | |
|   SELECT 3 as c2 FROM dual WHERE @x = 1
 | |
|   UNION
 | |
|   SELECT 2       FROM dual WHERE @x = 1 OR @x = 2
 | |
|   ) AS t1,
 | |
|   (
 | |
|   SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
 | |
|   UNION
 | |
|   SELECT '2012-03-01 02:00:00',       3,       2       FROM dual
 | |
|   UNION
 | |
|   SELECT '2012-03-01 01:00:00',       2,       1       FROM dual
 | |
|   ) AS t2
 | |
| WHERE t2.c2 = t1.c2
 | |
| GROUP BY c1, c2
 | |
| ";
 | |
| 
 | |
| SET @x = 1;
 | |
| SELECT c1, t2.c2, count(c3)
 | |
| FROM
 | |
| (
 | |
| SELECT 3 as c2 FROM dual WHERE @x = 1
 | |
| UNION
 | |
| SELECT 2       FROM dual WHERE @x = 1 OR @x = 2
 | |
| ) AS t1,
 | |
| (
 | |
| SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
 | |
| UNION
 | |
| SELECT '2012-03-01 02:00:00',       3,       2       FROM dual
 | |
| UNION
 | |
| SELECT '2012-03-01 01:00:00',       2,       1       FROM dual
 | |
| ) AS t2
 | |
| WHERE t2.c2 = t1.c2
 | |
| GROUP BY c1, c2;
 | |
| c1	c2	count(c3)
 | |
| 2012-03-01 01:00:00	2	1
 | |
| 2012-03-01 01:00:00	3	1
 | |
| 2012-03-01 02:00:00	3	1
 | |
| 
 | |
| EXECUTE s1;
 | |
| c1	c2	count(c3)
 | |
| 2012-03-01 01:00:00	2	1
 | |
| 2012-03-01 01:00:00	3	1
 | |
| 2012-03-01 02:00:00	3	1
 | |
| 
 | |
| SET @x = 2;
 | |
| SELECT c1, t2.c2, count(c3)
 | |
| FROM
 | |
| (
 | |
| SELECT 3 as c2 FROM dual WHERE @x = 1
 | |
| UNION
 | |
| SELECT 2       FROM dual WHERE @x = 1 OR @x = 2
 | |
| ) AS t1,
 | |
| (
 | |
| SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
 | |
| UNION
 | |
| SELECT '2012-03-01 02:00:00',       3,       2       FROM dual
 | |
| UNION
 | |
| SELECT '2012-03-01 01:00:00',       2,       1       FROM dual
 | |
| ) AS t2
 | |
| WHERE t2.c2 = t1.c2
 | |
| GROUP BY c1, c2;
 | |
| c1	c2	count(c3)
 | |
| 2012-03-01 01:00:00	2	1
 | |
| 
 | |
| EXECUTE s1;
 | |
| c1	c2	count(c3)
 | |
| 2012-03-01 01:00:00	2	1
 | |
| 
 | |
| SET @x = 1;
 | |
| SELECT c1, t2.c2, count(c3)
 | |
| FROM
 | |
| (
 | |
| SELECT 3 as c2 FROM dual WHERE @x = 1
 | |
| UNION
 | |
| SELECT 2       FROM dual WHERE @x = 1 OR @x = 2
 | |
| ) AS t1,
 | |
| (
 | |
| SELECT '2012-03-01 01:00:00' AS c1, 3 as c2, 1 as c3 FROM dual
 | |
| UNION
 | |
| SELECT '2012-03-01 02:00:00',       3,       2       FROM dual
 | |
| UNION
 | |
| SELECT '2012-03-01 01:00:00',       2,       1       FROM dual
 | |
| ) AS t2
 | |
| WHERE t2.c2 = t1.c2
 | |
| GROUP BY c1, c2;
 | |
| c1	c2	count(c3)
 | |
| 2012-03-01 01:00:00	2	1
 | |
| 2012-03-01 01:00:00	3	1
 | |
| 2012-03-01 02:00:00	3	1
 | |
| 
 | |
| EXECUTE s1;
 | |
| c1	c2	count(c3)
 | |
| 2012-03-01 01:00:00	2	1
 | |
| 2012-03-01 01:00:00	3	1
 | |
| 2012-03-01 02:00:00	3	1
 | |
| DEALLOCATE PREPARE s1;
 | |
| prepare stmt from "select date('2010-10-10') between '2010-09-09' and ?";
 | |
| set @a='2010-11-11';
 | |
| execute stmt using @a;
 | |
| date('2010-10-10') between '2010-09-09' and ?
 | |
| 1
 | |
| execute stmt using @a;
 | |
| date('2010-10-10') between '2010-09-09' and ?
 | |
| 1
 | |
| set @a='2010-08-08';
 | |
| execute stmt using @a;
 | |
| date('2010-10-10') between '2010-09-09' and ?
 | |
| 0
 | |
| execute stmt using @a;
 | |
| date('2010-10-10') between '2010-09-09' and ?
 | |
| 0
 | |
| #
 | |
| # Bug #892725: look-up is changed for a full scan when executing PS
 | |
| #
 | |
| create table t1 (a int primary key, b int);
 | |
| insert into t1 values
 | |
| (7,70), (3,40), (4,40), (8,70), (1,70), (9,50), (2,70);
 | |
| prepare st from 'select * from t1 where a=8';
 | |
| flush status;
 | |
| execute st;
 | |
| a	b
 | |
| 8	70
 | |
| show status like '%Handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	0
 | |
| Handler_read_prev	0
 | |
| Handler_read_retry	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| flush status;
 | |
| execute st;
 | |
| a	b
 | |
| 8	70
 | |
| show status like '%Handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	0
 | |
| Handler_read_prev	0
 | |
| Handler_read_retry	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| flush status;
 | |
| select * from t1 use index() where a=3;
 | |
| a	b
 | |
| 3	40
 | |
| show status like '%Handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	0
 | |
| Handler_read_last	0
 | |
| Handler_read_next	0
 | |
| Handler_read_prev	0
 | |
| Handler_read_retry	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	8
 | |
| flush status;
 | |
| execute st;
 | |
| a	b
 | |
| 8	70
 | |
| show status like '%Handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	0
 | |
| Handler_read_prev	0
 | |
| Handler_read_retry	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| deallocate prepare st;
 | |
| drop table t1;
 | |
| #
 | |
| # Bug mdev-5410: crash at the execution of PS with subselect
 | |
| #                formed by UNION with global ORDER BY
 | |
| #
 | |
| CREATE TABLE t1 (a int DEFAULT NULL);
 | |
| INSERT INTO t1 VALUES (2), (4);
 | |
| CREATE TABLE t2 (b int DEFAULT NULL);
 | |
| INSERT INTO t2 VALUES (1), (3);
 | |
| PREPARE stmt FROM "
 | |
| SELECT c1 FROM (SELECT (SELECT a FROM t1 WHERE t1.a <= t2.b
 | |
|                         UNION ALL
 | |
|                         SELECT a FROM t1 WHERE t1.a+3<= t2.b
 | |
|                         ORDER BY a DESC) AS c1 FROM t2) t3;
 | |
| ";
 | |
| EXECUTE stmt;
 | |
| c1
 | |
| NULL
 | |
| 2
 | |
| EXECUTE stmt;
 | |
| c1
 | |
| NULL
 | |
| 2
 | |
| DROP TABLE t1,t2;
 | |
| #
 | |
| # MDEV-5369: Wrong result (0 instead of NULL) on 2nd execution of 
 | |
| # PS with LEFT JOIN, TEMPTABLE view
 | |
| #
 | |
| CREATE TABLE t1 (a INT) ENGINE=MyISAM;
 | |
| INSERT INTO t1 VALUES (0),(8);
 | |
| CREATE TABLE t2 (pk INT PRIMARY KEY) ENGINE=MyISAM;
 | |
| CREATE ALGORITHM=TEMPTABLE VIEW v2 AS SELECT * FROM t2;
 | |
| SELECT SUM(pk) FROM t1 LEFT JOIN v2 ON a = pk;
 | |
| SUM(pk)
 | |
| NULL
 | |
| PREPARE stmt FROM "SELECT SUM(pk) FROM t1 LEFT JOIN v2 ON a = pk";
 | |
| EXECUTE stmt;
 | |
| SUM(pk)
 | |
| NULL
 | |
| EXECUTE stmt;
 | |
| SUM(pk)
 | |
| NULL
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP VIEW v2;
 | |
| DROP TABLE t1, t2;
 | |
| # End of 5.3 tests
 | |
| #
 | |
| # MDEV-5505: Assertion `! is_set()' fails on PREPARE SELECT
 | |
| # with out of range in GROUP BY
 | |
| #
 | |
| CREATE TABLE t1 (a INT);
 | |
| PREPARE stmt FROM "SELECT 1 FROM t1 GROUP BY 0 OR 18446744073709551615+1";
 | |
| execute stmt;
 | |
| 1
 | |
| SELECT 1 FROM t1 GROUP BY 0 OR 18446744073709551615+1;
 | |
| 1
 | |
| insert into t1 values(1),(2);
 | |
| execute stmt;
 | |
| ERROR 22003: BIGINT UNSIGNED value is out of range in '18446744073709551615 + 1'
 | |
| SELECT 1 FROM t1 GROUP BY 0 OR 18446744073709551615+1;
 | |
| ERROR 22003: BIGINT UNSIGNED value is out of range in '18446744073709551615 + 1'
 | |
| deallocate prepare stmt;
 | |
| drop table t1;
 | |
| # End of 5.3 tests
 | |
| #
 | |
| # MDEV-8756: MariaDB 10.0.21 crashes during PREPARE
 | |
| #
 | |
| CREATE TABLE t1 ( id INT(10), value INT(10) );
 | |
| CREATE TABLE t2 ( id INT(10) );
 | |
| SET @save_sql_mode= @@sql_mode;
 | |
| SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';
 | |
| PREPARE stmt FROM 'UPDATE t1 t1 SET value = (SELECT 1 FROM t2 WHERE id = t1.id)';
 | |
| execute stmt;
 | |
| insert into t1 values (1,10),(2,10),(3,10);
 | |
| insert into t2 values (1),(2);
 | |
| execute stmt;
 | |
| select * from t1;
 | |
| id	value
 | |
| 1	1
 | |
| 2	1
 | |
| 3	NULL
 | |
| deallocate prepare stmt;
 | |
| SET SESSION sql_mode = @save_sql_mode;
 | |
| DROP TABLE t1,t2;
 | |
| #
 | |
| # MDEV-8833: Crash of server on prepared statement with
 | |
| # conversion to semi-join
 | |
| #
 | |
| CREATE TABLE t1 (column1 INT);
 | |
| INSERT INTO t1 VALUES (3),(9);
 | |
| CREATE TABLE t2 (column2 INT);
 | |
| INSERT INTO t2 VALUES (1),(4);
 | |
| CREATE TABLE t3 (column3 INT);
 | |
| INSERT INTO t3 VALUES (6),(8);
 | |
| CREATE TABLE t4 (column4 INT);
 | |
| INSERT INTO t4 VALUES (2),(5);
 | |
| PREPARE stmt FROM "SELECT ( SELECT MAX( table1.column1 ) AS field1 
 | |
| FROM t1 AS table1
 | |
| WHERE table3.column3 IN ( SELECT table2.column2 AS field2 FROM t2 AS table2 ) 
 | |
| ) AS sq
 | |
| FROM t3 AS table3, t4 AS table4";
 | |
| EXECUTE stmt;
 | |
| sq
 | |
| NULL
 | |
| NULL
 | |
| NULL
 | |
| NULL
 | |
| EXECUTE stmt;
 | |
| sq
 | |
| NULL
 | |
| NULL
 | |
| NULL
 | |
| NULL
 | |
| deallocate prepare stmt;
 | |
| drop table t1,t2,t3,t4;
 | |
| #
 | |
| # MDEV-11859: the plans for the first and the second executions
 | |
| #             of PS are not the same
 | |
| #
 | |
| create table t1 (id int, c varchar(3), key idx(c))engine=myisam;
 | |
| insert into t1 values (3,'bar'), (1,'xxx'), (2,'foo'), (5,'yyy');
 | |
| prepare stmt1 from
 | |
| "explain extended
 | |
|  select * from t1 where (1, 2) in ( select 3, 4 ) or c = 'foo'";
 | |
| execute stmt1;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	PRIMARY	t1	ref	idx	idx	6	const	1	100.00	Using index condition
 | |
| 2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| Warnings:
 | |
| Note	1003	/* select#1 */ select `test`.`t1`.`id` AS `id`,`test`.`t1`.`c` AS `c` from `test`.`t1` where `test`.`t1`.`c` = 'foo'
 | |
| execute stmt1;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	PRIMARY	t1	ref	idx	idx	6	const	1	100.00	Using index condition
 | |
| 2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| Warnings:
 | |
| Note	1003	/* select#1 */ select `test`.`t1`.`id` AS `id`,`test`.`t1`.`c` AS `c` from `test`.`t1` where `test`.`t1`.`c` = 'foo'
 | |
| deallocate prepare stmt1;
 | |
| prepare stmt1 from
 | |
| "select * from t1 where (1, 2) in ( select 3, 4 ) or c = 'foo'";
 | |
| flush status;
 | |
| execute stmt1;
 | |
| id	c
 | |
| 2	foo
 | |
| show status like '%Handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	1
 | |
| Handler_read_prev	0
 | |
| Handler_read_retry	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| flush status;
 | |
| execute stmt1;
 | |
| id	c
 | |
| 2	foo
 | |
| show status like '%Handler_read%';
 | |
| Variable_name	Value
 | |
| Handler_read_first	0
 | |
| Handler_read_key	1
 | |
| Handler_read_last	0
 | |
| Handler_read_next	1
 | |
| Handler_read_prev	0
 | |
| Handler_read_retry	0
 | |
| Handler_read_rnd	0
 | |
| Handler_read_rnd_deleted	0
 | |
| Handler_read_rnd_next	0
 | |
| deallocate prepare stmt1;
 | |
| prepare stmt2 from
 | |
| "explain extended
 | |
|  select * from t1 where (1, 2) in ( select 3, 4 )";
 | |
| execute stmt2;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
 | |
| 2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| Warnings:
 | |
| Note	1003	/* select#1 */ select `test`.`t1`.`id` AS `id`,`test`.`t1`.`c` AS `c` from `test`.`t1` where 0
 | |
| execute stmt2;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
 | |
| 2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| Warnings:
 | |
| Note	1003	/* select#1 */ select `test`.`t1`.`id` AS `id`,`test`.`t1`.`c` AS `c` from `test`.`t1` where 0
 | |
| deallocate prepare stmt2;
 | |
| drop table t1;
 | |
| #
 | |
| # MDEV-9208: Function->Function->View = Mysqld segfault
 | |
| # (Server crashes in Dependency_marker::visit_field on 2nd
 | |
| # execution with merged subquery)
 | |
| #
 | |
| CREATE TABLE t1 (i1 INT);
 | |
| insert into t1 values(1),(2);
 | |
| CREATE TABLE t2 (i2 INT);
 | |
| insert into t2 values(1),(2);
 | |
| prepare stmt from "
 | |
|   select 1 from (
 | |
|     select
 | |
|       if (i1<0, 0, 0) as f1,
 | |
|       (select f1) as f2
 | |
|     from t1, t2
 | |
|   ) sq
 | |
| ";
 | |
| execute stmt;
 | |
| 1
 | |
| 1
 | |
| 1
 | |
| 1
 | |
| 1
 | |
| execute stmt;
 | |
| 1
 | |
| 1
 | |
| 1
 | |
| 1
 | |
| 1
 | |
| drop table t1,t2;
 | |
| #
 | |
| # MDEV-9619: Assertion `null_ref_table' failed in virtual
 | |
| # table_map Item_direct_view_ref::used_tables() const on 2nd
 | |
| # execution of PS
 | |
| #
 | |
| CREATE TABLE t1 (f1 VARCHAR(10)) ENGINE=MyISAM;
 | |
| CREATE ALGORITHM=MERGE VIEW v1 AS SELECT * FROM t1;
 | |
| INSERT INTO t1 VALUES ('a'),('b');
 | |
| CREATE TABLE t2 (f2 VARCHAR(10)) ENGINE=MyISAM;
 | |
| INSERT INTO t2 VALUES ('c'),('d');
 | |
| PREPARE stmt FROM "SELECT * FROM v1 WHERE f1 = SOME ( SELECT f2 FROM t2 )";
 | |
| EXECUTE stmt;
 | |
| f1
 | |
| EXECUTE stmt;
 | |
| f1
 | |
| insert into t1 values ('c');
 | |
| EXECUTE stmt;
 | |
| f1
 | |
| c
 | |
| EXECUTE stmt;
 | |
| f1
 | |
| c
 | |
| deallocate prepare stmt;
 | |
| drop view v1;
 | |
| drop table t1,t2;
 | |
| CREATE TABLE t1 (f1 VARCHAR(10)) ENGINE=MyISAM;
 | |
| CREATE ALGORITHM=MERGE VIEW v1 AS SELECT * FROM t1;
 | |
| INSERT INTO t1 VALUES ('a'),('b');
 | |
| CREATE TABLE t2 (f2 VARCHAR(10)) ENGINE=MyISAM;
 | |
| INSERT INTO t2 VALUES ('c'),('d');
 | |
| PREPARE stmt FROM "SELECT * FROM v1 WHERE (f1,f1) = SOME ( SELECT f2,f2 FROM t2 )";
 | |
| EXECUTE stmt;
 | |
| f1
 | |
| EXECUTE stmt;
 | |
| f1
 | |
| insert into t1 values ('c');
 | |
| EXECUTE stmt;
 | |
| f1
 | |
| c
 | |
| EXECUTE stmt;
 | |
| f1
 | |
| c
 | |
| deallocate prepare stmt;
 | |
| drop view v1;
 | |
| drop table t1,t2;
 | |
| CREATE TABLE t1 (column1 INT) ENGINE=MyISAM;
 | |
| INSERT INTO t1 VALUES (3),(9);
 | |
| CREATE TABLE t2 (column2 INT) ENGINE=MyISAM;
 | |
| INSERT INTO t2 VALUES (1),(4);
 | |
| CREATE TABLE t3 (column3 INT) ENGINE=MyISAM;
 | |
| INSERT INTO t3 VALUES (6),(8);
 | |
| CREATE TABLE t4 (column4 INT) ENGINE=MyISAM;
 | |
| INSERT INTO t4 VALUES (2),(5);
 | |
| PREPARE stmt FROM "
 | |
| SELECT ( 
 | |
|   SELECT MAX( table1.column1 ) AS field1 
 | |
|   FROM t1 AS table1
 | |
|   WHERE (111,table3.column3) IN ( SELECT 111,table2.column2 AS field2 FROM t2 AS table2 ) 
 | |
| ) AS sq
 | |
| FROM t3 AS table3, t4 AS table4 GROUP BY sq
 | |
| ";
 | |
| EXECUTE stmt;
 | |
| sq
 | |
| NULL
 | |
| EXECUTE stmt;
 | |
| sq
 | |
| NULL
 | |
| deallocate prepare stmt;
 | |
| drop table t1,t2,t3,t4;
 | |
| create table t1 (a int, b int, c int);
 | |
| create table t2 (x int, y int, z int);
 | |
| create table t3 as select * from t1;
 | |
| insert into t1 values (1,2,3),(4,5,6),(100,200,300),(400,500,600);
 | |
| insert into t2 values (1,2,3),(7,8,9),(100,200,300),(400,500,600);
 | |
| insert into t3 values (1,2,3),(11,12,13),(100,0,0),(400,500,600);
 | |
| set @optimizer_switch_save=@@optimizer_switch;
 | |
| set @join_cache_level_save=@@join_cache_level;
 | |
| set optimizer_switch='materialization=off';
 | |
| set join_cache_level=0;
 | |
| select * from t1 where (select a,b from t3 where t3.c=t1.c) in (select x,y from t2 where t1.c= t2.z);
 | |
| a	b	c
 | |
| 1	2	3
 | |
| 400	500	600
 | |
| prepare stmt from "select * from t1 where (select a,b from t3 where t3.c=t1.c) in (select x,y from t2 where t1.c= t2.z)";
 | |
| EXECUTE stmt;
 | |
| a	b	c
 | |
| 1	2	3
 | |
| 400	500	600
 | |
| EXECUTE stmt;
 | |
| a	b	c
 | |
| 1	2	3
 | |
| 400	500	600
 | |
| create view v1 as select * from t1;
 | |
| create view v2 as select * from t2;
 | |
| create view v3 as select * from t3;
 | |
| select * from v1 where (select a,b from v3 where v3.c=v1.c) in (select x,y from v2 where v1.c= v2.z);
 | |
| a	b	c
 | |
| 1	2	3
 | |
| 400	500	600
 | |
| prepare stmt from "select * from v1 where (select a,b from v3 where v3.c=v1.c) in (select x,y from v2 where v1.c= v2.z)";
 | |
| EXECUTE stmt;
 | |
| a	b	c
 | |
| 1	2	3
 | |
| 400	500	600
 | |
| EXECUTE stmt;
 | |
| a	b	c
 | |
| 1	2	3
 | |
| 400	500	600
 | |
| set optimizer_switch=@optimizer_switch_save;
 | |
| set join_cache_level=@join_cache_level_save;
 | |
| deallocate prepare stmt;
 | |
| drop view v1,v2,v3;
 | |
| drop table t1,t2,t3;
 | |
| #
 | |
| # MDEV-10657: incorrect result returned with binary protocol
 | |
| # (prepared statements)
 | |
| #
 | |
| create table  t1 (code varchar(10) primary key);
 | |
| INSERT INTO t1(code) VALUES ('LINE1'), ('LINE2'), ('LINE3');
 | |
| SELECT X.*
 | |
| FROM
 | |
| (SELECT CODE, RN
 | |
| FROM
 | |
| (SELECT A.CODE, @cnt := @cnt + 1 AS RN
 | |
| FROM  t1 A, (SELECT @cnt := 0) C) T
 | |
| ) X;
 | |
| CODE	RN
 | |
| LINE1	1
 | |
| LINE2	2
 | |
| LINE3	3
 | |
| drop table t1;
 | |
| #
 | |
| # MDEV-17042: prepared statement does not return error with
 | |
| # SQL_MODE STRICT_TRANS_TABLES. (Part 1)
 | |
| #
 | |
| set @save_sql_mode=@@sql_mode;
 | |
| set sql_mode='STRICT_ALL_TABLES';
 | |
| CREATE TABLE t1 (id int, count int);
 | |
| insert into t1 values (1,1),(0,2);
 | |
| update t1 set count = count + 1 where id = '1bad';
 | |
| ERROR 22007: Truncated incorrect DECIMAL value: '1bad'
 | |
| prepare stmt from "update t1 set count = count + 1 where id = '1bad'";
 | |
| execute stmt;
 | |
| ERROR 22007: Truncated incorrect DECIMAL value: '1bad'
 | |
| deallocate prepare stmt;
 | |
| prepare stmt from 'update t1 set count = count + 1 where id = ?';
 | |
| set @a = '1bad';
 | |
| execute stmt using @a;
 | |
| ERROR 22007: Truncated incorrect DECIMAL value: '1bad'
 | |
| deallocate prepare stmt;
 | |
| drop table t1;
 | |
| CREATE TABLE t1 (id decimal(10,5), count int);
 | |
| insert into t1 values (1,1),(0,2);
 | |
| update t1 set count = count + 1 where id = '1bad';
 | |
| ERROR 22007: Truncated incorrect DECIMAL value: '1bad'
 | |
| prepare stmt from "update t1 set count = count + 1 where id = '1bad'";
 | |
| execute stmt;
 | |
| ERROR 22007: Truncated incorrect DECIMAL value: '1bad'
 | |
| deallocate prepare stmt;
 | |
| prepare stmt from 'update t1 set count = count + 1 where id = ?';
 | |
| set @a = '1bad';
 | |
| execute stmt using @a;
 | |
| ERROR 22007: Truncated incorrect DECIMAL value: '1bad'
 | |
| deallocate prepare stmt;
 | |
| drop table t1;
 | |
| CREATE TABLE t1 (id double, count int);
 | |
| insert into t1 values (1,1),(0,2);
 | |
| update t1 set count = count + 1 where id = '1bad';
 | |
| ERROR 22007: Truncated incorrect DOUBLE value: '1bad'
 | |
| prepare stmt from "update t1 set count = count + 1 where id = '1bad'";
 | |
| execute stmt;
 | |
| ERROR 22007: Truncated incorrect DOUBLE value: '1bad'
 | |
| deallocate prepare stmt;
 | |
| prepare stmt from 'update t1 set count = count + 1 where id = ?';
 | |
| set @a = '1bad';
 | |
| execute stmt using @a;
 | |
| ERROR 22007: Truncated incorrect DOUBLE value: '1bad'
 | |
| deallocate prepare stmt;
 | |
| drop table t1;
 | |
| CREATE TABLE t1 (id date, count int);
 | |
| insert into t1 values ("2019-06-11",1),("2019-06-12",2);
 | |
| update t1 set count = count + 1 where id = '1bad';
 | |
| ERROR 22007: Truncated incorrect datetime value: '1bad'
 | |
| prepare stmt from "update t1 set count = count + 1 where id = '1bad'";
 | |
| execute stmt;
 | |
| ERROR 22007: Truncated incorrect datetime value: '1bad'
 | |
| deallocate prepare stmt;
 | |
| prepare stmt from 'update t1 set count = count + 1 where id = ?';
 | |
| set @a = '1bad';
 | |
| execute stmt using @a;
 | |
| ERROR 22007: Truncated incorrect datetime value: '1bad'
 | |
| deallocate prepare stmt;
 | |
| drop table t1;
 | |
| set sql_mode=@save_sql_mode;
 | |
| # End of 5.5 tests
 | |
| #
 | |
| # End of 10.0 tests
 | |
| #
 | |
| #
 | |
| # MDEV-12060 Crash in EXECUTE IMMEDIATE with an expression returning a GRANT command
 | |
| # (the 10.1 part)
 | |
| #
 | |
| CREATE PROCEDURE p2 ()
 | |
| BEGIN
 | |
| SET STATEMENT join_cache_level=CAST(CONCAT(_utf8'6',_latin1'') AS INT) FOR PREPARE stmt FROM 'SELECT 1';
 | |
| EXECUTE stmt;
 | |
| DEALLOCATE PREPARE stmt;
 | |
| END;
 | |
| /
 | |
| CALL p2();
 | |
| 1
 | |
| 1
 | |
| DROP PROCEDURE p2;
 | |
| BEGIN NOT ATOMIC
 | |
| SET STATEMENT join_cache_level=CAST(CONCAT(_utf8'6',_latin1'') AS INT) FOR PREPARE stmt FROM 'SELECT 1';
 | |
| EXECUTE stmt;
 | |
| DEALLOCATE PREPARE stmt;
 | |
| END;
 | |
| /
 | |
| 1
 | |
| 1
 | |
| BEGIN NOT ATOMIC
 | |
| SET STATEMENT join_cache_level=CAST(CONCAT(_utf8'6',_latin1'') AS INT) FOR PREPARE stmt FROM 'SELECT 1';
 | |
| DEALLOCATE PREPARE stmt;
 | |
| END;
 | |
| /
 | |
| BEGIN NOT ATOMIC
 | |
| PREPARE stmt FROM 'SELECT 1';
 | |
| SET STATEMENT join_cache_level=CAST(CONCAT(_utf8'6',_latin1'') AS INT) FOR EXECUTE stmt;
 | |
| DEALLOCATE PREPARE stmt;
 | |
| END;
 | |
| /
 | |
| 1
 | |
| 1
 | |
| #
 | |
| # MDEV-14572: Assertion `! is_set()' failed in
 | |
| # Diagnostics_area::set_eof_status upon EXPLAIN UPDATE in PS
 | |
| #
 | |
| CREATE TABLE t1 (a INT);
 | |
| CREATE TABLE t2 (b INT);
 | |
| PREPARE stmt FROM 'EXPLAIN UPDATE t1, t2 SET a = 1';
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	0	Const row not found
 | |
| 1	SIMPLE	t2	system	NULL	NULL	NULL	NULL	0	Const row not found
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	0	Const row not found
 | |
| 1	SIMPLE	t2	system	NULL	NULL	NULL	NULL	0	Const row not found
 | |
| deallocate prepare stmt;
 | |
| DROP TABLE t1, t2;
 | |
| #
 | |
| # End of 10.1 tests
 | |
| #
 | |
| #
 | |
| # MDEV-10709 Expressions as parameters to Dynamic SQL
 | |
| #
 | |
| #
 | |
| # Using a simple expressions as an EXECUTE parameter
 | |
| #
 | |
| PREPARE stmt FROM 'SELECT ? FROM DUAL';
 | |
| EXECUTE stmt USING 10;
 | |
| ?
 | |
| 10
 | |
| DEALLOCATE PREPARE stmt;
 | |
| PREPARE stmt FROM 'SELECT ? FROM DUAL';
 | |
| EXECUTE stmt USING TO_BASE64('xxx');
 | |
| ?
 | |
| eHh4
 | |
| DEALLOCATE PREPARE stmt;
 | |
| PREPARE stmt FROM 'SELECT ?+? FROM DUAL';
 | |
| EXECUTE stmt USING 10, 10 + 10;
 | |
| ?+?
 | |
| 30
 | |
| DEALLOCATE PREPARE stmt;
 | |
| PREPARE stmt FROM 'SELECT CONCAT(?,?) FROM DUAL';
 | |
| EXECUTE stmt USING 'xxx', CONCAT('yyy','zzz');
 | |
| CONCAT(?,?)
 | |
| xxxyyyzzz
 | |
| DEALLOCATE PREPARE stmt;
 | |
| #
 | |
| # Testing disallowed expressions in USING
 | |
| #
 | |
| PREPARE stmt FROM 'SELECT ? FROM DUAL';
 | |
| EXECUTE stmt USING (SELECT 1);
 | |
| ERROR 42000: EXECUTE..USING does not support subqueries or stored functions
 | |
| DEALLOCATE PREPARE stmt;
 | |
| CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test';
 | |
| PREPARE stmt FROM 'SELECT ? FROM DUAL';
 | |
| EXECUTE stmt USING f1();
 | |
| ERROR 42000: EXECUTE..USING does not support subqueries or stored functions
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP FUNCTION f1;
 | |
| #
 | |
| # Testing erroneous expressions in USING
 | |
| #
 | |
| PREPARE stmt FROM 'SELECT ?';
 | |
| EXECUTE stmt USING _latin1'a'=_latin2'a';
 | |
| ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (latin2_general_ci,COERCIBLE) for operation '='
 | |
| DEALLOCATE PREPARE stmt;
 | |
| PREPARE stmt FROM 'SELECT ?';
 | |
| EXECUTE stmt USING ROW(1,2);
 | |
| ERROR 21000: Operand should contain 1 column(s)
 | |
| DEALLOCATE PREPARE stmt;
 | |
| #
 | |
| # Creating tables from EXECUTE parameters
 | |
| #
 | |
| PREPARE stmt FROM 'CREATE TABLE t1 AS SELECT ? AS c1 FROM DUAL';
 | |
| EXECUTE stmt USING 10;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c1` int(2) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE stmt USING 10.123;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c1` decimal(5,3) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE stmt USING 10.123e0;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c1` double NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE stmt USING CURRENT_DATE;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c1` date NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE stmt USING CURRENT_TIMESTAMP;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c1` datetime NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE stmt USING CURRENT_TIMESTAMP(3);
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c1` datetime(3) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE stmt USING CURRENT_TIMESTAMP(6);
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c1` datetime(6) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE stmt USING CURRENT_TIME;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c1` time NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE stmt USING CURRENT_TIME(3);
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c1` time(3) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE stmt USING CURRENT_TIME(6);
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c1` time(6) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| DEALLOCATE PREPARE stmt;
 | |
| #
 | |
| # Using a user variable as an EXECUTE..USING out parameter
 | |
| #
 | |
| CREATE PROCEDURE p1(OUT a INT)
 | |
| BEGIN
 | |
| SET a:= 10;
 | |
| END;
 | |
| /
 | |
| SET @a=1;
 | |
| CALL p1(@a);
 | |
| SELECT @a;
 | |
| @a
 | |
| 10
 | |
| SET @a=2;
 | |
| PREPARE stmt FROM 'CALL p1(?)';
 | |
| EXECUTE stmt USING @a;
 | |
| SELECT @a;
 | |
| @a
 | |
| 10
 | |
| DROP PROCEDURE p1;
 | |
| #
 | |
| # Using an SP variable as an EXECUTE..USING out parameter
 | |
| #
 | |
| CREATE PROCEDURE p1 (OUT a INT)
 | |
| BEGIN
 | |
| SET a=10;
 | |
| END;
 | |
| /
 | |
| CREATE PROCEDURE p2 (OUT a INT)
 | |
| BEGIN
 | |
| PREPARE stmt FROM 'CALL p1(?)';
 | |
| EXECUTE stmt USING a;
 | |
| END;
 | |
| /
 | |
| SET @a= 1;
 | |
| CALL p2(@a);
 | |
| SELECT @a;
 | |
| @a
 | |
| 10
 | |
| DROP PROCEDURE p2;
 | |
| DROP PROCEDURE p1;
 | |
| #
 | |
| # Testing re-prepare on a table metadata update between PREPARE and EXECUTE
 | |
| #
 | |
| CREATE TABLE t1 (a INT);
 | |
| CREATE PROCEDURE p1(a INT)
 | |
| BEGIN
 | |
| INSERT INTO t1 VALUES (a);
 | |
| END;
 | |
| /
 | |
| PREPARE stmt FROM 'CALL p1(?)';
 | |
| EXECUTE stmt USING 10;
 | |
| SELECT * FROM t1;
 | |
| a
 | |
| 10
 | |
| CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET NEW.a=NEW.a+1;
 | |
| EXECUTE stmt USING 20;
 | |
| SELECT * FROM t1;
 | |
| a
 | |
| 10
 | |
| 21
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP PROCEDURE p1;
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # End of MDEV-10709 Expressions as parameters to Dynamic SQL
 | |
| #
 | |
| #
 | |
| # MDEV-10585 EXECUTE IMMEDIATE statement
 | |
| #
 | |
| EXECUTE IMMEDIATE 'SELECT 1 AS a';
 | |
| a
 | |
| 1
 | |
| SET @a=10;
 | |
| EXECUTE IMMEDIATE 'SELECT ? AS a' USING @a;
 | |
| a
 | |
| 10
 | |
| EXECUTE IMMEDIATE 'SELECT ? AS a' USING 20;
 | |
| a
 | |
| 20
 | |
| #
 | |
| # Erroneous queries
 | |
| #
 | |
| EXECUTE IMMEDIATE 'xxx';
 | |
| ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'xxx' at line 1
 | |
| EXECUTE IMMEDIATE 'SELECT 1' USING @a;
 | |
| ERROR HY000: Incorrect arguments to EXECUTE
 | |
| EXECUTE IMMEDIATE 'SELECT ?';
 | |
| ERROR HY000: Incorrect arguments to EXECUTE
 | |
| EXECUTE IMMEDIATE 'EXECUTE IMMEDIATE "SELECT 1"';
 | |
| ERROR HY000: This command is not supported in the prepared statement protocol yet
 | |
| EXECUTE IMMEDIATE 'PREPARE stmt FROM "SELECT 1"';
 | |
| ERROR HY000: This command is not supported in the prepared statement protocol yet
 | |
| EXECUTE IMMEDIATE 'EXECUTE stmt';
 | |
| ERROR HY000: This command is not supported in the prepared statement protocol yet
 | |
| EXECUTE IMMEDIATE 'DEALLOCATE PREPARE stmt';
 | |
| ERROR HY000: This command is not supported in the prepared statement protocol yet
 | |
| EXECUTE IMMEDIATE 'SELECT ?' USING _latin1'a'=_latin2'a';
 | |
| ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (latin2_general_ci,COERCIBLE) for operation '='
 | |
| EXECUTE IMMEDIATE 'SELECT ?' USING ROW(1,2);
 | |
| ERROR 21000: Operand should contain 1 column(s)
 | |
| #
 | |
| # Testing disallowed expressions in USING
 | |
| #
 | |
| EXECUTE IMMEDIATE 'SELECT ? FROM DUAL' USING (SELECT 1);
 | |
| ERROR 42000: EXECUTE..USING does not support subqueries or stored functions
 | |
| CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test';
 | |
| EXECUTE IMMEDIATE 'SELECT ? FROM DUAL' USING f1();
 | |
| ERROR 42000: EXECUTE IMMEDIATE does not support subqueries or stored functions
 | |
| DROP FUNCTION f1;
 | |
| #
 | |
| # DDL
 | |
| #
 | |
| EXECUTE IMMEDIATE 'CREATE TABLE t1 (a INT)';
 | |
| EXECUTE IMMEDIATE 'SHOW CREATE TABLE t1';
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` int(11) DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| EXECUTE IMMEDIATE 'DROP TABLE t1';
 | |
| SET @stmt= 'CREATE TABLE t1 (a INT)';
 | |
| EXECUTE IMMEDIATE @stmt;
 | |
| SET @stmt= 'SHOW CREATE TABLE t1';
 | |
| EXECUTE IMMEDIATE @stmt;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` int(11) DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| SET @stmt= 'DROP TABLE t1';
 | |
| EXECUTE IMMEDIATE @stmt;
 | |
| #
 | |
| # DDL with parameters
 | |
| #
 | |
| SET @a= 10, @b= 10.1, @c= 10e0, @d='str';
 | |
| EXECUTE IMMEDIATE
 | |
| 'CREATE TABLE t1 AS SELECT ? AS a,? AS b,? AS c,? AS d'
 | |
|   USING @a,@b,@c,@d;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` bigint(20) NOT NULL,
 | |
|   `b` decimal(3,1) NOT NULL,
 | |
|   `c` double NOT NULL,
 | |
|   `d` tinytext NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE IMMEDIATE
 | |
| 'CREATE TABLE t1 AS SELECT ? AS a,? AS b,? AS c,? AS d'
 | |
|   USING 10, 10.1, 10e0, 'str';
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` int(2) NOT NULL,
 | |
|   `b` decimal(3,1) NOT NULL,
 | |
|   `c` double NOT NULL,
 | |
|   `d` varchar(3) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE IMMEDIATE
 | |
| 'CREATE TABLE t1 AS SELECT ? AS t1,? AS t2, ? AS d1,? AS dt1, ? AS dt2'
 | |
|   USING TIME'10:20:30',
 | |
| TIME'10:20:30.123',
 | |
| DATE'2001-01-01',
 | |
| TIMESTAMP'2001-01-01 10:20:30',
 | |
| TIMESTAMP'2001-01-01 10:20:30.123';
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `t1` time NOT NULL,
 | |
|   `t2` time(3) NOT NULL,
 | |
|   `d1` date NOT NULL,
 | |
|   `dt1` datetime NOT NULL,
 | |
|   `dt2` datetime(3) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # Using a user variable as an EXECUTE IMMEDIATE..USING out parameter
 | |
| #
 | |
| CREATE PROCEDURE p1(OUT a INT)
 | |
| BEGIN
 | |
| SET a:= 10;
 | |
| END;
 | |
| /
 | |
| SET @a=1;
 | |
| CALL p1(@a);
 | |
| SELECT @a;
 | |
| @a
 | |
| 10
 | |
| SET @a=2;
 | |
| EXECUTE IMMEDIATE 'CALL p1(?)' USING @a;
 | |
| SELECT @a;
 | |
| @a
 | |
| 10
 | |
| DROP PROCEDURE p1;
 | |
| #
 | |
| # Using an SP variable as an EXECUTE IMMEDIATE..USING out parameter
 | |
| #
 | |
| CREATE PROCEDURE p1 (OUT a INT)
 | |
| BEGIN
 | |
| SET a=10;
 | |
| END;
 | |
| /
 | |
| CREATE PROCEDURE p2 (OUT a INT)
 | |
| BEGIN
 | |
| EXECUTE IMMEDIATE 'CALL p1(?)' USING a;
 | |
| END;
 | |
| /
 | |
| SET @a= 1;
 | |
| CALL p2(@a);
 | |
| SELECT @a;
 | |
| @a
 | |
| 10
 | |
| DROP PROCEDURE p2;
 | |
| DROP PROCEDURE p1;
 | |
| #
 | |
| # Changing user variables
 | |
| #
 | |
| SET @a=10;
 | |
| EXECUTE IMMEDIATE 'SET @a=@a+1';
 | |
| SELECT @a;
 | |
| @a
 | |
| 11
 | |
| #
 | |
| # SET STATEMENT
 | |
| #
 | |
| SET @@max_sort_length=1024;
 | |
| EXECUTE IMMEDIATE 'SET STATEMENT max_sort_length=1025 FOR SELECT @@max_sort_length';
 | |
| @@max_sort_length
 | |
| 1025
 | |
| SELECT @@max_sort_length;
 | |
| @@max_sort_length
 | |
| 1024
 | |
| SET @@max_sort_length=DEFAULT;
 | |
| #
 | |
| # Similar to prepared EXECUTE, IMMEDIATE is not allowed in stored functions
 | |
| #
 | |
| CREATE FUNCTION f1() RETURNS INT
 | |
| BEGIN
 | |
| EXECUTE IMMEDIATE 'DO 1';
 | |
| RETURN 1;
 | |
| END;
 | |
| $$
 | |
| ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
 | |
| #
 | |
| # Status variables
 | |
| #
 | |
| CREATE FUNCTION get_status_var(name TEXT) RETURNS INT
 | |
| RETURN (SELECT CAST(VARIABLE_VALUE AS INT)
 | |
| FROM INFORMATION_SCHEMA.SESSION_STATUS
 | |
| WHERE VARIABLE_NAME=name);
 | |
| CREATE PROCEDURE test_status_var(name TEXT)
 | |
| BEGIN
 | |
| SET @cnt0=get_status_var(name);
 | |
| EXECUTE IMMEDIATE 'DO 1';
 | |
| SET @cnt1=get_status_var(name);
 | |
| SELECT @cnt1-@cnt0 AS increment;
 | |
| END;
 | |
| $$
 | |
| # Note, EXECUTE IMMEDIATE does not increment COM_EXECUTE_SQL
 | |
| # It increments COM_EXECUTE_IMMEDIATE instead.
 | |
| CALL test_status_var('COM_EXECUTE_SQL');
 | |
| increment
 | |
| 0
 | |
| CALL test_status_var('COM_EXECUTE_IMMEDIATE');
 | |
| increment
 | |
| 1
 | |
| CALL test_status_var('COM_STMT_PREPARE');
 | |
| increment
 | |
| 1
 | |
| CALL test_status_var('COM_STMT_EXECUTE');
 | |
| increment
 | |
| 1
 | |
| CALL test_status_var('COM_STMT_CLOSE');
 | |
| increment
 | |
| 1
 | |
| DROP PROCEDURE test_status_var;
 | |
| DROP FUNCTION get_status_var;
 | |
| #
 | |
| # End of MDEV-10585 EXECUTE IMMEDIATE statement
 | |
| #
 | |
| #
 | |
| # MDEV-10866 Extend PREPARE and EXECUTE IMMEDIATE to understand expressions
 | |
| #
 | |
| #
 | |
| # Testing erroneous and diallowed prepare source
 | |
| #
 | |
| EXECUTE IMMEDIATE CONCAT(_latin1'SELECT 1 AS c FROM ', _latin2 'DUAL');
 | |
| ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (latin2_general_ci,COERCIBLE) for operation 'concat'
 | |
| PREPARE stmt FROM CONCAT(_latin1'SELECT 1 AS c FROM ', _latin2 'DUAL');
 | |
| ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (latin2_general_ci,COERCIBLE) for operation 'concat'
 | |
| EXECUTE IMMEDIATE (SELECT 'SELECT 1');
 | |
| ERROR 42000: EXECUTE IMMEDIATE does not support subqueries or stored functions
 | |
| PREPARE stmt FROM (SELECT 'SELECT 1');
 | |
| ERROR 42000: PREPARE..FROM does not support subqueries or stored functions
 | |
| EXECUTE IMMEDIATE a;
 | |
| ERROR 42S22: Unknown column 'a' in 'EXECUTE IMMEDIATE'
 | |
| PREPARE stmt FROM a;
 | |
| ERROR 42S22: Unknown column 'a' in 'PREPARE..FROM'
 | |
| EXECUTE IMMEDIATE NULL;
 | |
| ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NULL' at line 1
 | |
| PREPARE stmt FROM NULL;
 | |
| ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NULL' at line 1
 | |
| EXECUTE IMMEDIATE CONCAT(NULL);
 | |
| ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NULL' at line 1
 | |
| PREPARE stmt FROM CONCAT(NULL);
 | |
| ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NULL' at line 1
 | |
| EXECUTE IMMEDIATE ? USING 'SELECT 1';
 | |
| Got one of the listed errors
 | |
| EXECUTE IMMEDIATE 10;
 | |
| ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '10' at line 1
 | |
| EXECUTE IMMEDIATE TIME'10:20:30';
 | |
| ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '10:20:30' at line 1
 | |
| EXECUTE IMMEDIATE ROW('SELECT 1','SELECT 2');
 | |
| ERROR 21000: Operand should contain 1 column(s)
 | |
| EXECUTE IMMEDIATE MAX('SELECT 1 AS c');
 | |
| ERROR HY000: Invalid use of group function
 | |
| EXECUTE IMMEDIATE DEFAULT(a);
 | |
| ERROR 42S22: Unknown column 'a' in 'EXECUTE IMMEDIATE'
 | |
| EXECUTE IMMEDIATE VALUE(a);
 | |
| ERROR 42S22: Unknown column 'a' in 'EXECUTE IMMEDIATE'
 | |
| CREATE FUNCTION f1() RETURNS VARCHAR(64) RETURN 't1';
 | |
| EXECUTE IMMEDIATE f1();
 | |
| ERROR 42000: EXECUTE IMMEDIATE does not support subqueries or stored functions
 | |
| PREPARE stmt FROM f1();
 | |
| ERROR 42000: PREPARE..FROM does not support subqueries or stored functions
 | |
| DROP FUNCTION f1;
 | |
| EXECUTE IMMEDIATE non_existent();
 | |
| ERROR 42000: EXECUTE IMMEDIATE does not support subqueries or stored functions
 | |
| #
 | |
| # Testing literals in prepare source
 | |
| #
 | |
| EXECUTE IMMEDIATE N'SELECT 1 AS c';
 | |
| c
 | |
| 1
 | |
| EXECUTE IMMEDIATE _latin1'SELECT 1 AS c';
 | |
| c
 | |
| 1
 | |
| EXECUTE IMMEDIATE 'SELECT '  '1'  ' AS c'  ' FROM '  'DUAL';
 | |
| c
 | |
| 1
 | |
| EXECUTE IMMEDIATE 0x53454C4543542031 /*This is 'SELECT 1'*/;
 | |
| 1
 | |
| 1
 | |
| #
 | |
| # Testing user variables in prepare source
 | |
| #
 | |
| SET @stmt='SELECT 1 AS c FROM DUAL';
 | |
| EXECUTE IMMEDIATE @stmt;
 | |
| c
 | |
| 1
 | |
| PREPARE stmt FROM @stmt;
 | |
| EXECUTE stmt;
 | |
| c
 | |
| 1
 | |
| DEALLOCATE PREPARE stmt;
 | |
| SET @table_name='DUAL';
 | |
| EXECUTE IMMEDIATE CONCAT('SELECT 1 AS a FROM ', @table_name);
 | |
| a
 | |
| 1
 | |
| PREPARE stmt FROM CONCAT('SELECT 1 AS a FROM ', @table_name);
 | |
| EXECUTE stmt;
 | |
| a
 | |
| 1
 | |
| DEALLOCATE PREPARE stmt;
 | |
| #
 | |
| # Testing SP parameters and variables in prepare source
 | |
| #
 | |
| CREATE PROCEDURE p1(table_name VARCHAR(64))
 | |
| BEGIN
 | |
| EXECUTE IMMEDIATE CONCAT('SELECT 1 AS c FROM ', table_name);
 | |
| END;
 | |
| $$
 | |
| CALL p1('DUAL');
 | |
| c
 | |
| 1
 | |
| DROP PROCEDURE p1;
 | |
| CREATE PROCEDURE p1()
 | |
| BEGIN
 | |
| DECLARE table_name VARCHAR(64) DEFAULT 'DUAL';
 | |
| EXECUTE IMMEDIATE CONCAT('SELECT 1 AS c FROM ', table_name);
 | |
| END;
 | |
| $$
 | |
| CALL p1();
 | |
| c
 | |
| 1
 | |
| DROP PROCEDURE p1;
 | |
| #
 | |
| # Testing complex expressions
 | |
| #
 | |
| EXECUTE IMMEDIATE CONVERT('SELECT 1 AS c' USING utf8);
 | |
| c
 | |
| 1
 | |
| EXECUTE IMMEDIATE CAST('SELECT 1 AS c' AS CHAR);
 | |
| c
 | |
| 1
 | |
| EXECUTE IMMEDIATE _latin1'SELECT 1 AS c' COLLATE latin1_bin;
 | |
| c
 | |
| 1
 | |
| EXECUTE IMMEDIATE (((('SELECT 1 AS c'))));
 | |
| c
 | |
| 1
 | |
| EXECUTE IMMEDIATE CASE WHEN 1>2 THEN 'SELECT 1 AS c' ELSE 'SELECT 2 AS c' END;
 | |
| c
 | |
| 2
 | |
| EXECUTE IMMEDIATE TRIM('SELECT 1 AS c');
 | |
| c
 | |
| 1
 | |
| EXECUTE IMMEDIATE SUBSTRING('SELECT 1 AS c' FROM 1);
 | |
| c
 | |
| 1
 | |
| EXECUTE IMMEDIATE COALESCE(NULL, 'SELECT 1 AS c');
 | |
| c
 | |
| 1
 | |
| #
 | |
| # Testing SET STATEMENT and system variables
 | |
| #
 | |
| CREATE TABLE t1 (a INT);
 | |
| SET STATEMENT max_sort_length=1025 FOR EXECUTE IMMEDIATE CONCAT('INSERT INTO t1 VALUES (', @@max_sort_length, ')');
 | |
| SELECT * FROM t1;
 | |
| a
 | |
| 1025
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # End of MDEV-10866 Extend PREPARE and EXECUTE IMMEDIATE to understand expressions
 | |
| #
 | |
| #
 | |
| # MDEV-11360 Dynamic SQL: DEFAULT as a bind parameter
 | |
| #
 | |
| CREATE TABLE t1 (a INT DEFAULT 10, b INT DEFAULT NULL);
 | |
| EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?,?)' USING DEFAULT, DEFAULT;
 | |
| SELECT * FROM t1;
 | |
| a	b
 | |
| 10	NULL
 | |
| UPDATE t1 SET a=20, b=30;
 | |
| SELECT * FROM t1;
 | |
| a	b
 | |
| 20	30
 | |
| EXECUTE IMMEDIATE 'UPDATE t1 SET a=?,b=?' USING DEFAULT, DEFAULT;
 | |
| SELECT * FROM t1;
 | |
| a	b
 | |
| 10	NULL
 | |
| DROP TABLE t1;
 | |
| CREATE TABLE t1 (a INT DEFAULT 10);
 | |
| EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?+1)' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (CONCAT(?,?))' USING DEFAULT, 'test';
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| DROP TABLE t1;
 | |
| CREATE TABLE t1 (a INT DEFAULT 10);
 | |
| INSERT INTO t1 VALUES (20);
 | |
| EXECUTE IMMEDIATE 'UPDATE t1 SET a=?+1' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'UPDATE t1 SET a=CONCAT(?,?)' USING DEFAULT, 'test';
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| DROP TABLE t1;
 | |
| EXECUTE IMMEDIATE 'SELECT CAST(? AS SIGNED)' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT CAST(? AS DOUBLE)' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT CAST(? AS CHAR)' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT CAST(? AS DECIMAL(10,1))' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT CAST(? AS TIME)' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT CAST(? AS DATE)' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT CAST(? AS DATETIME)' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT ?+1' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT CONCAT(?,?)' USING DEFAULT,'test';
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT 1 LIMIT ?' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| CREATE TABLE t1 (a INT DEFAULT 10);
 | |
| INSERT INTO t1 VALUES (1),(2),(3);
 | |
| EXECUTE IMMEDIATE 'SELECT * FROM t1 LIMIT ?' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| DROP TABLE t1;
 | |
| # The output of this query in 'Note' is a syntactically incorrect query.
 | |
| # But as it's never logged, it's ok. It should be human readable only.
 | |
| EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT ?' USING DEFAULT;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| Warnings:
 | |
| Note	1003	select default AS `?`
 | |
| CREATE TABLE t1 (a INT);
 | |
| INSERT INTO t1 VALUES (1),(2),(3);
 | |
| EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT * FROM t1 WHERE ?+a<=>?+a' USING DEFAULT,DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # MDEV-11780 Crash with PREPARE + SP out parameter + literal
 | |
| #
 | |
| CREATE OR REPLACE PROCEDURE p1(OUT a INT)
 | |
| BEGIN
 | |
| SET a=10;
 | |
| END;
 | |
| $$
 | |
| PREPARE stmt FROM 'CALL p1(?)';
 | |
| EXECUTE stmt USING 10;
 | |
| ERROR 42000: OUT or INOUT argument 1 for routine test.p1 is not a variable or NEW pseudo-variable in BEFORE trigger
 | |
| EXECUTE stmt USING DEFAULT;
 | |
| ERROR 42000: OUT or INOUT argument 1 for routine test.p1 is not a variable or NEW pseudo-variable in BEFORE trigger
 | |
| EXECUTE stmt USING IGNORE;
 | |
| ERROR 42000: OUT or INOUT argument 1 for routine test.p1 is not a variable or NEW pseudo-variable in BEFORE trigger
 | |
| DEALLOCATE PREPARE stmt;
 | |
| EXECUTE IMMEDIATE 'CALL p1(?)' USING 10;
 | |
| ERROR 42000: OUT or INOUT argument 1 for routine test.p1 is not a variable or NEW pseudo-variable in BEFORE trigger
 | |
| EXECUTE IMMEDIATE 'CALL p1(?)' USING DEFAULT;
 | |
| ERROR 42000: OUT or INOUT argument 1 for routine test.p1 is not a variable or NEW pseudo-variable in BEFORE trigger
 | |
| EXECUTE IMMEDIATE 'CALL p1(?)' USING IGNORE;
 | |
| ERROR 42000: OUT or INOUT argument 1 for routine test.p1 is not a variable or NEW pseudo-variable in BEFORE trigger
 | |
| DROP PROCEDURE p1;
 | |
| #
 | |
| # MDEV-14434 Wrong result for CHARSET(CONCAT(?,const))
 | |
| #
 | |
| SET NAMES utf8;
 | |
| EXECUTE IMMEDIATE "SELECT CHARSET(CONCAT(5,_latin1'a'))";
 | |
| CHARSET(CONCAT(5,_latin1'a'))
 | |
| latin1
 | |
| EXECUTE IMMEDIATE "SELECT CHARSET(CONCAT(?,_latin1'a'))" USING 5;
 | |
| CHARSET(CONCAT(?,_latin1'a'))
 | |
| latin1
 | |
| EXECUTE IMMEDIATE "SELECT CHARSET(CONCAT(?,_latin1'a'))" USING 5.5;
 | |
| CHARSET(CONCAT(?,_latin1'a'))
 | |
| latin1
 | |
| EXECUTE IMMEDIATE "SELECT CHARSET(CONCAT(?,_latin1'a'))" USING 5.5e0;
 | |
| CHARSET(CONCAT(?,_latin1'a'))
 | |
| latin1
 | |
| EXECUTE IMMEDIATE "SELECT CHARSET(CONCAT(?,_latin1'a'))" USING TIME'10:20:30';
 | |
| CHARSET(CONCAT(?,_latin1'a'))
 | |
| latin1
 | |
| EXECUTE IMMEDIATE "SELECT CHARSET(CONCAT(?,_latin1'a'))" USING TIMESTAMP'2001-01-01 10:20:30';
 | |
| CHARSET(CONCAT(?,_latin1'a'))
 | |
| latin1
 | |
| EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING 5;
 | |
| COERCIBILITY(?)
 | |
| 5
 | |
| EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING 5.5;
 | |
| COERCIBILITY(?)
 | |
| 5
 | |
| EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING 5.5e0;
 | |
| COERCIBILITY(?)
 | |
| 5
 | |
| EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING TIME'10:20:30';
 | |
| COERCIBILITY(?)
 | |
| 5
 | |
| EXECUTE IMMEDIATE "SELECT COERCIBILITY(?)" USING TIMESTAMP'2001-01-01 10:20:30';
 | |
| COERCIBILITY(?)
 | |
| 5
 | |
| #
 | |
| # MDEV-14435 Different UNSIGNED flag of out user variable for YEAR parameter for direct vs prepared CALL
 | |
| #
 | |
| CREATE PROCEDURE p1(OUT v INT UNSIGNED) SET v = 2010;
 | |
| CALL p1(@a);
 | |
| PREPARE stmt FROM 'CALL p1(?)';
 | |
| EXECUTE stmt USING @b;
 | |
| DEALLOCATE PREPARE stmt;
 | |
| CREATE TABLE t1 AS SELECT @a AS a, @b AS b;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` bigint(20) unsigned DEFAULT NULL,
 | |
|   `b` bigint(20) unsigned DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| DROP PROCEDURE p1;
 | |
| CREATE PROCEDURE p1(OUT v YEAR) SET v = 2010;
 | |
| CALL p1(@a);
 | |
| PREPARE stmt FROM 'CALL p1(?)';
 | |
| EXECUTE stmt USING @b;
 | |
| DEALLOCATE PREPARE stmt;
 | |
| CREATE TABLE t1 AS SELECT @a AS a, @b AS b;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` bigint(20) unsigned DEFAULT NULL,
 | |
|   `b` bigint(20) unsigned DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| DROP PROCEDURE p1;
 | |
| CREATE PROCEDURE p1(OUT v BIT(16)) SET v = 2010;
 | |
| CALL p1(@a);
 | |
| PREPARE stmt FROM 'CALL p1(?)';
 | |
| EXECUTE stmt USING @b;
 | |
| DEALLOCATE PREPARE stmt;
 | |
| CREATE TABLE t1 AS SELECT @a AS a, @b AS b;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` bigint(20) unsigned DEFAULT NULL,
 | |
|   `b` bigint(20) unsigned DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| DROP PROCEDURE p1;
 | |
| #
 | |
| # MDEV-14426 Assertion in Diagnostics_area::set_error_status when using a bad datetime with PS and SP
 | |
| #
 | |
| CREATE PROCEDURE p1(OUT a VARCHAR(20))
 | |
| BEGIN
 | |
| SET a=10;
 | |
| END;
 | |
| $$
 | |
| BEGIN NOT ATOMIC
 | |
| DECLARE a DATETIME;
 | |
| CALL p1(a);
 | |
| END;
 | |
| $$
 | |
| ERROR 22007: Incorrect datetime value: '10' for column ``.``.`a` at row 0
 | |
| BEGIN NOT ATOMIC
 | |
| DECLARE a DATETIME;
 | |
| EXECUTE IMMEDIATE 'CALL p1(?)' USING a;
 | |
| END;
 | |
| $$
 | |
| ERROR 22007: Incorrect datetime value: '10' for column ``.``.`a` at row 0
 | |
| BEGIN NOT ATOMIC
 | |
| DECLARE a DATETIME;
 | |
| PREPARE stmt FROM 'CALL p1(?)';
 | |
| EXECUTE stmt  USING a;
 | |
| DEALLOCATE PREPARE stmt;
 | |
| END;
 | |
| $$
 | |
| ERROR 22007: Incorrect datetime value: '10' for column ``.``.`a` at row 0
 | |
| DROP PROCEDURE p1;
 | |
| #
 | |
| # MDEV-14454 Binary protocol returns wrong collation ID for SP OUT parameters
 | |
| #
 | |
| CREATE PROCEDURE p1(OUT v CHAR(32) CHARACTER SET utf8) SET v='aaa';
 | |
| PREPARE stmt1 FROM 'CALL p1(?)';
 | |
| EXECUTE stmt1 USING @a;
 | |
| CREATE TABLE t1 AS SELECT @a AS c1;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `c1` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| DROP PROCEDURE p1;
 | |
| #
 | |
| # MDEV-14467 Item_param: replace {INT|DECIMAL|REAL|STRING|TIME}_VALUE with Type_handler
 | |
| #
 | |
| EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT 1 FROM DUAL LIMIT ?' USING 10;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| Warnings:
 | |
| Note	1003	select 1 AS `1` limit 10
 | |
| EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT 1 FROM DUAL LIMIT ?' USING 10.1;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| Warnings:
 | |
| Note	1003	select 1 AS `1` limit 10
 | |
| EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT 1 FROM DUAL LIMIT ?' USING 10.1e0;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| Warnings:
 | |
| Note	1003	select 1 AS `1` limit 10
 | |
| EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT 1 FROM DUAL LIMIT ?' USING '10';
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| Warnings:
 | |
| Note	1003	select 1 AS `1` limit 10
 | |
| EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT 1 FROM DUAL LIMIT ?' USING TIME'10:10:10';
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| Warnings:
 | |
| Note	1003	select 1 AS `1` limit 101010
 | |
| EXECUTE IMMEDIATE 'CREATE OR REPLACE TABLE t1 AS SELECT 1 AS a,? AS b' USING 1;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` int(1) NOT NULL,
 | |
|   `b` int(1) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE IMMEDIATE 'CREATE OR REPLACE TABLE t1 AS SELECT 10 AS a,? AS b' USING 10;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` int(2) NOT NULL,
 | |
|   `b` int(2) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE IMMEDIATE 'CREATE OR REPLACE TABLE t1 AS SELECT 999999999 AS a,? AS b' USING 999999999;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` int(9) NOT NULL,
 | |
|   `b` int(9) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| EXECUTE IMMEDIATE 'CREATE OR REPLACE TABLE t1 AS SELECT 2147483647 AS a,? AS b' USING 2147483647;
 | |
| SHOW CREATE TABLE t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` bigint(10) NOT NULL,
 | |
|   `b` bigint(10) NOT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # MDEV-14603 signal 11 with short stacktrace
 | |
| #
 | |
| SET NAMES utf8;
 | |
| CREATE TABLE t1(i INT);
 | |
| CREATE PROCEDURE p1(tn VARCHAR(32))
 | |
| EXECUTE IMMEDIATE CONCAT('ANALYZE TABLE ',tn);
 | |
| CALL p1('t1');
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t1	analyze	status	Engine-independent statistics collected
 | |
| test.t1	analyze	status	Table is already up to date
 | |
| DROP PROCEDURE p1;
 | |
| DROP TABLE t1;
 | |
| SET NAMES utf8;
 | |
| CREATE PROCEDURE p1()
 | |
| EXECUTE IMMEDIATE CONCAT('SELECT ',CONVERT(RAND() USING latin1));
 | |
| CALL p1();
 | |
| DROP PROCEDURE p1;
 | |
| SET NAMES utf8;
 | |
| CREATE PROCEDURE p1()
 | |
| BEGIN
 | |
| PREPARE stmt FROM CONCAT('SELECT ',CONVERT(RAND() USING latin1));
 | |
| EXECUTE stmt;
 | |
| DEALLOCATE PREPARE stmt;
 | |
| END;
 | |
| $$
 | |
| CALL p1();
 | |
| DROP PROCEDURE p1;
 | |
| SET NAMES utf8;
 | |
| CREATE PROCEDURE p1(a VARCHAR(10) CHARACTER SET utf8)
 | |
| EXECUTE IMMEDIATE 'SELECT ?' USING CONCAT(a, CONVERT(RAND() USING latin1));
 | |
| CALL p1('x');
 | |
| DROP PROCEDURE p1;
 | |
| SET NAMES utf8;
 | |
| CREATE PROCEDURE p1(a VARCHAR(10) CHARACTER SET utf8)
 | |
| BEGIN
 | |
| PREPARE stmt FROM 'SELECT ?';
 | |
| EXECUTE stmt USING CONCAT(a, CONVERT(RAND() USING latin1));
 | |
| DEALLOCATE PREPARE stmt;
 | |
| END;
 | |
| $$
 | |
| CALL p1('x');
 | |
| DROP PROCEDURE p1;
 | |
| create table t1 (b blob default '');
 | |
| prepare stmt from "alter table t1 force";
 | |
| execute stmt;
 | |
| execute stmt;
 | |
| execute stmt;
 | |
| set names latin1;
 | |
| prepare stmt from "alter table t1 modify b text character set utf8 default 'a'";
 | |
| execute stmt;
 | |
| execute stmt;
 | |
| execute stmt;
 | |
| drop table t1;
 | |
| #
 | |
| # MDEV-12060 Crash in EXECUTE IMMEDIATE with an expression returning a GRANT command
 | |
| #
 | |
| CREATE ROLE testrole;
 | |
| CREATE OR REPLACE PROCEDURE p1() 
 | |
| BEGIN
 | |
| END;
 | |
| /
 | |
| CREATE PROCEDURE p2 (wgrp VARCHAR(10))
 | |
| BEGIN
 | |
| EXECUTE IMMEDIATE concat('GRANT EXECUTE ON PROCEDURE p1 TO ',wgrp);
 | |
| END;
 | |
| /
 | |
| CALL p2('testrole');
 | |
| DROP PROCEDURE p2;
 | |
| CREATE PROCEDURE p2 ()
 | |
| BEGIN
 | |
| EXECUTE IMMEDIATE concat(_utf8'GRANT EXECUTE ON PROCEDURE p1 TO ',_latin1'testrole');
 | |
| END;
 | |
| /
 | |
| CALL p2();
 | |
| DROP PROCEDURE p2;
 | |
| CREATE PROCEDURE p2 ()
 | |
| BEGIN
 | |
| PREPARE stmt FROM concat(_utf8'GRANT EXECUTE ON PROCEDURE p1 TO ',_latin1' testrole');
 | |
| EXECUTE stmt;
 | |
| DEALLOCATE PREPARE stmt;
 | |
| END;
 | |
| /
 | |
| CALL p2();
 | |
| DROP PROCEDURE p2;
 | |
| DROP PROCEDURE p1;
 | |
| DROP ROLE testrole;
 | |
| #
 | |
| # MDEV-16992: prepare of CREATE TABLE, CREATE VIEW, DO, SET, CALL
 | |
| #             statements with CTE containing materialized derived
 | |
| # (the bug is reproducible on 10.4)        
 | |
| #
 | |
| prepare stmt from 
 | |
| "CREATE TABLE  t1  AS 
 | |
|  WITH cte(a) AS (SELECT * FROM (SELECT 1) AS t) SELECT * FROM cte;";
 | |
| execute stmt;
 | |
| select * from t1;
 | |
| a
 | |
| 1
 | |
| prepare stmt from
 | |
| "CREATE VIEW  v1  AS 
 | |
|  WITH cte(a) AS (SELECT * FROM (SELECT 1) AS t) SELECT * FROM cte;";
 | |
| execute stmt;
 | |
| select * from v1;
 | |
| a
 | |
| 1
 | |
| prepare stmt from 
 | |
| "DO (SELECT 1 
 | |
|      FROM (WITH cte AS (SELECT * FROM (SELECT 1) AS t)
 | |
|            SELECT * FROM cte) AS tt);";
 | |
| execute stmt;
 | |
| prepare stmt from 
 | |
| "SET @a = (SELECT 1
 | |
|            FROM (WITH cte AS (SELECT * FROM (SELECT 1) AS t)
 | |
|            SELECT * FROM cte) AS t);";
 | |
| execute stmt;
 | |
| create procedure p (i int) insert into t1 values(i);
 | |
| prepare stmt from 
 | |
| "CALL p       
 | |
|  ((SELECT 1
 | |
|    FROM (WITH cte AS (SELECT * FROM (SELECT 1) AS t)
 | |
|          SELECT * FROM cte) AS tt));";
 | |
| execute stmt;
 | |
| select * from t1;
 | |
| a
 | |
| 1
 | |
| 1
 | |
| drop procedure p;
 | |
| drop view v1;
 | |
| drop table t1;
 | |
| #
 | |
| # MDEV-22591 Debug build crashes on EXECUTE IMMEDIATE '... WHERE ?' USING IGNORE
 | |
| #
 | |
| CREATE TABLE t1 (a INT);
 | |
| EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE ?' USING IGNORE;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT * FROM t1 HAVING ?' USING IGNORE;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE ?' USING 0;
 | |
| a
 | |
| EXECUTE IMMEDIATE 'SELECT * FROM t1 HAVING ?' USING 0;
 | |
| a
 | |
| DROP TABLE t1;
 | |
| EXECUTE IMMEDIATE 'SHOW DATABASES WHERE ?' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SHOW DATABASES WHERE ?' USING 0;
 | |
| Database
 | |
| #
 | |
| # MDEV-24779: main.subselect fails in buildbot with --ps-protocol
 | |
| #
 | |
| CREATE TABLE t1(a INT);
 | |
| PREPARE stmt FROM "SELECT EXISTS(SELECT 1 FROM t1 GROUP BY a IN (select a from t1))";
 | |
| EXECUTE stmt;
 | |
| EXISTS(SELECT 1 FROM t1 GROUP BY a IN (select a from t1))
 | |
| 0
 | |
| EXECUTE stmt;
 | |
| EXISTS(SELECT 1 FROM t1 GROUP BY a IN (select a from t1))
 | |
| 0
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # MDEV-25006: Failed assertion on executing EXPLAIN DELETE statement as a prepared statement
 | |
| #
 | |
| CREATE TABLE t1(c1 CHAR(255) PRIMARY KEY);
 | |
| PREPARE stmt FROM 'EXPLAIN DELETE b FROM t1 AS a JOIN t1 AS b';
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	a	system	NULL	NULL	NULL	NULL	0	Const row not found
 | |
| 1	SIMPLE	b	system	NULL	NULL	NULL	NULL	0	Const row not found
 | |
| DROP TABLE t1;
 | |
| CREATE TABLE t1(a INT);
 | |
| PREPARE stmt FROM 'EXPLAIN DELETE FROM t1.* USING t1';
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	0	Const row not found
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # MDEV-25108: Running of the EXPLAIN EXTENDED statement produces extra warning
 | |
| #             in case it is executed in PS (prepared statement) mode
 | |
| #
 | |
| CREATE TABLE t1 (c int);
 | |
| CREATE TABLE t2 (d int);
 | |
| # EXPLAIN EXTENDED in regular way (not PS mode)
 | |
| EXPLAIN EXTENDED SELECT (SELECT 1 FROM t2 WHERE d = c) FROM t1;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	0	0.00	Const row not found
 | |
| 2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| Warnings:
 | |
| Note	1276	Field or reference 'test.t1.c' of SELECT #2 was resolved in SELECT #1
 | |
| Note	1003	/* select#1 */ select (/* select#2 */ select 1 from `test`.`t2` where 0) AS `(SELECT 1 FROM t2 WHERE d = c)` from `test`.`t1`
 | |
| SHOW WARNINGS;
 | |
| Level	Code	Message
 | |
| Note	1276	Field or reference 'test.t1.c' of SELECT #2 was resolved in SELECT #1
 | |
| Note	1003	/* select#1 */ select (/* select#2 */ select 1 from `test`.`t2` where 0) AS `(SELECT 1 FROM t2 WHERE d = c)` from `test`.`t1`
 | |
| # Now run the same EXPLAIN EXTENDED in PS mode. Number of warnings
 | |
| # and their content must be the same as in case running the statement
 | |
| # in regular way
 | |
| PREPARE stmt FROM "EXPLAIN EXTENDED SELECT (SELECT 1 FROM t2 WHERE d = c) FROM t1";
 | |
| Warnings:
 | |
| Note	1276	Field or reference 'test.t1.c' of SELECT #2 was resolved in SELECT #1
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	0	0.00	Const row not found
 | |
| 2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| Warnings:
 | |
| Note	1276	Field or reference 'test.t1.c' of SELECT #2 was resolved in SELECT #1
 | |
| Note	1003	/* select#1 */ select (/* select#2 */ select 1 from `test`.`t2` where 0) AS `(SELECT 1 FROM t2 WHERE d = c)` from `test`.`t1`
 | |
| SHOW WARNINGS;
 | |
| Level	Code	Message
 | |
| Note	1276	Field or reference 'test.t1.c' of SELECT #2 was resolved in SELECT #1
 | |
| Note	1003	/* select#1 */ select (/* select#2 */ select 1 from `test`.`t2` where 0) AS `(SELECT 1 FROM t2 WHERE d = c)` from `test`.`t1`
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP TABLE t1, t2;
 | |
| #
 | |
| # MDEV-25576: The statement EXPLAIN running as regular statement and
 | |
| #             as prepared statement produces different results for
 | |
| #             UPDATE with subquery
 | |
| #
 | |
| CREATE TABLE t1 (c1 INT KEY) ENGINE=MyISAM;
 | |
| CREATE TABLE t2 (c2 INT) ENGINE=MyISAM;
 | |
| CREATE TABLE t3 (c3 INT) ENGINE=MyISAM;
 | |
| EXPLAIN EXTENDED UPDATE t3 SET c3 = ( SELECT COUNT(d1.c1) FROM ( SELECT a11.c1 FROM t1 AS a11 STRAIGHT_JOIN t2 AS a21 ON a21.c2 = a11.c1 JOIN t1 AS a12 ON a12.c1 = a11.c1 ) d1 );
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	0	100.00	
 | |
| 2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| Warnings:
 | |
| Note	1003	/* select#1 */ update `test`.`t3` set `test`.`t3`.`c3` = (/* select#2 */ select count(NULL) from `test`.`t1` `a11` straight_join `test`.`t2` `a21` join `test`.`t1` `a12` where 0)
 | |
| PREPARE stmt FROM "EXPLAIN EXTENDED UPDATE t3 SET c3 = ( SELECT COUNT(d1.c1) FROM ( SELECT a11.c1 FROM t1 AS a11 STRAIGHT_JOIN t2 AS a21 ON a21.c2 = a11.c1 JOIN t1 AS a12 ON a12.c1 = a11.c1 ) d1 )";
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
 | |
| 1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	0	100.00	
 | |
| 2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
 | |
| Warnings:
 | |
| Note	1003	/* select#1 */ update `test`.`t3` set `test`.`t3`.`c3` = (/* select#2 */ select count(NULL) from `test`.`t1` `a11` straight_join `test`.`t2` `a21` join `test`.`t1` `a12` where 0)
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP TABLE t1, t2, t3;
 | |
| #
 | |
| # MDEV-21866: Assertion `!result' failed in convert_const_to_int upon 2nd execution of PS
 | |
| #
 | |
| CREATE TABLE t1 (a BIGINT DEFAULT -1);
 | |
| CREATE VIEW v1 AS SELECT DISTINCT a FROM t1;
 | |
| PREPARE stmt FROM 'SELECT * FROM v1 WHERE a <=> NULL';
 | |
| EXECUTE stmt;
 | |
| a
 | |
| EXECUTE stmt;
 | |
| a
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP VIEW v1;
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # MDEV-19631: Assertion `0' failed in st_select_lex_unit::optimize or
 | |
| #             different plan upon 2nd execution of PS with EXPLAIN
 | |
| #
 | |
| CREATE TABLE t1 (a INT);
 | |
| PREPARE stmt FROM 'EXPLAIN SELECT * FROM t1 HAVING 6 IN ( SELECT 6 UNION SELECT 5 )';
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	0	Const row not found
 | |
| 2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| 3	UNION	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| NULL	UNION RESULT	<union2,3>	ALL	NULL	NULL	NULL	NULL	NULL	
 | |
| # Without the patch the second execution of the 'stmt' prepared statement
 | |
| # would result in server crash.
 | |
| EXECUTE stmt;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	PRIMARY	t1	system	NULL	NULL	NULL	NULL	0	Const row not found
 | |
| 2	SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| 3	UNION	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | |
| NULL	UNION RESULT	<union2,3>	ALL	NULL	NULL	NULL	NULL	NULL	
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP TABLE t1;
 | |
| # End of 10.2 tests
 | |
| #
 | |
| #
 | |
| # MDEV-26147: The test main.sp-row fails in case it is run in PS mode
 | |
| #
 | |
| CREATE PROCEDURE p1(a ROW(a INT,b INT))
 | |
| BEGIN
 | |
| SELECT a.a, a.b;
 | |
| END;
 | |
| $$
 | |
| PREPARE stmt FROM 'CALL p1(ROW(10, 20))';
 | |
| EXECUTE stmt;
 | |
| a.a	a.b
 | |
| 10	20
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP PROCEDURE p1;
 | |
| #
 | |
| # MDEV-16128: Server crash in Item_func::print_op on 2nd execution of PS
 | |
| #
 | |
| CREATE TABLE t1 (a varchar(10));
 | |
| CREATE TABLE t2 (b varchar(10) CHARACTER SET utf8 );
 | |
| CREATE TABLE t3 (c varchar(10) CHARACTER SET utf8);
 | |
| INSERT INTO t1 VALUES ('b');
 | |
| INSERT INTO t2 VALUES ('b');
 | |
| INSERT INTO t3 VALUES ('b');
 | |
| PREPARE stmt FROM "SELECT t1.* FROM (t1 JOIN t2 ON (t2.b = t1.a)) WHERE (EXISTS (SELECT 1 FROM t3 WHERE t3.c = t1.a))";
 | |
| EXECUTE stmt;
 | |
| a
 | |
| b
 | |
| # Without the patch second execution of the prepared statement
 | |
| # would lead to server crash.
 | |
| EXECUTE stmt;
 | |
| a
 | |
| b
 | |
| # Clean up
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP TABLE t1, t2, t3;
 | |
| CREATE TABLE t1 (a varchar(10));
 | |
| CREATE TABLE t2 (b varchar(10) CHARACTER SET utf8);
 | |
| INSERT INTO t1 VALUES ('b');
 | |
| INSERT INTO t2 VALUES ('b');
 | |
| PREPARE stmt FROM 'SELECT STRAIGHT_JOIN 1 FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.b = t1.a)';
 | |
| EXECUTE stmt;
 | |
| 1
 | |
| 1
 | |
| # Without the patch second execution of the prepared statement
 | |
| # would lead to server crash.
 | |
| EXECUTE stmt;
 | |
| 1
 | |
| 1
 | |
| # Clean up
 | |
| DEALLOCATE PREPARE stmt;
 | |
| # Check that EXECUTE USING is run correctly
 | |
| PREPARE stmt FROM 'SELECT 300 FROM t1 WHERE EXISTS (SELECT 100 FROM t2 WHERE t2.b = ?)';
 | |
| EXECUTE stmt USING 'b';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING 'b';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING 'd';
 | |
| 300
 | |
| EXECUTE stmt USING 'd';
 | |
| 300
 | |
| EXECUTE stmt USING _binary 'b';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING _binary 'b';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING _binary 'B';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING 'B';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING _binary 'd';
 | |
| 300
 | |
| EXECUTE stmt USING _binary 'd';
 | |
| 300
 | |
| EXECUTE stmt USING _ucs2 'b';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING _ucs2 'b';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING _ucs2 'd';
 | |
| 300
 | |
| EXECUTE stmt USING _ucs2 'd';
 | |
| 300
 | |
| EXECUTE stmt USING _latin1 'b';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING _latin1 'b';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING _latin1 'd';
 | |
| 300
 | |
| EXECUTE stmt USING _latin1 'd';
 | |
| 300
 | |
| CREATE TABLE t3 (c VARCHAR(10) CHARACTER SET ucs2);
 | |
| INSERT INTO t3 VALUES ('b');
 | |
| PREPARE stmt FROM 'SELECT 300 FROM t1 WHERE EXISTS (SELECT 100 FROM t3 WHERE t3.c = ?)';
 | |
| EXECUTE stmt USING 'b';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING 'b';
 | |
| 300
 | |
| 300
 | |
| EXECUTE stmt USING 'd';
 | |
| 300
 | |
| EXECUTE stmt USING 'd';
 | |
| 300
 | |
| DROP TABLE t1, t2, t3;
 | |
| set @@max_session_mem_used=default;
 | |
| create table t (a varchar(10)) character set utf8;
 | |
| insert into t values ('');
 | |
| prepare stmt from "select 1 from t where a = ?";
 | |
| set @@max_session_mem_used=(select memory_used*2 from information_schema.processlist where id=connection_id());
 | |
| deallocate prepare stmt;
 | |
| drop table t;
 | |
| set @@max_session_mem_used=default;
 | |
| create table t (a varchar(10)) character set utf8;
 | |
| insert into t values ('');
 | |
| prepare stmt from "select 1 from t where a = 'a'";
 | |
| set @@max_session_mem_used=(select memory_used*2 from information_schema.processlist where id=connection_id());
 | |
| deallocate prepare stmt;
 | |
| drop table t;
 | |
| set @@max_session_mem_used=default;
 | |
| #
 | |
| # End of 10.3 tests
 | |
| #
 | |
| #
 | |
| # MDEV-19263: Server crashes in mysql_handle_single_derived
 | |
| # upon 2nd execution of PS
 | |
| #
 | |
| CREATE TABLE t1 (f INT);
 | |
| CREATE VIEW v1 AS SELECT * FROM t1;
 | |
| CREATE TRIGGER tr BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO v1 SELECT * FROM x;
 | |
| PREPARE stmt FROM "INSERT INTO v1 VALUES (1)";
 | |
| EXECUTE stmt;
 | |
| ERROR 42S02: Table 'test.x' doesn't exist
 | |
| EXECUTE stmt;
 | |
| ERROR 42S02: Table 'test.x' doesn't exist
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP VIEW v1;
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # MDEV-25197: The statement set password=password('') executed in PS mode
 | |
| #             fails in case it is run by a user with expired password
 | |
| #
 | |
| CREATE USER user1@localhost PASSWORD EXPIRE;
 | |
| SET @disconnect_on_expired_password_save=@@global.disconnect_on_expired_password;
 | |
| SET GLOBAL disconnect_on_expired_password=OFF;
 | |
| connect con1,localhost,user1;
 | |
| connection con1;
 | |
| # Check that no regular statement like SELECT can be prepared
 | |
| # by a user with an expired password
 | |
| PREPARE stmt FROM "SELECT 1";
 | |
| ERROR HY000: You must SET PASSWORD before executing this statement
 | |
| # Check that the DEALLOCATE PREPARE statement can be run by a user
 | |
| # with an expired password
 | |
| PREPARE stmt FROM "SET password=password('')";
 | |
| DEALLOCATE PREPARE stmt;
 | |
| # Check that the SET PASSWORD statement can be executed in PS mode by
 | |
| # a user with an expired password
 | |
| PREPARE stmt FROM "SET password=password('')";
 | |
| EXECUTE stmt;
 | |
| PREPARE stmt FROM "SELECT 1";
 | |
| # Check that user's password is not expired anymore
 | |
| EXECUTE stmt;
 | |
| 1
 | |
| 1
 | |
| DEALLOCATE PREPARE stmt;
 | |
| # Clean up
 | |
| disconnect con1;
 | |
| connection default;
 | |
| SET GLOBAL disconnect_on_expired_password=@disconnect_on_expired_password_save;
 | |
| DROP USER user1@localhost;
 | |
| #
 | |
| # MDEV-21173: Assertion `m_thd == __null' failed in sp_head::~sp_head
 | |
| #
 | |
| CREATE TABLE t1 (a INT);
 | |
| EXECUTE IMMEDIATE "CREATE PROCEDURE p1() SELECT 1 FROM t1  PROCEDURE ANALYSE( 10, (SELECT a FROM t1));";
 | |
| ERROR 42000: PROCEDURE does not support subqueries or stored functions
 | |
| DROP TABLE t1;
 | |
| BEGIN NOT ATOMIC
 | |
| PREPARE stmt FROM 'SELECT ?';
 | |
| EXECUTE stmt USING ((SELECT 1));
 | |
| END;
 | |
| $
 | |
| ERROR 42000: EXECUTE..USING does not support subqueries or stored functions
 | |
| #
 | |
| #  MDEV-32965: Assertion `thd->active_stmt_arena_to_use()-> is_stmt_prepare_or_first_sp_execute() || thd->active_stmt_arena_to_use()-> is_conventional() || thd->active_stmt_arena_to_use()->state == Query_arena::STMT_SP_QUERY_ARGUMENTS' failed
 | |
| #
 | |
| CREATE TABLE t (f VARCHAR(8)) CHARACTER SET utf8;
 | |
| INSERT INTO t VALUES ('foo'),('bar');
 | |
| EXECUTE IMMEDIATE 'SELECT GROUP_CONCAT(@x) FROM t GROUP BY @x := f';
 | |
| GROUP_CONCAT(@x)
 | |
| 0
 | |
| 0
 | |
| DROP TABLE t;
 | |
| #
 | |
| # MDEV-15703: Crash in EXECUTE IMMEDIATE 'CREATE OR REPLACE TABLE t1 (a INT DEFAULT ?)' USING DEFAULT
 | |
| #
 | |
| PREPARE stmt FROM 'CREATE OR REPLACE TABLE t1 (a INT DEFAULT ?)';
 | |
| EXECUTE stmt USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| DEALLOCATE PREPARE stmt;
 | |
| PREPARE stmt FROM 'CREATE OR REPLACE TABLE t1 (a INT DEFAULT ?)';
 | |
| EXECUTE stmt USING IGNORE;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| DEALLOCATE PREPARE stmt;
 | |
| EXECUTE IMMEDIATE 'CREATE OR REPLACE TABLE t1 (a INT DEFAULT ?)' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'CREATE OR REPLACE TABLE t1 (a INT DEFAULT ?)' USING IGNORE;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'BEGIN NOT ATOMIC DECLARE a INT DEFAULT ?; END' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'BEGIN NOT ATOMIC DECLARE a INT DEFAULT ?; END' USING IGNORE;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| CREATE PROCEDURE p1(a INT) SELECT 1;
 | |
| EXECUTE IMMEDIATE 'CALL p1(?)' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'CALL p1(?)' USING IGNORE;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| DROP PROCEDURE p1;
 | |
| EXECUTE IMMEDIATE 'SELECT ? UNION SELECT 1' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT ? UNION SELECT 1' USING IGNORE;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT * FROM (SELECT ? UNION ALL SELECT 1) AS derived' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT * FROM (SELECT ? UNION ALL SELECT 1) AS derived' USING IGNORE;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT * FROM (SELECT ? UNION DISTINCT SELECT 1) AS derived' USING DEFAULT;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| EXECUTE IMMEDIATE 'SELECT * FROM (SELECT ? UNION DISTINCT SELECT 1) AS derived' USING IGNORE;
 | |
| ERROR HY000: Default/ignore value is not supported for such parameter usage
 | |
| # multi-update and DEFAULT
 | |
| CREATE TABLE t1 (a INT, b INT DEFAULT a);
 | |
| INSERT into t1 VALUES (1,2),(2,3);
 | |
| CREATE TABLE t2 (a INT, b INT DEFAULT a);
 | |
| INSERT INTO t2 VALUES (1,10),(2,30);
 | |
| UPDATE t1,t2 SET t1.b = DEFAULT, t2.b = DEFAULT WHERE t1.a=t2.a;
 | |
| SELECT * FROM t1;
 | |
| a	b
 | |
| 1	1
 | |
| 2	2
 | |
| SELECT * FROM t2;
 | |
| a	b
 | |
| 1	1
 | |
| 2	2
 | |
| # re-check the case for Prepared Statement with parameters
 | |
| TRUNCATE TABLE t1;
 | |
| TRUNCATE TABLE t2;
 | |
| INSERT INTO t1 VALUES (1,2),(2,3);
 | |
| INSERT INTO t2 VALUES (1,10),(2,30);
 | |
| EXECUTE IMMEDIATE 'UPDATE t1,t2 SET t1.b = ?, t2.b = ? WHERE t1.a=t2.a' USING DEFAULT, DEFAULT;
 | |
| SELECT * FROM t1;
 | |
| a	b
 | |
| 1	1
 | |
| 2	2
 | |
| SELECT * FROM t2;
 | |
| a	b
 | |
| 1	1
 | |
| 2	2
 | |
| DROP TABLE t1, t2;
 | |
| # multi-update and IGNORE
 | |
| CREATE TABLE t1 (a INT, b INT default a);
 | |
| INSERT INTO t1 VALUES (1,2),(2,3);
 | |
| CREATE TABLE t2 (a INT, b INT default a);
 | |
| INSERT INTO t2 VALUES (1,10),(2,30);
 | |
| UPDATE t1,t2 SET t1.b = IGNORE, t2.b = IGNORE WHERE t1.a=t2.a;
 | |
| SELECT * FROM t1;
 | |
| a	b
 | |
| 1	2
 | |
| 2	3
 | |
| SELECT * FROM t2;
 | |
| a	b
 | |
| 1	NULL
 | |
| 2	NULL
 | |
| # re-check the case for Prepared Statement with parameters
 | |
| TRUNCATE TABLE t1;
 | |
| TRUNCATE TABLE t2;
 | |
| INSERT INTO t1 VALUES (1,2),(2,3);
 | |
| INSERT INTO t2 VALUES (1,10),(2,30);
 | |
| EXECUTE IMMEDIATE 'UPDATE t1,t2 SET t1.b = ?, t2.b = ? WHERE t1.a=t2.a' USING IGNORE, IGNORE;
 | |
| SELECT * FROM t1;
 | |
| a	b
 | |
| 1	2
 | |
| 2	3
 | |
| SELECT * FROM t2;
 | |
| a	b
 | |
| 1	10
 | |
| 2	30
 | |
| DROP TABLE t1, t2;
 | |
| # multi-update and DEFAULT parameter (no default)
 | |
| CREATE TABLE t1 (a INT, b INT NOT NULL);
 | |
| INSERT INTO t1 VALUES (1,2),(2,3);
 | |
| CREATE TABLE t2 (a INT, b INT NOT NULL);
 | |
| INSERT INTO t2 VALUES (1,10),(2,30);
 | |
| EXECUTE IMMEDIATE 'UPDATE t1,t2 SET t1.b = ?, t2.b = ? WHERE t1.a=t2.a' USING DEFAULT, DEFAULT;
 | |
| ERROR HY000: Field 'b' doesn't have a default value
 | |
| DROP TABLE t1, t2;
 | |
| # multi-update and IGNORE parameter (no default)
 | |
| CREATE TABLE t1 (a INT, b INT NOT NULL);
 | |
| INSERT INTO t1 VALUES (1,2),(2,3);
 | |
| CREATE TABLE t2 (a INT, b INT NOT NULL);
 | |
| INSERT INTO t2 VALUES (1,10),(2,30);
 | |
| EXECUTE IMMEDIATE 'UPDATE t1,t2 SET t1.b = ?, t2.b = ? WHERE t1.a=t2.a' USING IGNORE, IGNORE;
 | |
| SELECT * FROM t1;
 | |
| a	b
 | |
| 1	2
 | |
| 2	3
 | |
| SELECT * FROM t2;
 | |
| a	b
 | |
| 1	10
 | |
| 2	30
 | |
| DROP TABLE t1, t2;
 | |
| #
 | |
| # MDEV-33549: Incorrect handling of UPDATE in PS mode in case a table's colum declared as NOT NULL
 | |
| #
 | |
| CREATE TABLE t1 (a INT, b INT DEFAULT NULL);
 | |
| INSERT INTO t1 VALUES (20, 30);
 | |
| EXECUTE IMMEDIATE 'UPDATE t1 SET b=?' USING DEFAULT;
 | |
| SELECT * FROM t1;
 | |
| a	b
 | |
| 20	NULL
 | |
| # Run twice the same update in PS mode to check
 | |
| # that no memory relating issues taken place.
 | |
| PREPARE stmt FROM 'UPDATE t1 SET b=?';
 | |
| EXECUTE stmt USING DEFAULT;
 | |
| EXECUTE stmt USING DEFAULT;
 | |
| # Clean up
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP TABLE t1;
 | |
| # The same test for multi-table update
 | |
| CREATE TABLE t1 (a INT, b INT DEFAULT NULL);
 | |
| CREATE TABLE t2 (a INT, c INT DEFAULT NULL);
 | |
| INSERT INTO t1 VALUES (20, 30);
 | |
| INSERT INTO t2 VALUES (20, 30);
 | |
| EXECUTE IMMEDIATE 'UPDATE t1,t2 SET b=? WHERE t1.a=t2.a' USING DEFAULT;
 | |
| SELECT * FROM t1;
 | |
| a	b
 | |
| 20	NULL
 | |
| # Run twice the same multi-table update in PS mode to check
 | |
| # that no memory relating issues taken place.
 | |
| PREPARE stmt FROM 'UPDATE t1,t2 SET b=? WHERE t1.a=t2.a';
 | |
| EXECUTE stmt USING DEFAULT;
 | |
| EXECUTE stmt USING DEFAULT;
 | |
| DEALLOCATE PREPARE stmt;
 | |
| # Clean up
 | |
| DROP TABLE t1;
 | |
| # This time checks that a default value for table's column
 | |
| # represented by a function call is handled correctly on UPDATE in PS mode
 | |
| CREATE TABLE t1 (a INT, b INT DEFAULT MOD(a, 3));
 | |
| INSERT INTO t1 VALUES (20, 30);
 | |
| EXECUTE IMMEDIATE 'UPDATE t1, t2 SET b=? WHERE t1.a=t2.a' USING DEFAULT;
 | |
| SELECT * FROM t1;
 | |
| a	b
 | |
| 20	2
 | |
| # Run twice the same multi-table update in PS mode to check
 | |
| # that no memory relating issues taken place.
 | |
| PREPARE stmt FROM 'UPDATE t1, t2 SET b=? WHERE t1.a=t2.a';
 | |
| EXECUTE stmt USING DEFAULT;
 | |
| EXECUTE stmt USING DEFAULT;
 | |
| # Clean up
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP TABLE t1, t2;
 | |
| # MDEV-33218: Assertion `active_arena->is_stmt_prepare_or_first_stmt_execute() || active_arena->state == Query_arena::STMT_SP_QUERY_ARGUMENTS' failed. in st_select_lex::fix_prepare_information
 | |
| CREATE TABLE t1 AS SELECT 1 f;
 | |
| PREPARE stmt FROM 'SHOW CREATE TABLE t1';
 | |
| DROP TABLE t1;
 | |
| EXECUTE stmt;
 | |
| ERROR 42S02: Table 'test.t1' doesn't exist
 | |
| CREATE VIEW t1 AS SELECT 1;
 | |
| EXECUTE stmt;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| t1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `t1` AS select 1 AS `1`	latin1	latin1_swedish_ci
 | |
| # Clean up
 | |
| DEALLOCATE PREPARE stmt;
 | |
| DROP VIEW t1;
 | |
| #
 | |
| # End of 10.4 tests
 | |
| #
 | |
| #
 | |
| # MDEV-35330: Assertion `marked_for_read()` failed in VSec9::VSec9 | Item_func_from_unixtime::get_date
 | |
| #
 | |
| CREATE TABLE t (a INT,b TIMESTAMP DEFAULT FROM_UNIXTIME(a));
 | |
| INSERT INTO t VALUES (1,'2025-07-18 18:37:10');
 | |
| SELECT * FROM t;
 | |
| a	b
 | |
| 1	2025-07-18 18:37:10
 | |
| EXECUTE IMMEDIATE 'UPDATE t SET b=?' USING DEFAULT;
 | |
| SELECT * FROM t;
 | |
| a	b
 | |
| 1	1970-01-01 09:00:01
 | |
| DROP TABLE t;
 | |
| CREATE TABLE t (a INT, b INT DEFAULT (a+5));
 | |
| INSERT INTO t values (1,2), (2,DEFAULT);
 | |
| EXECUTE IMMEDIATE 'INSERT INTO t VALUES (3,4), (4,?)' USING DEFAULT;
 | |
| SELECT * FROM t;
 | |
| a	b
 | |
| 1	2
 | |
| 2	7
 | |
| 3	4
 | |
| 4	9
 | |
| EXECUTE IMMEDIATE 'UPDATE t SET b=?' USING DEFAULT;
 | |
| SELECT * FROM t;
 | |
| a	b
 | |
| 1	6
 | |
| 2	7
 | |
| 3	8
 | |
| 4	9
 | |
| DROP TABLE t;
 | |
| CREATE TABLE t (a INT,b TIMESTAMP DEFAULT FROM_UNIXTIME(a));
 | |
| INSERT INTO t VALUES (1,'2025-07-18 18:37:10');
 | |
| SELECT * FROM t;
 | |
| a	b
 | |
| 1	2025-07-18 18:37:10
 | |
| PREPARE s FROM 'UPDATE t SET b=?';
 | |
| EXECUTE s USING DEFAULT;
 | |
| SELECT * FROM t;
 | |
| a	b
 | |
| 1	1970-01-01 09:00:01
 | |
| DROP TABLE t;
 | |
| CREATE TABLE t (a INT, b TIMESTAMP DEFAULT FROM_UNIXTIME(a), c INT DEFAULT (a+5));
 | |
| INSERT INTO t VALUES (1,'2025-07-18 18:37:10',3);
 | |
| SELECT * FROM t;
 | |
| a	b	c
 | |
| 1	2025-07-18 18:37:10	3
 | |
| EXECUTE IMMEDIATE 'UPDATE t SET b=?, c=?' USING DEFAULT, DEFAULT;
 | |
| SELECT * FROM t;
 | |
| a	b	c
 | |
| 1	1970-01-01 09:00:01	6
 | |
| DROP TABLE t;
 | |
| # End of 10.11 tests
 |