1
by brian
clean slate |
1 |
#----------------------------------------------------------------------------- |
2 |
# csv_not_null.test - .test file for MySQL regression suite |
|
3 |
# Purpose: To test the behavior of the CSV engine |
|
4 |
# Bug#31473 resulted in strict enforcement of non-nullable |
|
5 |
# columns in CSV engine. |
|
6 |
# NOTE: Main functionality tested - NOT NULL restrictions on CSV tables |
|
7 |
# CREATE, INSERT, and UPDATE statements |
|
8 |
# ALTER statements in separate file due to BUG#33696 |
|
9 |
# Author pcrews |
|
10 |
# Last modified: 2008-01-04 |
|
11 |
#----------------------------------------------------------------------------- |
|
12 |
||
13 |
--source include/have_csv.inc
|
|
14 |
||
15 |
#############################################################################
|
|
16 |
# Testcase csv_not_null.1: CREATE TABLE for CSV Engine requires explicit |
|
17 |
# NOT NULL for each column |
|
18 |
#############################################################################
|
|
19 |
-- echo # ===== csv_not_null.1 =====
|
|
20 |
DROP TABLE IF EXISTS t1, t2; |
|
21 |
||
22 |
||
23 |
--echo # === Will fail -- no NOT NULL ===
|
|
24 |
--error ER_CHECK_NOT_IMPLEMENTED
|
|
25 |
CREATE TABLE t1 (a int) ENGINE = CSV; |
|
26 |
||
27 |
--echo # === Good CREATE ===
|
|
28 |
CREATE TABLE t1 (a int NOT NULL) ENGINE = CSV; |
|
29 |
||
30 |
--echo # === Will fail -- ALL columns need NOT NULL ==
|
|
31 |
--error ER_CHECK_NOT_IMPLEMENTED
|
|
32 |
CREATE TABLE t2 (a int NOT NULL, b char(20)) ENGINE = CSV; |
|
33 |
||
34 |
||
35 |
DROP TABLE t1; |
|
36 |
##############################################################################
|
|
37 |
# Testcase csv_not_null.2: INSERT tests -- validating behavior of INSERT |
|
38 |
# statements for CSV |
|
39 |
##############################################################################
|
|
40 |
-- echo # ===== csv_not_null.2 =====
|
|
41 |
DROP TABLE IF EXISTS t1; |
|
42 |
||
43 |
||
44 |
CREATE TABLE t1 (a int NOT NULL, b blob NOT NULL, c CHAR(20) NOT NULL, |
|
45 |
d VARCHAR(20) NOT NULL, e enum('foo','bar') NOT NULL,f DATE NOT NULL) |
|
46 |
ENGINE = CSV; |
|
722.2.23
by Monty Taylor
Enabled csv_not_null and csv_alter_table. |
47 |
--error 1364
|
1
by brian
clean slate |
48 |
INSERT INTO t1 VALUES(); |
49 |
SELECT * FROM t1; |
|
50 |
||
51 |
# NOTE - Test disabled due to enum crash for this INSERT |
|
52 |
# See Bug#33717 - INSERT...(default) fails for enum. |
|
53 |
# Crashes CSV tables, loads spaces for MyISAM |
|
54 |
#INSERT INTO t1 VALUES(default,default,default,default,default,default); |
|
55 |
||
56 |
SELECT * FROM t1; |
|
57 |
INSERT INTO t1 VALUES(0,'abc','def','ghi','bar','1999-12-31'); |
|
58 |
SELECT * FROM t1; |
|
59 |
-- echo # === insert failures ===
|
|
60 |
--error ER_BAD_NULL_ERROR
|
|
61 |
INSERT INTO t1 VALUES(NULL,'ab','a','b','foo','2007-01-01'); |
|
62 |
--error ER_NO_DEFAULT_FOR_FIELD
|
|
63 |
INSERT INTO t1 VALUES(default(a),default(b), default(c), default(d), |
|
64 |
default(e), default(f)); |
|
65 |
||
66 |
||
67 |
DROP TABLE t1; |
|
68 |
||
69 |
##############################################################################
|
|
70 |
# Testcase csv_not_null.3: UPDATE tests -- examining behavior of UPDATE |
|
71 |
# statements for CSV |
|
72 |
##############################################################################
|
|
73 |
-- echo # ===== csv_not_null.3 =====
|
|
74 |
DROP TABLE IF EXISTS t1; |
|
75 |
||
76 |
||
77 |
CREATE TABLE t1 (a int NOT NULL, b char(10) NOT NULL) ENGINE = CSV; |
|
722.2.23
by Monty Taylor
Enabled csv_not_null and csv_alter_table. |
78 |
--error 1364
|
1
by brian
clean slate |
79 |
INSERT INTO t1 VALUES(); |
722.2.23
by Monty Taylor
Enabled csv_not_null and csv_alter_table. |
80 |
insert into t1 values (0,""); |
1
by brian
clean slate |
81 |
SELECT * FROM t1; |
82 |
UPDATE t1 set b = 'new_value' where a = 0; |
|
83 |
SELECT * FROM t1; |
|
84 |
--error ER_BAD_NULL_ERROR
|
|
85 |
UPDATE t1 set b = NULL where b = 'new_value'; |
|
86 |
SELECT * FROM t1; |
|
87 |
||
88 |
DROP TABLE t1; |