~drizzle-trunk/drizzle/development

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;