mirror of
https://github.com/MariaDB/server.git
synced 2025-11-25 17:25:02 +03:00
WL#2474 "Multi Range Read: Change the default MRR implementation to implement new MRR interface"
WL#2475 "Batched range read functions for MyISAM/InnoDb"
"Index condition pushdown for MyISAM/InnoDB"
Igor's fix from sp1r-igor@olga.mysql.com-20080330055902-07614:
There could be observed the following problems:
1. EXPLAIN did not mention pushdown conditions from on expressions in the
'extra' column. As a result if a query had no where conditions pushed
down to a table, but had on conditions pushed to this table the 'extra'
column in the EXPLAIN for the table missed 'using where'.
2. Conditions for ref access were not eliminated from on expressions
though such conditions were eliminated from the where condition.
47 lines
2.2 KiB
Plaintext
47 lines
2.2 KiB
Plaintext
# test for BUG#43618 "MyISAM&Maria returns wrong results with
|
|
# 'between' on timestamp"
|
|
|
|
--source include/have_debug.inc
|
|
|
|
# bug goes away with
|
|
#set session debug="+d,optimizer_no_icp";
|
|
|
|
######## Running INSERT tests for TIMESTAMP ########
|
|
|
|
# Create tables
|
|
CREATE TABLE t1(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME, PRIMARY KEY(c1), UNIQUE INDEX(c2));
|
|
|
|
# Insert some rows with targeted values
|
|
|
|
# As a string in either 'YYYY-MM-DD HH:MM:SS', 'YY-MM-DD HH:MM:SS', 'YYYY-MM-DD' or 'YY-MM-DD' format
|
|
INSERT INTO t1 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
|
|
|
|
# As a string with no delimiters in either 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS', 'YYYYMMDD' or 'YYMMDD' format
|
|
INSERT INTO t1 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
|
|
|
|
# As a number in either YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD or YYMMDD format
|
|
INSERT INTO t1 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
|
|
|
|
# As the result of a function
|
|
SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27
|
|
INSERT INTO t1 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
|
|
|
|
# Insert permissible NULLs
|
|
INSERT INTO t1 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
|
|
|
|
# Insert duplicate NULLs to unique column
|
|
INSERT INTO t1(c1,c2) VALUES('08/01/17',NULL);
|
|
DELETE FROM t1 WHERE c1='08/01/17' AND c2 IS NULL;
|
|
|
|
# Insert empty string '', would be converted to zero value of the appropriate type
|
|
INSERT INTO t1 VALUES('','','08-01-04','08/01/05') /* Inserts zero dates for '' strings */;
|
|
|
|
INSERT INTO t1 VALUES('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02'),('1990-01-01 00:00:01','2000-01-01 00:00:01','2009-01-03','2009-01-04'),('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06');
|
|
|
|
--sorted_result
|
|
SELECT * FROM t1;
|
|
SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
|
|
SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
|
|
DROP TABLE t1;
|
|
|