~drizzle-trunk/drizzle/development

« back to all changes in this revision

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

Removed/replaced a couple DBUG calls

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
 
--sorted_result
560
558
EXPLAIN
561
559
SELECT s.oxid FROM t1 v, t1 s 
562
560
  WHERE s.oxrootid = 'd8c4177d09f8b11f5.52725521' AND
721
719
#
722
720
 
723
721
CREATE TABLE t1 (
724
 
  id int NOT NULL auto_increment,
 
722
  id int(11) NOT NULL auto_increment,
725
723
  status varchar(20),
726
724
  PRIMARY KEY  (id),
727
725
  KEY (status)
757
755
DROP TABLE t1;
758
756
 
759
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
#
760
781
# Bug #11853: DELETE statement with a NOT (LIKE/<=>) where condition
761
782
#             for an indexed attribute              
762
783
#             
779
800
 
780
801
DROP TABLE t1;
781
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
 
782
825
# BUG#13455: 
783
826
create table t3 (a int);
784
827
insert into t3 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
785
828
 
786
 
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;
787
830
insert into t1 values ('a','');
788
831
insert into t1 values ('a ','');
789
832
insert into t1 values ('a  ', '');
793
836
create table t2 (a varchar(10), filler char(200), key(a));
794
837
insert into t2 select * from t1;
795
838
 
796
 
--replace_column 3 # 8 # 9 #
 
839
--replace_column 9 #
797
840
explain select * from t1 where a between 'a' and 'a '; 
798
 
--replace_column 3 # 8 # 9 #
 
841
--replace_column 9 #
799
842
explain select * from t1 where a = 'a' or a='a ';
800
843
 
801
 
--replace_column 3 # 8 # 9 #
 
844
--replace_column 9 #
802
845
explain select * from t2 where a between 'a' and 'a '; 
803
 
--replace_column 3 # 8 # 9 #
 
846
--replace_column 9 #
804
847
explain select * from t2 where a = 'a' or a='a ';
805
848
 
806
849
update t1 set a='b' where a<>'a';
807
 
--replace_column 3 # 4 # 5 # 6 # 7 # 8 # 9 #
 
850
--replace_column 9 #
808
851
explain select * from t1 where a not between 'b' and 'b'; 
809
852
select a, hex(filler) from t1 where a not between 'b' and 'b'; 
810
853
 
811
854
drop table t1,t2,t3;
812
855
 
813
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
#
814
881
# Bug #18165: range access for BETWEEN with a constant for the first argument 
815
882
#
816
883
 
843
910
#             when a range condition use an invalid datetime constant 
844
911
#
845
912
 
846
 
CREATE TEMPORARY TABLE t1 (                                      
 
913
CREATE TABLE t1 (                                      
847
914
  item char(20) NOT NULL default '',                          
848
 
  started datetime, 
 
915
  started datetime NOT NULL default '0000-00-00 00:00:00', 
849
916
  price decimal(16,3) NOT NULL default '0.000',                 
850
917
  PRIMARY KEY (item,started)                     
851
918
) ENGINE=MyISAM;   
856
923
('A1','2005-12-12 08:00:00',3000),
857
924
('A2','2005-12-01 08:00:00',1000);
858
925
 
859
 
--replace_column 3 # 8 # 9 #
860
 
EXPLAIN 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-01 23:59:59';
862
 
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-02 00:00:00';
863
 
 
864
 
# Disabling for now, since it fails.  Likely due to only currently
865
 
# checking for bad datetimes on string conversions...
866
 
#
867
 
#DROP INDEX `PRIMARY` ON t1;
868
 
 
869
 
#EXPLAIN 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-01 23:59:59';
871
 
#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';
872
935
 
873
936
DROP TABLE t1;
874
937
 
876
939
--echo BUG#32198 "Comparison of DATE with DATETIME still not using indexes correctly"
877
940
--echo
878
941
CREATE TABLE t1 (
879
 
  id int NOT NULL auto_increment,
 
942
  id int(11) NOT NULL auto_increment,
880
943
  dateval date default NULL,
881
944
  PRIMARY KEY  (id),
882
945
  KEY dateval (dateval)
899
962
 
900
963
CREATE TABLE t1 (
901
964
  a varchar(32), index (a)
902
 
) DEFAULT COLLATE=utf8_bin;
 
965
) DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
903
966
 
904
967
INSERT INTO t1 VALUES
905
968
  ('B'), ('A'), ('A'), ('C'), ('B'), ('A'), ('A');
914
977
#
915
978
 
916
979
# test UNSIGNED. only occurs when indexed.
917
 
CREATE TABLE t1 (f1 int NOT NULL, PRIMARY KEY (f1));
 
980
CREATE TABLE t1 (f1 TINYINT(11) UNSIGNED NOT NULL, PRIMARY KEY (f1));
918
981
 
919
982
INSERT INTO t1 VALUES (127),(254),(0),(1),(255);
920
983
 
921
984
# test upper bound
922
985
# count 5
923
 
SELECT COUNT(*) FROM t1 WHERE f1 < 256;
924
 
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;
925
988
# count 4
926
 
SELECT COUNT(*) FROM t1 WHERE f1 < 255;
 
989
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 255;
927
990
 
928
991
# show we don't fiddle with lower bound on UNSIGNED
929
992
# count 0
930
 
SELECT COUNT(*) FROM t1 WHERE f1 < -1;
 
993
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < -1;
931
994
# count 5
932
 
SELECT COUNT(*) FROM t1 WHERE f1 > -1;
 
995
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -1;
933
996
 
934
997
DROP TABLE t1;
935
998
 
936
999
 
937
1000
# test signed. only occurs when index.
938
 
CREATE TABLE t1 ( f1 int NOT NULL, PRIMARY KEY (f1));
 
1001
CREATE TABLE t1 ( f1 TINYINT(11) NOT NULL, PRIMARY KEY (f1));
939
1002
 
940
1003
INSERT INTO t1 VALUES (127),(126),(0),(-128),(-127);
941
1004
 
942
1005
# test upper bound
943
1006
# count 5
944
 
SELECT COUNT(*) FROM t1 WHERE f1 < 128;
945
 
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;
946
1009
# count 4
947
 
SELECT COUNT(*) FROM t1 WHERE f1 < 127;
 
1010
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 127;
948
1011
 
949
1012
# test lower bound
950
1013
# count 5
951
 
SELECT COUNT(*) FROM t1 WHERE f1 > -129;
952
 
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;
953
1016
# count 4
954
 
SELECT COUNT(*) FROM t1 WHERE f1 > -128;
 
1017
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -128;
955
1018
 
956
1019
DROP TABLE t1;
957
1020
 
979
1042
# 500 rows, 1 row
980
1043
 
981
1044
select 'In following EXPLAIN the access method should be ref, #rows~=500 (and not 2)' Z;
982
 
create temporary table t2e like t2;
983
 
alter table t2e engine=myisam;
984
 
insert into t2e select * from t2;
985
 
analyze table t2e;
986
 
explain select * from t2e where a=1000 and b<11;
 
1045
explain select * from t2 where a=1000 and b<11;
987
1046
 
988
1047
drop table t1, t2;
989
1048