1 #ifndef LEX_INCLUDED
2 #define LEX_INCLUDED
3 
4 /* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
5 
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License, version 2.0,
8    as published by the Free Software Foundation.
9 
10    This program is also distributed with certain software (including
11    but not limited to OpenSSL) that is licensed under separate terms,
12    as designated in a particular file or component or in included license
13    documentation.  The authors of MySQL hereby grant you an additional
14    permission to link the program and your derivative works with the
15    separately licensed software that they have included with MySQL.
16 
17    This program is distributed in the hope that it will be useful,
18    but WITHOUT ANY WARRANTY; without even the implied warranty of
19    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20    GNU General Public License, version 2.0, for more details.
21 
22    You should have received a copy of the GNU General Public License
23    along with this program; if not, write to the Free Software Foundation,
24    51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
25 
26 
27 /* This file includes all reserved words and functions */
28 
29 #include "lex_symbol.h"
30 
31 SYM_GROUP sym_group_common= {"", ""};
32 SYM_GROUP sym_group_geom= {"Spatial extentions", "HAVE_SPATIAL"};
33 SYM_GROUP sym_group_rtree= {"RTree keys", "HAVE_RTREE_KEYS"};
34 
35 /* We don't want to include sql_yacc.h into gen_lex_hash */
36 #ifdef NO_YACC_SYMBOLS
37 #define SYM_OR_NULL(A) 0
38 #else
39 #define SYM_OR_NULL(A) A
40 #endif
41 
42 #define SYM(A) SYM_OR_NULL(A),0,&sym_group_common
43 
44 /*
45   Symbols are broken into separated arrays to allow field names with
46   same name as functions.
47   These are kept sorted for human lookup (the symbols are hashed).
48 
49   NOTE! The symbol tables should be the same regardless of what features
50   are compiled into the server. Don't add ifdef'ed symbols to the
51   lists
52 */
53 
54 static SYMBOL symbols[] = {
55   { "&&",		SYM(AND_AND_SYM)},
56   { "<",		SYM(LT)},
57   { "<=",		SYM(LE)},
58   { "<>",		SYM(NE)},
59   { "!=",		SYM(NE)},
60   { "=",		SYM(EQ)},
61   { ">",		SYM(GT_SYM)},
62   { ">=",		SYM(GE)},
63   { "<<",		SYM(SHIFT_LEFT)},
64   { ">>",		SYM(SHIFT_RIGHT)},
65   { "<=>",		SYM(EQUAL_SYM)},
66   { "ACCESSIBLE",	SYM(ACCESSIBLE_SYM)},
67   { "ACTION",		SYM(ACTION)},
68   { "ADD",		SYM(ADD)},
69   { "AFTER",		SYM(AFTER_SYM)},
70   { "AGAINST",          SYM(AGAINST)},
71   { "AGGREGATE",	SYM(AGGREGATE_SYM)},
72   { "ALL",		SYM(ALL)},
73   { "ALGORITHM",	SYM(ALGORITHM_SYM)},
74   { "ALTER",		SYM(ALTER)},
75   { "ANALYSE",          SYM(ANALYSE_SYM)}, // this one is for PROCEDURE ANALYSE
76   { "ANALYZE",          SYM(ANALYZE_SYM)}, // this one is for ANALYZE TABLE etc
77   { "AND",		SYM(AND_SYM)},
78   { "ANY",              SYM(ANY_SYM)},
79   { "ARCHIVED",    SYM(ARCHIVED_SYM)},
80   { "AS",		SYM(AS)},
81   { "ASC",		SYM(ASC)},
82   { "ASCII",		SYM(ASCII_SYM)},
83   { "ASENSITIVE",       SYM(ASENSITIVE_SYM)},
84   { "AT",		SYM(AT_SYM)},
85   { "AUTO_INCREMENT",	SYM(AUTO_INC)},
86   { "AUTOEXTEND_SIZE",	SYM(AUTOEXTEND_SIZE_SYM)},
87   { "AVG",		SYM(AVG_SYM)},
88   { "AVG_ROW_LENGTH",	SYM(AVG_ROW_LENGTH)},
89   { "BACKUP",	        SYM(BACKUP_SYM)},
90   { "BEFORE",	        SYM(BEFORE_SYM)},
91   { "BEGIN",	        SYM(BEGIN_SYM)},
92   { "BETWEEN",		SYM(BETWEEN_SYM)},
93   { "BIGINT",		SYM(BIGINT)},
94   { "BINARY",		SYM(BINARY)},
95   { "BINLOG",		SYM(BINLOG_SYM)},
96   { "BIT",		SYM(BIT_SYM)},
97   { "BLOB",		SYM(BLOB_SYM)},
98   { "BLOCK",  SYM(BLOCK_SYM)},
99   { "BOOL",		SYM(BOOL_SYM)},
100   { "BOOLEAN",		SYM(BOOLEAN_SYM)},
101   { "BOTH",		SYM(BOTH)},
102   { "BTREE",		SYM(BTREE_SYM)},
103   { "BY",		SYM(BY)},
104   { "BYTE",		SYM(BYTE_SYM)},
105   { "CACHE",		SYM(CACHE_SYM)},
106   { "CALL",             SYM(CALL_SYM)},
107   { "CASCADE",		SYM(CASCADE)},
108   { "CASCADED",         SYM(CASCADED)},
109   { "CASE",		SYM(CASE_SYM)},
110   { "CATALOG_NAME",     SYM(CATALOG_NAME_SYM)},
111   { "CHAIN",		SYM(CHAIN_SYM)},
112   { "CHANGE",		SYM(CHANGE)},
113   { "CHANGED",		SYM(CHANGED)},
114   { "CHANGED_PAGE_BITMAPS",	SYM(CHANGED_PAGE_BITMAPS_SYM)},
115   { "CHAR",		SYM(CHAR_SYM)},
116   { "CHARACTER",	SYM(CHAR_SYM)},
117   { "CHARSET",		SYM(CHARSET)},
118   { "CHECK",		SYM(CHECK_SYM)},
119   { "CHECKSUM",		SYM(CHECKSUM_SYM)},
120   { "CIPHER",		SYM(CIPHER_SYM)},
121   { "CLASS_ORIGIN",     SYM(CLASS_ORIGIN_SYM)},
122   { "CLIENT",		SYM(CLIENT_SYM)},
123   { "CLIENT_STATISTICS",	SYM(CLIENT_STATS_SYM)},
124   { "CLOSE",		SYM(CLOSE_SYM)},
125   { "CLUSTERING",       SYM(CLUSTERING_SYM)},
126   { "COALESCE",		SYM(COALESCE)},
127   { "CODE",             SYM(CODE_SYM)},
128   { "COLLATE",		SYM(COLLATE_SYM)},
129   { "COLLATION",	SYM(COLLATION_SYM)},
130   { "COLUMN",		SYM(COLUMN_SYM)},
131   { "COLUMN_FORMAT",	SYM(COLUMN_FORMAT_SYM)},
132   { "COLUMN_NAME",      SYM(COLUMN_NAME_SYM)},
133   { "COLUMNS",		SYM(COLUMNS)},
134   { "COMMENT",		SYM(COMMENT_SYM)},
135   { "COMMIT",		SYM(COMMIT_SYM)},
136   { "COMMITTED",	SYM(COMMITTED_SYM)},
137   { "COMPACT",		SYM(COMPACT_SYM)},
138   { "COMPLETION",	SYM(COMPLETION_SYM)},
139   { "COMPRESSED",	SYM(COMPRESSED_SYM)},
140   { "COMPRESSION_DICTIONARY",	SYM(COMPRESSION_DICTIONARY_SYM)},
141   { "CONCURRENT",	SYM(CONCURRENT)},
142   { "CONDITION",        SYM(CONDITION_SYM)},
143   { "CONNECTION",       SYM(CONNECTION_SYM)},
144   { "CONSISTENT",	SYM(CONSISTENT_SYM)},
145   { "CONSTRAINT",	SYM(CONSTRAINT)},
146   { "CONSTRAINT_CATALOG", SYM(CONSTRAINT_CATALOG_SYM)},
147   { "CONSTRAINT_NAME",  SYM(CONSTRAINT_NAME_SYM)},
148   { "CONSTRAINT_SCHEMA", SYM(CONSTRAINT_SCHEMA_SYM)},
149   { "CONTAINS",         SYM(CONTAINS_SYM)},
150   { "CONTEXT",    SYM(CONTEXT_SYM)},
151   { "CONTINUE",         SYM(CONTINUE_SYM)},
152   { "CONVERT",		SYM(CONVERT_SYM)},
153   { "CPU",        SYM(CPU_SYM)},
154   { "CREATE",		SYM(CREATE)},
155   { "CROSS",		SYM(CROSS)},
156   { "CUBE",		SYM(CUBE_SYM)},
157   { "CURRENT",          SYM(CURRENT_SYM)},
158   { "CURRENT_DATE",	SYM(CURDATE)},
159   { "CURRENT_TIME",	SYM(CURTIME)},
160   { "CURRENT_TIMESTAMP", SYM(NOW_SYM)},
161   { "CURRENT_USER",	SYM(CURRENT_USER)},
162   { "CURSOR",           SYM(CURSOR_SYM)},
163   { "CURSOR_NAME",      SYM(CURSOR_NAME_SYM)},
164   { "DATA",		SYM(DATA_SYM)},
165   { "DATABASE",		SYM(DATABASE)},
166   { "DATABASES",	SYM(DATABASES)},
167   { "DATAFILE", 	SYM(DATAFILE_SYM)},
168   { "DATE",		SYM(DATE_SYM)},
169   { "DATETIME",		SYM(DATETIME)},
170   { "DAY",		SYM(DAY_SYM)},
171   { "DAY_HOUR",		SYM(DAY_HOUR_SYM)},
172   { "DAY_MICROSECOND",	SYM(DAY_MICROSECOND_SYM)},
173   { "DAY_MINUTE",	SYM(DAY_MINUTE_SYM)},
174   { "DAY_SECOND",	SYM(DAY_SECOND_SYM)},
175   { "DEALLOCATE",       SYM(DEALLOCATE_SYM)},
176   { "DEC",		SYM(DECIMAL_SYM)},
177   { "DECIMAL",		SYM(DECIMAL_SYM)},
178   { "DECLARE",          SYM(DECLARE_SYM)},
179   { "DEFAULT",		SYM(DEFAULT)},
180   { "DEFAULT_AUTH",	SYM(DEFAULT_AUTH_SYM)},
181   { "DEFINER",          SYM(DEFINER_SYM)},
182   { "DELAYED",		SYM(DELAYED_SYM)},
183   { "DELAY_KEY_WRITE",	SYM(DELAY_KEY_WRITE_SYM)},
184   { "DELETE",		SYM(DELETE_SYM)},
185   { "DESC",		SYM(DESC)},
186   { "DESCRIBE",		SYM(DESCRIBE)},
187   { "DES_KEY_FILE",	SYM(DES_KEY_FILE)},
188   { "DETERMINISTIC",    SYM(DETERMINISTIC_SYM)},
189   { "DIAGNOSTICS",      SYM(DIAGNOSTICS_SYM)},
190   { "DIRECTORY",	SYM(DIRECTORY_SYM)},
191   { "DISABLE",		SYM(DISABLE_SYM)},
192   { "DISCARD",		SYM(DISCARD)},
193   { "DISK",		SYM(DISK_SYM)},
194   { "DISTINCT",		SYM(DISTINCT)},
195   { "DISTINCTROW",	SYM(DISTINCT)},	/* Access likes this */
196   { "DIV",		SYM(DIV_SYM)},
197   { "DO",		SYM(DO_SYM)},
198   { "DOUBLE",		SYM(DOUBLE_SYM)},
199   { "DROP",		SYM(DROP)},
200   { "DUAL",		SYM(DUAL_SYM)},
201   { "DUMPFILE",		SYM(DUMPFILE)},
202   { "DUPLICATE",	SYM(DUPLICATE_SYM)},
203   { "DYNAMIC",		SYM(DYNAMIC_SYM)},
204   { "EACH",             SYM(EACH_SYM)},
205   { "ELSE",             SYM(ELSE)},
206   { "ELSEIF",           SYM(ELSEIF_SYM)},
207   { "ENABLE",		SYM(ENABLE_SYM)},
208   { "ENCLOSED",		SYM(ENCLOSED)},
209   { "END",		SYM(END)},
210   { "ENDS",		SYM(ENDS_SYM)},
211   { "ENGINE",		SYM(ENGINE_SYM)},
212   { "ENGINES",		SYM(ENGINES_SYM)},
213   { "ENUM",		SYM(ENUM)},
214   { "ERROR",            SYM(ERROR_SYM)},
215   { "ERRORS",		SYM(ERRORS)},
216   { "ESCAPE",		SYM(ESCAPE_SYM)},
217   { "ESCAPED",		SYM(ESCAPED)},
218   { "EVENT",		SYM(EVENT_SYM)},
219   { "EVENTS",		SYM(EVENTS_SYM)},
220   { "EVERY",		SYM(EVERY_SYM)},
221   { "EXCHANGE",         SYM(EXCHANGE_SYM)},
222   { "EXECUTE",		SYM(EXECUTE_SYM)},
223   { "EXISTS",		SYM(EXISTS)},
224   { "EXIT",             SYM(EXIT_SYM)},
225   { "EXPANSION",	SYM(EXPANSION_SYM)},
226   { "EXPORT",	        SYM(EXPORT_SYM)},
227   { "EXPIRE",		SYM(EXPIRE_SYM)},
228   { "EXPLAIN",		SYM(DESCRIBE)},
229   { "EXTENDED",		SYM(EXTENDED_SYM)},
230   { "EXTENT_SIZE",	SYM(EXTENT_SIZE_SYM)},
231   { "FALSE",		SYM(FALSE_SYM)},
232   { "FAST",		SYM(FAST_SYM)},
233   { "FAULTS",  SYM(FAULTS_SYM)},
234   { "FETCH",            SYM(FETCH_SYM)},
235   { "FIELDS",		SYM(COLUMNS)},
236   { "FILE",		SYM(FILE_SYM)},
237   { "FIRST",		SYM(FIRST_SYM)},
238   { "FIXED",		SYM(FIXED_SYM)},
239   { "FLOAT",		SYM(FLOAT_SYM)},
240   { "FLOAT4",		SYM(FLOAT_SYM)},
241   { "FLOAT8",		SYM(DOUBLE_SYM)},
242   { "FLUSH",		SYM(FLUSH_SYM)},
243   { "FOR",		SYM(FOR_SYM)},
244   { "FORCE",		SYM(FORCE_SYM)},
245   { "FOREIGN",		SYM(FOREIGN)},
246   { "FORMAT",		SYM(FORMAT_SYM)},
247   { "FOUND",            SYM(FOUND_SYM)},
248   { "FROM",		SYM(FROM)},
249   { "FULL",		SYM(FULL)},
250   { "FULLTEXT",		SYM(FULLTEXT_SYM)},
251   { "FUNCTION",		SYM(FUNCTION_SYM)},
252   { "GENERAL",          SYM(GENERAL)},
253   { "GEOMETRY",		SYM(GEOMETRY_SYM)},
254   { "GEOMETRYCOLLECTION",SYM(GEOMETRYCOLLECTION)},
255   { "GET_FORMAT",       SYM(GET_FORMAT)},
256   { "GET",              SYM(GET_SYM)},
257   { "GLOBAL",		SYM(GLOBAL_SYM)},
258   { "GRANT",		SYM(GRANT)},
259   { "GRANTS",	        SYM(GRANTS)},
260   { "GROUP",		SYM(GROUP_SYM)},
261   { "HANDLER",		SYM(HANDLER_SYM)},
262   { "HASH",		SYM(HASH_SYM)},
263   { "HAVING",		SYM(HAVING)},
264   { "HELP",		SYM(HELP_SYM)},
265   { "HIGH_PRIORITY",	SYM(HIGH_PRIORITY)},
266   { "HOST",		SYM(HOST_SYM)},
267   { "HOSTS",		SYM(HOSTS_SYM)},
268   { "HOUR",		SYM(HOUR_SYM)},
269   { "HOUR_MICROSECOND",	SYM(HOUR_MICROSECOND_SYM)},
270   { "HOUR_MINUTE",	SYM(HOUR_MINUTE_SYM)},
271   { "HOUR_SECOND",	SYM(HOUR_SECOND_SYM)},
272   { "IDENTIFIED",	SYM(IDENTIFIED_SYM)},
273   { "IF",		SYM(IF)},
274   { "IGNORE",		SYM(IGNORE_SYM)},
275   { "IGNORE_SERVER_IDS", SYM(IGNORE_SERVER_IDS_SYM)},
276   { "IMPORT",		SYM(IMPORT)},
277   { "IN",		SYM(IN_SYM)},
278   { "INDEX",		SYM(INDEX_SYM)},
279   { "INDEXES",		SYM(INDEXES)},
280   { "INDEX_STATISTICS",	SYM(INDEX_STATS_SYM)},
281   { "INFILE",		SYM(INFILE)},
282   { "INITIAL_SIZE",	SYM(INITIAL_SIZE_SYM)},
283   { "INNER",		SYM(INNER_SYM)},
284   { "INOUT",            SYM(INOUT_SYM)},
285   { "INSENSITIVE",      SYM(INSENSITIVE_SYM)},
286   { "INSERT",		SYM(INSERT)},
287   { "INSERT_METHOD",    SYM(INSERT_METHOD)},
288   { "INSTALL",          SYM(INSTALL_SYM)},
289   { "INT",		SYM(INT_SYM)},
290   { "INT1",		SYM(TINYINT)},
291   { "INT2",		SYM(SMALLINT)},
292   { "INT3",		SYM(MEDIUMINT)},
293   { "INT4",		SYM(INT_SYM)},
294   { "INT8",		SYM(BIGINT)},
295   { "INTEGER",		SYM(INT_SYM)},
296   { "INTERVAL",		SYM(INTERVAL_SYM)},
297   { "INTO",		SYM(INTO)},
298   { "IO",     SYM(IO_SYM)},
299   { "IO_AFTER_GTIDS",   SYM(IO_AFTER_GTIDS)},
300   { "IO_BEFORE_GTIDS",  SYM(IO_BEFORE_GTIDS)},
301   { "IO_THREAD",        SYM(RELAY_THREAD)},
302   { "IPC",    SYM(IPC_SYM)},
303   { "IS",		SYM(IS)},
304   { "ISOLATION",	SYM(ISOLATION)},
305   { "ISSUER",		SYM(ISSUER_SYM)},
306   { "ITERATE",          SYM(ITERATE_SYM)},
307   { "INVOKER",          SYM(INVOKER_SYM)},
308   { "JOIN",		SYM(JOIN_SYM)},
309   { "KEY",		SYM(KEY_SYM)},
310   { "KEYS",		SYM(KEYS)},
311   { "KEY_BLOCK_SIZE",	SYM(KEY_BLOCK_SIZE)},
312   { "KILL",		SYM(KILL_SYM)},
313   { "LANGUAGE",         SYM(LANGUAGE_SYM)},
314   { "LAST",		SYM(LAST_SYM)},
315   { "LEADING",		SYM(LEADING)},
316   { "LEAVE",            SYM(LEAVE_SYM)},
317   { "LEAVES",		SYM(LEAVES)},
318   { "LEFT",		SYM(LEFT)},
319   { "LESS",             SYM(LESS_SYM)},
320   { "LEVEL",		SYM(LEVEL_SYM)},
321   { "LIKE",		SYM(LIKE)},
322   { "LIMIT",		SYM(LIMIT)},
323   { "LINEAR",		SYM(LINEAR_SYM)},
324   { "LINES",		SYM(LINES)},
325   { "LINESTRING",	SYM(LINESTRING)},
326   { "LIST",             SYM(LIST_SYM)},
327   { "LOAD",		SYM(LOAD)},
328   { "LOCAL",		SYM(LOCAL_SYM)},
329   { "LOCALTIME",	SYM(NOW_SYM)},
330   { "LOCALTIMESTAMP",	SYM(NOW_SYM)},
331   { "LOCK",		SYM(LOCK_SYM)},
332   { "LOCKS",		SYM(LOCKS_SYM)},
333   { "LOGFILE",		SYM(LOGFILE_SYM)},
334   { "LOGS",		SYM(LOGS_SYM)},
335   { "LONG",		SYM(LONG_SYM)},
336   { "LONGBLOB",		SYM(LONGBLOB)},
337   { "LONGTEXT",		SYM(LONGTEXT)},
338   { "LOOP",             SYM(LOOP_SYM)},
339   { "LOW_PRIORITY",	SYM(LOW_PRIORITY)},
340   { "MASTER",           SYM(MASTER_SYM)},
341   { "MASTER_AUTO_POSITION",      SYM(MASTER_AUTO_POSITION_SYM)},
342   { "MASTER_BIND",      SYM(MASTER_BIND_SYM)},
343   { "MASTER_CONNECT_RETRY",           SYM(MASTER_CONNECT_RETRY_SYM)},
344   { "MASTER_DELAY",     SYM(MASTER_DELAY_SYM)},
345   { "MASTER_HOST",           SYM(MASTER_HOST_SYM)},
346   { "MASTER_LOG_FILE",           SYM(MASTER_LOG_FILE_SYM)},
347   { "MASTER_LOG_POS",           SYM(MASTER_LOG_POS_SYM)},
348   { "MASTER_PASSWORD",           SYM(MASTER_PASSWORD_SYM)},
349   { "MASTER_PORT",           SYM(MASTER_PORT_SYM)},
350   { "MASTER_RETRY_COUNT",           SYM(MASTER_RETRY_COUNT_SYM)},
351   { "MASTER_SERVER_ID",           SYM(MASTER_SERVER_ID_SYM)},
352   { "MASTER_SSL",       SYM(MASTER_SSL_SYM)},
353   { "MASTER_SSL_CA",    SYM(MASTER_SSL_CA_SYM)},
354   { "MASTER_SSL_CAPATH",SYM(MASTER_SSL_CAPATH_SYM)},
355   { "MASTER_SSL_CERT",  SYM(MASTER_SSL_CERT_SYM)},
356   { "MASTER_SSL_CIPHER",SYM(MASTER_SSL_CIPHER_SYM)},
357   { "MASTER_SSL_CRL",   SYM(MASTER_SSL_CRL_SYM)},
358   { "MASTER_SSL_CRLPATH",SYM(MASTER_SSL_CRLPATH_SYM)},
359   { "MASTER_SSL_KEY",   SYM(MASTER_SSL_KEY_SYM)},
360   { "MASTER_SSL_VERIFY_SERVER_CERT", SYM(MASTER_SSL_VERIFY_SERVER_CERT_SYM)},
361   { "MASTER_USER",           SYM(MASTER_USER_SYM)},
362   { "MASTER_HEARTBEAT_PERIOD", SYM(MASTER_HEARTBEAT_PERIOD_SYM)},
363   { "MATCH",		SYM(MATCH)},
364   { "MAX_CONNECTIONS_PER_HOUR", SYM(MAX_CONNECTIONS_PER_HOUR)},
365   { "MAX_QUERIES_PER_HOUR", SYM(MAX_QUERIES_PER_HOUR)},
366   { "MAX_ROWS",		SYM(MAX_ROWS)},
367   { "MAX_SIZE",		SYM(MAX_SIZE_SYM)},
368   { "MAX_UPDATES_PER_HOUR", SYM(MAX_UPDATES_PER_HOUR)},
369   { "MAX_USER_CONNECTIONS", SYM(MAX_USER_CONNECTIONS_SYM)},
370   { "MAXVALUE",         SYM(MAX_VALUE_SYM)},
371   { "MEDIUM",		SYM(MEDIUM_SYM)},
372   { "MEDIUMBLOB",	SYM(MEDIUMBLOB)},
373   { "MEDIUMINT",	SYM(MEDIUMINT)},
374   { "MEDIUMTEXT",	SYM(MEDIUMTEXT)},
375   { "MEMORY",		SYM(MEMORY_SYM)},
376   { "MERGE",		SYM(MERGE_SYM)},
377   { "MESSAGE_TEXT",     SYM(MESSAGE_TEXT_SYM)},
378   { "MICROSECOND",	SYM(MICROSECOND_SYM)},
379   { "MIDDLEINT",	SYM(MEDIUMINT)},	/* For powerbuilder */
380   { "MIGRATE",          SYM(MIGRATE_SYM)},
381   { "MINUTE",		SYM(MINUTE_SYM)},
382   { "MINUTE_MICROSECOND", SYM(MINUTE_MICROSECOND_SYM)},
383   { "MINUTE_SECOND",	SYM(MINUTE_SECOND_SYM)},
384   { "MIN_ROWS",		SYM(MIN_ROWS)},
385   { "MOD",		SYM(MOD_SYM)},
386   { "MODE",		SYM(MODE_SYM)},
387   { "MODIFIES",		SYM(MODIFIES_SYM)},
388   { "MODIFY",		SYM(MODIFY_SYM)},
389   { "MONTH",		SYM(MONTH_SYM)},
390   { "MULTILINESTRING",	SYM(MULTILINESTRING)},
391   { "MULTIPOINT",	SYM(MULTIPOINT)},
392   { "MULTIPOLYGON",	SYM(MULTIPOLYGON)},
393   { "MUTEX",  SYM(MUTEX_SYM)},
394   { "MYSQL_ERRNO",      SYM(MYSQL_ERRNO_SYM)},
395   { "NAME",             SYM(NAME_SYM)},
396   { "NAMES",		SYM(NAMES_SYM)},
397   { "NATIONAL",		SYM(NATIONAL_SYM)},
398   { "NATURAL",		SYM(NATURAL)},
399   { "NDB",              SYM(NDBCLUSTER_SYM)},
400   { "NDBCLUSTER",       SYM(NDBCLUSTER_SYM)},
401   { "NCHAR",		SYM(NCHAR_SYM)},
402   { "NEW",              SYM(NEW_SYM)},
403   { "NEXT",		SYM(NEXT_SYM)},
404   { "NO",		SYM(NO_SYM)},
405   { "NO_WAIT",		SYM(NO_WAIT_SYM)},
406   { "NODEGROUP",	SYM(NODEGROUP_SYM)},
407   { "NONBLOCKING",      SYM(NONBLOCKING_SYM)},
408   { "NONE",		SYM(NONE_SYM)},
409   { "NOT",		SYM(NOT_SYM)},
410   { "NO_WRITE_TO_BINLOG",  SYM(NO_WRITE_TO_BINLOG)},
411   { "NOLOCK",           SYM(NOLOCK_SYM)},
412   { "NULL",		SYM(NULL_SYM)},
413   { "NUMBER",           SYM(NUMBER_SYM)},
414   { "NUMERIC",		SYM(NUMERIC_SYM)},
415   { "NVARCHAR",		SYM(NVARCHAR_SYM)},
416   { "OFFSET",		SYM(OFFSET_SYM)},
417   { "OLD_PASSWORD",	SYM(OLD_PASSWORD)},
418   { "ON",		SYM(ON)},
419   { "ONE",              SYM(ONE_SYM)},
420   { "ONLY",             SYM(ONLY_SYM)},
421   { "OPEN",		SYM(OPEN_SYM)},
422   { "OPTIMIZE",		SYM(OPTIMIZE)},
423   { "OPTIONS",		SYM(OPTIONS_SYM)},
424   { "OPTION",		SYM(OPTION)},
425   { "OPTIONALLY",	SYM(OPTIONALLY)},
426   { "OR",		SYM(OR_SYM)},
427   { "ORDER",		SYM(ORDER_SYM)},
428   { "OUT",              SYM(OUT_SYM)},
429   { "OUTER",		SYM(OUTER)},
430   { "OUTFILE",		SYM(OUTFILE)},
431   { "OWNER",		SYM(OWNER_SYM)},
432   { "PACK_KEYS",	SYM(PACK_KEYS_SYM)},
433   { "PARSER",           SYM(PARSER_SYM)},
434   { "PAGE",	        SYM(PAGE_SYM)},
435   { "PARTIAL",		SYM(PARTIAL)},
436   { "PARTITION",        SYM(PARTITION_SYM)},
437   { "PARTITIONING",     SYM(PARTITIONING_SYM)},
438   { "PARTITIONS",       SYM(PARTITIONS_SYM)},
439   { "PASSWORD",		SYM(PASSWORD)},
440   { "PHASE",            SYM(PHASE_SYM)},
441   { "PLUGIN",           SYM(PLUGIN_SYM)},
442   { "PLUGINS",          SYM(PLUGINS_SYM)},
443   { "PLUGIN_DIR",       SYM(PLUGIN_DIR_SYM)},
444   { "POINT",		SYM(POINT_SYM)},
445   { "POLYGON",		SYM(POLYGON)},
446   { "PORT",		SYM(PORT_SYM)},
447   { "PRECISION",	SYM(PRECISION)},
448   { "PREPARE",          SYM(PREPARE_SYM)},
449   { "PRESERVE",		SYM(PRESERVE_SYM)},
450   { "PREV",		SYM(PREV_SYM)},
451   { "PRIMARY",		SYM(PRIMARY_SYM)},
452   { "PRIVILEGES",	SYM(PRIVILEGES)},
453   { "PROCEDURE",	SYM(PROCEDURE_SYM)},
454   { "PROCESS"	,	SYM(PROCESS)},
455   { "PROCESSLIST",	SYM(PROCESSLIST_SYM)},
456   { "PROFILE",          SYM(PROFILE_SYM)},
457   { "PROFILES",         SYM(PROFILES_SYM)},
458   { "PROXY",            SYM(PROXY_SYM)},
459   { "PURGE",		SYM(PURGE)},
460   { "QUARTER",          SYM(QUARTER_SYM)},
461   { "QUERY",		SYM(QUERY_SYM)},
462   { "QUICK",	        SYM(QUICK)},
463   { "RANGE",            SYM(RANGE_SYM)},
464   { "READ",		SYM(READ_SYM)},
465   { "READ_ONLY",	SYM(READ_ONLY_SYM)},
466   { "READ_WRITE",	SYM(READ_WRITE_SYM)},
467   { "READS",		SYM(READS_SYM)},
468   { "REAL",		SYM(REAL)},
469   { "REBUILD",		SYM(REBUILD_SYM)},
470   { "RECOVER",          SYM(RECOVER_SYM)},
471   { "REDO_BUFFER_SIZE",	SYM(REDO_BUFFER_SIZE_SYM)},
472   { "REDOFILE",         SYM(REDOFILE_SYM)},
473   { "REDUNDANT",	SYM(REDUNDANT_SYM)},
474   { "REFERENCES",	SYM(REFERENCES)},
475   { "REGEXP",		SYM(REGEXP)},
476   { "RELAY",            SYM(RELAY)},
477   { "RELAYLOG",         SYM(RELAYLOG_SYM)},
478   { "RELAY_LOG_FILE",   SYM(RELAY_LOG_FILE_SYM)},
479   { "RELAY_LOG_POS",    SYM(RELAY_LOG_POS_SYM)},
480   { "RELAY_THREAD",     SYM(RELAY_THREAD)},
481   { "RELEASE",		SYM(RELEASE_SYM)},
482   { "RELOAD",		SYM(RELOAD)},
483   { "REMOVE",		SYM(REMOVE_SYM)},
484   { "RENAME",		SYM(RENAME)},
485   { "REORGANIZE",	SYM(REORGANIZE_SYM)},
486   { "REPAIR",		SYM(REPAIR)},
487   { "REPEATABLE",	SYM(REPEATABLE_SYM)},
488   { "REPLACE",		SYM(REPLACE)},
489   { "REPLICATION",	SYM(REPLICATION)},
490   { "REPEAT",           SYM(REPEAT_SYM)},
491   { "REQUIRE",	        SYM(REQUIRE_SYM)},
492   { "RESET",		SYM(RESET_SYM)},
493   { "RESIGNAL",         SYM(RESIGNAL_SYM)},
494   { "RESTORE",		SYM(RESTORE_SYM)},
495   { "RESTRICT",		SYM(RESTRICT)},
496   { "RESUME",           SYM(RESUME_SYM)},
497   { "RETURNED_SQLSTATE",SYM(RETURNED_SQLSTATE_SYM)},
498   { "RETURN",           SYM(RETURN_SYM)},
499   { "RETURNS",		SYM(RETURNS_SYM)},
500   { "REVERSE",		SYM(REVERSE_SYM)},
501   { "REVOKE",		SYM(REVOKE)},
502   { "RIGHT",		SYM(RIGHT)},
503   { "RLIKE",		SYM(REGEXP)},	/* Like in mSQL2 */
504   { "ROLLBACK",		SYM(ROLLBACK_SYM)},
505   { "ROLLUP",		SYM(ROLLUP_SYM)},
506   { "ROUTINE",		SYM(ROUTINE_SYM)},
507   { "ROW",		SYM(ROW_SYM)},
508   { "ROW_COUNT",        SYM(ROW_COUNT_SYM)},
509   { "ROWS",		SYM(ROWS_SYM)},
510   { "ROW_FORMAT",	SYM(ROW_FORMAT_SYM)},
511   { "RTREE",		SYM(RTREE_SYM)},
512   { "SAVEPOINT",	SYM(SAVEPOINT_SYM)},
513   { "SCHEDULE",		SYM(SCHEDULE_SYM)},
514   { "SCHEMA",		SYM(DATABASE)},
515   { "SCHEMA_NAME",      SYM(SCHEMA_NAME_SYM)},
516   { "SCHEMAS",          SYM(DATABASES)},
517   { "SECOND",		SYM(SECOND_SYM)},
518   { "SECOND_MICROSECOND", SYM(SECOND_MICROSECOND_SYM)},
519   { "SECURITY",         SYM(SECURITY_SYM)},
520   { "SELECT",		SYM(SELECT_SYM)},
521   { "SENSITIVE",        SYM(SENSITIVE_SYM)},
522   { "SEPARATOR",	SYM(SEPARATOR_SYM)},
523   { "SERIAL",		SYM(SERIAL_SYM)},
524   { "SERIALIZABLE",	SYM(SERIALIZABLE_SYM)},
525   { "SESSION",		SYM(SESSION_SYM)},
526   { "SERVER",           SYM(SERVER_SYM)},
527   { "SET",		SYM(SET)},
528   { "SHARE",		SYM(SHARE_SYM)},
529   { "SHOW",		SYM(SHOW)},
530   { "SHUTDOWN",		SYM(SHUTDOWN)},
531   { "SIGNAL",           SYM(SIGNAL_SYM)},
532   { "SIGNED",		SYM(SIGNED_SYM)},
533   { "SIMPLE",		SYM(SIMPLE_SYM)},
534   { "SLAVE",            SYM(SLAVE)},
535   { "SLOW",             SYM(SLOW)},
536   { "SNAPSHOT",         SYM(SNAPSHOT_SYM)},
537   { "SMALLINT",		SYM(SMALLINT)},
538   { "SOCKET",		SYM(SOCKET_SYM)},
539   { "SOME",             SYM(ANY_SYM)},
540   { "SONAME",		SYM(SONAME_SYM)},
541   { "SOUNDS",		SYM(SOUNDS_SYM)},
542   { "SOURCE",   SYM(SOURCE_SYM)},
543   { "SPATIAL",		SYM(SPATIAL_SYM)},
544   { "SPECIFIC",         SYM(SPECIFIC_SYM)},
545   { "SQL",              SYM(SQL_SYM)},
546   { "SQLEXCEPTION",     SYM(SQLEXCEPTION_SYM)},
547   { "SQLSTATE",         SYM(SQLSTATE_SYM)},
548   { "SQLWARNING",       SYM(SQLWARNING_SYM)},
549   { "SQL_AFTER_GTIDS",  SYM(SQL_AFTER_GTIDS)},
550   { "SQL_AFTER_MTS_GAPS", SYM(SQL_AFTER_MTS_GAPS)},
551   { "SQL_BEFORE_GTIDS", SYM(SQL_BEFORE_GTIDS)},
552   { "SQL_BIG_RESULT",	SYM(SQL_BIG_RESULT)},
553   { "SQL_BUFFER_RESULT", SYM(SQL_BUFFER_RESULT)},
554   { "SQL_CACHE",        SYM(SQL_CACHE_SYM)},
555   { "SQL_CALC_FOUND_ROWS", SYM(SQL_CALC_FOUND_ROWS)},
556   { "SQL_NO_CACHE",	SYM(SQL_NO_CACHE_SYM)},
557   { "SQL_SMALL_RESULT", SYM(SQL_SMALL_RESULT)},
558   { "SQL_THREAD",	SYM(SQL_THREAD)},
559   { "SQL_TSI_SECOND",   SYM(SECOND_SYM)},
560   { "SQL_TSI_MINUTE",   SYM(MINUTE_SYM)},
561   { "SQL_TSI_HOUR",     SYM(HOUR_SYM)},
562   { "SQL_TSI_DAY",      SYM(DAY_SYM)},
563   { "SQL_TSI_WEEK",     SYM(WEEK_SYM)},
564   { "SQL_TSI_MONTH",    SYM(MONTH_SYM)},
565   { "SQL_TSI_QUARTER",  SYM(QUARTER_SYM)},
566   { "SQL_TSI_YEAR",     SYM(YEAR_SYM)},
567   { "SSL",		SYM(SSL_SYM)},
568   { "START",		SYM(START_SYM)},
569   { "STARTING",		SYM(STARTING)},
570   { "STARTS",		SYM(STARTS_SYM)},
571   { "STATEMENT",	SYM(STATEMENT_SYM)},
572   { "STATS_AUTO_RECALC",SYM(STATS_AUTO_RECALC_SYM)},
573   { "STATS_PERSISTENT",	SYM(STATS_PERSISTENT_SYM)},
574   { "STATS_SAMPLE_PAGES",SYM(STATS_SAMPLE_PAGES_SYM)},
575   { "STATUS",		SYM(STATUS_SYM)},
576   { "STOP",		SYM(STOP_SYM)},
577   { "STORAGE",		SYM(STORAGE_SYM)},
578   { "STRAIGHT_JOIN",	SYM(STRAIGHT_JOIN)},
579   { "STRING",		SYM(STRING_SYM)},
580   { "SUBCLASS_ORIGIN",  SYM(SUBCLASS_ORIGIN_SYM)},
581   { "SUBJECT",		SYM(SUBJECT_SYM)},
582   { "SUBPARTITION",     SYM(SUBPARTITION_SYM)},
583   { "SUBPARTITIONS",    SYM(SUBPARTITIONS_SYM)},
584   { "SUPER",		SYM(SUPER_SYM)},
585   { "SUSPEND",          SYM(SUSPEND_SYM)},
586   { "SWAPS",      SYM(SWAPS_SYM)},
587   { "SWITCHES",   SYM(SWITCHES_SYM)},
588   { "TABLE",		SYM(TABLE_SYM)},
589   { "TABLE_NAME",       SYM(TABLE_NAME_SYM)},
590   { "TABLES",		SYM(TABLES)},
591   { "TABLESPACE",	        SYM(TABLESPACE)},
592   { "TABLE_CHECKSUM",	SYM(TABLE_CHECKSUM_SYM)},
593   { "TABLE_STATISTICS",	SYM(TABLE_STATS_SYM)},
594   { "TEMPORARY",	SYM(TEMPORARY)},
595   { "TEMPTABLE",	SYM(TEMPTABLE_SYM)},
596   { "TERMINATED",	SYM(TERMINATED)},
597   { "TEXT",		SYM(TEXT_SYM)},
598   { "THAN",             SYM(THAN_SYM)},
599   { "THEN",		SYM(THEN_SYM)},
600   { "THREAD_STATISTICS",	SYM(THREAD_STATS_SYM)},
601   { "TIME",		SYM(TIME_SYM)},
602   { "TIMESTAMP",	SYM(TIMESTAMP)},
603   { "TIMESTAMPADD",     SYM(TIMESTAMP_ADD)},
604   { "TIMESTAMPDIFF",    SYM(TIMESTAMP_DIFF)},
605   { "TINYBLOB",		SYM(TINYBLOB)},
606   { "TINYINT",		SYM(TINYINT)},
607   { "TINYTEXT",		SYM(TINYTEXT)},
608   { "TO",		SYM(TO_SYM)},
609   { "TOKUDB_UNCOMPRESSED",     SYM(TOKU_UNCOMPRESSED_SYM)},
610   { "TOKUDB_ZLIB",             SYM(TOKU_ZLIB_SYM)},
611   { "TOKUDB_SNAPPY",           SYM(TOKU_SNAPPY_SYM)},
612   { "TOKUDB_QUICKLZ",          SYM(TOKU_QUICKLZ_SYM)},
613   { "TOKUDB_LZMA",             SYM(TOKU_LZMA_SYM)},
614   { "TOKUDB_FAST",             SYM(TOKU_FAST_SYM)},
615   { "TOKUDB_SMALL",            SYM(TOKU_SMALL_SYM)},
616   { "TOKUDB_DEFAULT",          SYM(TOKU_DEFAULT_SYM)},
617   { "TRAILING",		SYM(TRAILING)},
618   { "TRANSACTION",	SYM(TRANSACTION_SYM)},
619   { "TRIGGER",          SYM(TRIGGER_SYM)},
620   { "TRIGGERS",         SYM(TRIGGERS_SYM)},
621   { "TRUE",		SYM(TRUE_SYM)},
622   { "TRUNCATE",		SYM(TRUNCATE_SYM)},
623   { "TYPE",		SYM(TYPE_SYM)},
624   { "TYPES",		SYM(TYPES_SYM)},
625   { "UNCOMMITTED",	SYM(UNCOMMITTED_SYM)},
626   { "UNDEFINED",	SYM(UNDEFINED_SYM)},
627   { "UNDO_BUFFER_SIZE",	SYM(UNDO_BUFFER_SIZE_SYM)},
628   { "UNDOFILE", 	SYM(UNDOFILE_SYM)},
629   { "UNDO",             SYM(UNDO_SYM)},
630   { "UNICODE",	        SYM(UNICODE_SYM)},
631   { "UNION",	        SYM(UNION_SYM)},
632   { "UNIQUE",		SYM(UNIQUE_SYM)},
633   { "UNKNOWN",		SYM(UNKNOWN_SYM)},
634   { "UNLOCK",		SYM(UNLOCK_SYM)},
635   { "UNINSTALL",        SYM(UNINSTALL_SYM)},
636   { "UNSIGNED",		SYM(UNSIGNED)},
637   { "UNTIL",		SYM(UNTIL_SYM)},
638   { "UPDATE",		SYM(UPDATE_SYM)},
639   { "UPGRADE",          SYM(UPGRADE_SYM)},
640   { "USAGE",		SYM(USAGE)},
641   { "USE",		SYM(USE_SYM)},
642   { "USER",		SYM(USER)},
643   { "USER_RESOURCES",	SYM(RESOURCES)},
644   { "USER_STATISTICS",	SYM(USER_STATS_SYM)},
645   { "USE_FRM",		SYM(USE_FRM)},
646   { "USING",		SYM(USING)},
647   { "UTC_DATE",         SYM(UTC_DATE_SYM)},
648   { "UTC_TIME",         SYM(UTC_TIME_SYM)},
649   { "UTC_TIMESTAMP",    SYM(UTC_TIMESTAMP_SYM)},
650   { "VALUE",		SYM(VALUE_SYM)},
651   { "VALUES",		SYM(VALUES)},
652   { "VARBINARY",	SYM(VARBINARY)},
653   { "VARCHAR",		SYM(VARCHAR)},
654   { "VARCHARACTER",	SYM(VARCHAR)},
655   { "VARIABLES",	SYM(VARIABLES)},
656   { "VARYING",		SYM(VARYING)},
657   { "WAIT",		SYM(WAIT_SYM)},
658   { "WARNINGS",		SYM(WARNINGS)},
659   { "WEEK",		SYM(WEEK_SYM)},
660   { "WEIGHT_STRING",	SYM(WEIGHT_STRING_SYM)},
661   { "WHEN",		SYM(WHEN_SYM)},
662   { "WHERE",		SYM(WHERE)},
663   { "WHILE",            SYM(WHILE_SYM)},
664   { "VIEW",		SYM(VIEW_SYM)},
665   { "WITH",		SYM(WITH)},
666   { "WORK",		SYM(WORK_SYM)},
667   { "WRAPPER",		SYM(WRAPPER_SYM)},
668   { "WRITE",		SYM(WRITE_SYM)},
669   { "X509",		SYM(X509_SYM)},
670   { "XOR",		SYM(XOR)},
671   { "XA",               SYM(XA_SYM)},
672   { "XML",              SYM(XML_SYM)}, /* LOAD XML Arnold/Erik */
673   { "YEAR",		SYM(YEAR_SYM)},
674   { "YEAR_MONTH",	SYM(YEAR_MONTH_SYM)},
675   { "ZEROFILL",		SYM(ZEROFILL)},
676   { "||",		SYM(OR_OR_SYM)}
677 };
678 
679 
680 static SYMBOL sql_functions[] = {
681   { "ADDDATE",		SYM(ADDDATE_SYM)},
682   { "BIT_AND",		SYM(BIT_AND)},
683   { "BIT_OR",		SYM(BIT_OR)},
684   { "BIT_XOR",		SYM(BIT_XOR)},
685   { "CAST",		SYM(CAST_SYM)},
686   { "COUNT",		SYM(COUNT_SYM)},
687   { "CURDATE",		SYM(CURDATE)},
688   { "CURTIME",		SYM(CURTIME)},
689   { "DATE_ADD",		SYM(DATE_ADD_INTERVAL)},
690   { "DATE_SUB",		SYM(DATE_SUB_INTERVAL)},
691   { "EXTRACT",		SYM(EXTRACT_SYM)},
692   { "GROUP_CONCAT",	SYM(GROUP_CONCAT_SYM)},
693   { "MAX",		SYM(MAX_SYM)},
694   { "MID",		SYM(SUBSTRING)},	/* unireg function */
695   { "MIN",		SYM(MIN_SYM)},
696   { "NOW",		SYM(NOW_SYM)},
697   { "POSITION",		SYM(POSITION_SYM)},
698   { "SESSION_USER",     SYM(USER)},
699   { "STD",		SYM(STD_SYM)},
700   { "STDDEV",		SYM(STD_SYM)},
701   { "STDDEV_POP",	SYM(STD_SYM)},
702   { "STDDEV_SAMP",	SYM(STDDEV_SAMP_SYM)},
703   { "SUBDATE",		SYM(SUBDATE_SYM)},
704   { "SUBSTR",		SYM(SUBSTRING)},
705   { "SUBSTRING",	SYM(SUBSTRING)},
706   { "SUM",		SYM(SUM_SYM)},
707   { "SYSDATE",		SYM(SYSDATE)},
708   { "SYSTEM_USER",      SYM(USER)},
709   { "TRIM",		SYM(TRIM)},
710   { "VARIANCE",		SYM(VARIANCE_SYM)},
711   { "VAR_POP",		SYM(VARIANCE_SYM)},
712   { "VAR_SAMP",		SYM(VAR_SAMP_SYM)},
713 };
714 
715 #endif /* LEX_INCLUDED */
716