mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-16542 Fix ALTER TABLE FORCE to upgrade temporal types
This commit is contained in:
416
mysql-test/main/type_temporal_mysql56_debug.result
Normal file
416
mysql-test/main/type_temporal_mysql56_debug.result
Normal file
@ -0,0 +1,416 @@
|
||||
#
|
||||
# Start of 10.4 tests
|
||||
#
|
||||
#
|
||||
# MDEV-16542 Fix ALTER TABLE FORCE to upgrade temporal types
|
||||
#
|
||||
CREATE PROCEDURE mdev16542_create_select()
|
||||
BEGIN
|
||||
SELECT '# CREATE..SELECT and SHOW' AS ``;
|
||||
CREATE TABLE t2 AS SELECT
|
||||
a0, a1, a2, a3, a4, a5, a6,
|
||||
COALESCE(a0),
|
||||
COALESCE(a1),
|
||||
COALESCE(a2),
|
||||
COALESCE(a3),
|
||||
COALESCE(a4),
|
||||
COALESCE(a5),
|
||||
COALESCE(a6)
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
DROP TABLE t2;
|
||||
END;
|
||||
$$
|
||||
CREATE PROCEDURE mdev16542_alter_force_and_show()
|
||||
BEGIN
|
||||
SELECT '# ALTER..FORCE and SHOW' AS ``;
|
||||
ALTER TABLE t1 FORCE;
|
||||
SHOW CREATE TABLE t1;
|
||||
END;
|
||||
$$
|
||||
CREATE PROCEDURE mdev16542()
|
||||
BEGIN
|
||||
SET SESSION debug_dbug="+d,sql_type";
|
||||
SELECT '# Original table' AS ``;
|
||||
SHOW CREATE TABLE t1;
|
||||
CALL mdev16542_create_select();
|
||||
CALL mdev16542_alter_force_and_show();
|
||||
SELECT '# Setting @@global.mysql56_temporal_format=false' AS ``;
|
||||
SET @@global.mysql56_temporal_format=false;
|
||||
CALL mdev16542_create_select();
|
||||
CALL mdev16542_alter_force_and_show();
|
||||
SELECT '# Setting @@global.mysql56_temporal_format=true' AS ``;
|
||||
SET @@global.mysql56_temporal_format=true;
|
||||
CALL mdev16542_create_select();
|
||||
CALL mdev16542_alter_force_and_show();
|
||||
SET SESSION debug_dbug="-d,sql_type";
|
||||
END;
|
||||
$$
|
||||
SET @@global.mysql56_temporal_format=true;
|
||||
CREATE TABLE t1 (
|
||||
a0 TIME,
|
||||
a1 TIME(1),
|
||||
a2 TIME(2),
|
||||
a3 TIME(3),
|
||||
a4 TIME(4),
|
||||
a5 TIME(5),
|
||||
a6 TIME(6)
|
||||
);
|
||||
CALL mdev16542;
|
||||
|
||||
# Original table
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` time /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a1` time(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a2` time(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a3` time(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a4` time(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a5` time(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a6` time(6) /* mysql-5.6 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# CREATE..SELECT and SHOW
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a0` time /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a1` time(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a2` time(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a3` time(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a4` time(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a5` time(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a6` time(6) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a0)` time /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a1)` time(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a2)` time(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a3)` time(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a4)` time(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a5)` time(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a6)` time(6) /* mysql-5.6 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# ALTER..FORCE and SHOW
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` time /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a1` time(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a2` time(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a3` time(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a4` time(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a5` time(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a6` time(6) /* mysql-5.6 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# Setting @@global.mysql56_temporal_format=false
|
||||
|
||||
# CREATE..SELECT and SHOW
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a0` time /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a1` time(1) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a2` time(2) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a3` time(3) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a4` time(4) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a5` time(5) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a6` time(6) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a0)` time /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a1)` time(1) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a2)` time(2) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a3)` time(3) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a4)` time(4) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a5)` time(5) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a6)` time(6) /* mariadb-5.3 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# ALTER..FORCE and SHOW
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` time /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a1` time(1) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a2` time(2) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a3` time(3) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a4` time(4) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a5` time(5) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a6` time(6) /* mariadb-5.3 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# Setting @@global.mysql56_temporal_format=true
|
||||
|
||||
# CREATE..SELECT and SHOW
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a0` time /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a1` time(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a2` time(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a3` time(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a4` time(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a5` time(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a6` time(6) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a0)` time /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a1)` time(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a2)` time(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a3)` time(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a4)` time(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a5)` time(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a6)` time(6) /* mysql-5.6 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# ALTER..FORCE and SHOW
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` time /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a1` time(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a2` time(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a3` time(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a4` time(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a5` time(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a6` time(6) /* mysql-5.6 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
a0 DATETIME,
|
||||
a1 DATETIME(1),
|
||||
a2 DATETIME(2),
|
||||
a3 DATETIME(3),
|
||||
a4 DATETIME(4),
|
||||
a5 DATETIME(5),
|
||||
a6 DATETIME(6)
|
||||
);
|
||||
CALL mdev16542;
|
||||
|
||||
# Original table
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` datetime /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a1` datetime(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a2` datetime(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a3` datetime(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a4` datetime(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a5` datetime(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a6` datetime(6) /* mysql-5.6 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# CREATE..SELECT and SHOW
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a0` datetime /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a1` datetime(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a2` datetime(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a3` datetime(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a4` datetime(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a5` datetime(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a6` datetime(6) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a0)` datetime /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a1)` datetime(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a2)` datetime(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a3)` datetime(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a4)` datetime(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a5)` datetime(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a6)` datetime(6) /* mysql-5.6 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# ALTER..FORCE and SHOW
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` datetime /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a1` datetime(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a2` datetime(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a3` datetime(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a4` datetime(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a5` datetime(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a6` datetime(6) /* mysql-5.6 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# Setting @@global.mysql56_temporal_format=false
|
||||
|
||||
# CREATE..SELECT and SHOW
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a0` datetime /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a1` datetime(1) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a2` datetime(2) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a3` datetime(3) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a4` datetime(4) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a5` datetime(5) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a6` datetime(6) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a0)` datetime /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a1)` datetime(1) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a2)` datetime(2) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a3)` datetime(3) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a4)` datetime(4) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a5)` datetime(5) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`COALESCE(a6)` datetime(6) /* mariadb-5.3 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# ALTER..FORCE and SHOW
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` datetime /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a1` datetime(1) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a2` datetime(2) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a3` datetime(3) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a4` datetime(4) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a5` datetime(5) /* mariadb-5.3 */ DEFAULT NULL,
|
||||
`a6` datetime(6) /* mariadb-5.3 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# Setting @@global.mysql56_temporal_format=true
|
||||
|
||||
# CREATE..SELECT and SHOW
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a0` datetime /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a1` datetime(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a2` datetime(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a3` datetime(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a4` datetime(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a5` datetime(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a6` datetime(6) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a0)` datetime /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a1)` datetime(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a2)` datetime(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a3)` datetime(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a4)` datetime(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a5)` datetime(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`COALESCE(a6)` datetime(6) /* mysql-5.6 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# ALTER..FORCE and SHOW
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` datetime /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a1` datetime(1) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a2` datetime(2) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a3` datetime(3) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a4` datetime(4) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a5` datetime(5) /* mysql-5.6 */ DEFAULT NULL,
|
||||
`a6` datetime(6) /* mysql-5.6 */ DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
a0 TIMESTAMP,
|
||||
a1 TIMESTAMP(1),
|
||||
a2 TIMESTAMP(2),
|
||||
a3 TIMESTAMP(3),
|
||||
a4 TIMESTAMP(4),
|
||||
a5 TIMESTAMP(5),
|
||||
a6 TIMESTAMP(6)
|
||||
);
|
||||
CALL mdev16542;
|
||||
|
||||
# Original table
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` timestamp /* mysql-5.6 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`a1` timestamp(1) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
|
||||
`a2` timestamp(2) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
|
||||
`a3` timestamp(3) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
|
||||
`a4` timestamp(4) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
|
||||
`a5` timestamp(5) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
|
||||
`a6` timestamp(6) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# CREATE..SELECT and SHOW
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a0` timestamp /* mysql-5.6 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`a1` timestamp(1) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
|
||||
`a2` timestamp(2) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
|
||||
`a3` timestamp(3) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
|
||||
`a4` timestamp(4) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
|
||||
`a5` timestamp(5) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
|
||||
`a6` timestamp(6) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
|
||||
`COALESCE(a0)` timestamp /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a1)` timestamp(1) /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a2)` timestamp(2) /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a3)` timestamp(3) /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a4)` timestamp(4) /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a5)` timestamp(5) /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a6)` timestamp(6) /* mysql-5.6 */ NULL DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# ALTER..FORCE and SHOW
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` timestamp /* mysql-5.6 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`a1` timestamp(1) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
|
||||
`a2` timestamp(2) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
|
||||
`a3` timestamp(3) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
|
||||
`a4` timestamp(4) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
|
||||
`a5` timestamp(5) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
|
||||
`a6` timestamp(6) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# Setting @@global.mysql56_temporal_format=false
|
||||
|
||||
# CREATE..SELECT and SHOW
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a0` timestamp /* mariadb-5.3 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`a1` timestamp(1) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
|
||||
`a2` timestamp(2) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
|
||||
`a3` timestamp(3) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
|
||||
`a4` timestamp(4) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
|
||||
`a5` timestamp(5) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
|
||||
`a6` timestamp(6) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
|
||||
`COALESCE(a0)` timestamp /* mariadb-5.3 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a1)` timestamp(1) /* mariadb-5.3 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a2)` timestamp(2) /* mariadb-5.3 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a3)` timestamp(3) /* mariadb-5.3 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a4)` timestamp(4) /* mariadb-5.3 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a5)` timestamp(5) /* mariadb-5.3 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a6)` timestamp(6) /* mariadb-5.3 */ NULL DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# ALTER..FORCE and SHOW
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` timestamp /* mariadb-5.3 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`a1` timestamp(1) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
|
||||
`a2` timestamp(2) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
|
||||
`a3` timestamp(3) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
|
||||
`a4` timestamp(4) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
|
||||
`a5` timestamp(5) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
|
||||
`a6` timestamp(6) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# Setting @@global.mysql56_temporal_format=true
|
||||
|
||||
# CREATE..SELECT and SHOW
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a0` timestamp /* mysql-5.6 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`a1` timestamp(1) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
|
||||
`a2` timestamp(2) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
|
||||
`a3` timestamp(3) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
|
||||
`a4` timestamp(4) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
|
||||
`a5` timestamp(5) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
|
||||
`a6` timestamp(6) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
|
||||
`COALESCE(a0)` timestamp /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a1)` timestamp(1) /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a2)` timestamp(2) /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a3)` timestamp(3) /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a4)` timestamp(4) /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a5)` timestamp(5) /* mysql-5.6 */ NULL DEFAULT NULL,
|
||||
`COALESCE(a6)` timestamp(6) /* mysql-5.6 */ NULL DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
# ALTER..FORCE and SHOW
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a0` timestamp /* mysql-5.6 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`a1` timestamp(1) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
|
||||
`a2` timestamp(2) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
|
||||
`a3` timestamp(3) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
|
||||
`a4` timestamp(4) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
|
||||
`a5` timestamp(5) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
|
||||
`a6` timestamp(6) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
SET @@global.mysql56_temporal_format=DEFAULT;
|
||||
DROP PROCEDURE mdev16542;
|
||||
DROP PROCEDURE mdev16542_create_select;
|
||||
DROP PROCEDURE mdev16542_alter_force_and_show;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
105
mysql-test/main/type_temporal_mysql56_debug.test
Normal file
105
mysql-test/main/type_temporal_mysql56_debug.test
Normal file
@ -0,0 +1,105 @@
|
||||
--echo #
|
||||
--echo # Start of 10.4 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16542 Fix ALTER TABLE FORCE to upgrade temporal types
|
||||
--echo #
|
||||
|
||||
DELIMITER $$;
|
||||
CREATE PROCEDURE mdev16542_create_select()
|
||||
BEGIN
|
||||
SELECT '# CREATE..SELECT and SHOW' AS ``;
|
||||
CREATE TABLE t2 AS SELECT
|
||||
a0, a1, a2, a3, a4, a5, a6,
|
||||
COALESCE(a0),
|
||||
COALESCE(a1),
|
||||
COALESCE(a2),
|
||||
COALESCE(a3),
|
||||
COALESCE(a4),
|
||||
COALESCE(a5),
|
||||
COALESCE(a6)
|
||||
FROM t1;
|
||||
SHOW CREATE TABLE t2;
|
||||
DROP TABLE t2;
|
||||
END;
|
||||
$$
|
||||
|
||||
CREATE PROCEDURE mdev16542_alter_force_and_show()
|
||||
BEGIN
|
||||
SELECT '# ALTER..FORCE and SHOW' AS ``;
|
||||
ALTER TABLE t1 FORCE;
|
||||
SHOW CREATE TABLE t1;
|
||||
END;
|
||||
$$
|
||||
|
||||
CREATE PROCEDURE mdev16542()
|
||||
BEGIN
|
||||
SET SESSION debug_dbug="+d,sql_type";
|
||||
SELECT '# Original table' AS ``;
|
||||
SHOW CREATE TABLE t1;
|
||||
CALL mdev16542_create_select();
|
||||
CALL mdev16542_alter_force_and_show();
|
||||
|
||||
SELECT '# Setting @@global.mysql56_temporal_format=false' AS ``;
|
||||
SET @@global.mysql56_temporal_format=false;
|
||||
CALL mdev16542_create_select();
|
||||
CALL mdev16542_alter_force_and_show();
|
||||
|
||||
SELECT '# Setting @@global.mysql56_temporal_format=true' AS ``;
|
||||
SET @@global.mysql56_temporal_format=true;
|
||||
CALL mdev16542_create_select();
|
||||
CALL mdev16542_alter_force_and_show();
|
||||
SET SESSION debug_dbug="-d,sql_type";
|
||||
END;
|
||||
$$
|
||||
DELIMITER ;$$
|
||||
|
||||
SET @@global.mysql56_temporal_format=true;
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a0 TIME,
|
||||
a1 TIME(1),
|
||||
a2 TIME(2),
|
||||
a3 TIME(3),
|
||||
a4 TIME(4),
|
||||
a5 TIME(5),
|
||||
a6 TIME(6)
|
||||
);
|
||||
CALL mdev16542;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a0 DATETIME,
|
||||
a1 DATETIME(1),
|
||||
a2 DATETIME(2),
|
||||
a3 DATETIME(3),
|
||||
a4 DATETIME(4),
|
||||
a5 DATETIME(5),
|
||||
a6 DATETIME(6)
|
||||
);
|
||||
CALL mdev16542;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a0 TIMESTAMP,
|
||||
a1 TIMESTAMP(1),
|
||||
a2 TIMESTAMP(2),
|
||||
a3 TIMESTAMP(3),
|
||||
a4 TIMESTAMP(4),
|
||||
a5 TIMESTAMP(5),
|
||||
a6 TIMESTAMP(6)
|
||||
);
|
||||
CALL mdev16542;
|
||||
DROP TABLE t1;
|
||||
|
||||
SET @@global.mysql56_temporal_format=DEFAULT;
|
||||
DROP PROCEDURE mdev16542;
|
||||
DROP PROCEDURE mdev16542_create_select;
|
||||
DROP PROCEDURE mdev16542_alter_force_and_show;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
@ -10709,11 +10709,6 @@ Column_definition::Column_definition(THD *thd, Field *old_field,
|
||||
key_length/= charset->mbmaxlen;
|
||||
break;
|
||||
case MYSQL_TYPE_STRING:
|
||||
/* Change CHAR -> VARCHAR if dynamic record length */
|
||||
if (old_field->type() == MYSQL_TYPE_VAR_STRING)
|
||||
set_handler(&type_handler_varchar);
|
||||
/* fall through */
|
||||
|
||||
case MYSQL_TYPE_ENUM:
|
||||
case MYSQL_TYPE_SET:
|
||||
case MYSQL_TYPE_VARCHAR:
|
||||
@ -10761,6 +10756,8 @@ Column_definition::Column_definition(THD *thd, Field *old_field,
|
||||
|
||||
char_length= (uint)length;
|
||||
|
||||
type_handler()->Column_definition_implicit_upgrade(this);
|
||||
|
||||
/*
|
||||
Copy the default (constant/function) from the column object orig_field, if
|
||||
supplied. We do this if all these conditions are met:
|
||||
|
@ -2184,6 +2184,12 @@ int show_create_table(THD *thd, TABLE_LIST *table_list, String *packet,
|
||||
field->sql_type(type);
|
||||
packet->append(type.ptr(), type.length(), system_charset_info);
|
||||
|
||||
DBUG_EXECUTE_IF("sql_type",
|
||||
packet->append(" /* ");
|
||||
packet->append(field->type_handler()->version().ptr());
|
||||
packet->append(" */ ");
|
||||
);
|
||||
|
||||
if (field->has_charset() && !(sql_mode & (MODE_MYSQL323 | MODE_MYSQL40)))
|
||||
{
|
||||
if (field->charset() != share->table_charset)
|
||||
|
@ -472,6 +472,11 @@ const Name
|
||||
Type_handler_datetime_common::m_name_datetime(STRING_WITH_LEN("datetime")),
|
||||
Type_handler_timestamp_common::m_name_timestamp(STRING_WITH_LEN("timestamp"));
|
||||
|
||||
const Name
|
||||
Type_handler::m_version_default(STRING_WITH_LEN("")),
|
||||
Type_handler::m_version_mariadb53(STRING_WITH_LEN("mariadb-5.3")),
|
||||
Type_handler::m_version_mysql56(STRING_WITH_LEN("mysql-5.6"));
|
||||
|
||||
|
||||
const Type_limits_int
|
||||
Type_handler_tiny::m_limits_sint8= Type_limits_sint8(),
|
||||
@ -6532,3 +6537,40 @@ bool Type_handler_decimal_result::Item_eq_value(THD *thd,
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
void Type_handler_var_string::
|
||||
Column_definition_implicit_upgrade(Column_definition *c) const
|
||||
{
|
||||
// Change old VARCHAR to new VARCHAR
|
||||
c->set_handler(&type_handler_varchar);
|
||||
}
|
||||
|
||||
|
||||
void Type_handler_time_common::
|
||||
Column_definition_implicit_upgrade(Column_definition *c) const
|
||||
{
|
||||
if (opt_mysql56_temporal_format)
|
||||
c->set_handler(&type_handler_time2);
|
||||
else
|
||||
c->set_handler(&type_handler_time);
|
||||
}
|
||||
|
||||
|
||||
void Type_handler_datetime_common::
|
||||
Column_definition_implicit_upgrade(Column_definition *c) const
|
||||
{
|
||||
if (opt_mysql56_temporal_format)
|
||||
c->set_handler(&type_handler_datetime2);
|
||||
else
|
||||
c->set_handler(&type_handler_datetime);
|
||||
}
|
||||
|
||||
|
||||
void Type_handler_timestamp_common::
|
||||
Column_definition_implicit_upgrade(Column_definition *c) const
|
||||
{
|
||||
if (opt_mysql56_temporal_format)
|
||||
c->set_handler(&type_handler_timestamp2);
|
||||
else
|
||||
c->set_handler(&type_handler_timestamp);
|
||||
}
|
||||
|
@ -1031,6 +1031,9 @@ public:
|
||||
class Type_handler
|
||||
{
|
||||
protected:
|
||||
static const Name m_version_default;
|
||||
static const Name m_version_mysql56;
|
||||
static const Name m_version_mariadb53;
|
||||
String *print_item_value_csstr(THD *thd, Item *item, String *str) const;
|
||||
String *print_item_value_temporal(THD *thd, Item *item, String *str,
|
||||
const Name &type_name, String *buf) const;
|
||||
@ -1096,6 +1099,7 @@ public:
|
||||
const Type_handler *h2);
|
||||
|
||||
virtual const Name name() const= 0;
|
||||
virtual const Name version() const { return m_version_default; }
|
||||
virtual enum_field_types field_type() const= 0;
|
||||
virtual enum_field_types real_field_type() const { return field_type(); }
|
||||
/**
|
||||
@ -1253,6 +1257,9 @@ public:
|
||||
virtual Field *make_conversion_table_field(TABLE *TABLE,
|
||||
uint metadata,
|
||||
const Field *target) const= 0;
|
||||
// Automatic upgrade, e.g. for ALTER TABLE t1 FORCE
|
||||
virtual void Column_definition_implicit_upgrade(Column_definition *c) const
|
||||
{ }
|
||||
virtual bool Column_definition_fix_attributes(Column_definition *c) const= 0;
|
||||
virtual bool Column_definition_prepare_stage1(THD *thd,
|
||||
MEM_ROOT *mem_root,
|
||||
@ -2878,6 +2885,7 @@ public:
|
||||
return Item_divisor_precision_increment_with_seconds(item);
|
||||
}
|
||||
const Type_handler *type_handler_for_comparison() const;
|
||||
void Column_definition_implicit_upgrade(Column_definition *c) const;
|
||||
bool Column_definition_fix_attributes(Column_definition *c) const;
|
||||
bool Item_save_in_value(Item *item, st_value *value) const;
|
||||
bool Item_send(Item *item, Protocol *protocol, st_value *buf) const
|
||||
@ -2923,6 +2931,7 @@ class Type_handler_time: public Type_handler_time_common
|
||||
public:
|
||||
static uint hires_bytes(uint dec) { return m_hires_bytes[dec]; }
|
||||
virtual ~Type_handler_time() {}
|
||||
const Name version() const { return m_version_mariadb53; }
|
||||
uint32 calc_pack_length(uint32 length) const;
|
||||
Field *make_conversion_table_field(TABLE *, uint metadata,
|
||||
const Field *target) const;
|
||||
@ -2948,6 +2957,7 @@ class Type_handler_time2: public Type_handler_time_common
|
||||
{
|
||||
public:
|
||||
virtual ~Type_handler_time2() {}
|
||||
const Name version() const { return m_version_mysql56; }
|
||||
enum_field_types real_field_type() const { return MYSQL_TYPE_TIME2; }
|
||||
uint32 calc_pack_length(uint32 length) const;
|
||||
Field *make_conversion_table_field(TABLE *, uint metadata,
|
||||
@ -3082,6 +3092,7 @@ public:
|
||||
}
|
||||
Item *create_typecast_item(THD *thd, Item *item,
|
||||
const Type_cast_attributes &attr) const;
|
||||
void Column_definition_implicit_upgrade(Column_definition *c) const;
|
||||
bool Column_definition_fix_attributes(Column_definition *c) const;
|
||||
uint Item_decimal_scale(const Item *item) const
|
||||
{
|
||||
@ -3115,6 +3126,7 @@ class Type_handler_datetime: public Type_handler_datetime_common
|
||||
public:
|
||||
static uint hires_bytes(uint dec) { return m_hires_bytes[dec]; }
|
||||
virtual ~Type_handler_datetime() {}
|
||||
const Name version() const { return m_version_mariadb53; }
|
||||
uint32 calc_pack_length(uint32 length) const;
|
||||
Field *make_conversion_table_field(TABLE *, uint metadata,
|
||||
const Field *target) const;
|
||||
@ -3140,6 +3152,7 @@ class Type_handler_datetime2: public Type_handler_datetime_common
|
||||
{
|
||||
public:
|
||||
virtual ~Type_handler_datetime2() {}
|
||||
const Name version() const { return m_version_mysql56; }
|
||||
enum_field_types real_field_type() const { return MYSQL_TYPE_DATETIME2; }
|
||||
uint32 calc_pack_length(uint32 length) const;
|
||||
Field *make_conversion_table_field(TABLE *, uint metadata,
|
||||
@ -3178,6 +3191,7 @@ public:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
void Column_definition_implicit_upgrade(Column_definition *c) const;
|
||||
bool Column_definition_fix_attributes(Column_definition *c) const;
|
||||
uint Item_decimal_scale(const Item *item) const
|
||||
{
|
||||
@ -3211,6 +3225,7 @@ class Type_handler_timestamp: public Type_handler_timestamp_common
|
||||
public:
|
||||
static uint sec_part_bytes(uint dec) { return m_sec_part_bytes[dec]; }
|
||||
virtual ~Type_handler_timestamp() {}
|
||||
const Name version() const { return m_version_mariadb53; }
|
||||
uint32 calc_pack_length(uint32 length) const;
|
||||
Field *make_conversion_table_field(TABLE *, uint metadata,
|
||||
const Field *target) const;
|
||||
@ -3236,6 +3251,7 @@ class Type_handler_timestamp2: public Type_handler_timestamp_common
|
||||
{
|
||||
public:
|
||||
virtual ~Type_handler_timestamp2() {}
|
||||
const Name version() const { return m_version_mysql56; }
|
||||
enum_field_types real_field_type() const { return MYSQL_TYPE_TIMESTAMP2; }
|
||||
uint32 calc_pack_length(uint32 length) const;
|
||||
Field *make_conversion_table_field(TABLE *, uint metadata,
|
||||
@ -3436,6 +3452,7 @@ public:
|
||||
{
|
||||
return varstring_type_handler(item);
|
||||
}
|
||||
void Column_definition_implicit_upgrade(Column_definition *c) const;
|
||||
bool Column_definition_fix_attributes(Column_definition *c) const;
|
||||
bool Column_definition_prepare_stage2(Column_definition *c,
|
||||
handler *file,
|
||||
|
Reference in New Issue
Block a user