Commit 8fa44178 authored by unknown's avatar unknown
Browse files

Merge mhansson@bk-internal.mysql.com:/home/bk/mysql-5.1-opt

into  dl145s.mysql.com:/users/mhansson/mysql/autopush/5.1o-bug24778

parents f0c50440 7a3148a7
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -489,3 +489,44 @@ EXPLAIN SELECT MAX(a) FROM t1 FORCE INDEX(a);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	
drop table t1;
CREATE TABLE t1 (
a INTEGER auto_increment PRIMARY KEY,
b INTEGER NOT NULL,
c INTEGER NOT NULL,
d CHAR(64)
);
CREATE TABLE t2 (
a INTEGER auto_increment PRIMARY KEY,
b INTEGER NOT NULL,
c SMALLINT NOT NULL,
d DATETIME NOT NULL,
e SMALLINT NOT NULL,
f INTEGER NOT NULL,
g INTEGER NOT NULL,  
h SMALLINT NOT NULL,
i INTEGER NOT NULL,
j INTEGER NOT NULL,
UNIQUE INDEX (b),
INDEX (b, d, e, f, g, h, i, j, c),
INDEX (c)
);
INSERT INTO t2 VALUES 
(NULL, 1, 254, '1000-01-01 00:00:00', 257, 0, 0, 0, 0, 0),
(NULL, 2, 1, '2004-11-30 12:00:00', 1, 0, 0, 0, 0, 0),
(NULL, 3, 1, '2004-11-30 12:00:00', 1, 0, 0, 2, -21600, 0),
(NULL, 4, 1, '2004-11-30 12:00:00', 1, 0, 0, 2, -10800, 0),
(NULL, 5, 1, '2004-11-30 12:00:00', 1, 0, 0, 5, -10800, 0),
(NULL, 6, 1, '2004-11-30 12:00:00', 102, 0, 0, 0, 0, 0),
(NULL, 7, 1, '2004-11-30 12:00:00', 105, 2, 0, 0, 0, 0),
(NULL, 8, 1, '2004-11-30 12:00:00', 105, 10, 0, 0, 0, 0);
INSERT INTO t1 (b, c, d) VALUES
(3388000, -553000, NULL),
(3388000, -553000, NULL);
SELECT *
FROM t2 c JOIN t1 pa ON c.b = pa.a 
WHERE c.c = 1
ORDER BY c.b, c.d
;
a	b	c	d	e	f	g	h	i	j	a	b	c	d
2	2	1	2004-11-30 12:00:00	1	0	0	0	0	0	2	3388000	-553000	NULL
DROP TABLE t1, t2;
+48 −0
Original line number Diff line number Diff line
@@ -453,3 +453,51 @@ ALTER TABLE t1 DISABLE KEYS;
EXPLAIN SELECT MAX(a) FROM t1 FORCE INDEX(a);

drop table t1;

#
# Bug #24778: Innodb: No result when using ORDER BY
#
CREATE TABLE t1 (
  a INTEGER auto_increment PRIMARY KEY,
  b INTEGER NOT NULL,
  c INTEGER NOT NULL,
  d CHAR(64)
);

CREATE TABLE t2 (
  a INTEGER auto_increment PRIMARY KEY,
  b INTEGER NOT NULL,
  c SMALLINT NOT NULL,
  d DATETIME NOT NULL,
  e SMALLINT NOT NULL,
  f INTEGER NOT NULL,
  g INTEGER NOT NULL,  
  h SMALLINT NOT NULL,
  i INTEGER NOT NULL,
  j INTEGER NOT NULL,
  UNIQUE INDEX (b),
  INDEX (b, d, e, f, g, h, i, j, c),
  INDEX (c)
);

INSERT INTO t2 VALUES 
  (NULL, 1, 254, '1000-01-01 00:00:00', 257, 0, 0, 0, 0, 0),
  (NULL, 2, 1, '2004-11-30 12:00:00', 1, 0, 0, 0, 0, 0),
  (NULL, 3, 1, '2004-11-30 12:00:00', 1, 0, 0, 2, -21600, 0),
  (NULL, 4, 1, '2004-11-30 12:00:00', 1, 0, 0, 2, -10800, 0),
  (NULL, 5, 1, '2004-11-30 12:00:00', 1, 0, 0, 5, -10800, 0),
  (NULL, 6, 1, '2004-11-30 12:00:00', 102, 0, 0, 0, 0, 0),
  (NULL, 7, 1, '2004-11-30 12:00:00', 105, 2, 0, 0, 0, 0),
  (NULL, 8, 1, '2004-11-30 12:00:00', 105, 10, 0, 0, 0, 0);

INSERT INTO t1 (b, c, d) VALUES
  (3388000, -553000, NULL),
  (3388000, -553000, NULL);

SELECT *
FROM t2 c JOIN t1 pa ON c.b = pa.a 
WHERE c.c = 1
ORDER BY c.b, c.d
;

DROP TABLE t1, t2;
+1 −4
Original line number Diff line number Diff line
@@ -6106,10 +6106,7 @@ make_join_readinfo(JOIN *join, ulonglong options)
    */
    if (!ordered_set && 
        (table == join->sort_by_table &&
         (!join->order || join->skip_sort_order ||
          test_if_skip_sort_order(tab, join->order, join->select_limit,
                                  1, &table->keys_in_use_for_order_by))
        ) ||
         (!join->order || join->skip_sort_order)) ||
        (join->sort_by_table == (TABLE *) 1 && i != join->const_tables))
      ordered_set= 1;