mirror of
https://github.com/MariaDB/server.git
synced 2025-10-22 19:52:58 +03:00
Manual merge of mysql-5.1-bugteam into mysql-trunk-merge.
This commit is contained in:
@@ -1848,6 +1848,24 @@ select hex(_utf8 B'001111111111');
|
||||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
select (_utf8 X'616263FF');
|
||||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
#
|
||||
# Bug#44131 Binary-mode "order by" returns records in incorrect order for UTF-8 strings
|
||||
#
|
||||
CREATE TABLE t1 (id int not null primary key, name varchar(10)) character set utf8;
|
||||
INSERT INTO t1 VALUES
|
||||
(2,'一二三01'),(3,'一二三09'),(4,'一二三02'),(5,'一二三08'),
|
||||
(6,'一二三11'),(7,'一二三91'),(8,'一二三21'),(9,'一二三81');
|
||||
SELECT * FROM t1 ORDER BY BINARY(name);
|
||||
id name
|
||||
2 一二三01
|
||||
4 一二三02
|
||||
5 一二三08
|
||||
3 一二三09
|
||||
6 一二三11
|
||||
8 一二三21
|
||||
9 一二三81
|
||||
7 一二三91
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL);
|
||||
INSERT INTO t1 VALUES (70000, 1092), (70001, 1085), (70002, 1065);
|
||||
SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) FROM t1 GROUP BY b;
|
||||
|
@@ -2561,6 +2561,35 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2 Using join buffer
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 2
|
||||
drop table t1;
|
||||
#
|
||||
# Bug#49141: Encode function is significantly slower in 5.1 compared to 5.0
|
||||
#
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
CREATE TABLE t1 (a VARCHAR(20), b INT);
|
||||
CREATE TABLE t2 (a VARCHAR(20), b INT);
|
||||
INSERT INTO t1 VALUES ('ABC', 1);
|
||||
INSERT INTO t2 VALUES ('ABC', 1);
|
||||
SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a)
|
||||
FROM t1,t2 WHERE t1.b = t1.b > 0 GROUP BY t2.b;
|
||||
DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a)
|
||||
secret
|
||||
SELECT DECODE((SELECT ENCODE('secret', 'ABC') FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a)
|
||||
FROM t1,t2 WHERE t1.b = t1.b > 0 GROUP BY t2.b;
|
||||
DECODE((SELECT ENCODE('secret', 'ABC') FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a)
|
||||
secret
|
||||
SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), 'ABC')
|
||||
FROM t1,t2 WHERE t1.b = t1.b > 0 GROUP BY t2.b;
|
||||
DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), 'ABC')
|
||||
secret
|
||||
TRUNCATE TABLE t1;
|
||||
TRUNCATE TABLE t2;
|
||||
INSERT INTO t1 VALUES ('EDF', 3), ('BCD', 2), ('ABC', 1);
|
||||
INSERT INTO t2 VALUES ('EDF', 3), ('BCD', 2), ('ABC', 1);
|
||||
SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b LIMIT 1), t2.a)
|
||||
FROM t2 WHERE t2.b = 1 GROUP BY t2.b;
|
||||
DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b LIMIT 1), t2.a)
|
||||
secret
|
||||
DROP TABLE t1, t2;
|
||||
Start of 5.4 tests
|
||||
SELECT format(12345678901234567890.123, 3);
|
||||
format(12345678901234567890.123, 3)
|
||||
|
@@ -127,4 +127,46 @@ mysql.time_zone_transition OK
|
||||
mysql.time_zone_transition_type OK
|
||||
mysql.user OK
|
||||
set GLOBAL sql_mode=default;
|
||||
#
|
||||
# Bug #41569 mysql_upgrade (ver 5.1) add 3 fields to mysql.proc table
|
||||
# but does not set values.
|
||||
#
|
||||
CREATE PROCEDURE testproc() BEGIN END;
|
||||
UPDATE mysql.proc SET character_set_client = NULL WHERE name LIKE 'testproc';
|
||||
UPDATE mysql.proc SET collation_connection = NULL WHERE name LIKE 'testproc';
|
||||
UPDATE mysql.proc SET db_collation = NULL WHERE name LIKE 'testproc';
|
||||
mtr.global_suppressions OK
|
||||
mtr.test_suppressions OK
|
||||
mysql.columns_priv OK
|
||||
mysql.db OK
|
||||
mysql.event OK
|
||||
mysql.func OK
|
||||
mysql.general_log
|
||||
Error : You can't use locks with log tables.
|
||||
status : OK
|
||||
mysql.help_category OK
|
||||
mysql.help_keyword OK
|
||||
mysql.help_relation OK
|
||||
mysql.help_topic OK
|
||||
mysql.host OK
|
||||
mysql.ndb_binlog_index OK
|
||||
mysql.plugin OK
|
||||
mysql.proc OK
|
||||
mysql.procs_priv OK
|
||||
mysql.servers OK
|
||||
mysql.slow_log
|
||||
Error : You can't use locks with log tables.
|
||||
status : OK
|
||||
mysql.tables_priv OK
|
||||
mysql.time_zone OK
|
||||
mysql.time_zone_leap_second OK
|
||||
mysql.time_zone_name OK
|
||||
mysql.time_zone_transition OK
|
||||
mysql.time_zone_transition_type OK
|
||||
mysql.user OK
|
||||
CALL testproc();
|
||||
DROP PROCEDURE testproc;
|
||||
WARNING: NULL values of the 'character_set_client' column ('mysql.proc' table) have been updated with a default value (latin1). Please verify if necessary.
|
||||
WARNING: NULL values of the 'collation_connection' column ('mysql.proc' table) have been updated with a default value (latin1_swedish_ci). Please verify if necessary.
|
||||
WARNING: NULL values of the 'db_collation' column ('mysql.proc' table) have been updated with default values. Please verify if necessary.
|
||||
The --upgrade-system-tables option was used, databases won't be touched.
|
||||
|
@@ -1463,6 +1463,15 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
SELECT 1 AS col FROM t1 WHERE a=2 AND (c=10 OR c IS NULL) ORDER BY c;
|
||||
col
|
||||
1
|
||||
# Must use ref-or-null on the a_c index
|
||||
EXPLAIN
|
||||
SELECT 1 AS col FROM t1 WHERE a=2 AND (c=10 OR c IS NULL) ORDER BY c DESC;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
x x x ref_or_null a_c,a x x x x x
|
||||
# Must return 1 row
|
||||
SELECT 1 AS col FROM t1 WHERE a=2 AND (c=10 OR c IS NULL) ORDER BY c DESC;
|
||||
col
|
||||
1
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
CREATE TABLE t2 (a varchar(32), b int(11), c float, d double,
|
||||
|
@@ -1917,6 +1917,31 @@ execute stmt using @arg;
|
||||
?
|
||||
-12345.5432100000
|
||||
deallocate prepare stmt;
|
||||
#
|
||||
# Bug#48508: Crash on prepared statement re-execution.
|
||||
#
|
||||
create table t1(b int);
|
||||
insert into t1 values (0);
|
||||
create view v1 AS select 1 as a from t1 where b;
|
||||
prepare stmt from "select * from v1 where a";
|
||||
execute stmt;
|
||||
a
|
||||
execute stmt;
|
||||
a
|
||||
deallocate prepare stmt;
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
create table t1(a bigint);
|
||||
create table t2(b tinyint);
|
||||
insert into t2 values (null);
|
||||
prepare stmt from "select 1 from t1 join t2 on a xor b where b > 1 and a =1";
|
||||
execute stmt;
|
||||
1
|
||||
execute stmt;
|
||||
1
|
||||
deallocate prepare stmt;
|
||||
drop table t1,t2;
|
||||
#
|
||||
End of 5.0 tests.
|
||||
create procedure proc_1() reset query cache;
|
||||
call proc_1();
|
||||
@@ -2926,6 +2951,25 @@ execute stmt;
|
||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||
drop table t1;
|
||||
deallocate prepare stmt;
|
||||
#
|
||||
# Bug#49141: Encode function is significantly slower in 5.1 compared to 5.0
|
||||
#
|
||||
prepare encode from "select encode(?, ?) into @ciphertext";
|
||||
prepare decode from "select decode(?, ?) into @plaintext";
|
||||
set @str="abc", @key="cba";
|
||||
execute encode using @str, @key;
|
||||
execute decode using @ciphertext, @key;
|
||||
select @plaintext;
|
||||
@plaintext
|
||||
abc
|
||||
set @str="bcd", @key="dcb";
|
||||
execute encode using @str, @key;
|
||||
execute decode using @ciphertext, @key;
|
||||
select @plaintext;
|
||||
@plaintext
|
||||
bcd
|
||||
deallocate prepare encode;
|
||||
deallocate prepare decode;
|
||||
|
||||
End of 5.1 tests.
|
||||
|
||||
|
@@ -4441,6 +4441,91 @@ SELECT 1 FROM t2 JOIN t1 ON 1=1
|
||||
WHERE a != '1' AND NOT a >= b OR NOT ROW(b,a )<> ROW(a,a);
|
||||
1
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug #49199: Optimizer handles incorrectly:
|
||||
# field='const1' AND field='const2' in some cases
|
||||
|
||||
CREATE TABLE t1(a DATETIME NOT NULL);
|
||||
INSERT INTO t1 VALUES('2001-01-01');
|
||||
SELECT * FROM t1 WHERE a='2001-01-01' AND a='2001-01-01 00:00:00';
|
||||
a
|
||||
2001-01-01 00:00:00
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a='2001-01-01 00:00:00';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select '2001-01-01 00:00:00' AS `a` from `test`.`t1` where 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a DATE NOT NULL);
|
||||
INSERT INTO t1 VALUES('2001-01-01');
|
||||
SELECT * FROM t1 WHERE a='2001-01-01' AND a='2001-01-01 00:00:00';
|
||||
a
|
||||
2001-01-01
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a='2001-01-01 00:00:00';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select '2001-01-01' AS `a` from `test`.`t1` where 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a TIMESTAMP NOT NULL);
|
||||
INSERT INTO t1 VALUES('2001-01-01');
|
||||
SELECT * FROM t1 WHERE a='2001-01-01' AND a='2001-01-01 00:00:00';
|
||||
a
|
||||
2001-01-01 00:00:00
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a='2001-01-01 00:00:00';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select '2001-01-01 00:00:00' AS `a` from `test`.`t1` where 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a DATETIME NOT NULL, b DATE NOT NULL);
|
||||
INSERT INTO t1 VALUES('2001-01-01', '2001-01-01');
|
||||
SELECT * FROM t1 WHERE a='2001-01-01' AND a=b AND b='2001-01-01 00:00:00';
|
||||
a b
|
||||
2001-01-01 00:00:00 2001-01-01
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a=b AND b='2001-01-01 00:00:00';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from `test`.`t1` where 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a DATETIME NOT NULL, b VARCHAR(20) NOT NULL);
|
||||
INSERT INTO t1 VALUES('2001-01-01', '2001-01-01');
|
||||
SELECT * FROM t1 WHERE a='2001-01-01' AND a=b AND b='2001-01-01 00:00:00';
|
||||
a b
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a=b AND b='2001-01-01 00:00:00';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
Warnings:
|
||||
Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from `test`.`t1` where 0
|
||||
SELECT * FROM t1 WHERE a='2001-01-01 00:00:00' AND a=b AND b='2001-01-01';
|
||||
a b
|
||||
2001-01-01 00:00:00 2001-01-01
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01 00:00:00' AND a=b AND b='2001-01-01';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from `test`.`t1` where 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a DATETIME NOT NULL, b DATE NOT NULL);
|
||||
INSERT INTO t1 VALUES('2001-01-01', '2001-01-01');
|
||||
SELECT x.a, y.a, z.a FROM t1 x
|
||||
JOIN t1 y ON x.a=y.a
|
||||
JOIN t1 z ON y.a=z.a
|
||||
WHERE x.a='2001-01-01' AND z.a='2001-01-01 00:00:00';
|
||||
a a a
|
||||
2001-01-01 00:00:00 2001-01-01 00:00:00 2001-01-01 00:00:00
|
||||
EXPLAIN EXTENDED SELECT x.a, y.a, z.a FROM t1 x
|
||||
JOIN t1 y ON x.a=y.a
|
||||
JOIN t1 z ON y.a=z.a
|
||||
WHERE x.a='2001-01-01' AND z.a='2001-01-01 00:00:00';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE x system NULL NULL NULL NULL 1 100.00
|
||||
1 SIMPLE y system NULL NULL NULL NULL 1 100.00
|
||||
1 SIMPLE z system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01 00:00:00' AS `a`,'2001-01-01 00:00:00' AS `a` from `test`.`t1` `x` join `test`.`t1` `y` join `test`.`t1` `z` where 1
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
create table t1(a INT, KEY (a));
|
||||
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
||||
@@ -4609,4 +4694,14 @@ HAVING v <= 't'
|
||||
ORDER BY pk;
|
||||
v
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#49489 Uninitialized cache led to a wrong result.
|
||||
#
|
||||
CREATE TABLE t1(c1 DOUBLE(5,4));
|
||||
INSERT INTO t1 VALUES (9.1234);
|
||||
SELECT * FROM t1 WHERE c1 < 9.12345;
|
||||
c1
|
||||
9.1234
|
||||
DROP TABLE t1;
|
||||
# End of test for bug#49489.
|
||||
End of 5.1 tests
|
||||
|
@@ -1453,4 +1453,10 @@ GRANT PROCESS ON *.* TO test_u@localhost;
|
||||
SHOW ENGINE MYISAM MUTEX;
|
||||
SHOW ENGINE MYISAM STATUS;
|
||||
DROP USER test_u@localhost;
|
||||
#
|
||||
# Bug #48985: show create table crashes if previous access to the table
|
||||
# was killed
|
||||
#
|
||||
SHOW CREATE TABLE non_existent;
|
||||
ERROR 70100: Query execution was interrupted
|
||||
End of 5.1 tests
|
||||
|
@@ -12,3 +12,29 @@ a
|
||||
foo string
|
||||
drop function bug17615|
|
||||
drop table t3|
|
||||
SET NAMES utf8;
|
||||
DROP FUNCTION IF EXISTS bug48766;
|
||||
CREATE FUNCTION bug48766 ()
|
||||
RETURNS ENUM( 'w' ) CHARACTER SET ucs2
|
||||
RETURN 0;
|
||||
SHOW CREATE FUNCTION bug48766;
|
||||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||
bug48766 CREATE DEFINER=`root`@`localhost` FUNCTION `bug48766`() RETURNS enum('w') CHARSET ucs2
|
||||
RETURN 0 utf8 utf8_general_ci latin1_swedish_ci
|
||||
SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_NAME='bug48766';
|
||||
DTD_IDENTIFIER
|
||||
enum('w') CHARSET ucs2
|
||||
DROP FUNCTION bug48766;
|
||||
CREATE FUNCTION bug48766 ()
|
||||
RETURNS ENUM('а','б','в','г') CHARACTER SET ucs2
|
||||
RETURN 0;
|
||||
SHOW CREATE FUNCTION bug48766;
|
||||
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||
bug48766 CREATE DEFINER=`root`@`localhost` FUNCTION `bug48766`() RETURNS enum('а','б','в','г') CHARSET ucs2
|
||||
RETURN 0 utf8 utf8_general_ci latin1_swedish_ci
|
||||
SELECT DTD_IDENTIFIER FROM INFORMATION_SCHEMA.ROUTINES
|
||||
WHERE ROUTINE_NAME='bug48766';
|
||||
DTD_IDENTIFIER
|
||||
enum('а','б','в','г') CHARSET ucs2
|
||||
DROP FUNCTION bug48766;
|
||||
|
@@ -46,3 +46,267 @@ a
|
||||
2001
|
||||
drop table t1;
|
||||
End of 5.0 tests
|
||||
#
|
||||
# Bug #49480: WHERE using YEAR columns returns unexpected results
|
||||
#
|
||||
CREATE TABLE t2(yy YEAR(2), c2 CHAR(4));
|
||||
CREATE TABLE t4(yyyy YEAR(4), c4 CHAR(4));
|
||||
INSERT INTO t2 (c2) VALUES (NULL),(1970),(1999),(2000),(2001),(2069);
|
||||
INSERT INTO t4 (c4) SELECT c2 FROM t2;
|
||||
UPDATE t2 SET yy = c2;
|
||||
UPDATE t4 SET yyyy = c4;
|
||||
SELECT * FROM t2;
|
||||
yy c2
|
||||
NULL NULL
|
||||
70 1970
|
||||
99 1999
|
||||
00 2000
|
||||
01 2001
|
||||
69 2069
|
||||
SELECT * FROM t4;
|
||||
yyyy c4
|
||||
NULL NULL
|
||||
1970 1970
|
||||
1999 1999
|
||||
2000 2000
|
||||
2001 2001
|
||||
2069 2069
|
||||
# Comparison of YEAR(2) with YEAR(4)
|
||||
SELECT * FROM t2, t4 WHERE yy = yyyy;
|
||||
yy c2 yyyy c4
|
||||
70 1970 1970 1970
|
||||
99 1999 1999 1999
|
||||
00 2000 2000 2000
|
||||
01 2001 2001 2001
|
||||
69 2069 2069 2069
|
||||
SELECT * FROM t2, t4 WHERE yy <=> yyyy;
|
||||
yy c2 yyyy c4
|
||||
NULL NULL NULL NULL
|
||||
70 1970 1970 1970
|
||||
99 1999 1999 1999
|
||||
00 2000 2000 2000
|
||||
01 2001 2001 2001
|
||||
69 2069 2069 2069
|
||||
SELECT * FROM t2, t4 WHERE yy < yyyy;
|
||||
yy c2 yyyy c4
|
||||
70 1970 1999 1999
|
||||
70 1970 2000 2000
|
||||
99 1999 2000 2000
|
||||
70 1970 2001 2001
|
||||
99 1999 2001 2001
|
||||
00 2000 2001 2001
|
||||
70 1970 2069 2069
|
||||
99 1999 2069 2069
|
||||
00 2000 2069 2069
|
||||
01 2001 2069 2069
|
||||
SELECT * FROM t2, t4 WHERE yy > yyyy;
|
||||
yy c2 yyyy c4
|
||||
99 1999 1970 1970
|
||||
00 2000 1970 1970
|
||||
01 2001 1970 1970
|
||||
69 2069 1970 1970
|
||||
00 2000 1999 1999
|
||||
01 2001 1999 1999
|
||||
69 2069 1999 1999
|
||||
01 2001 2000 2000
|
||||
69 2069 2000 2000
|
||||
69 2069 2001 2001
|
||||
# Comparison of YEAR(2) with YEAR(2)
|
||||
SELECT * FROM t2 a, t2 b WHERE a.yy = b.yy;
|
||||
yy c2 yy c2
|
||||
70 1970 70 1970
|
||||
99 1999 99 1999
|
||||
00 2000 00 2000
|
||||
01 2001 01 2001
|
||||
69 2069 69 2069
|
||||
SELECT * FROM t2 a, t2 b WHERE a.yy <=> b.yy;
|
||||
yy c2 yy c2
|
||||
NULL NULL NULL NULL
|
||||
70 1970 70 1970
|
||||
99 1999 99 1999
|
||||
00 2000 00 2000
|
||||
01 2001 01 2001
|
||||
69 2069 69 2069
|
||||
SELECT * FROM t2 a, t2 b WHERE a.yy < b.yy;
|
||||
yy c2 yy c2
|
||||
70 1970 99 1999
|
||||
70 1970 00 2000
|
||||
99 1999 00 2000
|
||||
70 1970 01 2001
|
||||
99 1999 01 2001
|
||||
00 2000 01 2001
|
||||
70 1970 69 2069
|
||||
99 1999 69 2069
|
||||
00 2000 69 2069
|
||||
01 2001 69 2069
|
||||
# Comparison of YEAR(4) with YEAR(4)
|
||||
SELECT * FROM t4 a, t4 b WHERE a.yyyy = b.yyyy;
|
||||
yyyy c4 yyyy c4
|
||||
1970 1970 1970 1970
|
||||
1999 1999 1999 1999
|
||||
2000 2000 2000 2000
|
||||
2001 2001 2001 2001
|
||||
2069 2069 2069 2069
|
||||
SELECT * FROM t4 a, t4 b WHERE a.yyyy <=> b.yyyy;
|
||||
yyyy c4 yyyy c4
|
||||
NULL NULL NULL NULL
|
||||
1970 1970 1970 1970
|
||||
1999 1999 1999 1999
|
||||
2000 2000 2000 2000
|
||||
2001 2001 2001 2001
|
||||
2069 2069 2069 2069
|
||||
SELECT * FROM t4 a, t4 b WHERE a.yyyy < b.yyyy;
|
||||
yyyy c4 yyyy c4
|
||||
1970 1970 1999 1999
|
||||
1970 1970 2000 2000
|
||||
1999 1999 2000 2000
|
||||
1970 1970 2001 2001
|
||||
1999 1999 2001 2001
|
||||
2000 2000 2001 2001
|
||||
1970 1970 2069 2069
|
||||
1999 1999 2069 2069
|
||||
2000 2000 2069 2069
|
||||
2001 2001 2069 2069
|
||||
# Comparison with constants:
|
||||
SELECT * FROM t2 WHERE yy = NULL;
|
||||
yy c2
|
||||
SELECT * FROM t4 WHERE yyyy = NULL;
|
||||
yyyy c4
|
||||
SELECT * FROM t2 WHERE yy <=> NULL;
|
||||
yy c2
|
||||
NULL NULL
|
||||
SELECT * FROM t4 WHERE yyyy <=> NULL;
|
||||
yyyy c4
|
||||
NULL NULL
|
||||
SELECT * FROM t2 WHERE yy < NULL;
|
||||
yy c2
|
||||
SELECT * FROM t2 WHERE yy > NULL;
|
||||
yy c2
|
||||
SELECT * FROM t2 WHERE yy = NOW();
|
||||
yy c2
|
||||
SELECT * FROM t4 WHERE yyyy = NOW();
|
||||
yyyy c4
|
||||
SELECT * FROM t2 WHERE yy = 99;
|
||||
yy c2
|
||||
99 1999
|
||||
SELECT * FROM t2 WHERE 99 = yy;
|
||||
yy c2
|
||||
99 1999
|
||||
SELECT * FROM t4 WHERE yyyy = 99;
|
||||
yyyy c4
|
||||
1999 1999
|
||||
SELECT * FROM t2 WHERE yy = 'test';
|
||||
yy c2
|
||||
00 2000
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'test'
|
||||
SELECT * FROM t4 WHERE yyyy = 'test';
|
||||
yyyy c4
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'test'
|
||||
SELECT * FROM t2 WHERE yy = '1999';
|
||||
yy c2
|
||||
99 1999
|
||||
SELECT * FROM t4 WHERE yyyy = '1999';
|
||||
yyyy c4
|
||||
1999 1999
|
||||
SELECT * FROM t2 WHERE yy = 1999;
|
||||
yy c2
|
||||
99 1999
|
||||
SELECT * FROM t4 WHERE yyyy = 1999;
|
||||
yyyy c4
|
||||
1999 1999
|
||||
SELECT * FROM t2 WHERE yy = 1999.1;
|
||||
yy c2
|
||||
99 1999
|
||||
SELECT * FROM t4 WHERE yyyy = 1999.1;
|
||||
yyyy c4
|
||||
1999 1999
|
||||
SELECT * FROM t2 WHERE yy = 1998.9;
|
||||
yy c2
|
||||
99 1999
|
||||
SELECT * FROM t4 WHERE yyyy = 1998.9;
|
||||
yyyy c4
|
||||
1999 1999
|
||||
# Coverage tests for YEAR with zero/2000 constants:
|
||||
SELECT * FROM t2 WHERE yy = 0;
|
||||
yy c2
|
||||
00 2000
|
||||
SELECT * FROM t2 WHERE yy = '0';
|
||||
yy c2
|
||||
00 2000
|
||||
SELECT * FROM t2 WHERE yy = '0000';
|
||||
yy c2
|
||||
00 2000
|
||||
SELECT * FROM t2 WHERE yy = '2000';
|
||||
yy c2
|
||||
00 2000
|
||||
SELECT * FROM t2 WHERE yy = 2000;
|
||||
yy c2
|
||||
00 2000
|
||||
SELECT * FROM t4 WHERE yyyy = 0;
|
||||
yyyy c4
|
||||
SELECT * FROM t4 WHERE yyyy = '0';
|
||||
yyyy c4
|
||||
2000 2000
|
||||
SELECT * FROM t4 WHERE yyyy = '0000';
|
||||
yyyy c4
|
||||
SELECT * FROM t4 WHERE yyyy = '2000';
|
||||
yyyy c4
|
||||
2000 2000
|
||||
SELECT * FROM t4 WHERE yyyy = 2000;
|
||||
yyyy c4
|
||||
2000 2000
|
||||
# Comparison with constants those are out of YEAR range
|
||||
# (coverage test for backward compatibility)
|
||||
SELECT COUNT(yy) FROM t2;
|
||||
COUNT(yy)
|
||||
5
|
||||
SELECT COUNT(yyyy) FROM t4;
|
||||
COUNT(yyyy)
|
||||
5
|
||||
SELECT COUNT(*) FROM t2 WHERE yy = -1;
|
||||
COUNT(*)
|
||||
0
|
||||
SELECT COUNT(*) FROM t4 WHERE yyyy > -1;
|
||||
COUNT(*)
|
||||
5
|
||||
SELECT COUNT(*) FROM t2 WHERE yy > -1000000000000000000;
|
||||
COUNT(*)
|
||||
5
|
||||
SELECT COUNT(*) FROM t4 WHERE yyyy > -1000000000000000000;
|
||||
COUNT(*)
|
||||
5
|
||||
SELECT COUNT(*) FROM t2 WHERE yy < 2156;
|
||||
COUNT(*)
|
||||
5
|
||||
SELECT COUNT(*) FROM t4 WHERE yyyy < 2156;
|
||||
COUNT(*)
|
||||
5
|
||||
SELECT COUNT(*) FROM t2 WHERE yy < 1000000000000000000;
|
||||
COUNT(*)
|
||||
5
|
||||
SELECT COUNT(*) FROM t4 WHERE yyyy < 1000000000000000000;
|
||||
COUNT(*)
|
||||
5
|
||||
SELECT * FROM t2 WHERE yy < 123;
|
||||
yy c2
|
||||
70 1970
|
||||
99 1999
|
||||
00 2000
|
||||
01 2001
|
||||
69 2069
|
||||
SELECT * FROM t2 WHERE yy > 123;
|
||||
yy c2
|
||||
SELECT * FROM t4 WHERE yyyy < 123;
|
||||
yyyy c4
|
||||
SELECT * FROM t4 WHERE yyyy > 123;
|
||||
yyyy c4
|
||||
1970 1970
|
||||
1999 1999
|
||||
2000 2000
|
||||
2001 2001
|
||||
2069 2069
|
||||
DROP TABLE t2, t4;
|
||||
#
|
||||
End of 5.1 tests
|
||||
|
Reference in New Issue
Block a user