mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	 f2829d0386
			
		
	
	f2829d0386
	
	
	
		
			
			Fixed (together with Guilhem) bugs in mysqlbinlog regarding --offset Prefix addresses with 0x for easier comparisons of debug logs Fixed problem where MySQL choosed index-read even if there would be a much better range on the same index This fix changed some 'index' queries to 'range' queries in the test suite Don't create 'dummy' WHERE clause for trivial WHERE clauses where we can remove the WHERE clause. This fix removed of a lot of 'Using where' notes in the test suite. Give NOTE instead of WARNING if table/function doesn't exists when using DROP IF EXISTS Give NOTE instead of WARNING for safe field-type conversions
		
			
				
	
	
		
			392 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			392 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| drop table if exists t1;
 | |
| create table t1 (a int, key (a));
 | |
| insert into t1 values (NULL), (0), (1), (2), (3), (4), (5), (6), (7), (8), (9),
 | |
| (10), (11), (12), (13), (14), (15), (16), (17), (18), (19);
 | |
| explain select * from t1 where not(not(a));
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	index	NULL	a	5	NULL	21	Using where; Using index
 | |
| select * from t1 where not(not(a));
 | |
| a
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 4
 | |
| 5
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| 10
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where not(not(not(a > 10)));
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	10	Using where; Using index
 | |
| select * from t1 where not(not(not(a > 10)));
 | |
| a
 | |
| 0
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 4
 | |
| 5
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| 10
 | |
| explain select * from t1 where not(not(not(a < 5) and not(a > 10)));
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	5	Using where; Using index
 | |
| select * from t1 where not(not(not(a < 5) and not(a > 10)));
 | |
| a
 | |
| 5
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| 10
 | |
| explain select * from t1 where not(a = 10);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	19	Using where; Using index
 | |
| select * from t1 where not(a = 10);
 | |
| a
 | |
| 0
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 4
 | |
| 5
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where not(a != 10);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	ref	a	a	5	const	1	Using where; Using index
 | |
| select * from t1 where not(a != 1);
 | |
| a
 | |
| 1
 | |
| explain select * from t1 where not(a < 10);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	11	Using where; Using index
 | |
| select * from t1 where not(a < 10);
 | |
| a
 | |
| 10
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where not(a >= 10);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	9	Using where; Using index
 | |
| select * from t1 where not(a >= 10);
 | |
| a
 | |
| 0
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 4
 | |
| 5
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| explain select * from t1 where not(a > 10);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	10	Using where; Using index
 | |
| select * from t1 where not(a > 10);
 | |
| a
 | |
| 0
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 4
 | |
| 5
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| 10
 | |
| explain select * from t1 where not(a <= 10);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	10	Using where; Using index
 | |
| select * from t1 where not(a <= 10);
 | |
| a
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where not(a is null);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	20	Using where; Using index
 | |
| select * from t1 where not(a is null);
 | |
| a
 | |
| 0
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 4
 | |
| 5
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| 10
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where not(a is not null);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	ref	a	a	5	const	1	Using where; Using index
 | |
| select * from t1 where not(a is not null);
 | |
| a
 | |
| NULL
 | |
| explain select * from t1 where not(a < 5 or a > 15);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	10	Using where; Using index
 | |
| select * from t1 where not(a < 5 or a > 15);
 | |
| a
 | |
| 5
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| 10
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| explain select * from t1 where not(a < 15 and a > 5);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	12	Using where; Using index
 | |
| select * from t1 where not(a < 15 and a > 5);
 | |
| a
 | |
| 0
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 4
 | |
| 5
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where a = 2 or not(a < 10);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	12	Using where; Using index
 | |
| select * from t1 where a = 2 or not(a < 10);
 | |
| a
 | |
| 2
 | |
| 10
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where a > 5 and not(a > 10);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	4	Using where; Using index
 | |
| select * from t1 where a > 5 and not(a > 10);
 | |
| a
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| 10
 | |
| explain select * from t1 where a > 5 xor a < 10;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	index	NULL	a	5	NULL	21	Using where; Using index
 | |
| select * from t1 where a > 5 xor a < 10;
 | |
| a
 | |
| 0
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 4
 | |
| 5
 | |
| 10
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where a = 2 or not(a < 5 or a > 15);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	11	Using where; Using index
 | |
| select * from t1 where a = 2 or not(a < 5 or a > 15);
 | |
| a
 | |
| 2
 | |
| 5
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| 10
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| explain select * from t1 where a = 7 or not(a < 15 and a > 5);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	13	Using where; Using index
 | |
| select * from t1 where a = 7 or not(a < 15 and a > 5);
 | |
| a
 | |
| 0
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 4
 | |
| 5
 | |
| 7
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where NULL or not(a < 15 and a > 5);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	12	Using where; Using index
 | |
| select * from t1 where NULL or not(a < 15 and a > 5);
 | |
| a
 | |
| 0
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 4
 | |
| 5
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where not(NULL and a > 5);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	6	Using where; Using index
 | |
| select * from t1 where not(NULL and a > 5);
 | |
| a
 | |
| 0
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| 4
 | |
| 5
 | |
| explain select * from t1 where not(NULL or a);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
 | |
| select * from t1 where not(NULL or a);
 | |
| a
 | |
| explain select * from t1 where not(NULL and a);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	index	NULL	a	5	NULL	21	Using where; Using index
 | |
| select * from t1 where not(NULL and a);
 | |
| a
 | |
| 0
 | |
| explain select * from t1 where not((a < 5 or a < 10) and (not(a > 16) or a > 17));
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	11	Using where; Using index
 | |
| select * from t1 where not((a < 5 or a < 10) and (not(a > 16) or a > 17));
 | |
| a
 | |
| 10
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where not((a < 5 and a < 10) and (not(a > 16) or a > 17));
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	15	Using where; Using index
 | |
| select * from t1 where not((a < 5 and a < 10) and (not(a > 16) or a > 17));
 | |
| a
 | |
| 5
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| 10
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| 16
 | |
| 17
 | |
| 18
 | |
| 19
 | |
| explain select * from t1 where ((a between 5 and 15) and (not(a like 10)));
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	range	a	a	5	NULL	10	Using where; Using index
 | |
| select * from t1 where ((a between 5 and 15) and (not(a like 10)));
 | |
| a
 | |
| 5
 | |
| 6
 | |
| 7
 | |
| 8
 | |
| 9
 | |
| 11
 | |
| 12
 | |
| 13
 | |
| 14
 | |
| 15
 | |
| delete from t1 where a > 3;
 | |
| select a, not(not(a)) from t1;
 | |
| a	not(not(a))
 | |
| NULL	NULL
 | |
| 0	0
 | |
| 1	1
 | |
| 2	1
 | |
| 3	1
 | |
| explain extended select a, not(not(a)), not(a <= 2 and not(a)), not(a not like "1"), not (a not in (1,2)), not(a != 2) from t1 where not(not(a)) having not(not(a));
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	index	NULL	a	5	NULL	5	Using where; Using index
 | |
| Warnings:
 | |
| Note	1003	select `test`.`t1`.`a` AS `a`,(`test`.`t1`.`a` <> 0) AS `not(not(a))`,((`test`.`t1`.`a` > 2) or `test`.`t1`.`a`) AS `not(a <= 2 and not(a))`,(`test`.`t1`.`a` like _latin1'1') AS `not(a not like "1")`,(`test`.`t1`.`a` in (1,2)) AS `not (a not in (1,2))`,(`test`.`t1`.`a` = 2) AS `not(a != 2)` from `test`.`t1` where `test`.`t1`.`a` having `test`.`t1`.`a`
 | |
| drop table t1;
 |