summaryrefslogtreecommitdiff
path: root/mysql-test/suite/innodb/t/data_types.test
blob: cfdd5201af2c487c9b8b88913ee573f00d78584f (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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#
# MDEV-5248 Serious incompatibility and data corruption of DATETIME and DATE types due to get_innobase_type_from_mysql_type refactor combined with InnoDB Online DDL
#

#
# This test records what *internal type codes* innodb is using for every
# MariaDB data type. THEY MUST ALWAYS BE THE SAME AND NEVER CHANGE!
# Otherwise we create a compatibility problem and possible silent data
# corruption too, see MDEV-5248
#

--source include/have_innodb.inc

CREATE TABLE t1
(
  t1_BIGINT BIGINT,
  t1_BIGINT_UNSIGNED BIGINT UNSIGNED,
  t1_BINARY_100 BINARY(100),
  t1_BIT_2 BIT(2),
  t1_BIT_20 BIT(20),
  t1_BLOB BLOB,
  t1_CHAR_100 CHAR(100),
  t1_CHAR_100_BINARY CHAR(100) BINARY,
  t1_DATE DATE,
  t1_DATETIME DATETIME,
  t1_DATETIME_6 DATETIME(6),
  t1_DECIMAL_10_3 DECIMAL(10,3),
  t1_DECIMAL_10_3_UNSIGNED DECIMAL(10,3) UNSIGNED,
  t1_DOUBLE DOUBLE,
  t1_DOUBLE_UNSIGNED DOUBLE UNSIGNED,
  t1_ENUM       ENUM('a', 'b', 'c'),
  t1_ENUM_BINARY ENUM('a','b') BINARY,
  t1_ENUM_256    ENUM('a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9',
    'a10', 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a17', 'a18', 'a19',
    'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a29',
    'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36', 'a37', 'a38', 'a39',
    'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46', 'a47', 'a48', 'a49',
    'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56', 'a57', 'a58', 'a59',
    'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66', 'a67', 'a68', 'a69',
    'a70', 'a71', 'a72', 'a73', 'a74', 'a75', 'a76', 'a77', 'a78', 'a79',
    'a80', 'a81', 'a82', 'a83', 'a84', 'a85', 'a86', 'a87', 'a88', 'a89',
    'a90', 'a91', 'a92', 'a93', 'a94', 'a95', 'a96', 'a97', 'a98', 'a99',
    'a100', 'a101', 'a102', 'a103', 'a104', 'a105', 'a106', 'a107', 'a108',
    'a109', 'a110', 'a111', 'a112', 'a113', 'a114', 'a115', 'a116', 'a117',
    'a118', 'a119', 'a120', 'a121', 'a122', 'a123', 'a124', 'a125', 'a126',
    'a127', 'a128', 'a129', 'a130', 'a131', 'a132', 'a133', 'a134', 'a135',
    'a136', 'a137', 'a138', 'a139', 'a140', 'a141', 'a142', 'a143', 'a144',
    'a145', 'a146', 'a147', 'a148', 'a149', 'a150', 'a151', 'a152', 'a153',
    'a154', 'a155', 'a156', 'a157', 'a158', 'a159', 'a160', 'a161', 'a162',
    'a163', 'a164', 'a165', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171',
    'a172', 'a173', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a180',
    'a181', 'a182', 'a183', 'a184', 'a185', 'a186', 'a187', 'a188', 'a189',
    'a190', 'a191', 'a192', 'a193', 'a194', 'a195', 'a196', 'a197', 'a198',
    'a199', 'a200', 'a201', 'a202', 'a203', 'a204', 'a205', 'a206', 'a207',
    'a208', 'a209', 'a210', 'a211', 'a212', 'a213', 'a214', 'a215', 'a216',
    'a217', 'a218', 'a219', 'a220', 'a221', 'a222', 'a223', 'a224', 'a225',
    'a226', 'a227', 'a228', 'a229', 'a230', 'a231', 'a232', 'a233', 'a234',
    'a235', 'a236', 'a237', 'a238', 'a239', 'a240', 'a241', 'a242', 'a243',
    'a244', 'a245', 'a246', 'a247', 'a248', 'a249', 'a250', 'a251', 'a252',
    'a253', 'a254', 'a255', 'a256'), 
  t1_FLOAT FLOAT,
  t1_FLOAT_UNSIGNED FLOAT UNSIGNED,
  t1_INT INT,
  t1_INT_UNSIGNED INT UNSIGNED,
  t1_LONGBLOB LONGBLOB,
  t1_LONGTEXT LONGTEXT,
  t1_MEDIUMBLOB MEDIUMBLOB,
  t1_MEDIUMINT MEDIUMINT,
  t1_MEDIUMINT_UNSIGNED MEDIUMINT UNSIGNED,
  t1_MEDIUMTEXT MEDIUMTEXT,
  t1_SET        SET('a', 'b', 'c'),
  t1_SET_BINARY SET('a','b') BINARY,
  t1_SET_9      SET('a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9'),
  t1_SMALLINT SMALLINT,
  t1_SMALLINT_UNSIGNED SMALLINT UNSIGNED,
  t1_TEXT TEXT,
  t1_TIME TIME,
  t1_TIME_4 TIME(4),
  t1_TIMESTAMP TIMESTAMP,
  t1_TIMESTAMP_5 TIMESTAMP(5),
  t1_TINYBLOB TINYBLOB,
  t1_TINYINT  TINYINT,
  t1_TINYINT_UNSIGNED TINYINT UNSIGNED,
  t1_TINYTEXT TINYTEXT,
  t1_VARBINARY_100 VARBINARY(100),
  t1_VARCHAR_10 VARCHAR(10),
  t1_VARCHAR_10_BINARY VARCHAR(10) BINARY,
  t1_VARCHAR_500 VARCHAR(500),
  t1_VARCHAR_500_BINARY VARCHAR(500) BINARY,
  t1_YEAR_2 YEAR(2),
  t1_YEAR_4 YEAR(4),
  t1_CHAR_0 CHAR(0),
  t1_MYSQL_0 CHAR(0) CHARACTER SET utf8,
  t1_VARCHAR_0 VARCHAR(0),
  t1_VARMYSQL_0 VARCHAR(0) CHARACTER SET utf8
) ENGINE=InnoDB;

INSERT INTO t1 () VALUES ();

SELECT
  name,
  CASE mtype
    WHEN 1 THEN "DATA_VARCHAR"
    WHEN 2 THEN "DATA_CHAR"
    WHEN 3 THEN "DATA_FIXBINARY"
    WHEN 4 THEN "DATA_BINARY"
    WHEN 5 THEN "DATA_BLOB"
    WHEN 6 THEN "DATA_INT"
    WHEN 7 THEN "DATA_SYS_CHILD"
    WHEN 8 THEN "DATA_SYS"
    WHEN 9 THEN "DATA_FLOAT"
    WHEN 10 THEN "DATA_DOUBLE"
    WHEN 11 THEN "DATA_DECIMAL"
    WHEN 12 THEN "DATA_VARMYSQL"
    WHEN 13 THEN "DATA_MYSQL"
    WHEN 63 THEN "DATA_MTYPE_MAX"
    ELSE mtype
  END AS mtype,
  IF((prtype & 512) = 512,"UNSIGNED","") AS is_unsigned
FROM information_schema.INNODB_SYS_COLUMNS
WHERE name LIKE "t1\_%"
ORDER BY name;

DROP TABLE t1;

--echo #
--echo # MDEV-17815 Assertion failed in btr_node_ptr_max_size for CHAR(0)
--echo #
CREATE TABLE t1 (c CHAR(0), KEY(c)) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('');
DROP TABLE t1;

--echo #
--echo # MDEV-18039 Assertion failed in btr_node_ptr_max_size for VARCHAR(0)
--echo #
CREATE TABLE t1 (c VARCHAR(0), KEY(c)) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('');
DROP TABLE t1;