mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	- Make the range-et-al optimizer produce E(#table records after table 
                                           condition is applied),
- Make the join optimizer use this value,
- Add "filtered" column to EXPLAIN EXTENDED to show 
  fraction of records left after table condition is applied
- Adjust test results, add comments
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
select interval(55,10,20,30,40,50,60,70,80,90,100),interval(3,1,1+1,1+1+1+1),field("IBM","NCA","ICL","SUN","IBM","DIGITAL"),field("A","B","C"),elt(2,"ONE","TWO","THREE"),interval(0,1,2,3,4),elt(1,1,2,3)|0,elt(1,1.1,1.2,1.3)+0;
 | 
						|
interval(55,10,20,30,40,50,60,70,80,90,100)	interval(3,1,1+1,1+1+1+1)	field("IBM","NCA","ICL","SUN","IBM","DIGITAL")	field("A","B","C")	elt(2,"ONE","TWO","THREE")	interval(0,1,2,3,4)	elt(1,1,2,3)|0	elt(1,1.1,1.2,1.3)+0
 | 
						|
5	2	4	0	TWO	0	1	1.1
 | 
						|
explain extended select INTERVAL(55,10,20,30,40,50,60,70,80,90,100),interval(3,1,1+1,1+1+1+1),field("IBM","NCA","ICL","SUN","IBM","DIGITAL"),field("A","B","C"),elt(2,"ONE","TWO","THREE"),interval(0,1,2,3,4),elt(1,1,2,3)|0,elt(1,1.1,1.2,1.3)+0;
 | 
						|
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 interval((55,10,20,30,40,50,60,70,80,90,100)) AS `INTERVAL(55,10,20,30,40,50,60,70,80,90,100)`,interval((3,1,(1 + 1),(((1 + 1) + 1) + 1))) AS `interval(3,1,1+1,1+1+1+1)`,field(_latin1'IBM',_latin1'NCA',_latin1'ICL',_latin1'SUN',_latin1'IBM',_latin1'DIGITAL') AS `field("IBM","NCA","ICL","SUN","IBM","DIGITAL")`,field(_latin1'A',_latin1'B',_latin1'C') AS `field("A","B","C")`,elt(2,_latin1'ONE',_latin1'TWO',_latin1'THREE') AS `elt(2,"ONE","TWO","THREE")`,interval((0,1,2,3,4)) AS `interval(0,1,2,3,4)`,(elt(1,1,2,3) | 0) AS `elt(1,1,2,3)|0`,(elt(1,1.1,1.2,1.3) + 0) AS `elt(1,1.1,1.2,1.3)+0`
 | 
						|
SELECT INTERVAL(13, 7, 14, 21, 28, 35, 42, 49, 56);
 | 
						|
INTERVAL(13, 7, 14, 21, 28, 35, 42, 49, 56)
 | 
						|
1
 | 
						|
SELECT INTERVAL(13, 7, 14, 21, 28, 35, 42, 49, 56, 77);
 | 
						|
INTERVAL(13, 7, 14, 21, 28, 35, 42, 49, 56, 77)
 | 
						|
1
 | 
						|
select find_in_set("b","a,b,c"),find_in_set("c","a,b,c"),find_in_set("dd","a,bbb,dd"),find_in_set("bbb","a,bbb,dd");
 | 
						|
find_in_set("b","a,b,c")	find_in_set("c","a,b,c")	find_in_set("dd","a,bbb,dd")	find_in_set("bbb","a,bbb,dd")
 | 
						|
2	3	3	2
 | 
						|
select find_in_set("d","a,b,c"),find_in_set("dd","a,bbb,d"),find_in_set("bb","a,bbb,dd");
 | 
						|
find_in_set("d","a,b,c")	find_in_set("dd","a,bbb,d")	find_in_set("bb","a,bbb,dd")
 | 
						|
0	0	0
 | 
						|
select make_set(0,'a','b','c'),make_set(-1,'a','b','c'),make_set(1,'a','b','c'),make_set(2,'a','b','c'),make_set(1+2,concat('a','b'),'c');
 | 
						|
make_set(0,'a','b','c')	make_set(-1,'a','b','c')	make_set(1,'a','b','c')	make_set(2,'a','b','c')	make_set(1+2,concat('a','b'),'c')
 | 
						|
	a,b,c	a	b	ab,c
 | 
						|
select make_set(NULL,'a','b','c'),make_set(1|4,'a',NULL,'c'),make_set(1+2,'a',NULL,'c');
 | 
						|
make_set(NULL,'a','b','c')	make_set(1|4,'a',NULL,'c')	make_set(1+2,'a',NULL,'c')
 | 
						|
NULL	a,c	a
 | 
						|
select export_set(9,"Y","N","-",5),export_set(9,"Y","N"),export_set(9,"Y","N","");
 | 
						|
export_set(9,"Y","N","-",5)	export_set(9,"Y","N")	export_set(9,"Y","N","")
 | 
						|
Y-N-N-Y-N	Y,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N	YNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
 | 
						|
select elt(2,1),field(NULL,"a","b","c");
 | 
						|
elt(2,1)	field(NULL,"a","b","c")
 | 
						|
NULL	0
 | 
						|
select field("b","a",NULL),field(1,0,NULL)+0,field(1.0,0.0,NULL)+0.0,field(1.0e1,0.0e1,NULL)+0.0e1;
 | 
						|
field("b","a",NULL)	field(1,0,NULL)+0	field(1.0,0.0,NULL)+0.0	field(1.0e1,0.0e1,NULL)+0.0e1
 | 
						|
0	0	0.0	0
 | 
						|
select field(NULL,"a",NULL),field(NULL,0,NULL)+0,field(NULL,0.0,NULL)+0.0,field(NULL,0.0e1,NULL)+0.0e1;
 | 
						|
field(NULL,"a",NULL)	field(NULL,0,NULL)+0	field(NULL,0.0,NULL)+0.0	field(NULL,0.0e1,NULL)+0.0e1
 | 
						|
0	0	0.0	0
 | 
						|
select find_in_set("","a,b,c"),find_in_set("","a,b,c,"),find_in_set("",",a,b,c");
 | 
						|
find_in_set("","a,b,c")	find_in_set("","a,b,c,")	find_in_set("",",a,b,c")
 | 
						|
0	4	1
 | 
						|
select find_in_set("abc","abc"),find_in_set("ab","abc"),find_in_set("abcd","abc");
 | 
						|
find_in_set("abc","abc")	find_in_set("ab","abc")	find_in_set("abcd","abc")
 | 
						|
1	0	0
 | 
						|
select interval(null, 1, 10, 100);
 | 
						|
interval(null, 1, 10, 100)
 | 
						|
-1
 | 
						|
drop table if exists t1,t2;
 | 
						|
create  table t1 (id int(10) not null unique);
 | 
						|
create  table t2 (id int(10) not null primary key, val int(10) not null);
 | 
						|
insert into t1 values (1),(2),(4);
 | 
						|
insert into t2 values (1,1),(2,1),(3,1),(4,2);
 | 
						|
select one.id, elt(two.val,'one','two') from t1 one, t2 two where two.id=one.id;
 | 
						|
id	elt(two.val,'one','two')
 | 
						|
1	one
 | 
						|
2	one
 | 
						|
4	two
 | 
						|
select one.id, elt(two.val,'one','two') from t1 one, t2 two where two.id=one.id order by one.id;
 | 
						|
id	elt(two.val,'one','two')
 | 
						|
1	one
 | 
						|
2	one
 | 
						|
4	two
 | 
						|
drop table t1,t2;
 | 
						|
select find_in_set(binary 'a',binary 'A,B,C');
 | 
						|
find_in_set(binary 'a',binary 'A,B,C')
 | 
						|
0
 | 
						|
select find_in_set('a',binary 'A,B,C');
 | 
						|
find_in_set('a',binary 'A,B,C')
 | 
						|
0
 | 
						|
select find_in_set(binary 'a', 'A,B,C');
 | 
						|
find_in_set(binary 'a', 'A,B,C')
 | 
						|
0
 | 
						|
select find_in_set('1','3,1,');
 | 
						|
find_in_set('1','3,1,')
 | 
						|
2
 |