mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Backported the test case for bug 43617 fixed by the patch for bug 42580.
Backported the test case for bug 49906 fixed by the patch for LP bug 625841. Slightly optimized the code of the fix for LP bug 625841.
This commit is contained in:
@ -86,6 +86,78 @@ SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c1,c2 LIMIT 2;
|
||||
--echo
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#43617 - Innodb returns wrong results with timestamp's range value
|
||||
--echo # in IN clause
|
||||
--echo # (Note: Fixed by patch for BUG#42580)
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(
|
||||
c1 TIMESTAMP NOT NULL,
|
||||
c2 TIMESTAMP NULL,
|
||||
c3 DATE,
|
||||
c4 DATETIME,
|
||||
PRIMARY KEY(c1),
|
||||
UNIQUE INDEX(c2)
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
('0000-00-00 00:00:00','0000-00-00 00:00:00','2008-01-04','2008-01-05 00:00:00'),
|
||||
('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02 00:00:00'),
|
||||
('1999-01-01 00:00:00','1999-01-01 00:00:00', NULL, NULL),
|
||||
('2007-05-23 09:15:28','2007-05-23 09:15:28','2007-05-24','2007-05-24 09:15:28'),
|
||||
('2007-05-27 00:00:00','2007-05-25 00:00:00','2007-05-26','2007-05-26 00:00:00'),
|
||||
('2008-01-01 00:00:00', NULL, '2008-01-02','2008-01-03 00:00:00'),
|
||||
('2009-01-29 11:11:27','2009-01-29 11:11:27','2009-01-29','2009-01-29 11:11:27'),
|
||||
('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06 00:00:00');
|
||||
|
||||
--echo
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2;
|
||||
|
||||
--echo
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 LIMIT 2;
|
||||
|
||||
--echo
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 DESC;
|
||||
|
||||
--echo
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 DESC LIMIT 2;
|
||||
|
||||
--echo
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#49906: Assertion failed - Field_varstring::val_str in field.cc
|
||||
--echo # (Note: Fixed by patch for LP BUG#625841)
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
f1 VARCHAR(1024),
|
||||
f2 VARCHAR(10),
|
||||
INDEX test_idx USING BTREE (f2,f1(5))
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES ('a','c'), ('b','d');
|
||||
|
||||
SELECT f1
|
||||
FROM t1
|
||||
WHERE f2 LIKE 'd'
|
||||
ORDER BY f1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#40992 - InnoDB: Crash when engine_condition_pushdown is on
|
||||
--echo #
|
||||
@ -102,6 +174,7 @@ SELECT * FROM t WHERE a > 2 FOR UPDATE;
|
||||
|
||||
DROP TABLE t;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#35080 - Innodb crash at mem_block_get_len line 72
|
||||
--echo #
|
||||
|
@ -79,6 +79,75 @@ c1 c2 c3 c4
|
||||
2008-01-01 NULL 2008-01-02 00:00:00 2008-01-03 00:00:00
|
||||
2008-01-17 NULL NULL 2009-01-29 00:00:00
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#43617 - Innodb returns wrong results with timestamp's range value
|
||||
# in IN clause
|
||||
# (Note: Fixed by patch for BUG#42580)
|
||||
#
|
||||
CREATE TABLE t1(
|
||||
c1 TIMESTAMP NOT NULL,
|
||||
c2 TIMESTAMP NULL,
|
||||
c3 DATE,
|
||||
c4 DATETIME,
|
||||
PRIMARY KEY(c1),
|
||||
UNIQUE INDEX(c2)
|
||||
);
|
||||
INSERT INTO t1 VALUES
|
||||
('0000-00-00 00:00:00','0000-00-00 00:00:00','2008-01-04','2008-01-05 00:00:00'),
|
||||
('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02 00:00:00'),
|
||||
('1999-01-01 00:00:00','1999-01-01 00:00:00', NULL, NULL),
|
||||
('2007-05-23 09:15:28','2007-05-23 09:15:28','2007-05-24','2007-05-24 09:15:28'),
|
||||
('2007-05-27 00:00:00','2007-05-25 00:00:00','2007-05-26','2007-05-26 00:00:00'),
|
||||
('2008-01-01 00:00:00', NULL, '2008-01-02','2008-01-03 00:00:00'),
|
||||
('2009-01-29 11:11:27','2009-01-29 11:11:27','2009-01-29','2009-01-29 11:11:27'),
|
||||
('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06 00:00:00');
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 LIMIT 2;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 DESC;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 DESC LIMIT 2;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG#49906: Assertion failed - Field_varstring::val_str in field.cc
|
||||
# (Note: Fixed by patch for LP BUG#625841)
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
f1 VARCHAR(1024),
|
||||
f2 VARCHAR(10),
|
||||
INDEX test_idx USING BTREE (f2,f1(5))
|
||||
);
|
||||
INSERT INTO t1 VALUES ('a','c'), ('b','d');
|
||||
SELECT f1
|
||||
FROM t1
|
||||
WHERE f2 LIKE 'd'
|
||||
ORDER BY f1;
|
||||
f1
|
||||
b
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#40992 - InnoDB: Crash when engine_condition_pushdown is on
|
||||
|
@ -726,6 +726,7 @@ JA USA
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Testcase backport: Bug#43249
|
||||
# (Note: Fixed by patch for BUG#42580)
|
||||
#
|
||||
CREATE TABLE t1(c1 TIME NOT NULL, c2 TIME NULL, c3 DATE, PRIMARY KEY(c1), UNIQUE INDEX(c2)) engine=innodb;
|
||||
INSERT INTO t1 VALUES('8:29:45',NULL,'2009-02-01');
|
||||
|
@ -79,6 +79,75 @@ c1 c2 c3 c4
|
||||
2008-01-01 NULL 2008-01-02 00:00:00 2008-01-03 00:00:00
|
||||
2008-01-17 NULL NULL 2009-01-29 00:00:00
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#43617 - Innodb returns wrong results with timestamp's range value
|
||||
# in IN clause
|
||||
# (Note: Fixed by patch for BUG#42580)
|
||||
#
|
||||
CREATE TABLE t1(
|
||||
c1 TIMESTAMP NOT NULL,
|
||||
c2 TIMESTAMP NULL,
|
||||
c3 DATE,
|
||||
c4 DATETIME,
|
||||
PRIMARY KEY(c1),
|
||||
UNIQUE INDEX(c2)
|
||||
);
|
||||
INSERT INTO t1 VALUES
|
||||
('0000-00-00 00:00:00','0000-00-00 00:00:00','2008-01-04','2008-01-05 00:00:00'),
|
||||
('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02 00:00:00'),
|
||||
('1999-01-01 00:00:00','1999-01-01 00:00:00', NULL, NULL),
|
||||
('2007-05-23 09:15:28','2007-05-23 09:15:28','2007-05-24','2007-05-24 09:15:28'),
|
||||
('2007-05-27 00:00:00','2007-05-25 00:00:00','2007-05-26','2007-05-26 00:00:00'),
|
||||
('2008-01-01 00:00:00', NULL, '2008-01-02','2008-01-03 00:00:00'),
|
||||
('2009-01-29 11:11:27','2009-01-29 11:11:27','2009-01-29','2009-01-29 11:11:27'),
|
||||
('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06 00:00:00');
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 LIMIT 2;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 DESC;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 DESC LIMIT 2;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG#49906: Assertion failed - Field_varstring::val_str in field.cc
|
||||
# (Note: Fixed by patch for LP BUG#625841)
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
f1 VARCHAR(1024),
|
||||
f2 VARCHAR(10),
|
||||
INDEX test_idx USING BTREE (f2,f1(5))
|
||||
);
|
||||
INSERT INTO t1 VALUES ('a','c'), ('b','d');
|
||||
SELECT f1
|
||||
FROM t1
|
||||
WHERE f2 LIKE 'd'
|
||||
ORDER BY f1;
|
||||
f1
|
||||
b
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#40992 - InnoDB: Crash when engine_condition_pushdown is on
|
||||
|
@ -77,6 +77,75 @@ c1 c2 c3 c4
|
||||
2008-01-01 NULL 2008-01-02 00:00:00 2008-01-03 00:00:00
|
||||
2008-01-17 NULL NULL 2009-01-29 00:00:00
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#43617 - Innodb returns wrong results with timestamp's range value
|
||||
# in IN clause
|
||||
# (Note: Fixed by patch for BUG#42580)
|
||||
#
|
||||
CREATE TABLE t1(
|
||||
c1 TIMESTAMP NOT NULL,
|
||||
c2 TIMESTAMP NULL,
|
||||
c3 DATE,
|
||||
c4 DATETIME,
|
||||
PRIMARY KEY(c1),
|
||||
UNIQUE INDEX(c2)
|
||||
);
|
||||
INSERT INTO t1 VALUES
|
||||
('0000-00-00 00:00:00','0000-00-00 00:00:00','2008-01-04','2008-01-05 00:00:00'),
|
||||
('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02 00:00:00'),
|
||||
('1999-01-01 00:00:00','1999-01-01 00:00:00', NULL, NULL),
|
||||
('2007-05-23 09:15:28','2007-05-23 09:15:28','2007-05-24','2007-05-24 09:15:28'),
|
||||
('2007-05-27 00:00:00','2007-05-25 00:00:00','2007-05-26','2007-05-26 00:00:00'),
|
||||
('2008-01-01 00:00:00', NULL, '2008-01-02','2008-01-03 00:00:00'),
|
||||
('2009-01-29 11:11:27','2009-01-29 11:11:27','2009-01-29','2009-01-29 11:11:27'),
|
||||
('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06 00:00:00');
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 LIMIT 2;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 DESC;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07')
|
||||
ORDER BY c2 DESC LIMIT 2;
|
||||
c1 c2 c3 c4
|
||||
2038-01-09 03:14:07 2038-01-09 03:14:07 2009-01-05 2009-01-06 00:00:00
|
||||
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG#49906: Assertion failed - Field_varstring::val_str in field.cc
|
||||
# (Note: Fixed by patch for LP BUG#625841)
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
f1 VARCHAR(1024),
|
||||
f2 VARCHAR(10),
|
||||
INDEX test_idx USING BTREE (f2,f1(5))
|
||||
);
|
||||
INSERT INTO t1 VALUES ('a','c'), ('b','d');
|
||||
SELECT f1
|
||||
FROM t1
|
||||
WHERE f2 LIKE 'd'
|
||||
ORDER BY f1;
|
||||
f1
|
||||
b
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#40992 - InnoDB: Crash when engine_condition_pushdown is on
|
||||
|
@ -417,6 +417,7 @@ DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # Testcase backport: Bug#43249
|
||||
--echo # (Note: Fixed by patch for BUG#42580)
|
||||
--echo #
|
||||
CREATE TABLE t1(c1 TIME NOT NULL, c2 TIME NULL, c3 DATE, PRIMARY KEY(c1), UNIQUE INDEX(c2)) engine=innodb;
|
||||
INSERT INTO t1 VALUES('8:29:45',NULL,'2009-02-01');
|
||||
|
@ -547,12 +547,11 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select,
|
||||
/* Temporary set for register_used_fields and register_field_in_read_map */
|
||||
sort_form->read_set= &sort_form->tmp_set;
|
||||
register_used_fields(param);
|
||||
if (select && select->cond)
|
||||
select->cond->walk(&Item::register_field_in_read_map, 1,
|
||||
(uchar*) sort_form);
|
||||
if (select && select->pre_idx_push_select_cond)
|
||||
select->pre_idx_push_select_cond->walk(&Item::register_field_in_read_map,
|
||||
1, (uchar*) sort_form);
|
||||
Item *sort_cond= !select ?
|
||||
0 : !select->pre_idx_push_select_cond ?
|
||||
select->cond : select->pre_idx_push_select_cond;
|
||||
if (sort_cond)
|
||||
sort_cond->walk(&Item::register_field_in_read_map, 1, (uchar*) sort_form);
|
||||
sort_form->column_bitmaps_set(&sort_form->tmp_set, &sort_form->tmp_set,
|
||||
&sort_form->tmp_set);
|
||||
|
||||
|
Reference in New Issue
Block a user