File Coverage

blib/lib/SQL/ReservedWords/MySQL.pm
Criterion Covered Total %
statement 39 39 100.0
branch 10 10 100.0
condition 8 8 100.0
subroutine 14 14 100.0
pod 6 6 100.0
total 77 77 100.0


line stmt bran cond sub pod time code
1             package SQL::ReservedWords::MySQL;
2              
3 2     2   2698 use strict;
  2         5  
  2         79  
4 2     2   11 use warnings;
  2         3  
  2         79  
5 2     2   12 use vars '$VERSION';
  2         4  
  2         231  
6              
7             $VERSION = '0.8';
8              
9 2     2   13 use constant MYSQL32 => 0x01;
  2         4  
  2         148  
10 2     2   26 use constant MYSQL40 => 0x02;
  2         4  
  2         94  
11 2     2   11 use constant MYSQL41 => 0x04;
  2         3  
  2         84  
12 2     2   8 use constant MYSQL50 => 0x08;
  2         4  
  2         87  
13 2     2   10 use constant MYSQL51 => 0x10;
  2         8  
  2         14605  
14              
15             {
16             require Sub::Exporter;
17              
18             my @exports = qw[
19             is_reserved
20             is_reserved_by_mysql3
21             is_reserved_by_mysql4
22             is_reserved_by_mysql5
23             reserved_by
24             words
25             ];
26              
27             Sub::Exporter->import( -setup => { exports => \@exports } );
28             }
29              
30             {
31             my %WORDS = (
32             ACCESSIBLE => MYSQL51,
33             ADD => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
34             ALL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
35             ALTER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
36             ANALYZE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
37             AND => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
38             AS => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
39             ASC => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
40             ASENSITIVE => MYSQL50 | MYSQL51,
41             BEFORE => MYSQL41 | MYSQL50 | MYSQL51,
42             BETWEEN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
43             BIGINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
44             BINARY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
45             BLOB => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
46             BOTH => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
47             BY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
48             CALL => MYSQL50 | MYSQL51,
49             CASCADE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
50             CASE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
51             CHANGE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
52             CHAR => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
53             CHARACTER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
54             CHECK => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
55             COLLATE => MYSQL41 | MYSQL50 | MYSQL51,
56             COLUMN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
57             COLUMNS => MYSQL32 | MYSQL40 | MYSQL41,
58             CONDITION => MYSQL50 | MYSQL51,
59             CONNECTION => MYSQL50 | MYSQL51,
60             CONSTRAINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
61             CONTINUE => MYSQL50 | MYSQL51,
62             CONVERT => MYSQL41 | MYSQL50 | MYSQL51,
63             CREATE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
64             CROSS => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
65             CURRENT_DATE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
66             CURRENT_TIME => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
67             CURRENT_TIMESTAMP => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
68             CURRENT_USER => MYSQL41 | MYSQL50 | MYSQL51,
69             CURSOR => MYSQL50 | MYSQL51,
70             DATABASE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
71             DATABASES => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
72             DAY_HOUR => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
73             DAY_MICROSECOND => MYSQL41 | MYSQL50 | MYSQL51,
74             DAY_MINUTE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
75             DAY_SECOND => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
76             DEC => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
77             DECIMAL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
78             DECLARE => MYSQL50 | MYSQL51,
79             DEFAULT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
80             DELAYED => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
81             DELETE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
82             DESC => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
83             DESCRIBE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
84             DETERMINISTIC => MYSQL50 | MYSQL51,
85             DISTINCT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
86             DISTINCTROW => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
87             DIV => MYSQL41 | MYSQL50 | MYSQL51,
88             DOUBLE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
89             DROP => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
90             DUAL => MYSQL41 | MYSQL50 | MYSQL51,
91             EACH => MYSQL50 | MYSQL51,
92             ELSE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
93             ELSEIF => MYSQL50 | MYSQL51,
94             ENCLOSED => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
95             ESCAPED => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
96             EXISTS => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
97             EXIT => MYSQL50 | MYSQL51,
98             EXPLAIN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
99             FALSE => MYSQL41 | MYSQL50 | MYSQL51,
100             FETCH => MYSQL50 | MYSQL51,
101             FIELDS => MYSQL32 | MYSQL40 | MYSQL41,
102             FLOAT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
103             FLOAT4 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
104             FLOAT8 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
105             FOR => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
106             FORCE => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
107             FOREIGN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
108             FROM => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
109             FULLTEXT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
110             GOTO => MYSQL50 | MYSQL51,
111             GRANT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
112             GROUP => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
113             HAVING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
114             HIGH_PRIORITY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
115             HOUR_MICROSECOND => MYSQL41 | MYSQL50 | MYSQL51,
116             HOUR_MINUTE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
117             HOUR_SECOND => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
118             IF => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
119             IGNORE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
120             IN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
121             INDEX => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
122             INFILE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
123             INNER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
124             INOUT => MYSQL50 | MYSQL51,
125             INSENSITIVE => MYSQL50 | MYSQL51,
126             INSERT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
127             INT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
128             INT1 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
129             INT2 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
130             INT3 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
131             INT4 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
132             INT8 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
133             INTEGER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
134             INTERVAL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
135             INTO => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
136             IS => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
137             ITERATE => MYSQL50 | MYSQL51,
138             JOIN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
139             KEY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
140             KEYS => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
141             KILL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
142             LABEL => MYSQL50 | MYSQL51,
143             LEADING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
144             LEAVE => MYSQL50 | MYSQL51,
145             LEFT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
146             LIKE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
147             LIMIT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
148             LINEAR => MYSQL51,
149             LINES => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
150             LOAD => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
151             LOCALTIME => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
152             LOCALTIMESTAMP => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
153             LOCK => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
154             LONG => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
155             LONGBLOB => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
156             LONGTEXT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
157             LOOP => MYSQL50 | MYSQL51,
158             LOW_PRIORITY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
159             MATCH => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
160             MEDIUMBLOB => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
161             MEDIUMINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
162             MEDIUMTEXT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
163             MIDDLEINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
164             MINUTE_MICROSECOND => MYSQL41 | MYSQL50 | MYSQL51,
165             MINUTE_SECOND => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
166             MOD => MYSQL41 | MYSQL50 | MYSQL51,
167             MODIFIES => MYSQL50 | MYSQL51,
168             NATURAL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
169             NOT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
170             NO_WRITE_TO_BINLOG => MYSQL41 | MYSQL50 | MYSQL51,
171             NULL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
172             NUMERIC => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
173             ON => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
174             OPTIMIZE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
175             OPTION => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
176             OPTIONALLY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
177             OR => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
178             ORDER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
179             OUT => MYSQL50 | MYSQL51,
180             OUTER => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
181             OUTFILE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
182             PRECISION => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
183             PRIMARY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
184             PRIVILEGES => MYSQL32 | MYSQL40 | MYSQL41,
185             PROCEDURE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
186             PURGE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
187             RAID0 => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50,
188             RANGE => MYSQL51,
189             READ => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
190             READS => MYSQL50 | MYSQL51,
191             READ_ONLY => MYSQL51,
192             READ_WRITE => MYSQL51,
193             REAL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
194             REFERENCES => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
195             REGEXP => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
196             RELEASE => MYSQL50 | MYSQL51,
197             RENAME => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
198             REPEAT => MYSQL50 | MYSQL51,
199             REPLACE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
200             REQUIRE => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
201             RESTRICT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
202             RETURN => MYSQL50 | MYSQL51,
203             REVOKE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
204             RIGHT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
205             RLIKE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
206             SCHEMA => MYSQL50 | MYSQL51,
207             SCHEMAS => MYSQL50 | MYSQL51,
208             SECOND_MICROSECOND => MYSQL41 | MYSQL50 | MYSQL51,
209             SELECT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
210             SENSITIVE => MYSQL50 | MYSQL51,
211             SEPARATOR => MYSQL41 | MYSQL50 | MYSQL51,
212             SET => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
213             SHOW => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
214             SMALLINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
215             SONAME => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50,
216             SPATIAL => MYSQL41 | MYSQL50 | MYSQL51,
217             SPECIFIC => MYSQL50 | MYSQL51,
218             SQL => MYSQL50 | MYSQL51,
219             SQLEXCEPTION => MYSQL50 | MYSQL51,
220             SQLSTATE => MYSQL50 | MYSQL51,
221             SQLWARNING => MYSQL50 | MYSQL51,
222             SQL_BIG_RESULT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
223             SQL_CALC_FOUND_ROWS => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
224             SQL_SMALL_RESULT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
225             SSL => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
226             STARTING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
227             STRAIGHT_JOIN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
228             TABLE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
229             TABLES => MYSQL32 | MYSQL40 | MYSQL41,
230             TERMINATED => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
231             THEN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
232             TINYBLOB => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
233             TINYINT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
234             TINYTEXT => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
235             TO => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
236             TRAILING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
237             TRIGGER => MYSQL50 | MYSQL51,
238             TRUE => MYSQL41 | MYSQL50 | MYSQL51,
239             UNDO => MYSQL50 | MYSQL51,
240             UNION => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
241             UNIQUE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
242             UNLOCK => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
243             UNSIGNED => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
244             UPDATE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
245             UPGRADE => MYSQL50 | MYSQL51,
246             USAGE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
247             USE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
248             USING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
249             UTC_DATE => MYSQL41 | MYSQL50 | MYSQL51,
250             UTC_TIME => MYSQL41 | MYSQL50 | MYSQL51,
251             UTC_TIMESTAMP => MYSQL41 | MYSQL50 | MYSQL51,
252             VALUES => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
253             VARBINARY => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
254             VARCHAR => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
255             VARCHARACTER => MYSQL41 | MYSQL50 | MYSQL51,
256             VARYING => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
257             WHEN => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
258             WHERE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
259             WHILE => MYSQL50 | MYSQL51,
260             WITH => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
261             WRITE => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
262             X509 => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
263             XOR => MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
264             YEAR_MONTH => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
265             ZEROFILL => MYSQL32 | MYSQL40 | MYSQL41 | MYSQL50 | MYSQL51,
266             );
267              
268             sub is_reserved {
269 26   100 26 1 168 return $WORDS{ uc(pop || '') } || 0;
270             }
271              
272             sub is_reserved_by_mysql3 {
273 5     5 1 12 return &is_reserved & MYSQL32;
274             }
275              
276             sub is_reserved_by_mysql4 {
277 5     5 1 12 my $flags = &is_reserved;
278 5   100     40 return $flags & MYSQL40
279             || $flags & MYSQL41;
280             }
281              
282             sub is_reserved_by_mysql5 {
283 5     5 1 17 my $flags = &is_reserved;
284 5   100     34 return $flags & MYSQL50
285             || $flags & MYSQL51;
286             }
287              
288             sub reserved_by {
289 5     5 1 33 my $flags = &is_reserved;
290 5         7 my @reserved_by = ();
291              
292 5 100       12 push @reserved_by, 'MySQL 3.2' if $flags & MYSQL32;
293 5 100       11 push @reserved_by, 'MySQL 4.0' if $flags & MYSQL40;
294 5 100       10 push @reserved_by, 'MySQL 4.1' if $flags & MYSQL41;
295 5 100       9 push @reserved_by, 'MySQL 5.0' if $flags & MYSQL50;
296 5 100       10 push @reserved_by, 'MySQL 5.1' if $flags & MYSQL51;
297              
298 5         32 return @reserved_by;
299             }
300              
301             sub words {
302 2     2 1 5212 return sort keys %WORDS;
303             }
304             }
305              
306             1;
307              
308             __END__