MDEV-5694 GREATEST(date, time) returns a wrong data type
This commit is contained in:
parent
a84fae27d9
commit
accf9b5675
@ -2096,6 +2096,718 @@ t2 CREATE TABLE `t2` (
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 01:02:03');
|
||||
CREATE TABLE t1 (a DATE, b TIME);
|
||||
INSERT INTO t1 VALUES ('2010-01-01','10:20:30');
|
||||
SELECT
|
||||
a AS ___________a,
|
||||
CASE WHEN a IS NOT NULL THEN a END AS case_______a,
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE a END AS case_____a_a,
|
||||
COALESCE(a) AS coalesce___a,
|
||||
COALESCE(a, a) AS coalesce_a_a,
|
||||
IF(a IS NULL, a, a) AS if_______a_a,
|
||||
IFNULL(a, a) AS ifnull___a_a,
|
||||
LEAST(a, a) AS least____a_a,
|
||||
GREATEST(a, a) AS greatest_a_a,
|
||||
b AS ___________b,
|
||||
CASE WHEN a IS NOT NULL THEN b END AS case_______b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE b END AS case_____b_b,
|
||||
COALESCE(b) AS coalesce___b,
|
||||
COALESCE(b, b) AS coalesce_b_b,
|
||||
IF(a IS NULL, b, b) AS if_______b_b,
|
||||
IFNULL(b, b) AS ifnull___b_b,
|
||||
LEAST(b, b) AS least____b_b,
|
||||
GREATEST(b, b) AS greatest_b_b
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 t1 a ___________a 10 10 10 Y 128 0 63
|
||||
def case_______a 10 10 10 Y 128 0 63
|
||||
def case_____a_a 10 10 10 Y 128 0 63
|
||||
def coalesce___a 10 10 10 Y 128 0 63
|
||||
def coalesce_a_a 10 10 10 Y 128 0 63
|
||||
def if_______a_a 10 10 10 Y 128 0 63
|
||||
def ifnull___a_a 10 10 10 Y 128 0 63
|
||||
def least____a_a 10 10 10 Y 128 0 63
|
||||
def greatest_a_a 10 10 10 Y 128 0 63
|
||||
def test t1 t1 b ___________b 11 10 8 Y 128 0 63
|
||||
def case_______b 11 10 8 Y 128 0 63
|
||||
def case_____b_b 11 10 8 Y 128 0 63
|
||||
def coalesce___b 11 10 8 Y 128 0 63
|
||||
def coalesce_b_b 11 10 8 Y 128 0 63
|
||||
def if_______b_b 11 10 8 Y 128 0 63
|
||||
def ifnull___b_b 11 10 8 Y 128 0 63
|
||||
def least____b_b 11 10 8 Y 128 0 63
|
||||
def greatest_b_b 11 10 8 Y 128 0 63
|
||||
___________a 2010-01-01
|
||||
case_______a 2010-01-01
|
||||
case_____a_a 2010-01-01
|
||||
coalesce___a 2010-01-01
|
||||
coalesce_a_a 2010-01-01
|
||||
if_______a_a 2010-01-01
|
||||
ifnull___a_a 2010-01-01
|
||||
least____a_a 2010-01-01
|
||||
greatest_a_a 2010-01-01
|
||||
___________b 10:20:30
|
||||
case_______b 10:20:30
|
||||
case_____b_b 10:20:30
|
||||
coalesce___b 10:20:30
|
||||
coalesce_b_b 10:20:30
|
||||
if_______b_b 10:20:30
|
||||
ifnull___b_b 10:20:30
|
||||
least____b_b 10:20:30
|
||||
greatest_b_b 10:20:30
|
||||
SELECT
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE b END AS case_____a_b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE a END AS case_____b_a,
|
||||
COALESCE(a, b) AS coalesce_a_b,
|
||||
COALESCE(b, a) AS coalesce_b_a,
|
||||
IF(a IS NULL, a, b) AS if_______a_b,
|
||||
IF(a IS NULL, b, a) AS if_______b_a,
|
||||
IFNULL(a, b) AS ifnull___a_b,
|
||||
IFNULL(b, a) AS ifnull___b_a,
|
||||
LEAST(a, b) AS least____a_b,
|
||||
LEAST(b, a) AS least____b_a,
|
||||
GREATEST(a, b) AS greatest_a_b,
|
||||
GREATEST(b, a) AS greatest_b_a
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def case_____a_b 12 19 19 Y 128 0 63
|
||||
def case_____b_a 12 19 19 Y 128 0 63
|
||||
def coalesce_a_b 12 19 19 Y 128 0 63
|
||||
def coalesce_b_a 12 19 19 Y 128 0 63
|
||||
def if_______a_b 12 10 19 Y 128 0 63
|
||||
def if_______b_a 12 10 19 Y 128 0 63
|
||||
def ifnull___a_b 12 10 19 Y 128 0 63
|
||||
def ifnull___b_a 12 10 19 Y 128 0 63
|
||||
def least____a_b 12 10 19 Y 128 0 63
|
||||
def least____b_a 12 10 19 Y 128 0 63
|
||||
def greatest_a_b 12 10 19 Y 128 0 63
|
||||
def greatest_b_a 12 10 19 Y 128 0 63
|
||||
case_____a_b 2010-01-01 00:00:00
|
||||
case_____b_a 2001-01-01 10:20:30
|
||||
coalesce_a_b 2010-01-01 00:00:00
|
||||
coalesce_b_a 2001-01-01 10:20:30
|
||||
if_______a_b 2001-01-01 10:20:30
|
||||
if_______b_a 2010-01-01 00:00:00
|
||||
ifnull___a_b 2010-01-01 00:00:00
|
||||
ifnull___b_a 2001-01-01 10:20:30
|
||||
least____a_b 2001-01-01 10:20:30
|
||||
least____b_a 2001-01-01 10:20:30
|
||||
greatest_a_b 2010-01-01 00:00:00
|
||||
greatest_b_a 2010-01-01 00:00:00
|
||||
CREATE TABLE t2 AS
|
||||
SELECT
|
||||
a AS ___________a,
|
||||
CASE WHEN a IS NOT NULL THEN a END AS case_______a,
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE a END AS case_____a_a,
|
||||
COALESCE(a) AS coalesce___a,
|
||||
COALESCE(a, a) AS coalesce_a_a,
|
||||
IF(a IS NULL, a, a) AS if_______a_a,
|
||||
IFNULL(a, a) AS ifnull___a_a,
|
||||
LEAST(a, a) AS least____a_a,
|
||||
GREATEST(a, a) AS greatest_a_a,
|
||||
b AS ___________b,
|
||||
CASE WHEN a IS NOT NULL THEN b END AS case_______b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE b END AS case_____b_b,
|
||||
COALESCE(b) AS coalesce___b,
|
||||
COALESCE(b, b) AS coalesce_b_b,
|
||||
IF(a IS NULL, b, b) AS if_______b_b,
|
||||
IFNULL(b, b) AS ifnull___b_b,
|
||||
LEAST(b, b) AS least____b_b,
|
||||
GREATEST(b, b) AS greatest_b_b
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`___________a` date DEFAULT NULL,
|
||||
`case_______a` date DEFAULT NULL,
|
||||
`case_____a_a` date DEFAULT NULL,
|
||||
`coalesce___a` date DEFAULT NULL,
|
||||
`coalesce_a_a` date DEFAULT NULL,
|
||||
`if_______a_a` date DEFAULT NULL,
|
||||
`ifnull___a_a` date DEFAULT NULL,
|
||||
`least____a_a` date DEFAULT NULL,
|
||||
`greatest_a_a` date DEFAULT NULL,
|
||||
`___________b` time DEFAULT NULL,
|
||||
`case_______b` time DEFAULT NULL,
|
||||
`case_____b_b` time DEFAULT NULL,
|
||||
`coalesce___b` time DEFAULT NULL,
|
||||
`coalesce_b_b` time DEFAULT NULL,
|
||||
`if_______b_b` time DEFAULT NULL,
|
||||
`ifnull___b_b` time DEFAULT NULL,
|
||||
`least____b_b` time DEFAULT NULL,
|
||||
`greatest_b_b` time DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 AS
|
||||
SELECT
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE b END AS case_____a_b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE a END AS case_____b_a,
|
||||
COALESCE(a, b) AS coalesce_a_b,
|
||||
COALESCE(b, a) AS coalesce_b_a,
|
||||
IF(a IS NULL, a, b) AS if_______a_b,
|
||||
IF(a IS NULL, b, a) AS if_______b_a,
|
||||
IFNULL(a, b) AS ifnull___a_b,
|
||||
IFNULL(b, a) AS ifnull___b_a,
|
||||
LEAST(a, b) AS least____a_b,
|
||||
LEAST(b, a) AS least____b_a,
|
||||
GREATEST(a, b) AS greatest_a_b,
|
||||
GREATEST(b, a) AS greatest_b_a
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`case_____a_b` datetime DEFAULT NULL,
|
||||
`case_____b_a` datetime DEFAULT NULL,
|
||||
`coalesce_a_b` datetime DEFAULT NULL,
|
||||
`coalesce_b_a` datetime DEFAULT NULL,
|
||||
`if_______a_b` datetime DEFAULT NULL,
|
||||
`if_______b_a` datetime DEFAULT NULL,
|
||||
`ifnull___a_b` datetime DEFAULT NULL,
|
||||
`ifnull___b_a` datetime DEFAULT NULL,
|
||||
`least____a_b` datetime DEFAULT NULL,
|
||||
`least____b_a` datetime DEFAULT NULL,
|
||||
`greatest_a_b` datetime DEFAULT NULL,
|
||||
`greatest_b_a` datetime DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
SET timestamp=DEFAULT;
|
||||
#
|
||||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 01:02:03');
|
||||
CREATE TABLE t1 (a TIMESTAMP, b TIME);
|
||||
INSERT INTO t1 VALUES ('2010-01-01 00:00:00','10:20:30');
|
||||
SELECT
|
||||
a AS ___________a,
|
||||
CASE WHEN a IS NOT NULL THEN a END AS case_______a,
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE a END AS case_____a_a,
|
||||
COALESCE(a) AS coalesce___a,
|
||||
COALESCE(a, a) AS coalesce_a_a,
|
||||
IF(a IS NULL, a, a) AS if_______a_a,
|
||||
IFNULL(a, a) AS ifnull___a_a,
|
||||
LEAST(a, a) AS least____a_a,
|
||||
GREATEST(a, a) AS greatest_a_a,
|
||||
b AS ___________b,
|
||||
CASE WHEN a IS NOT NULL THEN b END AS case_______b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE b END AS case_____b_b,
|
||||
COALESCE(b) AS coalesce___b,
|
||||
COALESCE(b, b) AS coalesce_b_b,
|
||||
IF(a IS NULL, b, b) AS if_______b_b,
|
||||
IFNULL(b, b) AS ifnull___b_b,
|
||||
LEAST(b, b) AS least____b_b,
|
||||
GREATEST(b, b) AS greatest_b_b
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 t1 a ___________a 7 19 19 N 9377 0 63
|
||||
def case_______a 7 19 19 Y 128 0 63
|
||||
def case_____a_a 7 19 19 N 129 0 63
|
||||
def coalesce___a 7 19 19 N 129 0 63
|
||||
def coalesce_a_a 7 19 19 N 129 0 63
|
||||
def if_______a_a 7 19 19 N 129 0 63
|
||||
def ifnull___a_a 7 19 19 N 129 0 63
|
||||
def least____a_a 7 19 19 N 161 0 63
|
||||
def greatest_a_a 7 19 19 N 161 0 63
|
||||
def test t1 t1 b ___________b 11 10 8 Y 128 0 63
|
||||
def case_______b 11 10 8 Y 128 0 63
|
||||
def case_____b_b 11 10 8 Y 128 0 63
|
||||
def coalesce___b 11 10 8 Y 128 0 63
|
||||
def coalesce_b_b 11 10 8 Y 128 0 63
|
||||
def if_______b_b 11 10 8 Y 128 0 63
|
||||
def ifnull___b_b 11 10 8 Y 128 0 63
|
||||
def least____b_b 11 10 8 Y 128 0 63
|
||||
def greatest_b_b 11 10 8 Y 128 0 63
|
||||
___________a 2010-01-01 00:00:00
|
||||
case_______a 2010-01-01 00:00:00
|
||||
case_____a_a 2010-01-01 00:00:00
|
||||
coalesce___a 2010-01-01 00:00:00
|
||||
coalesce_a_a 2010-01-01 00:00:00
|
||||
if_______a_a 2010-01-01 00:00:00
|
||||
ifnull___a_a 2010-01-01 00:00:00
|
||||
least____a_a 2010-01-01 00:00:00
|
||||
greatest_a_a 2010-01-01 00:00:00
|
||||
___________b 10:20:30
|
||||
case_______b 10:20:30
|
||||
case_____b_b 10:20:30
|
||||
coalesce___b 10:20:30
|
||||
coalesce_b_b 10:20:30
|
||||
if_______b_b 10:20:30
|
||||
ifnull___b_b 10:20:30
|
||||
least____b_b 10:20:30
|
||||
greatest_b_b 10:20:30
|
||||
SELECT
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE b END AS case_____a_b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE a END AS case_____b_a,
|
||||
COALESCE(a, b) AS coalesce_a_b,
|
||||
COALESCE(b, a) AS coalesce_b_a,
|
||||
IF(a IS NULL, a, b) AS if_______a_b,
|
||||
IF(a IS NULL, b, a) AS if_______b_a,
|
||||
IFNULL(a, b) AS ifnull___a_b,
|
||||
IFNULL(b, a) AS ifnull___b_a,
|
||||
LEAST(a, b) AS least____a_b,
|
||||
LEAST(b, a) AS least____b_a,
|
||||
GREATEST(a, b) AS greatest_a_b,
|
||||
GREATEST(b, a) AS greatest_b_a
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def case_____a_b 12 19 19 Y 128 0 63
|
||||
def case_____b_a 12 19 19 Y 128 0 63
|
||||
def coalesce_a_b 12 19 19 Y 128 0 63
|
||||
def coalesce_b_a 12 19 19 Y 128 0 63
|
||||
def if_______a_b 12 19 19 Y 128 0 63
|
||||
def if_______b_a 12 19 19 Y 128 0 63
|
||||
def ifnull___a_b 12 19 19 Y 128 0 63
|
||||
def ifnull___b_a 12 19 19 N 129 0 63
|
||||
def least____a_b 12 19 19 Y 128 0 63
|
||||
def least____b_a 12 19 19 Y 128 0 63
|
||||
def greatest_a_b 12 19 19 Y 128 0 63
|
||||
def greatest_b_a 12 19 19 Y 128 0 63
|
||||
case_____a_b 2010-01-01 00:00:00
|
||||
case_____b_a 2001-01-01 10:20:30
|
||||
coalesce_a_b 2010-01-01 00:00:00
|
||||
coalesce_b_a 2001-01-01 10:20:30
|
||||
if_______a_b 2001-01-01 10:20:30
|
||||
if_______b_a 2010-01-01 00:00:00
|
||||
ifnull___a_b 2010-01-01 00:00:00
|
||||
ifnull___b_a 2001-01-01 10:20:30
|
||||
least____a_b 2001-01-01 10:20:30
|
||||
least____b_a 2001-01-01 10:20:30
|
||||
greatest_a_b 2010-01-01 00:00:00
|
||||
greatest_b_a 2010-01-01 00:00:00
|
||||
CREATE TABLE t2 AS
|
||||
SELECT
|
||||
a AS ___________a,
|
||||
CASE WHEN a IS NOT NULL THEN a END AS case_______a,
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE a END AS case_____a_a,
|
||||
COALESCE(a) AS coalesce___a,
|
||||
COALESCE(a, a) AS coalesce_a_a,
|
||||
IF(a IS NULL, a, a) AS if_______a_a,
|
||||
IFNULL(a, a) AS ifnull___a_a,
|
||||
LEAST(a, a) AS least____a_a,
|
||||
GREATEST(a, a) AS greatest_a_a,
|
||||
b AS ___________b,
|
||||
CASE WHEN a IS NOT NULL THEN b END AS case_______b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE b END AS case_____b_b,
|
||||
COALESCE(b) AS coalesce___b,
|
||||
COALESCE(b, b) AS coalesce_b_b,
|
||||
IF(a IS NULL, b, b) AS if_______b_b,
|
||||
IFNULL(b, b) AS ifnull___b_b,
|
||||
LEAST(b, b) AS least____b_b,
|
||||
GREATEST(b, b) AS greatest_b_b
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`___________a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`case_______a` timestamp NULL DEFAULT NULL,
|
||||
`case_____a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`coalesce___a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`coalesce_a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`if_______a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`ifnull___a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`least____a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`greatest_a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`___________b` time DEFAULT NULL,
|
||||
`case_______b` time DEFAULT NULL,
|
||||
`case_____b_b` time DEFAULT NULL,
|
||||
`coalesce___b` time DEFAULT NULL,
|
||||
`coalesce_b_b` time DEFAULT NULL,
|
||||
`if_______b_b` time DEFAULT NULL,
|
||||
`ifnull___b_b` time DEFAULT NULL,
|
||||
`least____b_b` time DEFAULT NULL,
|
||||
`greatest_b_b` time DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 AS
|
||||
SELECT
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE b END AS case_____a_b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE a END AS case_____b_a,
|
||||
COALESCE(a, b) AS coalesce_a_b,
|
||||
COALESCE(b, a) AS coalesce_b_a,
|
||||
IF(a IS NULL, a, b) AS if_______a_b,
|
||||
IF(a IS NULL, b, a) AS if_______b_a,
|
||||
IFNULL(a, b) AS ifnull___a_b,
|
||||
IFNULL(b, a) AS ifnull___b_a,
|
||||
LEAST(a, b) AS least____a_b,
|
||||
LEAST(b, a) AS least____b_a,
|
||||
GREATEST(a, b) AS greatest_a_b,
|
||||
GREATEST(b, a) AS greatest_b_a
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`case_____a_b` datetime DEFAULT NULL,
|
||||
`case_____b_a` datetime DEFAULT NULL,
|
||||
`coalesce_a_b` datetime DEFAULT NULL,
|
||||
`coalesce_b_a` datetime DEFAULT NULL,
|
||||
`if_______a_b` datetime DEFAULT NULL,
|
||||
`if_______b_a` datetime DEFAULT NULL,
|
||||
`ifnull___a_b` datetime DEFAULT NULL,
|
||||
`ifnull___b_a` datetime NOT NULL,
|
||||
`least____a_b` datetime DEFAULT NULL,
|
||||
`least____b_a` datetime DEFAULT NULL,
|
||||
`greatest_a_b` datetime DEFAULT NULL,
|
||||
`greatest_b_a` datetime DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
SET timestamp=DEFAULT;
|
||||
#
|
||||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 01:02:03');
|
||||
CREATE TABLE t1 (a DATETIME, b TIME);
|
||||
INSERT INTO t1 VALUES ('2010-01-01 00:00:00','10:20:30');
|
||||
SELECT
|
||||
a AS ___________a,
|
||||
CASE WHEN a IS NOT NULL THEN a END AS case_______a,
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE a END AS case_____a_a,
|
||||
COALESCE(a) AS coalesce___a,
|
||||
COALESCE(a, a) AS coalesce_a_a,
|
||||
IF(a IS NULL, a, a) AS if_______a_a,
|
||||
IFNULL(a, a) AS ifnull___a_a,
|
||||
LEAST(a, a) AS least____a_a,
|
||||
GREATEST(a, a) AS greatest_a_a,
|
||||
b AS ___________b,
|
||||
CASE WHEN a IS NOT NULL THEN b END AS case_______b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE b END AS case_____b_b,
|
||||
COALESCE(b) AS coalesce___b,
|
||||
COALESCE(b, b) AS coalesce_b_b,
|
||||
IF(a IS NULL, b, b) AS if_______b_b,
|
||||
IFNULL(b, b) AS ifnull___b_b,
|
||||
LEAST(b, b) AS least____b_b,
|
||||
GREATEST(b, b) AS greatest_b_b
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 t1 a ___________a 12 19 19 Y 128 0 63
|
||||
def case_______a 12 19 19 Y 128 0 63
|
||||
def case_____a_a 12 19 19 Y 128 0 63
|
||||
def coalesce___a 12 19 19 Y 128 0 63
|
||||
def coalesce_a_a 12 19 19 Y 128 0 63
|
||||
def if_______a_a 12 19 19 Y 128 0 63
|
||||
def ifnull___a_a 12 19 19 Y 128 0 63
|
||||
def least____a_a 12 19 19 Y 128 0 63
|
||||
def greatest_a_a 12 19 19 Y 128 0 63
|
||||
def test t1 t1 b ___________b 11 10 8 Y 128 0 63
|
||||
def case_______b 11 10 8 Y 128 0 63
|
||||
def case_____b_b 11 10 8 Y 128 0 63
|
||||
def coalesce___b 11 10 8 Y 128 0 63
|
||||
def coalesce_b_b 11 10 8 Y 128 0 63
|
||||
def if_______b_b 11 10 8 Y 128 0 63
|
||||
def ifnull___b_b 11 10 8 Y 128 0 63
|
||||
def least____b_b 11 10 8 Y 128 0 63
|
||||
def greatest_b_b 11 10 8 Y 128 0 63
|
||||
___________a 2010-01-01 00:00:00
|
||||
case_______a 2010-01-01 00:00:00
|
||||
case_____a_a 2010-01-01 00:00:00
|
||||
coalesce___a 2010-01-01 00:00:00
|
||||
coalesce_a_a 2010-01-01 00:00:00
|
||||
if_______a_a 2010-01-01 00:00:00
|
||||
ifnull___a_a 2010-01-01 00:00:00
|
||||
least____a_a 2010-01-01 00:00:00
|
||||
greatest_a_a 2010-01-01 00:00:00
|
||||
___________b 10:20:30
|
||||
case_______b 10:20:30
|
||||
case_____b_b 10:20:30
|
||||
coalesce___b 10:20:30
|
||||
coalesce_b_b 10:20:30
|
||||
if_______b_b 10:20:30
|
||||
ifnull___b_b 10:20:30
|
||||
least____b_b 10:20:30
|
||||
greatest_b_b 10:20:30
|
||||
SELECT
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE b END AS case_____a_b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE a END AS case_____b_a,
|
||||
COALESCE(a, b) AS coalesce_a_b,
|
||||
COALESCE(b, a) AS coalesce_b_a,
|
||||
IF(a IS NULL, a, b) AS if_______a_b,
|
||||
IF(a IS NULL, b, a) AS if_______b_a,
|
||||
IFNULL(a, b) AS ifnull___a_b,
|
||||
IFNULL(b, a) AS ifnull___b_a,
|
||||
LEAST(a, b) AS least____a_b,
|
||||
LEAST(b, a) AS least____b_a,
|
||||
GREATEST(a, b) AS greatest_a_b,
|
||||
GREATEST(b, a) AS greatest_b_a
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def case_____a_b 12 19 19 Y 128 0 63
|
||||
def case_____b_a 12 19 19 Y 128 0 63
|
||||
def coalesce_a_b 12 19 19 Y 128 0 63
|
||||
def coalesce_b_a 12 19 19 Y 128 0 63
|
||||
def if_______a_b 12 19 19 Y 128 0 63
|
||||
def if_______b_a 12 19 19 Y 128 0 63
|
||||
def ifnull___a_b 12 19 19 Y 128 0 63
|
||||
def ifnull___b_a 12 19 19 Y 128 0 63
|
||||
def least____a_b 12 19 19 Y 128 0 63
|
||||
def least____b_a 12 19 19 Y 128 0 63
|
||||
def greatest_a_b 12 19 19 Y 128 0 63
|
||||
def greatest_b_a 12 19 19 Y 128 0 63
|
||||
case_____a_b 2010-01-01 00:00:00
|
||||
case_____b_a 2001-01-01 10:20:30
|
||||
coalesce_a_b 2010-01-01 00:00:00
|
||||
coalesce_b_a 2001-01-01 10:20:30
|
||||
if_______a_b 2001-01-01 10:20:30
|
||||
if_______b_a 2010-01-01 00:00:00
|
||||
ifnull___a_b 2010-01-01 00:00:00
|
||||
ifnull___b_a 2001-01-01 10:20:30
|
||||
least____a_b 2001-01-01 10:20:30
|
||||
least____b_a 2001-01-01 10:20:30
|
||||
greatest_a_b 2010-01-01 00:00:00
|
||||
greatest_b_a 2010-01-01 00:00:00
|
||||
CREATE TABLE t2 AS
|
||||
SELECT
|
||||
a AS ___________a,
|
||||
CASE WHEN a IS NOT NULL THEN a END AS case_______a,
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE a END AS case_____a_a,
|
||||
COALESCE(a) AS coalesce___a,
|
||||
COALESCE(a, a) AS coalesce_a_a,
|
||||
IF(a IS NULL, a, a) AS if_______a_a,
|
||||
IFNULL(a, a) AS ifnull___a_a,
|
||||
LEAST(a, a) AS least____a_a,
|
||||
GREATEST(a, a) AS greatest_a_a,
|
||||
b AS ___________b,
|
||||
CASE WHEN a IS NOT NULL THEN b END AS case_______b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE b END AS case_____b_b,
|
||||
COALESCE(b) AS coalesce___b,
|
||||
COALESCE(b, b) AS coalesce_b_b,
|
||||
IF(a IS NULL, b, b) AS if_______b_b,
|
||||
IFNULL(b, b) AS ifnull___b_b,
|
||||
LEAST(b, b) AS least____b_b,
|
||||
GREATEST(b, b) AS greatest_b_b
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`___________a` datetime DEFAULT NULL,
|
||||
`case_______a` datetime DEFAULT NULL,
|
||||
`case_____a_a` datetime DEFAULT NULL,
|
||||
`coalesce___a` datetime DEFAULT NULL,
|
||||
`coalesce_a_a` datetime DEFAULT NULL,
|
||||
`if_______a_a` datetime DEFAULT NULL,
|
||||
`ifnull___a_a` datetime DEFAULT NULL,
|
||||
`least____a_a` datetime DEFAULT NULL,
|
||||
`greatest_a_a` datetime DEFAULT NULL,
|
||||
`___________b` time DEFAULT NULL,
|
||||
`case_______b` time DEFAULT NULL,
|
||||
`case_____b_b` time DEFAULT NULL,
|
||||
`coalesce___b` time DEFAULT NULL,
|
||||
`coalesce_b_b` time DEFAULT NULL,
|
||||
`if_______b_b` time DEFAULT NULL,
|
||||
`ifnull___b_b` time DEFAULT NULL,
|
||||
`least____b_b` time DEFAULT NULL,
|
||||
`greatest_b_b` time DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 AS
|
||||
SELECT
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE b END AS case_____a_b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE a END AS case_____b_a,
|
||||
COALESCE(a, b) AS coalesce_a_b,
|
||||
COALESCE(b, a) AS coalesce_b_a,
|
||||
IF(a IS NULL, a, b) AS if_______a_b,
|
||||
IF(a IS NULL, b, a) AS if_______b_a,
|
||||
IFNULL(a, b) AS ifnull___a_b,
|
||||
IFNULL(b, a) AS ifnull___b_a,
|
||||
LEAST(a, b) AS least____a_b,
|
||||
LEAST(b, a) AS least____b_a,
|
||||
GREATEST(a, b) AS greatest_a_b,
|
||||
GREATEST(b, a) AS greatest_b_a
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`case_____a_b` datetime DEFAULT NULL,
|
||||
`case_____b_a` datetime DEFAULT NULL,
|
||||
`coalesce_a_b` datetime DEFAULT NULL,
|
||||
`coalesce_b_a` datetime DEFAULT NULL,
|
||||
`if_______a_b` datetime DEFAULT NULL,
|
||||
`if_______b_a` datetime DEFAULT NULL,
|
||||
`ifnull___a_b` datetime DEFAULT NULL,
|
||||
`ifnull___b_a` datetime DEFAULT NULL,
|
||||
`least____a_b` datetime DEFAULT NULL,
|
||||
`least____b_a` datetime DEFAULT NULL,
|
||||
`greatest_a_b` datetime DEFAULT NULL,
|
||||
`greatest_b_a` datetime DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
SET timestamp=DEFAULT;
|
||||
#
|
||||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 01:02:03');
|
||||
CREATE TABLE t1 (a DATETIME, b DATE);
|
||||
INSERT INTO t1 VALUES ('2010-01-01 10:20:30','2001-01-02');
|
||||
SELECT
|
||||
a AS ___________a,
|
||||
CASE WHEN a IS NOT NULL THEN a END AS case_______a,
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE a END AS case_____a_a,
|
||||
COALESCE(a) AS coalesce___a,
|
||||
COALESCE(a, a) AS coalesce_a_a,
|
||||
IF(a IS NULL, a, a) AS if_______a_a,
|
||||
IFNULL(a, a) AS ifnull___a_a,
|
||||
LEAST(a, a) AS least____a_a,
|
||||
GREATEST(a, a) AS greatest_a_a,
|
||||
b AS ___________b,
|
||||
CASE WHEN a IS NOT NULL THEN b END AS case_______b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE b END AS case_____b_b,
|
||||
COALESCE(b) AS coalesce___b,
|
||||
COALESCE(b, b) AS coalesce_b_b,
|
||||
IF(a IS NULL, b, b) AS if_______b_b,
|
||||
IFNULL(b, b) AS ifnull___b_b,
|
||||
LEAST(b, b) AS least____b_b,
|
||||
GREATEST(b, b) AS greatest_b_b
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 t1 a ___________a 12 19 19 Y 128 0 63
|
||||
def case_______a 12 19 19 Y 128 0 63
|
||||
def case_____a_a 12 19 19 Y 128 0 63
|
||||
def coalesce___a 12 19 19 Y 128 0 63
|
||||
def coalesce_a_a 12 19 19 Y 128 0 63
|
||||
def if_______a_a 12 19 19 Y 128 0 63
|
||||
def ifnull___a_a 12 19 19 Y 128 0 63
|
||||
def least____a_a 12 19 19 Y 128 0 63
|
||||
def greatest_a_a 12 19 19 Y 128 0 63
|
||||
def test t1 t1 b ___________b 10 10 10 Y 128 0 63
|
||||
def case_______b 10 10 10 Y 128 0 63
|
||||
def case_____b_b 10 10 10 Y 128 0 63
|
||||
def coalesce___b 10 10 10 Y 128 0 63
|
||||
def coalesce_b_b 10 10 10 Y 128 0 63
|
||||
def if_______b_b 10 10 10 Y 128 0 63
|
||||
def ifnull___b_b 10 10 10 Y 128 0 63
|
||||
def least____b_b 10 10 10 Y 128 0 63
|
||||
def greatest_b_b 10 10 10 Y 128 0 63
|
||||
___________a 2010-01-01 10:20:30
|
||||
case_______a 2010-01-01 10:20:30
|
||||
case_____a_a 2010-01-01 10:20:30
|
||||
coalesce___a 2010-01-01 10:20:30
|
||||
coalesce_a_a 2010-01-01 10:20:30
|
||||
if_______a_a 2010-01-01 10:20:30
|
||||
ifnull___a_a 2010-01-01 10:20:30
|
||||
least____a_a 2010-01-01 10:20:30
|
||||
greatest_a_a 2010-01-01 10:20:30
|
||||
___________b 2001-01-02
|
||||
case_______b 2001-01-02
|
||||
case_____b_b 2001-01-02
|
||||
coalesce___b 2001-01-02
|
||||
coalesce_b_b 2001-01-02
|
||||
if_______b_b 2001-01-02
|
||||
ifnull___b_b 2001-01-02
|
||||
least____b_b 2001-01-02
|
||||
greatest_b_b 2001-01-02
|
||||
SELECT
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE b END AS case_____a_b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE a END AS case_____b_a,
|
||||
COALESCE(a, b) AS coalesce_a_b,
|
||||
COALESCE(b, a) AS coalesce_b_a,
|
||||
IF(a IS NULL, a, b) AS if_______a_b,
|
||||
IF(a IS NULL, b, a) AS if_______b_a,
|
||||
IFNULL(a, b) AS ifnull___a_b,
|
||||
IFNULL(b, a) AS ifnull___b_a,
|
||||
LEAST(a, b) AS least____a_b,
|
||||
LEAST(b, a) AS least____b_a,
|
||||
GREATEST(a, b) AS greatest_a_b,
|
||||
GREATEST(b, a) AS greatest_b_a
|
||||
FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def case_____a_b 12 19 19 Y 128 0 63
|
||||
def case_____b_a 12 19 19 Y 128 0 63
|
||||
def coalesce_a_b 12 19 19 Y 128 0 63
|
||||
def coalesce_b_a 12 19 19 Y 128 0 63
|
||||
def if_______a_b 12 19 19 Y 128 0 63
|
||||
def if_______b_a 12 19 19 Y 128 0 63
|
||||
def ifnull___a_b 12 19 19 Y 128 0 63
|
||||
def ifnull___b_a 12 19 19 Y 128 0 63
|
||||
def least____a_b 12 19 19 Y 128 0 63
|
||||
def least____b_a 12 19 19 Y 128 0 63
|
||||
def greatest_a_b 12 19 19 Y 128 0 63
|
||||
def greatest_b_a 12 19 19 Y 128 0 63
|
||||
case_____a_b 2010-01-01 10:20:30
|
||||
case_____b_a 2001-01-02 00:00:00
|
||||
coalesce_a_b 2010-01-01 10:20:30
|
||||
coalesce_b_a 2001-01-02 00:00:00
|
||||
if_______a_b 2001-01-02 00:00:00
|
||||
if_______b_a 2010-01-01 10:20:30
|
||||
ifnull___a_b 2010-01-01 10:20:30
|
||||
ifnull___b_a 2001-01-02 00:00:00
|
||||
least____a_b 2001-01-02 00:00:00
|
||||
least____b_a 2001-01-02 00:00:00
|
||||
greatest_a_b 2010-01-01 10:20:30
|
||||
greatest_b_a 2010-01-01 10:20:30
|
||||
CREATE TABLE t2 AS
|
||||
SELECT
|
||||
a AS ___________a,
|
||||
CASE WHEN a IS NOT NULL THEN a END AS case_______a,
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE a END AS case_____a_a,
|
||||
COALESCE(a) AS coalesce___a,
|
||||
COALESCE(a, a) AS coalesce_a_a,
|
||||
IF(a IS NULL, a, a) AS if_______a_a,
|
||||
IFNULL(a, a) AS ifnull___a_a,
|
||||
LEAST(a, a) AS least____a_a,
|
||||
GREATEST(a, a) AS greatest_a_a,
|
||||
b AS ___________b,
|
||||
CASE WHEN a IS NOT NULL THEN b END AS case_______b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE b END AS case_____b_b,
|
||||
COALESCE(b) AS coalesce___b,
|
||||
COALESCE(b, b) AS coalesce_b_b,
|
||||
IF(a IS NULL, b, b) AS if_______b_b,
|
||||
IFNULL(b, b) AS ifnull___b_b,
|
||||
LEAST(b, b) AS least____b_b,
|
||||
GREATEST(b, b) AS greatest_b_b
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`___________a` datetime DEFAULT NULL,
|
||||
`case_______a` datetime DEFAULT NULL,
|
||||
`case_____a_a` datetime DEFAULT NULL,
|
||||
`coalesce___a` datetime DEFAULT NULL,
|
||||
`coalesce_a_a` datetime DEFAULT NULL,
|
||||
`if_______a_a` datetime DEFAULT NULL,
|
||||
`ifnull___a_a` datetime DEFAULT NULL,
|
||||
`least____a_a` datetime DEFAULT NULL,
|
||||
`greatest_a_a` datetime DEFAULT NULL,
|
||||
`___________b` date DEFAULT NULL,
|
||||
`case_______b` date DEFAULT NULL,
|
||||
`case_____b_b` date DEFAULT NULL,
|
||||
`coalesce___b` date DEFAULT NULL,
|
||||
`coalesce_b_b` date DEFAULT NULL,
|
||||
`if_______b_b` date DEFAULT NULL,
|
||||
`ifnull___b_b` date DEFAULT NULL,
|
||||
`least____b_b` date DEFAULT NULL,
|
||||
`greatest_b_b` date DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 AS
|
||||
SELECT
|
||||
CASE WHEN a IS NOT NULL THEN a ELSE b END AS case_____a_b,
|
||||
CASE WHEN a IS NOT NULL THEN b ELSE a END AS case_____b_a,
|
||||
COALESCE(a, b) AS coalesce_a_b,
|
||||
COALESCE(b, a) AS coalesce_b_a,
|
||||
IF(a IS NULL, a, b) AS if_______a_b,
|
||||
IF(a IS NULL, b, a) AS if_______b_a,
|
||||
IFNULL(a, b) AS ifnull___a_b,
|
||||
IFNULL(b, a) AS ifnull___b_a,
|
||||
LEAST(a, b) AS least____a_b,
|
||||
LEAST(b, a) AS least____b_a,
|
||||
GREATEST(a, b) AS greatest_a_b,
|
||||
GREATEST(b, a) AS greatest_b_a
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`case_____a_b` datetime DEFAULT NULL,
|
||||
`case_____b_a` datetime DEFAULT NULL,
|
||||
`coalesce_a_b` datetime DEFAULT NULL,
|
||||
`coalesce_b_a` datetime DEFAULT NULL,
|
||||
`if_______a_b` datetime DEFAULT NULL,
|
||||
`if_______b_a` datetime DEFAULT NULL,
|
||||
`ifnull___a_b` datetime DEFAULT NULL,
|
||||
`ifnull___b_a` datetime DEFAULT NULL,
|
||||
`least____a_b` datetime DEFAULT NULL,
|
||||
`least____b_a` datetime DEFAULT NULL,
|
||||
`greatest_a_b` datetime DEFAULT NULL,
|
||||
`greatest_b_a` datetime DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
SET timestamp=DEFAULT;
|
||||
#
|
||||
# MDEV-8873 Wrong field type or metadata for LEAST(int_column,string_column)
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b VARCHAR(10));
|
||||
@ -2317,5 +3029,35 @@ a
|
||||
13836376518955650385
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-5694 GREATEST(date, time) returns a wrong data type
|
||||
#
|
||||
SET timestamp=UNIX_TIMESTAMP('2010-01-01 01:02:03');
|
||||
SELECT GREATEST(CURRENT_TIME, CURRENT_DATE), COALESCE(CURRENT_TIME, CURRENT_DATE);
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def GREATEST(CURRENT_TIME, CURRENT_DATE) 12 10 19 N 129 0 63
|
||||
def COALESCE(CURRENT_TIME, CURRENT_DATE) 12 19 19 N 129 0 63
|
||||
GREATEST(CURRENT_TIME, CURRENT_DATE) COALESCE(CURRENT_TIME, CURRENT_DATE)
|
||||
2010-01-01 01:02:03 2010-01-01 01:02:03
|
||||
CREATE TABLE t1 (a TIMESTAMP);
|
||||
INSERT INTO t1 VALUES ('2010-01-01 10:20:30');
|
||||
SELECT GREATEST(a,a) FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def GREATEST(a,a) 7 19 19 N 161 0 63
|
||||
GREATEST(a,a)
|
||||
2010-01-01 10:20:30
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a TIMESTAMP, b DATETIME);
|
||||
CREATE TABLE t2 AS SELECT LEAST(a,a),LEAST(b,b),LEAST(a,b) FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`LEAST(a,a)` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`LEAST(b,b)` datetime DEFAULT NULL,
|
||||
`LEAST(a,b)` datetime DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
SET timestamp=DEFAULT;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
@ -1919,16 +1919,19 @@ drop table t1;
|
||||
SET timestamp=UNIX_TIMESTAMP('2014-06-01 10:20:30');
|
||||
select greatest(cast("0-0-0" as date), cast("10:20:05" as time));
|
||||
greatest(cast("0-0-0" as date), cast("10:20:05" as time))
|
||||
2014-06-01
|
||||
2014-06-01 10:20:05
|
||||
select greatest(cast("0-0-0" as date), cast("10:20:05" as time)) = '0000-00-00';
|
||||
greatest(cast("0-0-0" as date), cast("10:20:05" as time)) = '0000-00-00'
|
||||
0
|
||||
select greatest(cast("0-0-0" as date), cast("10:20:05" as time)) = '2014-06-01';
|
||||
greatest(cast("0-0-0" as date), cast("10:20:05" as time)) = '2014-06-01'
|
||||
0
|
||||
select greatest(cast("0-0-0" as date), cast("10:20:05" as time)) = '2014-06-01 10:20:05';
|
||||
greatest(cast("0-0-0" as date), cast("10:20:05" as time)) = '2014-06-01 10:20:05'
|
||||
1
|
||||
select cast(greatest(cast("0-0-0" as date), cast("10:20:05" as time)) as datetime(6));
|
||||
cast(greatest(cast("0-0-0" as date), cast("10:20:05" as time)) as datetime(6))
|
||||
2014-06-01 00:00:00.000000
|
||||
2014-06-01 10:20:05.000000
|
||||
SET timestamp=DEFAULT;
|
||||
select microsecond('12:00:00.123456'), microsecond('2009-12-31 23:59:59.000010');
|
||||
microsecond('12:00:00.123456') microsecond('2009-12-31 23:59:59.000010')
|
||||
@ -2563,18 +2566,12 @@ CREATE TABLE t1 (t TIME);
|
||||
INSERT INTO t1 VALUES ('03:22:30'),('18:30:05');
|
||||
SELECT CONVERT_TZ(GREATEST(t, CURRENT_DATE()), '+02:00', '+10:00') FROM t1;
|
||||
CONVERT_TZ(GREATEST(t, CURRENT_DATE()), '+02:00', '+10:00')
|
||||
2014-02-26 06:59:59
|
||||
2014-02-26 06:59:59
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect time value: '1296:00:00'
|
||||
Warning 1292 Truncated incorrect time value: '1296:00:00'
|
||||
2014-01-22 11:22:30
|
||||
2014-01-23 02:30:05
|
||||
SELECT GREATEST(t, CURRENT_DATE()) FROM t1;
|
||||
GREATEST(t, CURRENT_DATE())
|
||||
838:59:59
|
||||
838:59:59
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect time value: '1296:00:00'
|
||||
Warning 1292 Truncated incorrect time value: '1296:00:00'
|
||||
2014-01-22 03:22:30
|
||||
2014-01-22 18:30:05
|
||||
DROP TABLE t1;
|
||||
SET TIMESTAMP=DEFAULT;
|
||||
#
|
||||
@ -2695,18 +2692,15 @@ SET timestamp=DEFAULT;
|
||||
#
|
||||
# MDEV-5750 Assertion `ltime->year == 0' fails on a query with EXTRACT DAY_MINUTE and TIME column
|
||||
#
|
||||
SET timestamp=UNIX_TIMESTAMP('2010-01-01 00:00:00');
|
||||
CREATE TABLE t1 ( d DATE, t TIME );
|
||||
INSERT INTO t1 VALUES ('2008-12-05','22:34:09'),('2005-03-27','14:26:02');
|
||||
SELECT EXTRACT(DAY_MINUTE FROM GREATEST(t,d)), GREATEST(t,d) FROM t1;
|
||||
EXTRACT(DAY_MINUTE FROM GREATEST(t,d)) GREATEST(t,d)
|
||||
342259 838:59:59
|
||||
342259 838:59:59
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect time value: '9336:00:00'
|
||||
Warning 1292 Truncated incorrect time value: '9336:00:00'
|
||||
Warning 1292 Truncated incorrect time value: '2952:00:00'
|
||||
Warning 1292 Truncated incorrect time value: '2952:00:00'
|
||||
12234 2010-01-01 22:34:09
|
||||
11426 2010-01-01 14:26:02
|
||||
DROP TABLE t1;
|
||||
SET timestamp=DEFAULT;
|
||||
#
|
||||
# MDEV-7221 from_days fails after null value
|
||||
#
|
||||
|
@ -81,6 +81,38 @@ INSERT INTO t1 VALUES (4294967295,2015);
|
||||
--source include/func_hybrid_type.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 01:02:03');
|
||||
CREATE TABLE t1 (a DATE, b TIME);
|
||||
INSERT INTO t1 VALUES ('2010-01-01','10:20:30');
|
||||
--source include/func_hybrid_type.inc
|
||||
DROP TABLE t1;
|
||||
SET timestamp=DEFAULT;
|
||||
|
||||
--echo #
|
||||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 01:02:03');
|
||||
CREATE TABLE t1 (a TIMESTAMP, b TIME);
|
||||
INSERT INTO t1 VALUES ('2010-01-01 00:00:00','10:20:30');
|
||||
--source include/func_hybrid_type.inc
|
||||
DROP TABLE t1;
|
||||
SET timestamp=DEFAULT;
|
||||
|
||||
--echo #
|
||||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 01:02:03');
|
||||
CREATE TABLE t1 (a DATETIME, b TIME);
|
||||
INSERT INTO t1 VALUES ('2010-01-01 00:00:00','10:20:30');
|
||||
--source include/func_hybrid_type.inc
|
||||
DROP TABLE t1;
|
||||
SET timestamp=DEFAULT;
|
||||
|
||||
--echo #
|
||||
SET timestamp=UNIX_TIMESTAMP('2001-01-01 01:02:03');
|
||||
CREATE TABLE t1 (a DATETIME, b DATE);
|
||||
INSERT INTO t1 VALUES ('2010-01-01 10:20:30','2001-01-02');
|
||||
--source include/func_hybrid_type.inc
|
||||
DROP TABLE t1;
|
||||
SET timestamp=DEFAULT;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-8873 Wrong field type or metadata for LEAST(int_column,string_column)
|
||||
@ -111,6 +143,28 @@ INSERT INTO t1 (a) VALUES (13836376518955650385) ON DUPLICATE KEY UPDATE a=GREAT
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-5694 GREATEST(date, time) returns a wrong data type
|
||||
--echo #
|
||||
SET timestamp=UNIX_TIMESTAMP('2010-01-01 01:02:03');
|
||||
--disable_ps_protocol
|
||||
--enable_metadata
|
||||
# Expect DATETIME type (12) in metadata
|
||||
SELECT GREATEST(CURRENT_TIME, CURRENT_DATE), COALESCE(CURRENT_TIME, CURRENT_DATE);
|
||||
CREATE TABLE t1 (a TIMESTAMP);
|
||||
INSERT INTO t1 VALUES ('2010-01-01 10:20:30');
|
||||
# Expect TIMESTAMP type (7) in metadata
|
||||
SELECT GREATEST(a,a) FROM t1;
|
||||
DROP TABLE t1;
|
||||
--disable_metadata
|
||||
--enable_ps_protocol
|
||||
CREATE TABLE t1 (a TIMESTAMP, b DATETIME);
|
||||
CREATE TABLE t2 AS SELECT LEAST(a,a),LEAST(b,b),LEAST(a,b) FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
SET timestamp=DEFAULT;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.1 tests
|
||||
--echo #
|
||||
|
@ -1180,6 +1180,7 @@ SET timestamp=UNIX_TIMESTAMP('2014-06-01 10:20:30');
|
||||
select greatest(cast("0-0-0" as date), cast("10:20:05" as time));
|
||||
select greatest(cast("0-0-0" as date), cast("10:20:05" as time)) = '0000-00-00';
|
||||
select greatest(cast("0-0-0" as date), cast("10:20:05" as time)) = '2014-06-01';
|
||||
select greatest(cast("0-0-0" as date), cast("10:20:05" as time)) = '2014-06-01 10:20:05';
|
||||
select cast(greatest(cast("0-0-0" as date), cast("10:20:05" as time)) as datetime(6));
|
||||
SET timestamp=DEFAULT;
|
||||
|
||||
@ -1629,11 +1630,12 @@ SET timestamp=DEFAULT;
|
||||
--echo #
|
||||
--echo # MDEV-5750 Assertion `ltime->year == 0' fails on a query with EXTRACT DAY_MINUTE and TIME column
|
||||
--echo #
|
||||
SET timestamp=UNIX_TIMESTAMP('2010-01-01 00:00:00');
|
||||
CREATE TABLE t1 ( d DATE, t TIME );
|
||||
INSERT INTO t1 VALUES ('2008-12-05','22:34:09'),('2005-03-27','14:26:02');
|
||||
SELECT EXTRACT(DAY_MINUTE FROM GREATEST(t,d)), GREATEST(t,d) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
SET timestamp=DEFAULT;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-7221 from_days fails after null value
|
||||
|
@ -2832,9 +2832,10 @@ void Item_func_min_max::fix_length_and_dec()
|
||||
max_length=0;
|
||||
maybe_null=0;
|
||||
thd= current_thd;
|
||||
compare_as_dates= find_date_time_item(args, arg_count, 0);
|
||||
Item_result tmp_cmp_type= args[0]->cmp_type();
|
||||
uint string_type_count= 0;
|
||||
uint temporal_type_count= 0;
|
||||
enum_field_types temporal_field_type= MYSQL_TYPE_DATETIME;
|
||||
|
||||
for (uint i=0 ; i < arg_count ; i++)
|
||||
{
|
||||
@ -2846,6 +2847,15 @@ void Item_func_min_max::fix_length_and_dec()
|
||||
maybe_null= 1;
|
||||
tmp_cmp_type= item_cmp_type(tmp_cmp_type, args[i]->cmp_type());
|
||||
string_type_count+= args[i]->cmp_type() == STRING_RESULT;
|
||||
if (args[i]->cmp_type() == TIME_RESULT)
|
||||
{
|
||||
if (!temporal_type_count)
|
||||
temporal_field_type= args[i]->field_type();
|
||||
else
|
||||
temporal_field_type= Field::field_type_merge(temporal_field_type,
|
||||
args[i]->field_type());
|
||||
temporal_type_count++;
|
||||
}
|
||||
}
|
||||
unsigned_flag= unsigned_count == arg_count; // if all args are unsigned
|
||||
|
||||
@ -2853,12 +2863,11 @@ void Item_func_min_max::fix_length_and_dec()
|
||||
case TIME_RESULT:
|
||||
// At least one temporal argument was found.
|
||||
collation.set_numeric();
|
||||
set_handler_by_field_type(compare_as_dates->field_type());
|
||||
if (mysql_type_to_time_type(Item_func_min_max::field_type()) ==
|
||||
MYSQL_TIMESTAMP_DATE)
|
||||
decimals= 0;
|
||||
else
|
||||
set_handler_by_field_type(temporal_field_type);
|
||||
if (is_temporal_type_with_time(temporal_field_type))
|
||||
set_if_smaller(decimals, TIME_SECOND_PART_DIGITS);
|
||||
else
|
||||
decimals= 0;
|
||||
break;
|
||||
|
||||
case STRING_RESULT:
|
||||
@ -2956,12 +2965,12 @@ bool Item_func_min_max::get_date(MYSQL_TIME *ltime, ulonglong fuzzy_date)
|
||||
for example, SELECT MONTH(GREATEST("2011-11-21", "2010-10-09"))
|
||||
|
||||
*/
|
||||
if (!compare_as_dates)
|
||||
if (Item_func_min_max::cmp_type() != TIME_RESULT)
|
||||
return Item_func::get_date(ltime, fuzzy_date);
|
||||
|
||||
for (uint i=0; i < arg_count ; i++)
|
||||
{
|
||||
longlong res= args[i]->val_temporal_packed(compare_as_dates);
|
||||
longlong res= args[i]->val_temporal_packed(Item_func_min_max::field_type());
|
||||
|
||||
/* Check if we need to stop (because of error or KILL) and stop the loop */
|
||||
if (thd->is_error() || args[i]->null_value)
|
||||
@ -2974,12 +2983,12 @@ bool Item_func_min_max::get_date(MYSQL_TIME *ltime, ulonglong fuzzy_date)
|
||||
}
|
||||
unpack_time(min_max, ltime);
|
||||
|
||||
if (compare_as_dates->field_type() == MYSQL_TYPE_DATE)
|
||||
if (Item_func_min_max::field_type() == MYSQL_TYPE_DATE)
|
||||
{
|
||||
ltime->time_type= MYSQL_TIMESTAMP_DATE;
|
||||
ltime->hour= ltime->minute= ltime->second= ltime->second_part= 0;
|
||||
}
|
||||
else if (compare_as_dates->field_type() == MYSQL_TYPE_TIME)
|
||||
else if (Item_func_min_max::field_type() == MYSQL_TYPE_TIME)
|
||||
{
|
||||
ltime->time_type= MYSQL_TIMESTAMP_TIME;
|
||||
ltime->hour+= (ltime->month * 32 + ltime->day) * 24;
|
||||
@ -3001,7 +3010,7 @@ bool Item_func_min_max::get_date(MYSQL_TIME *ltime, ulonglong fuzzy_date)
|
||||
String *Item_func_min_max::val_str(String *str)
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
if (compare_as_dates)
|
||||
if (Item_func_min_max::cmp_type() == TIME_RESULT)
|
||||
return val_string_from_date(str);
|
||||
switch (Item_func_min_max::result_type()) {
|
||||
case INT_RESULT:
|
||||
@ -3047,7 +3056,7 @@ double Item_func_min_max::val_real()
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
double value=0.0;
|
||||
if (compare_as_dates)
|
||||
if (Item_func_min_max::cmp_type() == TIME_RESULT)
|
||||
{
|
||||
MYSQL_TIME ltime;
|
||||
if (get_date(<ime, 0))
|
||||
@ -3076,7 +3085,7 @@ longlong Item_func_min_max::val_int()
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
longlong value=0;
|
||||
if (compare_as_dates)
|
||||
if (Item_func_min_max::cmp_type() == TIME_RESULT)
|
||||
{
|
||||
MYSQL_TIME ltime;
|
||||
if (get_date(<ime, 0))
|
||||
@ -3106,7 +3115,7 @@ my_decimal *Item_func_min_max::val_decimal(my_decimal *dec)
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
my_decimal tmp_buf, *tmp, *UNINIT_VAR(res);
|
||||
|
||||
if (compare_as_dates)
|
||||
if (Item_func_min_max::cmp_type() == TIME_RESULT)
|
||||
{
|
||||
MYSQL_TIME ltime;
|
||||
if (get_date(<ime, 0))
|
||||
|
@ -1002,13 +1002,11 @@ class Item_func_min_max :public Item_func,
|
||||
{
|
||||
String tmp_value;
|
||||
int cmp_sign;
|
||||
/* An item used for issuing warnings while string to DATETIME conversion. */
|
||||
Item *compare_as_dates;
|
||||
THD *thd;
|
||||
public:
|
||||
Item_func_min_max(THD *thd, List<Item> &list, int cmp_sign_arg):
|
||||
Item_func(thd, list), cmp_sign(cmp_sign_arg),
|
||||
compare_as_dates(0) {}
|
||||
Item_func(thd, list), cmp_sign(cmp_sign_arg)
|
||||
{}
|
||||
double val_real();
|
||||
longlong val_int();
|
||||
String *val_str(String *);
|
||||
|
Loading…
x
Reference in New Issue
Block a user