summaryrefslogtreecommitdiff
path: root/mysql-test/suite/storage_engine/col_not_null.inc
blob: 5f980b0a915a715541c12edaf9f95cdd3765afe0 (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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#
# NOT NULL attribute in columns
#
# Usage:
# let $col_definition = <column type (and possibly more options)>;
# let $col_default = <default non-null value for a column>;
# --source col_not_null.inc
#
# We will add NOT NULL at the end of $col;
#
# Also, if $col_default is defined, 
# we will create a table with 2 columns 
# (one with DEFAULT $col_default, and one without any default), 
# and will also attempt to add a column with DEFAULT NULL.
#

--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings

--let $create_definition = c $col_definition NOT NULL
--source create_table.inc
if ($mysql_errname)
{
  --source unexpected_result.inc
}
if (!$mysql_errname)
{
  SHOW COLUMNS IN t1;

  --let $error_codes = ER_BAD_NULL_ERROR
  INSERT INTO t1 (c) VALUES (NULL);
  --source check_errors.inc

  DROP TABLE t1;
}

if ($col_default != '')
{
  let $create_definition =
    c $col_definition NOT NULL,
    c2 $col_definition NOT NULL DEFAULT $col_default
  ;
  --source create_table.inc
  if ($mysql_errname)
  {
    --source unexpected_result.inc
  }
  if (!$mysql_errname)
  {
    SHOW COLUMNS IN t1;

    --let $error_codes = ER_INVALID_DEFAULT
    --let $alter_definition = ADD COLUMN err $col_definition NOT NULL DEFAULT NULL
    --source alter_table.inc
    if ($mysql_errname != ER_INVALID_DEFAULT)
    {
      --let $functionality = ALTER or DEFAULT
      --source unexpected_result.inc
    }

    --let $error_codes = ER_BAD_NULL_ERROR
    INSERT INTO t1 (c) VALUES (NULL);
    --source check_errors.inc
    if ($mysql_errname != ER_BAD_NULL_ERROR)
    {
      --let $functionality = NOT NULL columns
     --source unexpected_result.inc
    }

    # HEX should be universal for all column types
    SELECT HEX(c), HEX(c2) FROM t1;

    --let $error_codes = ER_BAD_NULL_ERROR
    INSERT INTO t1 (c2) VALUES (NULL);
    --source check_errors.inc

    --eval INSERT INTO t1 (c) VALUES ($col_default)
    if ($mysql_errname)
    {
      --let $functionality = DEFAULT
      --source unexpected_result.inc
    }
    SELECT COUNT(c), COUNT(c2) FROM t1;

    DROP TABLE t1;
  }
}

# We don't want to preserve it
let $col_default = ;