mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
6b20342651
In original code, sometimes one got an automatic DEFAULT value in some cases, in other cases not. For example: create table t1 (a int primary key) - No default create table t2 (a int, primary key(a)) - DEFAULT 0 create table t1 SELECT .... - Default for all fields, even if they where defined as NOT NULL ALTER TABLE ... MODIFY could sometimes add an unexpected DEFAULT value. The patch is quite big because we had some many test cases that used CREATE ... SELECT or CREATE ... (...PRIMARY KEY(xxx)) which doesn't have an automatic DEFAULT anymore. Other things: - Removed warnings from InnoDB when waiting from semaphore (got this when testing things with --big)
643 lines
19 KiB
Text
643 lines
19 KiB
Text
DROP TABLE IF EXISTS t1, t2;
|
|
SET NAMES latin1;
|
|
#
|
|
# Testing DATE literals
|
|
#
|
|
SELECT DATE'xxxx';
|
|
ERROR HY000: Incorrect DATE value: 'xxxx'
|
|
SELECT DATE'01';
|
|
ERROR HY000: Incorrect DATE value: '01'
|
|
SELECT DATE'01-01';
|
|
ERROR HY000: Incorrect DATE value: '01-01'
|
|
SELECT DATE'2001';
|
|
ERROR HY000: Incorrect DATE value: '2001'
|
|
SELECT DATE'2001-01';
|
|
ERROR HY000: Incorrect DATE value: '2001-01'
|
|
SELECT DATE'2001-00-00';
|
|
DATE'2001-00-00'
|
|
2001-00-00
|
|
SELECT DATE'2001-01-00';
|
|
DATE'2001-01-00'
|
|
2001-01-00
|
|
SELECT DATE'0000-00-00';
|
|
DATE'0000-00-00'
|
|
0000-00-00
|
|
SELECT DATE'2001-01-01 00:00:00';
|
|
ERROR HY000: Incorrect DATE value: '2001-01-01 00:00:00'
|
|
SELECT DATE'01:01:01';
|
|
DATE'01:01:01'
|
|
2001-01-01
|
|
SELECT DATE'01-01-01';
|
|
DATE'01-01-01'
|
|
2001-01-01
|
|
SELECT DATE'2010-01-01';
|
|
DATE'2010-01-01'
|
|
2010-01-01
|
|
SELECT DATE '2010-01-01';
|
|
DATE '2010-01-01'
|
|
2010-01-01
|
|
CREATE TABLE t1 AS SELECT DATE'2010-01-01';
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`DATE'2010-01-01'` date NOT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 AS SELECT
|
|
{d'2001-01-01'},
|
|
{ d '2001-01-01' },
|
|
{d'2001-01-01 10:10:10'};
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`{d'2001-01-01'}` date NOT NULL,
|
|
`{ d '2001-01-01' }` date NOT NULL,
|
|
`2001-01-01 10:10:10` varchar(19) NOT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
EXPLAIN EXTENDED SELECT {d'2010-01-01'};
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
|
Warnings:
|
|
Note 1003 select DATE'2010-01-01' AS `{d'2010-01-01'}`
|
|
EXPLAIN EXTENDED SELECT DATE'2010-01-01';
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
|
Warnings:
|
|
Note 1003 select DATE'2010-01-01' AS `DATE'2010-01-01'`
|
|
#
|
|
# Testing DATE literals in non-default sql_mode
|
|
#
|
|
SET sql_mode=no_zero_in_date;
|
|
SELECT DATE'2001-00-00';
|
|
ERROR HY000: Incorrect DATE value: '2001-00-00'
|
|
SELECT DATE'2001-01-00';
|
|
ERROR HY000: Incorrect DATE value: '2001-01-00'
|
|
SELECT DATE'0000-00-00';
|
|
DATE'0000-00-00'
|
|
0000-00-00
|
|
SET sql_mode=no_zero_date;
|
|
SELECT DATE'0000-00-00';
|
|
ERROR HY000: Incorrect DATE value: '0000-00-00'
|
|
SET sql_mode=default;
|
|
#
|
|
# Testing TIME literals
|
|
#
|
|
SELECT TIME'xxxx';
|
|
ERROR HY000: Incorrect TIME value: 'xxxx'
|
|
SELECT TIME'900:00:00';
|
|
ERROR HY000: Incorrect TIME value: '900:00:00'
|
|
SELECT TIME'-900:00:00';
|
|
ERROR HY000: Incorrect TIME value: '-900:00:00'
|
|
SELECT TIME'1 24:00:00';
|
|
TIME'1 24:00:00'
|
|
48:00:00
|
|
SELECT TIME'30 24:00:00';
|
|
TIME'30 24:00:00'
|
|
744:00:00
|
|
SELECT TIME'0000-00-00 00:00:00';
|
|
ERROR HY000: Incorrect TIME value: '0000-00-00 00:00:00'
|
|
SELECT TIME'40 24:00:00';
|
|
ERROR HY000: Incorrect TIME value: '40 24:00:00'
|
|
SELECT TIME'10';
|
|
TIME'10'
|
|
00:00:10
|
|
SELECT TIME'10:10';
|
|
TIME'10:10'
|
|
10:10:00
|
|
SELECT TIME'10:11.12';
|
|
TIME'10:11.12'
|
|
10:11:00.12
|
|
SELECT TIME'10:10:10';
|
|
TIME'10:10:10'
|
|
10:10:10
|
|
SELECT TIME'10:10:10.';
|
|
TIME'10:10:10.'
|
|
10:10:10
|
|
SELECT TIME'10:10:10.1';
|
|
TIME'10:10:10.1'
|
|
10:10:10.1
|
|
SELECT TIME'10:10:10.12';
|
|
TIME'10:10:10.12'
|
|
10:10:10.12
|
|
SELECT TIME'10:10:10.123';
|
|
TIME'10:10:10.123'
|
|
10:10:10.123
|
|
SELECT TIME'10:10:10.1234';
|
|
TIME'10:10:10.1234'
|
|
10:10:10.1234
|
|
SELECT TIME'10:10:10.12345';
|
|
TIME'10:10:10.12345'
|
|
10:10:10.12345
|
|
SELECT TIME'10:10:10.123456';
|
|
TIME'10:10:10.123456'
|
|
10:10:10.123456
|
|
SELECT TIME'-10:00:00';
|
|
TIME'-10:00:00'
|
|
-10:00:00
|
|
SELECT TIME '10:11:12';
|
|
TIME '10:11:12'
|
|
10:11:12
|
|
CREATE TABLE t1 AS SELECT
|
|
TIME'10:10:10',
|
|
TIME'10:10:10.',
|
|
TIME'10:10:10.1',
|
|
TIME'10:10:10.12',
|
|
TIME'10:10:10.123',
|
|
TIME'10:10:10.1234',
|
|
TIME'10:10:10.12345',
|
|
TIME'10:10:10.123456';
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`TIME'10:10:10'` time NOT NULL,
|
|
`TIME'10:10:10.'` time NOT NULL,
|
|
`TIME'10:10:10.1'` time(1) NOT NULL,
|
|
`TIME'10:10:10.12'` time(2) NOT NULL,
|
|
`TIME'10:10:10.123'` time(3) NOT NULL,
|
|
`TIME'10:10:10.1234'` time(4) NOT NULL,
|
|
`TIME'10:10:10.12345'` time(5) NOT NULL,
|
|
`TIME'10:10:10.123456'` time(6) NOT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 AS SELECT
|
|
{t'10:10:10'},
|
|
{ t '10:10:10' },
|
|
{t'10:10:10.'},
|
|
{t'10:10:10.123456'},
|
|
{t'2001-01-01'};
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`{t'10:10:10'}` time NOT NULL,
|
|
`{ t '10:10:10' }` time NOT NULL,
|
|
`{t'10:10:10.'}` time NOT NULL,
|
|
`{t'10:10:10.123456'}` time(6) NOT NULL,
|
|
`2001-01-01` varchar(10) NOT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
EXPLAIN EXTENDED SELECT {t'10:01:01'};
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
|
Warnings:
|
|
Note 1003 select TIME'10:01:01' AS `{t'10:01:01'}`
|
|
EXPLAIN EXTENDED SELECT TIME'10:01:01';
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
|
Warnings:
|
|
Note 1003 select TIME'10:01:01' AS `TIME'10:01:01'`
|
|
#
|
|
# Testing TIMESTAMP literals
|
|
#
|
|
SELECT TIMESTAMP'xxxx';
|
|
ERROR HY000: Incorrect DATETIME value: 'xxxx'
|
|
SELECT TIMESTAMP'2010';
|
|
ERROR HY000: Incorrect DATETIME value: '2010'
|
|
SELECT TIMESTAMP'2010-01';
|
|
ERROR HY000: Incorrect DATETIME value: '2010-01'
|
|
SELECT TIMESTAMP'2010-01-01';
|
|
ERROR HY000: Incorrect DATETIME value: '2010-01-01'
|
|
SELECT TIMESTAMP'2010-01-01 00';
|
|
TIMESTAMP'2010-01-01 00'
|
|
2010-01-01 00:00:00
|
|
SELECT TIMESTAMP'2010-01-01 00:01';
|
|
TIMESTAMP'2010-01-01 00:01'
|
|
2010-01-01 00:01:00
|
|
SELECT TIMESTAMP'2010-01-01 10:10:10';
|
|
TIMESTAMP'2010-01-01 10:10:10'
|
|
2010-01-01 10:10:10
|
|
SELECT TIMESTAMP'2010-01-01 10:10:10.';
|
|
TIMESTAMP'2010-01-01 10:10:10.'
|
|
2010-01-01 10:10:10
|
|
SELECT TIMESTAMP'2010-01-01 10:10:10.1';
|
|
TIMESTAMP'2010-01-01 10:10:10.1'
|
|
2010-01-01 10:10:10.1
|
|
SELECT TIMESTAMP'2010-01-01 10:10:10.12';
|
|
TIMESTAMP'2010-01-01 10:10:10.12'
|
|
2010-01-01 10:10:10.12
|
|
SELECT TIMESTAMP'2010-01-01 10:10:10.123';
|
|
TIMESTAMP'2010-01-01 10:10:10.123'
|
|
2010-01-01 10:10:10.123
|
|
SELECT TIMESTAMP'2010-01-01 10:10:10.1234';
|
|
TIMESTAMP'2010-01-01 10:10:10.1234'
|
|
2010-01-01 10:10:10.1234
|
|
SELECT TIMESTAMP'2010-01-01 10:10:10.12345';
|
|
TIMESTAMP'2010-01-01 10:10:10.12345'
|
|
2010-01-01 10:10:10.12345
|
|
SELECT TIMESTAMP'2010-01-01 10:10:10.123456';
|
|
TIMESTAMP'2010-01-01 10:10:10.123456'
|
|
2010-01-01 10:10:10.123456
|
|
SELECT TIMESTAMP '2010-01-01 10:20:30';
|
|
TIMESTAMP '2010-01-01 10:20:30'
|
|
2010-01-01 10:20:30
|
|
CREATE TABLE t1 AS SELECT
|
|
TIMESTAMP'2010-01-01 10:10:10',
|
|
TIMESTAMP'2010-01-01 10:10:10.',
|
|
TIMESTAMP'2010-01-01 10:10:10.1',
|
|
TIMESTAMP'2010-01-01 10:10:10.12',
|
|
TIMESTAMP'2010-01-01 10:10:10.123',
|
|
TIMESTAMP'2010-01-01 10:10:10.1234',
|
|
TIMESTAMP'2010-01-01 10:10:10.12345',
|
|
TIMESTAMP'2010-01-01 10:10:10.123456';
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`TIMESTAMP'2010-01-01 10:10:10'` datetime NOT NULL,
|
|
`TIMESTAMP'2010-01-01 10:10:10.'` datetime NOT NULL,
|
|
`TIMESTAMP'2010-01-01 10:10:10.1'` datetime(1) NOT NULL,
|
|
`TIMESTAMP'2010-01-01 10:10:10.12'` datetime(2) NOT NULL,
|
|
`TIMESTAMP'2010-01-01 10:10:10.123'` datetime(3) NOT NULL,
|
|
`TIMESTAMP'2010-01-01 10:10:10.1234'` datetime(4) NOT NULL,
|
|
`TIMESTAMP'2010-01-01 10:10:10.12345'` datetime(5) NOT NULL,
|
|
`TIMESTAMP'2010-01-01 10:10:10.123456'` datetime(6) NOT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 AS SELECT
|
|
{ts'2001-01-01 10:10:10'},
|
|
{ ts '2001-01-01 10:10:10' },
|
|
{ts'2001-01-01 10:10:10.'},
|
|
{ts'2001-01-01 10:10:10.123456'},
|
|
{ts'2001-01-01'};
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`{ts'2001-01-01 10:10:10'}` datetime NOT NULL,
|
|
`{ ts '2001-01-01 10:10:10' }` datetime NOT NULL,
|
|
`{ts'2001-01-01 10:10:10.'}` datetime NOT NULL,
|
|
`{ts'2001-01-01 10:10:10.123456'}` datetime(6) NOT NULL,
|
|
`2001-01-01` varchar(10) NOT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
EXPLAIN EXTENDED SELECT {ts'2010-01-01 10:10:10'};
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
|
Warnings:
|
|
Note 1003 select TIMESTAMP'2010-01-01 10:10:10' AS `{ts'2010-01-01 10:10:10'}`
|
|
EXPLAIN EXTENDED SELECT TIMESTAMP'2010-01-01 10:10:10';
|
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
|
Warnings:
|
|
Note 1003 select TIMESTAMP'2010-01-01 10:10:10' AS `TIMESTAMP'2010-01-01 10:10:10'`
|
|
#
|
|
# Testing nanosecond rounding for TIMESTAMP literals with bad dates
|
|
#
|
|
SELECT TIMESTAMP'2001-00-00 00:00:00.999999';
|
|
TIMESTAMP'2001-00-00 00:00:00.999999'
|
|
2001-00-00 00:00:00.999999
|
|
SELECT TIMESTAMP'2001-00-01 00:00:00.999999';
|
|
TIMESTAMP'2001-00-01 00:00:00.999999'
|
|
2001-00-01 00:00:00.999999
|
|
SELECT TIMESTAMP'2001-01-00 00:00:00.999999';
|
|
TIMESTAMP'2001-01-00 00:00:00.999999'
|
|
2001-01-00 00:00:00.999999
|
|
SELECT TIMESTAMP'2001-00-00 00:00:00.9999999';
|
|
TIMESTAMP'2001-00-00 00:00:00.9999999'
|
|
2001-00-00 00:00:00.999999
|
|
Warnings:
|
|
Note 1292 Truncated incorrect datetime value: '2001-00-00 00:00:00.9999999'
|
|
SELECT TIMESTAMP'2001-00-01 00:00:00.9999999';
|
|
TIMESTAMP'2001-00-01 00:00:00.9999999'
|
|
2001-00-01 00:00:00.999999
|
|
Warnings:
|
|
Note 1292 Truncated incorrect datetime value: '2001-00-01 00:00:00.9999999'
|
|
SELECT TIMESTAMP'2001-01-00 00:00:00.9999999';
|
|
TIMESTAMP'2001-01-00 00:00:00.9999999'
|
|
2001-01-00 00:00:00.999999
|
|
Warnings:
|
|
Note 1292 Truncated incorrect datetime value: '2001-01-00 00:00:00.9999999'
|
|
#
|
|
# String literal with bad dates and nanoseconds to DATETIME(N)
|
|
#
|
|
CREATE TABLE t1 (a DATETIME(6));
|
|
INSERT INTO t1 VALUES ('2001-00-00 00:00:00.9999999');
|
|
Warnings:
|
|
Note 1265 Data truncated for column 'a' at row 1
|
|
INSERT INTO t1 VALUES ('2001-00-01 00:00:00.9999999');
|
|
Warnings:
|
|
Note 1265 Data truncated for column 'a' at row 1
|
|
INSERT INTO t1 VALUES ('2001-01-00 00:00:00.9999999');
|
|
Warnings:
|
|
Note 1265 Data truncated for column 'a' at row 1
|
|
SELECT * FROM t1;
|
|
a
|
|
2001-00-00 00:00:00.999999
|
|
2001-00-01 00:00:00.999999
|
|
2001-01-00 00:00:00.999999
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (a DATETIME(5));
|
|
INSERT INTO t1 VALUES ('2001-00-00 00:00:00.9999999');
|
|
Warnings:
|
|
Note 1265 Data truncated for column 'a' at row 1
|
|
INSERT INTO t1 VALUES ('2001-00-01 00:00:00.9999999');
|
|
Warnings:
|
|
Note 1265 Data truncated for column 'a' at row 1
|
|
INSERT INTO t1 VALUES ('2001-01-00 00:00:00.9999999');
|
|
Warnings:
|
|
Note 1265 Data truncated for column 'a' at row 1
|
|
SELECT * FROM t1;
|
|
a
|
|
2001-00-00 00:00:00.99999
|
|
2001-00-01 00:00:00.99999
|
|
2001-01-00 00:00:00.99999
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (a DATETIME);
|
|
INSERT INTO t1 VALUES ('2001-00-00 00:00:00.9999999');
|
|
Warnings:
|
|
Note 1265 Data truncated for column 'a' at row 1
|
|
INSERT INTO t1 VALUES ('2001-00-01 00:00:00.9999999');
|
|
Warnings:
|
|
Note 1265 Data truncated for column 'a' at row 1
|
|
INSERT INTO t1 VALUES ('2001-01-00 00:00:00.9999999');
|
|
Warnings:
|
|
Note 1265 Data truncated for column 'a' at row 1
|
|
SELECT * FROM t1;
|
|
a
|
|
2001-00-00 00:00:00
|
|
2001-00-01 00:00:00
|
|
2001-01-00 00:00:00
|
|
DROP TABLE t1;
|
|
#
|
|
# Testing Item_date_literal::eq
|
|
#
|
|
CREATE TABLE t1 (a DATE);
|
|
INSERT INTO t1 VALUES ('2001-01-01'),('2003-01-01');
|
|
SELECT * FROM t1 WHERE a BETWEEN DATE'2001-01-01' AND DATE'2002-01-01';
|
|
a
|
|
2001-01-01
|
|
SELECT DATE'2001-01-01' FROM t1 GROUP BY DATE'2001-01-01';
|
|
DATE'2001-01-01'
|
|
2001-01-01
|
|
DROP TABLE t1;
|
|
#
|
|
# TIME literals in no-zero date context
|
|
#
|
|
SET timestamp=unix_timestamp('2001-02-03 10:20:30');
|
|
SELECT TO_DAYS(TIME'00:00:00');
|
|
TO_DAYS(TIME'00:00:00')
|
|
730884
|
|
SELECT TO_SECONDS(TIME'00:00:00');
|
|
TO_SECONDS(TIME'00:00:00')
|
|
63148377600
|
|
SELECT DAYOFYEAR(TIME'00:00:00');
|
|
DAYOFYEAR(TIME'00:00:00')
|
|
34
|
|
SELECT WEEK(TIME'00:00:00');
|
|
WEEK(TIME'00:00:00')
|
|
4
|
|
SELECT YEARWEEK(TIME'00:00:00');
|
|
YEARWEEK(TIME'00:00:00')
|
|
200104
|
|
SELECT WEEKDAY(TIME'00:00:00');
|
|
WEEKDAY(TIME'00:00:00')
|
|
5
|
|
SELECT CONVERT_TZ(TIME'00:00:00','+00:00','+01:00');
|
|
CONVERT_TZ(TIME'00:00:00','+00:00','+01:00')
|
|
2001-02-03 01:00:00
|
|
SELECT DATE_ADD(TIME'00:00:00', INTERVAL 1 HOUR);
|
|
DATE_ADD(TIME'00:00:00', INTERVAL 1 HOUR)
|
|
01:00:00
|
|
SELECT TIMESTAMPDIFF(SECOND,TIME'00:00:00', TIME'00:00:00');
|
|
TIMESTAMPDIFF(SECOND,TIME'00:00:00', TIME'00:00:00')
|
|
0
|
|
SET timestamp=DEFAULT;
|
|
#
|
|
# Testing Item_func::fix_fields()
|
|
#
|
|
SELECT 'a' LIKE 'a' ESCAPE DATE'2001-01-01';
|
|
ERROR HY000: Incorrect arguments to ESCAPE
|
|
SELECT 'a' LIKE 'a' ESCAPE TIMESTAMP'2001-01-01 00:00:00';
|
|
ERROR HY000: Incorrect arguments to ESCAPE
|
|
SELECT 'a' LIKE 'a' ESCAPE TIME'00:00:00';
|
|
ERROR HY000: Incorrect arguments to ESCAPE
|
|
#
|
|
# MDEV-4871 Temporal literals do not accept nanoseconds
|
|
#
|
|
SELECT TIME'10:10:10.1234567';
|
|
TIME'10:10:10.1234567'
|
|
10:10:10.123456
|
|
Warnings:
|
|
Note 1292 Truncated incorrect time value: '10:10:10.1234567'
|
|
SELECT TIME('10:10:10.1234567');
|
|
TIME('10:10:10.1234567')
|
|
10:10:10.123456
|
|
Warnings:
|
|
Note 1292 Truncated incorrect time value: '10:10:10.1234567'
|
|
SELECT TIME'10:10:10.123456xyz';
|
|
ERROR HY000: Incorrect TIME value: '10:10:10.123456xyz'
|
|
SELECT TIME'10:10:10.1234567xyz';
|
|
ERROR HY000: Incorrect TIME value: '10:10:10.1234567xyz'
|
|
SELECT TIME('10:10:10.123456xyz');
|
|
TIME('10:10:10.123456xyz')
|
|
10:10:10.123456
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect time value: '10:10:10.123456xyz'
|
|
SELECT TIME('10:10:10.1234567xyz');
|
|
TIME('10:10:10.1234567xyz')
|
|
10:10:10.123456
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect time value: '10:10:10.1234567xyz'
|
|
SELECT TIMESTAMP'2001-01-01 10:10:10.1234567';
|
|
TIMESTAMP'2001-01-01 10:10:10.1234567'
|
|
2001-01-01 10:10:10.123456
|
|
Warnings:
|
|
Note 1292 Truncated incorrect datetime value: '2001-01-01 10:10:10.1234567'
|
|
SELECT TIMESTAMP('2001-01-01 10:10:10.1234567');
|
|
TIMESTAMP('2001-01-01 10:10:10.1234567')
|
|
2001-01-01 10:10:10.123456
|
|
Warnings:
|
|
Note 1292 Truncated incorrect datetime value: '2001-01-01 10:10:10.1234567'
|
|
SELECT TIMESTAMP'2001-01-01 10:10:10.123456xyz';
|
|
ERROR HY000: Incorrect DATETIME value: '2001-01-01 10:10:10.123456xyz'
|
|
SELECT TIMESTAMP'2001-01-01 10:10:10.1234567xyz';
|
|
ERROR HY000: Incorrect DATETIME value: '2001-01-01 10:10:10.1234567xyz'
|
|
SELECT TIMESTAMP('2001-01-01 10:10:10.123456xyz');
|
|
TIMESTAMP('2001-01-01 10:10:10.123456xyz')
|
|
2001-01-01 10:10:10.123456
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect datetime value: '2001-01-01 10:10:10.123456xyz'
|
|
SELECT TIMESTAMP('2001-01-01 10:10:10.1234567xyz');
|
|
TIMESTAMP('2001-01-01 10:10:10.1234567xyz')
|
|
2001-01-01 10:10:10.123456
|
|
Warnings:
|
|
Warning 1292 Truncated incorrect datetime value: '2001-01-01 10:10:10.1234567xyz'
|
|
CREATE TABLE t1 (a TIME(6));
|
|
INSERT INTO t1 VALUES (TIME'10:20:30.1234567');
|
|
Warnings:
|
|
Note 1292 Truncated incorrect time value: '10:20:30.1234567'
|
|
INSERT INTO t1 VALUES (TIME('10:20:30.1234567'));
|
|
Warnings:
|
|
Note 1292 Truncated incorrect time value: '10:20:30.1234567'
|
|
SELECT * FROM t1;
|
|
a
|
|
10:20:30.123456
|
|
10:20:30.123456
|
|
DROP TABLE t1;
|
|
#
|
|
# MDEV-5969 Crash in prepared statement with NO_ZERO_IN_DATE and ROLLUP
|
|
#
|
|
CREATE TABLE t1
|
|
(
|
|
year INT NOT NULL,
|
|
product VARCHAR(32) NOT NULL,
|
|
profit INT
|
|
);
|
|
INSERT INTO t1 VALUES ('2001','car',101);
|
|
INSERT INTO t1 VALUES ('2001','gas',102);
|
|
INSERT INTO t1 VALUES ('2001','toy',103);
|
|
INSERT INTO t1 VALUES ('2002','car',201);
|
|
INSERT INTO t1 VALUES ('2002','gas',202);
|
|
INSERT INTO t1 VALUES ('2002','toy',203);
|
|
SET sql_mode=DEFAULT;
|
|
PREPARE stmt FROM "SELECT DATE'2001-00-00' AS c,year, SUM(profit) FROM t1 GROUP BY c,year WITH ROLLUP";
|
|
EXECUTE stmt;
|
|
c year SUM(profit)
|
|
2001-00-00 2001 306
|
|
2001-00-00 2002 606
|
|
2001-00-00 NULL 912
|
|
NULL NULL 912
|
|
SET sql_mode='no_zero_in_date';
|
|
EXECUTE stmt;
|
|
c year SUM(profit)
|
|
NULL 2001 306
|
|
NULL 2002 606
|
|
NULL NULL 912
|
|
NULL NULL 912
|
|
Warnings:
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
SET sql_mode=DEFAULT;
|
|
DROP TABLE t1;
|
|
#
|
|
# MDEV-5971 Asymmetry between CAST(DATE'2001-00-00') to INT and TO CHAR in prepared statements
|
|
#
|
|
SET sql_mode=DEFAULT;
|
|
PREPARE stmt FROM "SELECT CAST(DATE'2001-00-00' AS SIGNED) AS c";
|
|
SET sql_mode='no_zero_in_date';
|
|
EXECUTE stmt;
|
|
c
|
|
NULL
|
|
Warnings:
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
SET sql_mode=DEFAULT;
|
|
PREPARE stmt FROM "SELECT CAST(DATE'2001-00-00' AS CHAR) AS c";
|
|
SET sql_mode='no_zero_in_date';
|
|
EXECUTE stmt;
|
|
c
|
|
NULL
|
|
Warnings:
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
SET sql_mode=DEFAULT;
|
|
PREPARE stmt FROM "SELECT CAST(DATE'2001-00-00' AS DECIMAL(30,0)) AS c";
|
|
SET sql_mode='no_zero_in_date';
|
|
EXECUTE stmt;
|
|
c
|
|
NULL
|
|
Warnings:
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
SET sql_mode=DEFAULT;
|
|
PREPARE stmt FROM "SELECT CAST(DATE'2001-00-00' AS DOUBLE) AS c";
|
|
SET sql_mode='no_zero_in_date';
|
|
EXECUTE stmt;
|
|
c
|
|
NULL
|
|
Warnings:
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
#
|
|
# Zero month or zero day automatically mean NULL flag, no matter SQL_MODE is.
|
|
# Only zero year is OK for NOT NULL.
|
|
#
|
|
SET sql_mode=DEFAULT;
|
|
PREPARE stmt FROM "CREATE TABLE t1 AS SELECT CAST(DATE'2001-00-00' AS CHAR) AS c";
|
|
EXECUTE stmt;
|
|
SHOW COLUMNS FROM t1;
|
|
Field Type Null Key Default Extra
|
|
c varchar(10) YES NULL
|
|
SELECT * FROM t1;
|
|
c
|
|
2001-00-00
|
|
DROP TABLE t1;
|
|
SET sql_mode='no_zero_in_date';
|
|
EXECUTE stmt;
|
|
Warnings:
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
SHOW COLUMNS FROM t1;
|
|
Field Type Null Key Default Extra
|
|
c varchar(10) YES NULL
|
|
SELECT * FROM t1;
|
|
c
|
|
NULL
|
|
DROP TABLE t1;
|
|
SET sql_mode=DEFAULT;
|
|
CREATE TABLE t1 AS SELECT
|
|
DATE'2001-01-01',
|
|
DATE'0000-01-01',
|
|
DATE'2001-00-00',
|
|
DATE'2001-00-01',
|
|
DATE'2001-01-00';
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`DATE'2001-01-01'` date NOT NULL,
|
|
`DATE'0000-01-01'` date NOT NULL,
|
|
`DATE'2001-00-00'` date DEFAULT NULL,
|
|
`DATE'2001-00-01'` date DEFAULT NULL,
|
|
`DATE'2001-01-00'` date DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 AS SELECT
|
|
TIMESTAMP'2001-01-01 00:00:00',
|
|
TIMESTAMP'0000-01-01 00:00:00',
|
|
TIMESTAMP'2001-00-00 00:00:00',
|
|
TIMESTAMP'2001-00-01 00:00:00',
|
|
TIMESTAMP'2001-01-00 00:00:00';
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`TIMESTAMP'2001-01-01 00:00:00'` datetime NOT NULL,
|
|
`TIMESTAMP'0000-01-01 00:00:00'` datetime NOT NULL,
|
|
`TIMESTAMP'2001-00-00 00:00:00'` datetime DEFAULT NULL,
|
|
`TIMESTAMP'2001-00-01 00:00:00'` datetime DEFAULT NULL,
|
|
`TIMESTAMP'2001-01-00 00:00:00'` datetime DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
#
|
|
# MDEV-5975 Prepared statements with DATE literals do not honor NO_ZERO_IN_DATE
|
|
#
|
|
SET sql_mode=DEFAULT;
|
|
PREPARE stmt FROM "SELECT (SELECT DATE'2001-00-00') AS c";
|
|
EXECUTE stmt;
|
|
c
|
|
2001-00-00
|
|
SET sql_mode='no_zero_in_date';
|
|
EXECUTE stmt;
|
|
c
|
|
NULL
|
|
Warnings:
|
|
Warning 1292 Incorrect datetime value: '2001-00-00'
|
|
DEALLOCATE PREPARE stmt;
|
|
SET sql_mode=DEFAULT;
|
|
PREPARE stmt FROM "SELECT (SELECT TIMESTAMP'2001-00-00 10:20:30') AS c";
|
|
EXECUTE stmt;
|
|
c
|
|
2001-00-00 10:20:30
|
|
SET sql_mode='no_zero_in_date';
|
|
EXECUTE stmt;
|
|
c
|
|
NULL
|
|
Warnings:
|
|
Warning 1292 Incorrect datetime value: '2001-00-00 10:20:30'
|
|
DEALLOCATE PREPARE stmt;
|
|
SET sql_mode=DEFAULT;
|