|
The same problem is repeatable with functions returning NULL:
DELIMITER $$
|
BEGIN NOT ATOMIC
|
PREPARE stmt FROM 'CREATE OR REPLACE TABLE t1 AS SELECT ? AS d0,? AS d1';
|
EXECUTE stmt USING
|
DATE_ADD(TIMESTAMP'9999-12-31 23:59:59', INTERVAL 0 SECOND),
|
DATE_ADD(TIMESTAMP'9999-12-31 23:59:59', INTERVAL 1 SECOND);
|
DEALLOCATE PREPARE stmt;
|
SHOW CREATE TABLE t1;
|
END;
|
$$
|
DELIMITER ;
|
+-------+------------------------------------------------------------------------------------------------------------------------+
|
| Table | Create Table |
|
+-------+------------------------------------------------------------------------------------------------------------------------+
|
| t1 | CREATE TABLE `t1` (
|
`d0` datetime DEFAULT NULL,
|
`d1` binary(0) DEFAULT NULL
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|
+-------+------------------------------------------------------------------------------------------------------------------------+
|
Notice, the data type for d1 is wrong. It should be datetime.
Note, this script, with direct non-prepared execution, correctly creates two datetime columns:
SET sql_mode='';
|
CREATE OR REPLACE TABLE t1 AS SELECT
|
DATE_ADD(TIMESTAMP'9999-12-31 23:59:59', INTERVAL 0 SECOND) AS d0,
|
DATE_ADD(TIMESTAMP'9999-12-31 23:59:59', INTERVAL 1 SECOND) AS d1;
|
SHOW CREATE TABLE t1;
|
+-------+-----------------------------------------------------------------------------------------------------------------------+
|
| Table | Create Table |
|
+-------+-----------------------------------------------------------------------------------------------------------------------+
|
| t1 | CREATE TABLE `t1` (
|
`d0` datetime DEFAULT NULL,
|
`d1` datetime DEFAULT NULL
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
|
+-------+-----------------------------------------------------------------------------------------------------------------------+
|
|