~ubuntu-branches/ubuntu/maverick/mysql-5.1/maverick-proposed

« back to all changes in this revision

Viewing changes to mysql-test/r/range.result

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers
  • Date: 2012-02-22 14:16:05 UTC
  • mto: This revision was merged to the branch mainline in revision 20.
  • Revision ID: package-import@ubuntu.com-20120222141605-nxlu9yzc6attylc2
Tags: upstream-5.1.61
ImportĀ upstreamĀ versionĀ 5.1.61

Show diffs side-by-side

added added

removed removed

Lines of Context:
1654
1654
1       1
1655
1655
DROP TABLE t1;
1656
1656
#
1657
 
# Bug#50939: Loose Index Scan unduly relies on engine to remember range 
1658
 
# endpoints
1659
 
#
1660
 
CREATE TABLE t1 (
1661
 
a INT,
1662
 
b INT,
1663
 
KEY ( a, b )
1664
 
) PARTITION BY HASH (a) PARTITIONS 1;
1665
 
CREATE TABLE t2 (
1666
 
a INT,
1667
 
b INT,
1668
 
KEY ( a, b )
1669
 
);
1670
 
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
1671
 
INSERT INTO t1 SELECT a +  5, b +  5 FROM t1;
1672
 
INSERT INTO t1 SELECT a + 10, b + 10 FROM t1;
1673
 
INSERT INTO t1 SELECT a + 20, b + 20 FROM t1;
1674
 
INSERT INTO t1 SELECT a + 40, b + 40 FROM t1;
1675
 
INSERT INTO t2 SELECT * FROM t1;
1676
 
# plans should be identical
1677
 
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a;
1678
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
1679
 
1       SIMPLE  t1      range   a       a       5       NULL    1       Using where; Using index for group-by
1680
 
EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a;
1681
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
1682
 
1       SIMPLE  t2      range   a       a       5       NULL    2       Using where; Using index for group-by
1683
 
FLUSH status;
1684
 
SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100) GROUP BY a;
1685
 
a       MAX(b)
1686
 
10      10
1687
 
# Should be no more than 4 reads.
1688
 
SHOW status LIKE 'handler_read_key';
1689
 
Variable_name   Value
1690
 
Handler_read_key        4
1691
 
FLUSH status;
1692
 
SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a;
1693
 
a       MAX(b)
1694
 
10      10
1695
 
# Should be no more than 4 reads.
1696
 
SHOW status LIKE 'handler_read_key';
1697
 
Variable_name   Value
1698
 
Handler_read_key        4
1699
 
DROP TABLE t1, t2;
 
1657
# Bug #54802: 'NOT BETWEEN' evaluation is incorrect
 
1658
#
 
1659
CREATE TABLE t1 (c_key INT, c_notkey INT, KEY(c_key));
 
1660
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
 
1661
EXPLAIN SELECT * FROM t1 WHERE 2 NOT BETWEEN c_notkey AND c_key;
 
1662
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1663
1       SIMPLE  t1      ALL     c_key   NULL    NULL    NULL    3       Using where
 
1664
SELECT * FROM t1 WHERE 2 NOT BETWEEN c_notkey AND c_key;
 
1665
c_key   c_notkey
 
1666
1       1
 
1667
3       3
 
1668
DROP TABLE t1;
 
1669
#
 
1670
# Bug #57030: 'BETWEEN' evaluation is incorrect
 
1671
#
 
1672
CREATE TABLE t1(pk INT PRIMARY KEY, i4 INT);
 
1673
CREATE UNIQUE INDEX i4_uq ON t1(i4);
 
1674
INSERT INTO t1 VALUES (1,10), (2,20), (3,30);
 
1675
EXPLAIN
 
1676
SELECT * FROM t1 WHERE i4 BETWEEN 10 AND 10;
 
1677
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1678
1       SIMPLE  t1      const   i4_uq   i4_uq   5       const   1       
 
1679
SELECT * FROM t1 WHERE i4 BETWEEN 10 AND 10;
 
1680
pk      i4
 
1681
1       10
 
1682
EXPLAIN
 
1683
SELECT * FROM t1 WHERE 10 BETWEEN i4 AND i4;
 
1684
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1685
1       SIMPLE  t1      const   i4_uq   i4_uq   5       const   1       
 
1686
SELECT * FROM t1 WHERE 10 BETWEEN i4 AND i4;
 
1687
pk      i4
 
1688
1       10
 
1689
EXPLAIN
 
1690
SELECT * FROM t1 WHERE 10 BETWEEN 10 AND i4;
 
1691
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1692
1       SIMPLE  t1      range   i4_uq   i4_uq   5       NULL    3       Using where
 
1693
SELECT * FROM t1 WHERE 10 BETWEEN 10 AND i4;
 
1694
pk      i4
 
1695
1       10
 
1696
2       20
 
1697
3       30
 
1698
EXPLAIN
 
1699
SELECT * FROM t1 WHERE 10 BETWEEN i4 AND 10;
 
1700
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1701
1       SIMPLE  t1      range   i4_uq   i4_uq   5       NULL    1       Using where
 
1702
SELECT * FROM t1 WHERE 10 BETWEEN i4 AND 10;
 
1703
pk      i4
 
1704
1       10
 
1705
EXPLAIN
 
1706
SELECT * FROM t1 WHERE 10 BETWEEN 10 AND 10;
 
1707
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1708
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       
 
1709
SELECT * FROM t1 WHERE 10 BETWEEN 10 AND 10;
 
1710
pk      i4
 
1711
1       10
 
1712
2       20
 
1713
3       30
 
1714
EXPLAIN
 
1715
SELECT * FROM t1 WHERE 10 BETWEEN 11 AND 11;
 
1716
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1717
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE
 
1718
SELECT * FROM t1 WHERE 10 BETWEEN 11 AND 11;
 
1719
pk      i4
 
1720
EXPLAIN
 
1721
SELECT * FROM t1 WHERE 10 BETWEEN 100 AND 0;
 
1722
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1723
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE
 
1724
SELECT * FROM t1 WHERE 10 BETWEEN 100 AND 0;
 
1725
pk      i4
 
1726
EXPLAIN
 
1727
SELECT * FROM t1 WHERE i4 BETWEEN 100 AND 0;
 
1728
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1729
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
1730
SELECT * FROM t1 WHERE i4 BETWEEN 100 AND 0;
 
1731
pk      i4
 
1732
EXPLAIN
 
1733
SELECT * FROM t1 WHERE i4 BETWEEN 10 AND 99999999999999999;
 
1734
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1735
1       SIMPLE  t1      range   i4_uq   i4_uq   5       NULL    2       Using where
 
1736
SELECT * FROM t1 WHERE i4 BETWEEN 10 AND 99999999999999999;
 
1737
pk      i4
 
1738
1       10
 
1739
2       20
 
1740
3       30
 
1741
EXPLAIN
 
1742
SELECT * FROM t1 WHERE i4 BETWEEN 999999999999999 AND 30;
 
1743
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1744
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
1745
SELECT * FROM t1 WHERE i4 BETWEEN 999999999999999 AND 30;
 
1746
pk      i4
 
1747
EXPLAIN
 
1748
SELECT * FROM t1 WHERE i4 BETWEEN 10 AND '20';
 
1749
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1750
1       SIMPLE  t1      range   i4_uq   i4_uq   5       NULL    1       Using where
 
1751
SELECT * FROM t1 WHERE i4 BETWEEN 10 AND '20';
 
1752
pk      i4
 
1753
1       10
 
1754
2       20
 
1755
EXPLAIN
 
1756
SELECT * FROM t1, t1 as t2 WHERE t2.pk BETWEEN t1.i4 AND t1.i4;
 
1757
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1758
1       SIMPLE  t1      ALL     i4_uq   NULL    NULL    NULL    3       
 
1759
1       SIMPLE  t2      eq_ref  PRIMARY PRIMARY 4       test.t1.i4      1       Using where
 
1760
SELECT * FROM t1, t1 as t2 WHERE t2.pk BETWEEN t1.i4 AND t1.i4;
 
1761
pk      i4      pk      i4
 
1762
EXPLAIN
 
1763
SELECT * FROM t1, t1 as t2 WHERE t1.i4 BETWEEN t2.pk AND t2.pk;
 
1764
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1765
1       SIMPLE  t1      ALL     i4_uq   NULL    NULL    NULL    3       
 
1766
1       SIMPLE  t2      eq_ref  PRIMARY PRIMARY 4       test.t1.i4      1       Using where
 
1767
SELECT * FROM t1, t1 as t2 WHERE t1.i4 BETWEEN t2.pk AND t2.pk;
 
1768
pk      i4      pk      i4
 
1769
DROP TABLE t1;
1700
1770
End of 5.1 tests