1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00

A patch for Bug#18834: ALTER TABLE ADD INDEX on table with

two timestamp fields.
  
The actual problem here was that CREATE TABLE allowed zero
date as a default value for a TIMESTAMP column in NO_ZERO_DATE mode.
  
The thing is that for TIMESTAMP date type specific rule is applied:
  column_name TIMESTAMP == column_name TIMESTAMP DEFAULT 0
whever for any other date data type
  column_name TYPE == column_name TYPE DEFAULT NULL
  
The fix is to raise an error when we're in NO_ZERO_DATE mode and
there is TIMESTAMP column w/o default value.
This commit is contained in:
anozdrin/alik@quad.
2008-02-14 18:13:40 +03:00
parent 7e88f7718c
commit 6bf1306b13
3 changed files with 139 additions and 0 deletions

View File

@@ -1385,4 +1385,68 @@ DROP TABLE t2;
--echo # -- End of test case for Bug#21380.
--echo
--echo # --
--echo # -- Bug#18834: ALTER TABLE ADD INDEX on table with two timestamp fields
--echo # --
--echo
--disable_warnings
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
DROP TABLE IF EXISTS t3;
--enable_warnings
--echo
CREATE TABLE t1(c1 TIMESTAMP, c2 TIMESTAMP);
--echo
SET sql_mode = NO_ZERO_DATE;
--echo
--error ER_INVALID_DEFAULT
CREATE TABLE t2(c1 TIMESTAMP, c2 TIMESTAMP DEFAULT 0);
--echo
--error ER_INVALID_DEFAULT
CREATE TABLE t2(c1 TIMESTAMP, c2 TIMESTAMP);
--echo
--echo # -- Check that NULL column still can be created.
CREATE TABLE t2(c1 TIMESTAMP NULL);
--echo
--echo # -- Check ALTER TABLE.
--error ER_INVALID_DEFAULT
ALTER TABLE t1 ADD INDEX(c1);
--echo
--echo # -- Check DATETIME.
SET sql_mode = '';
--echo
CREATE TABLE t3(c1 DATETIME NOT NULL);
INSERT INTO t3 VALUES (0);
--echo
SET sql_mode = TRADITIONAL;
--echo
--error ER_TRUNCATED_WRONG_VALUE
ALTER TABLE t3 ADD INDEX(c1);
--echo
--echo # -- Cleanup.
SET sql_mode = '';
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;
--echo
--echo # -- End of Bug#18834.
--echo
--echo End of 5.1 tests