~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/t/range.test

Merged in changes. 
Edited a the comment test case so deal with our version bump.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
 
1
#
2
2
# Problem with range optimizer
3
3
#
4
4
 
7
7
--enable_warnings
8
8
 
9
9
CREATE TABLE t1 (
10
 
  event_date date NULL,
11
 
  type int DEFAULT '0' NOT NULL,
12
 
  event_id int DEFAULT '0' NOT NULL,
 
10
  event_date date DEFAULT '0000-00-00' NOT NULL,
 
11
  type int(11) DEFAULT '0' NOT NULL,
 
12
  event_id int(11) DEFAULT '0' NOT NULL,
13
13
  PRIMARY KEY (event_date,type,event_id)
14
14
);
15
15
 
38
38
drop table t1;
39
39
 
40
40
CREATE TABLE t1 (
41
 
  PAPER_ID int DEFAULT '0' NOT NULL,
42
 
  YEAR int DEFAULT '0' NOT NULL,
43
 
  ISSUE int DEFAULT '0' NOT NULL,
44
 
  CLOSED int DEFAULT '0' NOT NULL,
45
 
  ISS_DATE date,
 
41
  PAPER_ID smallint(6) DEFAULT '0' NOT NULL,
 
42
  YEAR smallint(6) DEFAULT '0' NOT NULL,
 
43
  ISSUE smallint(6) DEFAULT '0' NOT NULL,
 
44
  CLOSED tinyint(4) DEFAULT '0' NOT NULL,
 
45
  ISS_DATE date DEFAULT '0000-00-00' NOT NULL,
46
46
  PRIMARY KEY (PAPER_ID,YEAR,ISSUE)
47
47
);
48
48
INSERT INTO t1 VALUES (3,1999,34,0,'1999-07-12'), (1,1999,111,0,'1999-03-23'),
62
62
                      (3,1999,35,0,'1999-07-12');
63
63
select YEAR,ISSUE from t1 where PAPER_ID=3 and (YEAR>1999 or (YEAR=1999 and ISSUE>28))  order by YEAR,ISSUE;
64
64
check table t1;
 
65
repair table t1;
65
66
drop table t1;
66
67
 
67
68
CREATE TABLE t1 (
68
 
  id int NOT NULL auto_increment,
69
 
  parent_id int DEFAULT '0' NOT NULL,
70
 
  level int DEFAULT '0' NOT NULL,
 
69
  id int(11) NOT NULL auto_increment,
 
70
  parent_id int(11) DEFAULT '0' NOT NULL,
 
71
  level tinyint(4) DEFAULT '0' NOT NULL,
71
72
  PRIMARY KEY (id),
72
73
  KEY parent_id (parent_id),
73
74
  KEY level (level)
115
116
# Problem with binary strings
116
117
#
117
118
 
118
 
CREATE TEMPORARY TABLE t1 (
119
 
  t1ID int NOT NULL auto_increment,
120
 
  art varbinary(1) NOT NULL default '',
 
119
CREATE TABLE t1 (
 
120
  t1ID int(10) unsigned NOT NULL auto_increment,
 
121
  art binary(1) NOT NULL default '',
121
122
  KNR char(5) NOT NULL default '',
122
123
  RECHNR char(6) NOT NULL default '',
123
124
  POSNR char(2) NOT NULL default '',
196
197
#
197
198
# bug #1172: "Force index" option caused server crash
198
199
#
199
 
CREATE TABLE t1 (key1 int NOT NULL default '0', KEY i1 (key1));
 
200
CREATE TABLE t1 (key1 int(11) NOT NULL default '0', KEY i1 (key1));
200
201
INSERT INTO t1 VALUES (0),(0),(0),(0),(0),(1),(1);
201
 
CREATE TABLE t2 (keya int NOT NULL default '0', KEY j1 (keya));
 
202
CREATE TABLE t2 (keya int(11) NOT NULL default '0', KEY j1 (keya));
202
203
INSERT INTO t2 VALUES (0),(0),(1),(1),(2),(2);
203
204
explain select * from t1, t2 where (t1.key1 <t2.keya + 1) and t2.keya=3;
204
205
explain select * from t1 force index(i1), t2 force index(j1) where 
209
210
# bug #1724: use RANGE on more selective column instead of REF on less
210
211
# selective
211
212
 
212
 
CREATE TEMPORARY TABLE t1 (
213
 
  a int default NULL,
214
 
  b int default NULL,
 
213
CREATE TABLE t1 (
 
214
  a int(11) default NULL,
 
215
  b int(11) default NULL,
215
216
  KEY a (a),
216
217
  KEY b (b)
217
218
) ENGINE=MyISAM;
260
261
# Test of problem with IN on many different keyparts. (Bug #4157)
261
262
#
262
263
 
263
 
CREATE TEMPORARY TABLE t1 (
264
 
id int NOT NULL AUTO_INCREMENT ,
265
 
line int NOT NULL default '0',
266
 
columnid int NOT NULL default '0',
267
 
owner int NOT NULL default '0',
268
 
ordinal int NOT NULL default '0',
269
 
showid int NOT NULL default '1',
270
 
tableid int NOT NULL default '1',
271
 
content int NOT NULL default '188',
 
264
CREATE TABLE t1 (
 
265
id int( 11 ) unsigned NOT NULL AUTO_INCREMENT ,
 
266
line int( 5 ) unsigned NOT NULL default '0',
 
267
columnid int( 3 ) unsigned NOT NULL default '0',
 
268
owner int( 3 ) unsigned NOT NULL default '0',
 
269
ordinal int( 3 ) unsigned NOT NULL default '0',
 
270
showid smallint( 6 ) unsigned NOT NULL default '1',
 
271
tableid int( 1 ) unsigned NOT NULL default '1',
 
272
content int( 5 ) unsigned NOT NULL default '188',
272
273
PRIMARY KEY ( owner, id ) ,
273
274
KEY menu( owner, showid, columnid ) ,
274
275
KEY `COLUMN` ( owner, columnid, line ) ,
285
286
# test for a bug with in() and unique key
286
287
#
287
288
 
288
 
create  table t1 (id int primary key);
 
289
create  table t1 (id int(10) primary key);
289
290
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
290
291
 
291
292
select id from t1 where id in (2,5,9) ;
379
380
 
380
381
analyze table t1,t2;
381
382
 
382
 
--replace_column 3 # 8 # 9 #
383
383
explain select * from t1, t2  where t1.uid=t2.uid AND t1.uid > 0;
384
 
--replace_column 3 # 8 # 9 #
385
384
explain select * from t1, t2  where t1.uid=t2.uid AND t2.uid > 0;
386
 
--replace_column 3 # 8 # 9 #
387
385
explain select * from t1, t2  where t1.uid=t2.uid AND t1.uid != 0;
388
 
--replace_column 3 # 8 # 9 #
389
386
explain select * from t1, t2  where t1.uid=t2.uid AND t2.uid != 0;
390
387
 
391
388
select * from t1, t2  where t1.uid=t2.uid AND t1.uid > 0;
395
392
 
396
393
# Fix for bug#4488 
397
394
#
398
 
create table t1 (x bigint not null);
399
 
insert into t1(x) values (0x0ffffffffffffff0);
400
 
insert into t1(x) values (0x0ffffffffffffff1);
 
395
create table t1 (x bigint unsigned not null);
 
396
insert into t1(x) values (0xfffffffffffffff0);
 
397
insert into t1(x) values (0xfffffffffffffff1);
401
398
select * from t1;
402
399
select count(*) from t1 where x>0;
403
400
select count(*) from t1 where x=0;
422
419
drop table t1,t2;
423
420
 
424
421
--disable_warnings
425
 
create table t1 (x bigint not null primary key) engine=innodb;
 
422
create table t1 (x bigint unsigned not null primary key) engine=innodb;
426
423
--enable_warnings
427
 
insert into t1(x) values (0x0ffffffffffffff0);
428
 
insert into t1(x) values (0x0ffffffffffffff1);
 
424
insert into t1(x) values (0xfffffffffffffff0);
 
425
insert into t1(x) values (0xfffffffffffffff1);
429
426
select * from t1;
430
427
select count(*) from t1 where x>0;
431
428
select count(*) from t1 where x=0;
438
435
drop table t1;
439
436
 
440
437
#
441
 
# Bug #11185 incorrect comparison of int to signed constant
 
438
# Bug #11185 incorrect comparison of unsigned int to signed constant
442
439
#
443
 
create table t1 (a bigint);
 
440
create table t1 (a bigint unsigned);
444
441
create index t1i on t1(a);
445
442
insert into t1 select 18446744073709551615;
446
443
insert into t1 select 18446744073709551614;
460
457
# Bug #6045: Binary Comparison regression in MySQL 4.1
461
458
# Binary searches didn't use a case insensitive index.
462
459
#
463
 
create table t1 (a char(10), b text, key (a));
 
460
set names latin1;
 
461
create table t1 (a char(10), b text, key (a)) character set latin1;
464
462
INSERT INTO t1 (a) VALUES
465
463
('111'),('222'),('222'),('222'),('222'),('444'),('aaa'),('AAA'),('bbb');
466
464
# all these three can be optimized
467
465
explain select * from t1 where a='aaa';
468
466
explain select * from t1 where a=binary 'aaa';
469
 
explain select * from t1 where a='aaa' collate utf8_bin;
 
467
explain select * from t1 where a='aaa' collate latin1_bin;
 
468
# this one cannot:
 
469
explain select * from t1 where a='aaa' collate latin1_german1_ci;
470
470
drop table t1;
471
471
 
472
472
# Test for BUG#9348 "result for WHERE A AND (B OR C) differs from WHERE a AND (C OR B)"
473
473
--disable_warnings
474
474
CREATE TABLE t1 (
475
 
  `CLIENT` char(3) collate utf8_bin NOT NULL default '000',
476
 
  `ARG1` char(3) collate utf8_bin NOT NULL default '',
477
 
  `ARG2` char(3) collate utf8_bin NOT NULL default '',
478
 
  `FUNCTION` varchar(10) collate utf8_bin NOT NULL default '',
479
 
  `FUNCTINT` int NOT NULL default '0',
 
475
  `CLIENT` char(3) character set latin1 collate latin1_bin NOT NULL default '000',
 
476
  `ARG1` char(3) character set latin1 collate latin1_bin NOT NULL default '',
 
477
  `ARG2` char(3) character set latin1 collate latin1_bin NOT NULL default '',
 
478
  `FUNCTION` varchar(10) character set latin1 collate latin1_bin NOT NULL default '',
 
479
  `FUNCTINT` int(11) NOT NULL default '0',
480
480
  KEY `VERI_CLNT~2` (`ARG1`)
481
 
) ENGINE=InnoDB;
 
481
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
482
482
--enable_warnings
483
483
 
484
484
INSERT INTO t1 VALUES ('000',' 0',' 0','Text 001',0), ('000',' 0',' 1','Text 002',0),
496
496
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
497
497
 
498
498
CREATE TABLE t2 (
499
 
  pk1 int NOT NULL,
500
 
  pk2 int NOT NULL,
501
 
  pk3 int NOT NULL,
502
 
  pk4 int NOT NULL,
 
499
  pk1 int(11) NOT NULL,
 
500
  pk2 int(11) NOT NULL,
 
501
  pk3 int(11) NOT NULL,
 
502
  pk4 int(11) NOT NULL,
503
503
  filler char(82),
504
504
  PRIMARY KEY (pk1,pk2,pk3,pk4)
505
 
);
 
505
) DEFAULT CHARSET=latin1;
506
506
 
507
507
insert into t2 select 1, A.a+10*B.a, 432, 44, 'fillerZ' from t1 A, t1 B;
508
508
INSERT INTO t2 VALUES (2621, 2635, 0, 0,'filler'), (2621, 2635, 1, 0,'filler'),
530
530
#
531
531
 
532
532
CREATE TABLE t1 (
533
 
  OXID varchar(32) NOT NULL DEFAULT '',
534
 
  OXPARENTID varchar(32) NOT NULL DEFAULT 'oxrootid',
 
533
  OXID varchar(32) COLLATE latin1_german2_ci NOT NULL DEFAULT '',
 
534
  OXPARENTID varchar(32) COLLATE latin1_german2_ci NOT NULL DEFAULT 'oxrootid',
535
535
  OXLEFT int NOT NULL DEFAULT '0',
536
536
  OXRIGHT int NOT NULL DEFAULT '0',
537
 
  OXROOTID varchar(32) NOT NULL DEFAULT '',
 
537
  OXROOTID varchar(32) COLLATE latin1_german2_ci NOT NULL DEFAULT '',
538
538
  PRIMARY KEY  (OXID),
539
539
  KEY OXNID (OXID),
540
540
  KEY OXLEFT (OXLEFT),
541
541
  KEY OXRIGHT (OXRIGHT),
542
542
  KEY OXROOTID (OXROOTID)
543
 
);
 
543
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
544
544
 
545
545
INSERT INTO t1 VALUES
546
546
('d8c4177d09f8b11f5.52725521','oxrootid',1,40,'d8c4177d09f8b11f5.52725521'),
555
555
('d8c4177d24ccef970.14957924','d8c4177d09f8b11f5.52725521',10,11,
556
556
 'd8c4177d09f8b11f5.52725521');
557
557
 
558
 
--replace_column 3 # 8 # 9 #
559
558
EXPLAIN
560
559
SELECT s.oxid FROM t1 v, t1 s 
561
560
  WHERE s.oxrootid = 'd8c4177d09f8b11f5.52725521' AND
720
719
#
721
720
 
722
721
CREATE TABLE t1 (
723
 
  id int NOT NULL auto_increment,
 
722
  id int(11) NOT NULL auto_increment,
724
723
  status varchar(20),
725
724
  PRIMARY KEY  (id),
726
725
  KEY (status)
756
755
DROP TABLE t1;
757
756
 
758
757
#
 
758
# Test for bug #10031: range to be used over a view
 
759
#
 
760
 
 
761
CREATE TABLE  t1 (a int, b int, primary key(a,b));
 
762
 
 
763
INSERT INTO  t1 VALUES
 
764
  (1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3),(4,1),(4,2),(4,3);
 
765
 
 
766
CREATE VIEW v1 as SELECT a,b FROM t1 WHERE b=3;
 
767
 
 
768
EXPLAIN SELECT a,b FROM t1 WHERE a < 2 and b=3;
 
769
EXPLAIN SELECT a,b FROM v1 WHERE a < 2 and b=3;
 
770
 
 
771
EXPLAIN SELECT a,b FROM t1 WHERE a < 2;
 
772
EXPLAIN SELECT a,b FROM v1 WHERE a < 2;
 
773
 
 
774
SELECT a,b FROM t1 WHERE a < 2 and b=3;
 
775
SELECT a,b FROM v1 WHERE a < 2 and b=3; 
 
776
 
 
777
DROP VIEW v1;
 
778
DROP TABLE t1;
 
779
 
 
780
#
759
781
# Bug #11853: DELETE statement with a NOT (LIKE/<=>) where condition
760
782
#             for an indexed attribute              
761
783
#             
778
800
 
779
801
DROP TABLE t1;
780
802
 
 
803
#
 
804
# BUG#13317: range optimization doesn't work for IN over VIEW.
 
805
#
 
806
create table t1 (a int, b int, primary key(a,b));
 
807
create view v1 as select a, b from t1;
 
808
 
 
809
INSERT INTO `t1` VALUES
 
810
(0,0),(1,0),(2,0),(3,0),(4,0),(5,1),(6,1),(7,1),(8,1),(9,1),(10,2),(11,2),(12,2)
 
811
,(13,2),(14,2),(15,3),(16,3),(17,3),(18,3),(19,3);
 
812
 
 
813
--replace_column 9 #
 
814
explain select * from t1 where a in (3,4)  and b in (1,2,3);
 
815
--replace_column 9 #
 
816
explain select * from v1 where a in (3,4)  and b in (1,2,3);
 
817
--replace_column 9 #
 
818
explain select * from t1 where a between 3 and 4 and b between 1 and 2;
 
819
--replace_column 9 #
 
820
explain select * from v1 where a between 3 and 4 and b between 1 and 2;
 
821
 
 
822
drop view v1;
 
823
drop table t1;
 
824
 
781
825
# BUG#13455: 
782
826
create table t3 (a int);
783
827
insert into t3 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
784
828
 
785
 
create table t1 (a varchar(10), filler char(200), key(a));
 
829
create table t1 (a varchar(10), filler char(200), key(a)) charset=binary;
786
830
insert into t1 values ('a','');
787
831
insert into t1 values ('a ','');
788
832
insert into t1 values ('a  ', '');
792
836
create table t2 (a varchar(10), filler char(200), key(a));
793
837
insert into t2 select * from t1;
794
838
 
795
 
--replace_column 3 # 8 # 9 #
 
839
--replace_column 9 #
796
840
explain select * from t1 where a between 'a' and 'a '; 
797
 
--replace_column 3 # 8 # 9 #
 
841
--replace_column 9 #
798
842
explain select * from t1 where a = 'a' or a='a ';
799
843
 
800
 
--replace_column 3 # 8 # 9 #
 
844
--replace_column 9 #
801
845
explain select * from t2 where a between 'a' and 'a '; 
802
 
--replace_column 3 # 8 # 9 #
 
846
--replace_column 9 #
803
847
explain select * from t2 where a = 'a' or a='a ';
804
848
 
805
849
update t1 set a='b' where a<>'a';
806
 
--replace_column 3 # 8 # 9 #
 
850
--replace_column 9 #
807
851
explain select * from t1 where a not between 'b' and 'b'; 
808
852
select a, hex(filler) from t1 where a not between 'b' and 'b'; 
809
853
 
810
854
drop table t1,t2,t3;
811
855
 
812
856
#
 
857
# BUG#21282
 
858
#
 
859
create table t1 (a int);
 
860
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
861
create table t2 (a int, key(a));
 
862
insert into t2 select 2*(A.a + 10*(B.a + 10*C.a)) from t1 A, t1 B, t1 C;
 
863
 
 
864
set @a="select * from t2 force index (a) where a NOT IN(0";
 
865
select count(*) from (select @a:=concat(@a, ',', a) from t2 ) Z;
 
866
set @a=concat(@a, ')');
 
867
 
 
868
insert into t2 values (11),(13),(15);
 
869
 
 
870
set @b= concat("explain ", @a);
 
871
 
 
872
prepare stmt1 from @b;
 
873
execute stmt1;
 
874
 
 
875
prepare stmt1 from @a;
 
876
execute stmt1;
 
877
 
 
878
drop table t1, t2;
 
879
 
 
880
#
813
881
# Bug #18165: range access for BETWEEN with a constant for the first argument 
814
882
#
815
883
 
842
910
#             when a range condition use an invalid datetime constant 
843
911
#
844
912
 
845
 
CREATE TEMPORARY TABLE t1 (                                      
 
913
CREATE TABLE t1 (                                      
846
914
  item char(20) NOT NULL default '',                          
847
 
  started datetime, 
 
915
  started datetime NOT NULL default '0000-00-00 00:00:00', 
848
916
  price decimal(16,3) NOT NULL default '0.000',                 
849
917
  PRIMARY KEY (item,started)                     
850
918
) ENGINE=MyISAM;   
855
923
('A1','2005-12-12 08:00:00',3000),
856
924
('A2','2005-12-01 08:00:00',1000);
857
925
 
858
 
--replace_column 3 # 8 # 9 #
859
 
EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 23:59:59';
860
 
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 23:59:59';
861
 
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-02 00:00:00';
862
 
 
863
 
# Disabling for now, since it fails.  Likely due to only currently
864
 
# checking for bad datetimes on string conversions...
865
 
#
866
 
#DROP INDEX `PRIMARY` ON t1;
867
 
 
868
 
#EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 23:59:59';
869
 
#SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 23:59:59';
870
 
#SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-02 00:00:00';
 
926
EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
 
927
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
 
928
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-02 00:00:00';
 
929
 
 
930
DROP INDEX `PRIMARY` ON t1;
 
931
 
 
932
EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
 
933
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
 
934
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-02 00:00:00';
871
935
 
872
936
DROP TABLE t1;
873
937
 
875
939
--echo BUG#32198 "Comparison of DATE with DATETIME still not using indexes correctly"
876
940
--echo
877
941
CREATE TABLE t1 (
878
 
  id int NOT NULL auto_increment,
 
942
  id int(11) NOT NULL auto_increment,
879
943
  dateval date default NULL,
880
944
  PRIMARY KEY  (id),
881
945
  KEY dateval (dateval)
898
962
 
899
963
CREATE TABLE t1 (
900
964
  a varchar(32), index (a)
901
 
) DEFAULT COLLATE=utf8_bin;
 
965
) DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
902
966
 
903
967
INSERT INTO t1 VALUES
904
968
  ('B'), ('A'), ('A'), ('C'), ('B'), ('A'), ('A');
913
977
#
914
978
 
915
979
# test UNSIGNED. only occurs when indexed.
916
 
CREATE TABLE t1 (f1 int NOT NULL, PRIMARY KEY (f1));
 
980
CREATE TABLE t1 (f1 TINYINT(11) UNSIGNED NOT NULL, PRIMARY KEY (f1));
917
981
 
918
982
INSERT INTO t1 VALUES (127),(254),(0),(1),(255);
919
983
 
920
984
# test upper bound
921
985
# count 5
922
 
SELECT COUNT(*) FROM t1 WHERE f1 < 256;
923
 
SELECT COUNT(*) FROM t1 WHERE f1 < 256.0;
 
986
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256;
 
987
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256.0;
924
988
# count 4
925
 
SELECT COUNT(*) FROM t1 WHERE f1 < 255;
 
989
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 255;
926
990
 
927
991
# show we don't fiddle with lower bound on UNSIGNED
928
992
# count 0
929
 
SELECT COUNT(*) FROM t1 WHERE f1 < -1;
 
993
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < -1;
930
994
# count 5
931
 
SELECT COUNT(*) FROM t1 WHERE f1 > -1;
 
995
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -1;
932
996
 
933
997
DROP TABLE t1;
934
998
 
935
999
 
936
1000
# test signed. only occurs when index.
937
 
CREATE TABLE t1 ( f1 int NOT NULL, PRIMARY KEY (f1));
 
1001
CREATE TABLE t1 ( f1 TINYINT(11) NOT NULL, PRIMARY KEY (f1));
938
1002
 
939
1003
INSERT INTO t1 VALUES (127),(126),(0),(-128),(-127);
940
1004
 
941
1005
# test upper bound
942
1006
# count 5
943
 
SELECT COUNT(*) FROM t1 WHERE f1 < 128;
944
 
SELECT COUNT(*) FROM t1 WHERE f1 < 128.0;
 
1007
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128;
 
1008
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128.0;
945
1009
# count 4
946
 
SELECT COUNT(*) FROM t1 WHERE f1 < 127;
 
1010
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 127;
947
1011
 
948
1012
# test lower bound
949
1013
# count 5
950
 
SELECT COUNT(*) FROM t1 WHERE f1 > -129;
951
 
SELECT COUNT(*) FROM t1 WHERE f1 > -129.0;
 
1014
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129;
 
1015
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129.0;
952
1016
# count 4
953
 
SELECT COUNT(*) FROM t1 WHERE f1 > -128;
 
1017
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -128;
954
1018
 
955
1019
DROP TABLE t1;
956
1020
 
978
1042
# 500 rows, 1 row
979
1043
 
980
1044
select 'In following EXPLAIN the access method should be ref, #rows~=500 (and not 2)' Z;
981
 
create temporary table t2e like t2;
982
 
alter table t2e engine=myisam;
983
 
insert into t2e select * from t2;
984
 
analyze table t2e;
985
 
explain select * from t2e where a=1000 and b<11;
 
1045
explain select * from t2 where a=1000 and b<11;
986
1046
 
987
1047
drop table t1, t2;
988
1048