summaryrefslogtreecommitdiff
path: root/mysql-test/include/type_temporal_zero_default.inc
blob: 500d25ea18f5310e5b35a4228f9ddbc2f42fb619 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
--echo #
--echo # MDEV-7824 [Bug #68041] Zero date can be inserted in strict no-zero mode through a default value
--echo #

# Testing direct INSERT

SET sql_mode=DEFAULT;
eval CREATE TABLE t1 (a $type DEFAULT $defval);
SET sql_mode=TRADITIONAL;
--error ER_TRUNCATED_WRONG_VALUE
eval INSERT INTO t1 VALUES ($defval);
--error ER_INVALID_DEFAULT_VALUE_FOR_FIELD
INSERT INTO t1 VALUES ();
--error ER_INVALID_DEFAULT_VALUE_FOR_FIELD
INSERT INTO t1 VALUES (DEFAULT);
DROP TABLE t1;
SET sql_mode=DEFAULT;


# Testing INSERT .. SELECT

eval CREATE TABLE t1 (a $type NOT NULL DEFAULT $defval, b $type NOT NULL DEFAULT $defval);
eval CREATE TABLE t2 (a $type NOT NULL DEFAULT $defval);
eval INSERT INTO t2 VALUES ($defval);
SET sql_mode=TRADITIONAL;
--error ER_INVALID_DEFAULT_VALUE_FOR_FIELD
INSERT INTO t1 (a) SELECT a FROM t2;
DROP TABLE t1, t2;
SET sql_mode=DEFAULT;


# Testing LOAD

--eval CREATE TABLE t1 (a $type DEFAULT $defval, b $type DEFAULT $defval)
--eval INSERT INTO t1 VALUES (DEFAULT,DEFAULT);
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--eval SELECT a INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/mdev-7824.txt' FROM t1
DELETE FROM t1;
SET sql_mode=TRADITIONAL;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--error ER_INVALID_DEFAULT_VALUE_FOR_FIELD
--eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/mdev-7824.txt' INTO TABLE t1 (a)
--remove_file $MYSQLTEST_VARDIR/tmp/mdev-7824.txt
DROP TABLE t1;
SET sql_mode=DEFAULT;

# Testing ALTER when an old field default becomes invalid
# Return an error, even if there is no STRICT_XXX_TABLES set
--eval CREATE TABLE t1 (a $type DEFAULT $defval);
SET sql_mode='NO_ZERO_DATE';
--error ER_INVALID_DEFAULT
ALTER TABLE t1 ADD b INT NOT NULL;
DROP TABLE t1;
SET sql_mode=DEFAULT;


--echo #
--echo # End of MDEV-7824 [Bug #68041] Zero date can be inserted in strict no-zero mode through a default value
--echo #

--echo #
--echo # MDEV-8373 Zero date can be inserted in strict no-zero mode through CREATE TABLE AS SELECT timestamp_field
--echo #

SET sql_mode=DEFAULT;
--eval CREATE TABLE t1 (a $type);
INSERT INTO t1 VALUES (0);
SET sql_mode='TRADITIONAL';
--error ER_TRUNCATED_WRONG_VALUE
CREATE TABLE t2 AS SELECT * FROM t1;
DROP TABLE t1;

--echo #
--echo # End of MDEV-8373 Zero date can be inserted in strict no-zero mode through CREATE TABLE AS SELECT timestamp_field
--echo #