mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	There were two distict bugs: parse error was returned for valid statement and that error wasn't reported to the client. The fix ensures that EXPLAIN SELECT..INTO is accepted by parser and any other parse error will be reported to the client.
		
			
				
	
	
		
			60 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
drop table if exists t1;
 | 
						||
create table t1 (id int not null, str char(10), unique(str));
 | 
						||
explain select * from t1;
 | 
						||
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
 | 
						||
insert into t1 values (1, null),(2, null),(3, "foo"),(4, "bar");
 | 
						||
select * from t1 where str is null;
 | 
						||
id	str
 | 
						||
1	NULL
 | 
						||
2	NULL
 | 
						||
select * from t1 where str="foo";
 | 
						||
id	str
 | 
						||
3	foo
 | 
						||
explain select * from t1 where str is null;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	SIMPLE	t1	ref	str	str	11	const	1	Using where
 | 
						||
explain select * from t1 where str="foo";
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	SIMPLE	t1	const	str	str	11	const	1	
 | 
						||
explain select * from t1 ignore key (str) where str="foo";
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
 | 
						||
explain select * from t1 use key (str,str) where str="foo";
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	SIMPLE	t1	const	str	str	11	const	1	
 | 
						||
explain select * from t1 use key (str,str,foo) where str="foo";
 | 
						||
ERROR 42000: Key column 'foo' doesn't exist in table
 | 
						||
explain select * from t1 ignore key (str,str,foo) where str="foo";
 | 
						||
ERROR 42000: Key column 'foo' doesn't exist in table
 | 
						||
drop table t1;
 | 
						||
explain select 1;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 | 
						||
create table t1 (a int not null);
 | 
						||
explain select count(*) from t1;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Select tables optimized away
 | 
						||
insert into t1 values(1);
 | 
						||
explain select count(*) from t1;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Select tables optimized away
 | 
						||
insert into t1 values(1);
 | 
						||
explain select count(*) from t1;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Select tables optimized away
 | 
						||
drop table t1;
 | 
						||
set names koi8r;
 | 
						||
create table <20><><EFBFBD> (<28><><EFBFBD>0 int, <20><><EFBFBD>1 int, key <20><><EFBFBD>0 (<28><><EFBFBD>0), key <20><><EFBFBD>01 (<28><><EFBFBD>0,<2C><><EFBFBD>1));
 | 
						||
insert into <20><><EFBFBD> (<28><><EFBFBD>0) values (1);
 | 
						||
insert into <20><><EFBFBD> (<28><><EFBFBD>0) values (2);
 | 
						||
explain select <20><><EFBFBD>0 from <20><><EFBFBD> where <20><><EFBFBD>0=1;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	SIMPLE	<09><><EFBFBD>	ref	<09><><EFBFBD>0,<2C><><EFBFBD>01	<09><><EFBFBD>0	5	const	1	Using where; Using index
 | 
						||
drop table <20><><EFBFBD>;
 | 
						||
set names latin1;
 | 
						||
select 3 into @v1;
 | 
						||
explain select 3 into @v1;
 | 
						||
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | 
						||
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
 |