~vlad-lesin/percona-server/mysql-5.0.33-original

« back to all changes in this revision

Viewing changes to sql/lex.h

  • Committer: Vlad Lesin
  • Date: 2012-07-31 09:21:34 UTC
  • Revision ID: vladislav.lesin@percona.com-20120731092134-zfodx022b7992wsi
VirginĀ 5.0.33

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (C) 2000-2002 MySQL AB
 
2
 
 
3
   This program is free software; you can redistribute it and/or modify
 
4
   it under the terms of the GNU General Public License as published by
 
5
   the Free Software Foundation; either version 2 of the License, or
 
6
   (at your option) any later version.
 
7
 
 
8
   This program is distributed in the hope that it will be useful,
 
9
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
11
   GNU General Public License for more details.
 
12
 
 
13
   You should have received a copy of the GNU General Public License
 
14
   along with this program; if not, write to the Free Software
 
15
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
 
16
 
 
17
 
 
18
/* This file includes all reserved words and functions */
 
19
 
 
20
#include "lex_symbol.h"
 
21
 
 
22
SYM_GROUP sym_group_common= {"", ""};
 
23
SYM_GROUP sym_group_geom= {"Spatial extentions", "HAVE_SPATIAL"};
 
24
SYM_GROUP sym_group_rtree= {"RTree keys", "HAVE_RTREE_KEYS"};
 
25
 
 
26
/* We don't want to include sql_yacc.h into gen_lex_hash */
 
27
#ifdef NO_YACC_SYMBOLS
 
28
#define SYM_OR_NULL(A) 0
 
29
#else
 
30
#define SYM_OR_NULL(A) A
 
31
#endif
 
32
 
 
33
#define SYM(A) SYM_OR_NULL(A),0,0,&sym_group_common
 
34
#define F_SYM(A) SYM_OR_NULL(A)
 
35
 
 
36
#define CREATE_FUNC(A) (void *)(SYM_OR_NULL(A)), &sym_group_common
 
37
 
 
38
#ifdef HAVE_SPATIAL
 
39
#define CREATE_FUNC_GEOM(A) (void *)(SYM_OR_NULL(A)), &sym_group_geom
 
40
#else
 
41
#define CREATE_FUNC_GEOM(A) 0, &sym_group_geom
 
42
#endif
 
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
 
 
50
static SYMBOL symbols[] = {
 
51
  { "&&",               SYM(AND_AND_SYM)},
 
52
  { "<",                SYM(LT)},
 
53
  { "<=",               SYM(LE)},
 
54
  { "<>",               SYM(NE)},
 
55
  { "!=",               SYM(NE)},
 
56
  { "=",                SYM(EQ)},
 
57
  { ">",                SYM(GT_SYM)},
 
58
  { ">=",               SYM(GE)},
 
59
  { "<<",               SYM(SHIFT_LEFT)},
 
60
  { ">>",               SYM(SHIFT_RIGHT)},
 
61
  { "<=>",              SYM(EQUAL_SYM)},
 
62
  { "ACTION",           SYM(ACTION)},
 
63
  { "ADD",              SYM(ADD)},
 
64
  { "AFTER",            SYM(AFTER_SYM)},
 
65
  { "AGAINST",          SYM(AGAINST)},
 
66
  { "AGGREGATE",        SYM(AGGREGATE_SYM)},
 
67
  { "ALL",              SYM(ALL)},
 
68
  { "ALGORITHM",        SYM(ALGORITHM_SYM)},
 
69
  { "ALTER",            SYM(ALTER)},
 
70
  { "ANALYZE",          SYM(ANALYZE_SYM)},
 
71
  { "AND",              SYM(AND_SYM)},
 
72
  { "ANY",              SYM(ANY_SYM)},
 
73
  { "AS",               SYM(AS)},
 
74
  { "ASC",              SYM(ASC)},
 
75
  { "ASCII",            SYM(ASCII_SYM)},
 
76
  { "ASENSITIVE",       SYM(ASENSITIVE_SYM)},
 
77
  { "AUTO_INCREMENT",   SYM(AUTO_INC)},
 
78
  { "AVG",              SYM(AVG_SYM)},
 
79
  { "AVG_ROW_LENGTH",   SYM(AVG_ROW_LENGTH)},
 
80
  { "BACKUP",           SYM(BACKUP_SYM)},
 
81
  { "BDB",              SYM(BERKELEY_DB_SYM)},
 
82
  { "BEFORE",           SYM(BEFORE_SYM)},
 
83
  { "BEGIN",            SYM(BEGIN_SYM)},
 
84
  { "BERKELEYDB",       SYM(BERKELEY_DB_SYM)},
 
85
  { "BETWEEN",          SYM(BETWEEN_SYM)},
 
86
  { "BIGINT",           SYM(BIGINT)},
 
87
  { "BINARY",           SYM(BINARY)},
 
88
  { "BINLOG",           SYM(BINLOG_SYM)},
 
89
  { "BIT",              SYM(BIT_SYM)},
 
90
  { "BLOB",             SYM(BLOB_SYM)},
 
91
  { "BOOL",             SYM(BOOL_SYM)},
 
92
  { "BOOLEAN",          SYM(BOOLEAN_SYM)},
 
93
  { "BOTH",             SYM(BOTH)},
 
94
  { "BTREE",            SYM(BTREE_SYM)},
 
95
  { "BY",               SYM(BY)},
 
96
  { "BYTE",             SYM(BYTE_SYM)},
 
97
  { "CACHE",            SYM(CACHE_SYM)},
 
98
  { "CALL",             SYM(CALL_SYM)},
 
99
  { "CASCADE",          SYM(CASCADE)},
 
100
  { "CASCADED",         SYM(CASCADED)},
 
101
  { "CASE",             SYM(CASE_SYM)},
 
102
  { "CHAIN",            SYM(CHAIN_SYM)},
 
103
  { "CHANGE",           SYM(CHANGE)},
 
104
  { "CHANGED",          SYM(CHANGED)},
 
105
  { "CHAR",             SYM(CHAR_SYM)},
 
106
  { "CHARACTER",        SYM(CHAR_SYM)},
 
107
  { "CHARSET",          SYM(CHARSET)},
 
108
  { "CHECK",            SYM(CHECK_SYM)},
 
109
  { "CHECKSUM",         SYM(CHECKSUM_SYM)},
 
110
  { "CIPHER",           SYM(CIPHER_SYM)},
 
111
  { "CLIENT",           SYM(CLIENT_SYM)},
 
112
  { "CLOSE",            SYM(CLOSE_SYM)},
 
113
  { "CODE",             SYM(CODE_SYM)},
 
114
  { "COLLATE",          SYM(COLLATE_SYM)},
 
115
  { "COLLATION",        SYM(COLLATION_SYM)},
 
116
  { "COLUMN",           SYM(COLUMN_SYM)},
 
117
  { "COLUMNS",          SYM(COLUMNS)},
 
118
  { "COMMENT",          SYM(COMMENT_SYM)},
 
119
  { "COMMIT",           SYM(COMMIT_SYM)},
 
120
  { "COMMITTED",        SYM(COMMITTED_SYM)},
 
121
  { "COMPACT",          SYM(COMPACT_SYM)},
 
122
  { "COMPRESSED",       SYM(COMPRESSED_SYM)},
 
123
  { "CONCURRENT",       SYM(CONCURRENT)},
 
124
  { "CONDITION",        SYM(CONDITION_SYM)},
 
125
  { "CONNECTION",       SYM(CONNECTION_SYM)},
 
126
  { "CONSISTENT",       SYM(CONSISTENT_SYM)},
 
127
  { "CONSTRAINT",       SYM(CONSTRAINT)},
 
128
  { "CONTAINS",         SYM(CONTAINS_SYM)},
 
129
  { "CONTINUE",         SYM(CONTINUE_SYM)},
 
130
  { "CONVERT",          SYM(CONVERT_SYM)},
 
131
  { "CREATE",           SYM(CREATE)},
 
132
  { "CROSS",            SYM(CROSS)},
 
133
  { "CUBE",             SYM(CUBE_SYM)},
 
134
  { "CURRENT_DATE",     SYM(CURDATE)},
 
135
  { "CURRENT_TIME",     SYM(CURTIME)},
 
136
  { "CURRENT_TIMESTAMP", SYM(NOW_SYM)},
 
137
  { "CURRENT_USER",     SYM(CURRENT_USER)},
 
138
  { "CURSOR",           SYM(CURSOR_SYM)},
 
139
  { "DATA",             SYM(DATA_SYM)},
 
140
  { "DATABASE",         SYM(DATABASE)},
 
141
  { "DATABASES",        SYM(DATABASES)},
 
142
  { "DATE",             SYM(DATE_SYM)},
 
143
  { "DATETIME",         SYM(DATETIME)},
 
144
  { "DAY",              SYM(DAY_SYM)},
 
145
  { "DAY_HOUR",         SYM(DAY_HOUR_SYM)},
 
146
  { "DAY_MICROSECOND",  SYM(DAY_MICROSECOND_SYM)},
 
147
  { "DAY_MINUTE",       SYM(DAY_MINUTE_SYM)},
 
148
  { "DAY_SECOND",       SYM(DAY_SECOND_SYM)},
 
149
  { "DEALLOCATE",       SYM(DEALLOCATE_SYM)},     
 
150
  { "DEC",              SYM(DECIMAL_SYM)},
 
151
  { "DECIMAL",          SYM(DECIMAL_SYM)},
 
152
  { "DECLARE",          SYM(DECLARE_SYM)},
 
153
  { "DEFAULT",          SYM(DEFAULT)},
 
154
  { "DEFINER",          SYM(DEFINER_SYM)},
 
155
  { "DELAYED",          SYM(DELAYED_SYM)},
 
156
  { "DELAY_KEY_WRITE",  SYM(DELAY_KEY_WRITE_SYM)},
 
157
  { "DELETE",           SYM(DELETE_SYM)},
 
158
  { "DESC",             SYM(DESC)},
 
159
  { "DESCRIBE",         SYM(DESCRIBE)},
 
160
  { "DES_KEY_FILE",     SYM(DES_KEY_FILE)},
 
161
  { "DETERMINISTIC",    SYM(DETERMINISTIC_SYM)},
 
162
  { "DIRECTORY",        SYM(DIRECTORY_SYM)},
 
163
  { "DISABLE",          SYM(DISABLE_SYM)},
 
164
  { "DISCARD",          SYM(DISCARD)},
 
165
  { "DISTINCT",         SYM(DISTINCT)},
 
166
  { "DISTINCTROW",      SYM(DISTINCT)}, /* Access likes this */
 
167
  { "DIV",              SYM(DIV_SYM)},
 
168
  { "DO",               SYM(DO_SYM)},
 
169
  { "DOUBLE",           SYM(DOUBLE_SYM)},
 
170
  { "DROP",             SYM(DROP)},
 
171
  { "DUAL",             SYM(DUAL_SYM)},
 
172
  { "DUMPFILE",         SYM(DUMPFILE)},
 
173
  { "DUPLICATE",        SYM(DUPLICATE_SYM)},
 
174
  { "DYNAMIC",          SYM(DYNAMIC_SYM)},
 
175
  { "EACH",             SYM(EACH_SYM)},
 
176
  { "ELSE",             SYM(ELSE)},
 
177
  { "ELSEIF",           SYM(ELSEIF_SYM)},
 
178
  { "ENABLE",           SYM(ENABLE_SYM)},
 
179
  { "ENCLOSED",         SYM(ENCLOSED)},
 
180
  { "END",              SYM(END)},
 
181
  { "ENGINE",           SYM(ENGINE_SYM)},
 
182
  { "ENGINES",          SYM(ENGINES_SYM)},
 
183
  { "ENUM",             SYM(ENUM)},
 
184
  { "ERRORS",           SYM(ERRORS)},
 
185
  { "ESCAPE",           SYM(ESCAPE_SYM)},
 
186
  { "ESCAPED",          SYM(ESCAPED)},
 
187
  { "EVENTS",           SYM(EVENTS_SYM)},
 
188
  { "EXECUTE",          SYM(EXECUTE_SYM)},
 
189
  { "EXISTS",           SYM(EXISTS)},
 
190
  { "EXIT",             SYM(EXIT_SYM)},
 
191
  { "EXPANSION",        SYM(EXPANSION_SYM)},
 
192
  { "EXPLAIN",          SYM(DESCRIBE)},
 
193
  { "EXTENDED",         SYM(EXTENDED_SYM)},
 
194
  { "FALSE",            SYM(FALSE_SYM)},
 
195
  { "FAST",             SYM(FAST_SYM)},
 
196
  { "FETCH",            SYM(FETCH_SYM)},
 
197
  { "FIELDS",           SYM(COLUMNS)},
 
198
  { "FILE",             SYM(FILE_SYM)},
 
199
  { "FIRST",            SYM(FIRST_SYM)},
 
200
  { "FIXED",            SYM(FIXED_SYM)},
 
201
  { "FLOAT",            SYM(FLOAT_SYM)},
 
202
  { "FLOAT4",           SYM(FLOAT_SYM)},
 
203
  { "FLOAT8",           SYM(DOUBLE_SYM)},
 
204
  { "FLUSH",            SYM(FLUSH_SYM)},
 
205
  { "FOR",              SYM(FOR_SYM)},
 
206
  { "FORCE",            SYM(FORCE_SYM)},
 
207
  { "FOREIGN",          SYM(FOREIGN)},
 
208
  { "FOUND",            SYM(FOUND_SYM)},
 
209
  { "FRAC_SECOND",      SYM(FRAC_SECOND_SYM)},
 
210
  { "FROM",             SYM(FROM)},
 
211
  { "FULL",             SYM(FULL)},
 
212
  { "FULLTEXT",         SYM(FULLTEXT_SYM)},
 
213
  { "FUNCTION",         SYM(FUNCTION_SYM)},
 
214
  { "GEOMETRY",         SYM(GEOMETRY_SYM)},
 
215
  { "GEOMETRYCOLLECTION",SYM(GEOMETRYCOLLECTION)},
 
216
  { "GET_FORMAT",       SYM(GET_FORMAT)},
 
217
  { "GLOBAL",           SYM(GLOBAL_SYM)},
 
218
  { "GRANT",            SYM(GRANT)},
 
219
  { "GRANTS",           SYM(GRANTS)},
 
220
  { "GROUP",            SYM(GROUP)},
 
221
  { "HANDLER",          SYM(HANDLER_SYM)},
 
222
  { "HASH",             SYM(HASH_SYM)},
 
223
  { "HAVING",           SYM(HAVING)},
 
224
  { "HELP",             SYM(HELP_SYM)},
 
225
  { "HIGH_PRIORITY",    SYM(HIGH_PRIORITY)},
 
226
  { "HOSTS",            SYM(HOSTS_SYM)},
 
227
  { "HOUR",             SYM(HOUR_SYM)},
 
228
  { "HOUR_MICROSECOND", SYM(HOUR_MICROSECOND_SYM)},
 
229
  { "HOUR_MINUTE",      SYM(HOUR_MINUTE_SYM)},
 
230
  { "HOUR_SECOND",      SYM(HOUR_SECOND_SYM)},
 
231
  { "IDENTIFIED",       SYM(IDENTIFIED_SYM)},
 
232
  { "IF",               SYM(IF)},
 
233
  { "IGNORE",           SYM(IGNORE_SYM)},
 
234
  { "IMPORT",           SYM(IMPORT)},
 
235
  { "IN",               SYM(IN_SYM)},
 
236
  { "INDEX",            SYM(INDEX_SYM)},
 
237
  { "INDEXES",          SYM(INDEXES)},
 
238
  { "INFILE",           SYM(INFILE)},
 
239
  { "INNER",            SYM(INNER_SYM)},
 
240
  { "INNOBASE",         SYM(INNOBASE_SYM)},
 
241
  { "INNODB",           SYM(INNOBASE_SYM)},
 
242
  { "INOUT",            SYM(INOUT_SYM)},
 
243
  { "INSENSITIVE",      SYM(INSENSITIVE_SYM)},
 
244
  { "INSERT",           SYM(INSERT)},
 
245
  { "INSERT_METHOD",    SYM(INSERT_METHOD)},
 
246
  { "INT",              SYM(INT_SYM)},
 
247
  { "INT1",             SYM(TINYINT)},
 
248
  { "INT2",             SYM(SMALLINT)},
 
249
  { "INT3",             SYM(MEDIUMINT)},
 
250
  { "INT4",             SYM(INT_SYM)},
 
251
  { "INT8",             SYM(BIGINT)},
 
252
  { "INTEGER",          SYM(INT_SYM)},
 
253
  { "INTERVAL",         SYM(INTERVAL_SYM)},
 
254
  { "INTO",             SYM(INTO)},
 
255
  { "IO_THREAD",        SYM(RELAY_THREAD)},
 
256
  { "IS",               SYM(IS)},
 
257
  { "ISOLATION",        SYM(ISOLATION)},
 
258
  { "ISSUER",           SYM(ISSUER_SYM)},
 
259
  { "ITERATE",          SYM(ITERATE_SYM)},
 
260
  { "INVOKER",          SYM(INVOKER_SYM)},
 
261
  { "JOIN",             SYM(JOIN_SYM)},
 
262
  { "KEY",              SYM(KEY_SYM)},
 
263
  { "KEYS",             SYM(KEYS)},
 
264
  { "KILL",             SYM(KILL_SYM)},
 
265
  { "LANGUAGE",         SYM(LANGUAGE_SYM)},
 
266
  { "LAST",             SYM(LAST_SYM)},
 
267
  { "LEADING",          SYM(LEADING)},
 
268
  { "LEAVE",            SYM(LEAVE_SYM)},
 
269
  { "LEAVES",           SYM(LEAVES)},
 
270
  { "LEFT",             SYM(LEFT)},
 
271
  { "LEVEL",            SYM(LEVEL_SYM)},
 
272
  { "LIKE",             SYM(LIKE)},
 
273
  { "LIMIT",            SYM(LIMIT)},
 
274
  { "LINES",            SYM(LINES)},
 
275
  { "LINESTRING",       SYM(LINESTRING)},
 
276
  { "LOAD",             SYM(LOAD)},
 
277
  { "LOCAL",            SYM(LOCAL_SYM)},
 
278
  { "LOCALTIME",        SYM(NOW_SYM)},
 
279
  { "LOCALTIMESTAMP",   SYM(NOW_SYM)},
 
280
  { "LOCK",             SYM(LOCK_SYM)},
 
281
  { "LOCKS",            SYM(LOCKS_SYM)},
 
282
  { "LOGS",             SYM(LOGS_SYM)},
 
283
  { "LONG",             SYM(LONG_SYM)},
 
284
  { "LONGBLOB",         SYM(LONGBLOB)},
 
285
  { "LONGTEXT",         SYM(LONGTEXT)},
 
286
  { "LOOP",             SYM(LOOP_SYM)},
 
287
  { "LOW_PRIORITY",     SYM(LOW_PRIORITY)},
 
288
  { "MASTER",           SYM(MASTER_SYM)},
 
289
  { "MASTER_CONNECT_RETRY",           SYM(MASTER_CONNECT_RETRY_SYM)},
 
290
  { "MASTER_HOST",           SYM(MASTER_HOST_SYM)},
 
291
  { "MASTER_LOG_FILE",           SYM(MASTER_LOG_FILE_SYM)},
 
292
  { "MASTER_LOG_POS",           SYM(MASTER_LOG_POS_SYM)},
 
293
  { "MASTER_PASSWORD",           SYM(MASTER_PASSWORD_SYM)},
 
294
  { "MASTER_PORT",           SYM(MASTER_PORT_SYM)},
 
295
  { "MASTER_SERVER_ID",           SYM(MASTER_SERVER_ID_SYM)},
 
296
  { "MASTER_SSL",       SYM(MASTER_SSL_SYM)},
 
297
  { "MASTER_SSL_CA",    SYM(MASTER_SSL_CA_SYM)},
 
298
  { "MASTER_SSL_CAPATH",SYM(MASTER_SSL_CAPATH_SYM)},
 
299
  { "MASTER_SSL_CERT",  SYM(MASTER_SSL_CERT_SYM)},
 
300
  { "MASTER_SSL_CIPHER",SYM(MASTER_SSL_CIPHER_SYM)},
 
301
  { "MASTER_SSL_KEY",   SYM(MASTER_SSL_KEY_SYM)},
 
302
  { "MASTER_USER",           SYM(MASTER_USER_SYM)},
 
303
  { "MATCH",            SYM(MATCH)},
 
304
  { "MAX_CONNECTIONS_PER_HOUR", SYM(MAX_CONNECTIONS_PER_HOUR)},
 
305
  { "MAX_QUERIES_PER_HOUR", SYM(MAX_QUERIES_PER_HOUR)},
 
306
  { "MAX_ROWS",         SYM(MAX_ROWS)},
 
307
  { "MAX_UPDATES_PER_HOUR", SYM(MAX_UPDATES_PER_HOUR)},
 
308
  { "MAX_USER_CONNECTIONS", SYM(MAX_USER_CONNECTIONS_SYM)},
 
309
  { "MEDIUM",           SYM(MEDIUM_SYM)},
 
310
  { "MEDIUMBLOB",       SYM(MEDIUMBLOB)},
 
311
  { "MEDIUMINT",        SYM(MEDIUMINT)},
 
312
  { "MEDIUMTEXT",       SYM(MEDIUMTEXT)},
 
313
  { "MERGE",            SYM(MERGE_SYM)},
 
314
  { "MICROSECOND",      SYM(MICROSECOND_SYM)},
 
315
  { "MIDDLEINT",        SYM(MEDIUMINT)},        /* For powerbuilder */
 
316
  { "MIGRATE",          SYM(MIGRATE_SYM)},
 
317
  { "MINUTE",           SYM(MINUTE_SYM)},
 
318
  { "MINUTE_MICROSECOND", SYM(MINUTE_MICROSECOND_SYM)},
 
319
  { "MINUTE_SECOND",    SYM(MINUTE_SECOND_SYM)},
 
320
  { "MIN_ROWS",         SYM(MIN_ROWS)},
 
321
  { "MOD",              SYM(MOD_SYM)},
 
322
  { "MODE",             SYM(MODE_SYM)},
 
323
  { "MODIFIES",         SYM(MODIFIES_SYM)},
 
324
  { "MODIFY",           SYM(MODIFY_SYM)},
 
325
  { "MONTH",            SYM(MONTH_SYM)},
 
326
  { "MULTILINESTRING",  SYM(MULTILINESTRING)},
 
327
  { "MULTIPOINT",       SYM(MULTIPOINT)},
 
328
  { "MULTIPOLYGON",     SYM(MULTIPOLYGON)},
 
329
  { "MUTEX",  SYM(MUTEX_SYM)},
 
330
  { "NAME",             SYM(NAME_SYM)},
 
331
  { "NAMES",            SYM(NAMES_SYM)},
 
332
  { "NATIONAL",         SYM(NATIONAL_SYM)},
 
333
  { "NATURAL",          SYM(NATURAL)},
 
334
  { "NDB",              SYM(NDBCLUSTER_SYM)},
 
335
  { "NDBCLUSTER",       SYM(NDBCLUSTER_SYM)},
 
336
  { "NCHAR",            SYM(NCHAR_SYM)},
 
337
  { "NEW",              SYM(NEW_SYM)},
 
338
  { "NEXT",             SYM(NEXT_SYM)},
 
339
  { "NO",               SYM(NO_SYM)},
 
340
  { "NONE",             SYM(NONE_SYM)},
 
341
  { "NOT",              SYM(NOT_SYM)},
 
342
  { "NO_WRITE_TO_BINLOG",  SYM(NO_WRITE_TO_BINLOG)},
 
343
  { "NULL",             SYM(NULL_SYM)},
 
344
  { "NUMERIC",          SYM(NUMERIC_SYM)},
 
345
  { "NVARCHAR",         SYM(NVARCHAR_SYM)},
 
346
  { "OFFSET",           SYM(OFFSET_SYM)},
 
347
  { "OLD_PASSWORD",     SYM(OLD_PASSWORD)},
 
348
  { "ON",               SYM(ON)},
 
349
  { "ONE",              SYM(ONE_SYM)},
 
350
  { "ONE_SHOT",         SYM(ONE_SHOT_SYM)},
 
351
  { "OPEN",             SYM(OPEN_SYM)},
 
352
  { "OPTIMIZE",         SYM(OPTIMIZE)},
 
353
  { "OPTION",           SYM(OPTION)},
 
354
  { "OPTIONALLY",       SYM(OPTIONALLY)},
 
355
  { "OR",               SYM(OR_SYM)},
 
356
  { "ORDER",            SYM(ORDER_SYM)},
 
357
  { "OUT",              SYM(OUT_SYM)},
 
358
  { "OUTER",            SYM(OUTER)},
 
359
  { "OUTFILE",          SYM(OUTFILE)},
 
360
  { "PACK_KEYS",        SYM(PACK_KEYS_SYM)},
 
361
  { "PARTIAL",          SYM(PARTIAL)},
 
362
  { "PASSWORD",         SYM(PASSWORD)},
 
363
  { "PHASE",            SYM(PHASE_SYM)},
 
364
  { "POINT",            SYM(POINT_SYM)},
 
365
  { "POLYGON",          SYM(POLYGON)},
 
366
  { "PRECISION",        SYM(PRECISION)},
 
367
  { "PREPARE",          SYM(PREPARE_SYM)},
 
368
  { "PREV",             SYM(PREV_SYM)},
 
369
  { "PRIMARY",          SYM(PRIMARY_SYM)},
 
370
  { "PRIVILEGES",       SYM(PRIVILEGES)},
 
371
  { "PROCEDURE",        SYM(PROCEDURE)},
 
372
  { "PROCESS"   ,       SYM(PROCESS)},
 
373
  { "PROCESSLIST",      SYM(PROCESSLIST_SYM)},
 
374
  { "PURGE",            SYM(PURGE)},
 
375
  { "QUARTER",          SYM(QUARTER_SYM)},
 
376
  { "QUERY",            SYM(QUERY_SYM)},
 
377
  { "QUICK",            SYM(QUICK)},
 
378
  { "RAID0",            SYM(RAID_0_SYM)},
 
379
  { "RAID_CHUNKS",      SYM(RAID_CHUNKS)},
 
380
  { "RAID_CHUNKSIZE",   SYM(RAID_CHUNKSIZE)},
 
381
  { "RAID_TYPE",        SYM(RAID_TYPE)},
 
382
  { "READ",             SYM(READ_SYM)},
 
383
  { "READS",            SYM(READS_SYM)},
 
384
  { "REAL",             SYM(REAL)},
 
385
  { "RECOVER",          SYM(RECOVER_SYM)},
 
386
  { "REDUNDANT",        SYM(REDUNDANT_SYM)},
 
387
  { "REFERENCES",       SYM(REFERENCES)},
 
388
  { "REGEXP",           SYM(REGEXP)},
 
389
  { "RELAY_LOG_FILE",   SYM(RELAY_LOG_FILE_SYM)},
 
390
  { "RELAY_LOG_POS",    SYM(RELAY_LOG_POS_SYM)},
 
391
  { "RELAY_THREAD",     SYM(RELAY_THREAD)},
 
392
  { "RELEASE",          SYM(RELEASE_SYM)},
 
393
  { "RELOAD",           SYM(RELOAD)},
 
394
  { "RENAME",           SYM(RENAME)},
 
395
  { "REPAIR",           SYM(REPAIR)},
 
396
  { "REPEATABLE",       SYM(REPEATABLE_SYM)},
 
397
  { "REPLACE",          SYM(REPLACE)},
 
398
  { "REPLICATION",      SYM(REPLICATION)},
 
399
  { "REPEAT",           SYM(REPEAT_SYM)},
 
400
  { "REQUIRE",          SYM(REQUIRE_SYM)},
 
401
  { "RESET",            SYM(RESET_SYM)},
 
402
  { "RESTORE",          SYM(RESTORE_SYM)},
 
403
  { "RESTRICT",         SYM(RESTRICT)},
 
404
  { "RESUME",           SYM(RESUME_SYM)},
 
405
  { "RETURN",           SYM(RETURN_SYM)},
 
406
  { "RETURNS",          SYM(RETURNS_SYM)},
 
407
  { "REVOKE",           SYM(REVOKE)},
 
408
  { "RIGHT",            SYM(RIGHT)},
 
409
  { "RLIKE",            SYM(REGEXP)},   /* Like in mSQL2 */
 
410
  { "ROLLBACK",         SYM(ROLLBACK_SYM)},
 
411
  { "ROLLUP",           SYM(ROLLUP_SYM)},
 
412
  { "ROUTINE",          SYM(ROUTINE_SYM)},
 
413
  { "ROW",              SYM(ROW_SYM)},
 
414
  { "ROWS",             SYM(ROWS_SYM)},
 
415
  { "ROW_FORMAT",       SYM(ROW_FORMAT_SYM)},
 
416
  { "RTREE",            SYM(RTREE_SYM)},
 
417
  { "SAVEPOINT",        SYM(SAVEPOINT_SYM)},
 
418
  { "SCHEMA",           SYM(DATABASE)},
 
419
  { "SCHEMAS",          SYM(DATABASES)},
 
420
  { "SECOND",           SYM(SECOND_SYM)},
 
421
  { "SECOND_MICROSECOND", SYM(SECOND_MICROSECOND_SYM)},
 
422
  { "SECURITY",         SYM(SECURITY_SYM)},
 
423
  { "SELECT",           SYM(SELECT_SYM)},
 
424
  { "SENSITIVE",        SYM(SENSITIVE_SYM)},
 
425
  { "SEPARATOR",        SYM(SEPARATOR_SYM)},
 
426
  { "SERIAL",           SYM(SERIAL_SYM)},
 
427
  { "SERIALIZABLE",     SYM(SERIALIZABLE_SYM)},
 
428
  { "SESSION",          SYM(SESSION_SYM)},
 
429
  { "SET",              SYM(SET)},
 
430
  { "SHARE",            SYM(SHARE_SYM)},
 
431
  { "SHOW",             SYM(SHOW)},
 
432
  { "SHUTDOWN",         SYM(SHUTDOWN)},
 
433
  { "SIGNED",           SYM(SIGNED_SYM)},
 
434
  { "SIMPLE",           SYM(SIMPLE_SYM)},
 
435
  { "SLAVE",            SYM(SLAVE)},
 
436
  { "SNAPSHOT",         SYM(SNAPSHOT_SYM)},
 
437
  { "SMALLINT",         SYM(SMALLINT)},
 
438
  { "SOME",             SYM(ANY_SYM)},
 
439
  { "SONAME",           SYM(UDF_SONAME_SYM)},
 
440
  { "SOUNDS",           SYM(SOUNDS_SYM)},
 
441
  { "SPATIAL",          SYM(SPATIAL_SYM)},
 
442
  { "SPECIFIC",         SYM(SPECIFIC_SYM)},
 
443
  { "SQL",              SYM(SQL_SYM)},
 
444
  { "SQLEXCEPTION",     SYM(SQLEXCEPTION_SYM)},
 
445
  { "SQLSTATE",         SYM(SQLSTATE_SYM)},
 
446
  { "SQLWARNING",       SYM(SQLWARNING_SYM)},
 
447
  { "SQL_BIG_RESULT",   SYM(SQL_BIG_RESULT)},
 
448
  { "SQL_BUFFER_RESULT", SYM(SQL_BUFFER_RESULT)},
 
449
  { "SQL_CACHE",        SYM(SQL_CACHE_SYM)},
 
450
  { "SQL_CALC_FOUND_ROWS", SYM(SQL_CALC_FOUND_ROWS)},
 
451
  { "SQL_NO_CACHE",     SYM(SQL_NO_CACHE_SYM)},
 
452
  { "SQL_SMALL_RESULT", SYM(SQL_SMALL_RESULT)},
 
453
  { "SQL_THREAD",       SYM(SQL_THREAD)},
 
454
  { "SQL_TSI_FRAC_SECOND", SYM(FRAC_SECOND_SYM)},
 
455
  { "SQL_TSI_SECOND",   SYM(SECOND_SYM)},
 
456
  { "SQL_TSI_MINUTE",   SYM(MINUTE_SYM)},
 
457
  { "SQL_TSI_HOUR",     SYM(HOUR_SYM)},
 
458
  { "SQL_TSI_DAY",      SYM(DAY_SYM)},
 
459
  { "SQL_TSI_WEEK",     SYM(WEEK_SYM)},
 
460
  { "SQL_TSI_MONTH",    SYM(MONTH_SYM)},
 
461
  { "SQL_TSI_QUARTER",  SYM(QUARTER_SYM)},
 
462
  { "SQL_TSI_YEAR",     SYM(YEAR_SYM)},
 
463
  { "SSL",              SYM(SSL_SYM)},
 
464
  { "START",            SYM(START_SYM)},
 
465
  { "STARTING",         SYM(STARTING)},
 
466
  { "STATUS",           SYM(STATUS_SYM)},
 
467
  { "STOP",             SYM(STOP_SYM)},
 
468
  { "STORAGE",          SYM(STORAGE_SYM)},
 
469
  { "STRAIGHT_JOIN",    SYM(STRAIGHT_JOIN)},
 
470
  { "STRING",           SYM(STRING_SYM)},
 
471
  { "STRIPED",          SYM(RAID_STRIPED_SYM)},
 
472
  { "SUBJECT",          SYM(SUBJECT_SYM)},
 
473
  { "SUPER",            SYM(SUPER_SYM)},
 
474
  { "SUSPEND",          SYM(SUSPEND_SYM)},
 
475
  { "TABLE",            SYM(TABLE_SYM)},
 
476
  { "TABLES",           SYM(TABLES)},
 
477
  { "TABLESPACE",       SYM(TABLESPACE)},
 
478
  { "TEMPORARY",        SYM(TEMPORARY)},
 
479
  { "TEMPTABLE",        SYM(TEMPTABLE_SYM)},
 
480
  { "TERMINATED",       SYM(TERMINATED)},
 
481
  { "TEXT",             SYM(TEXT_SYM)},
 
482
  { "THEN",             SYM(THEN_SYM)},
 
483
  { "TIME",             SYM(TIME_SYM)},
 
484
  { "TIMESTAMP",        SYM(TIMESTAMP)},
 
485
  { "TIMESTAMPADD",     SYM(TIMESTAMP_ADD)},
 
486
  { "TIMESTAMPDIFF",    SYM(TIMESTAMP_DIFF)},
 
487
  { "TINYBLOB",         SYM(TINYBLOB)},
 
488
  { "TINYINT",          SYM(TINYINT)},
 
489
  { "TINYTEXT",         SYM(TINYTEXT)},
 
490
  { "TO",               SYM(TO_SYM)},
 
491
  { "TRAILING",         SYM(TRAILING)},
 
492
  { "TRANSACTION",      SYM(TRANSACTION_SYM)},
 
493
  { "TRIGGER",          SYM(TRIGGER_SYM)},
 
494
  { "TRIGGERS",         SYM(TRIGGERS_SYM)},
 
495
  { "TRUE",             SYM(TRUE_SYM)},
 
496
  { "TRUNCATE",         SYM(TRUNCATE_SYM)},
 
497
  { "TYPE",             SYM(TYPE_SYM)},
 
498
  { "TYPES",            SYM(TYPES_SYM)},
 
499
  { "UNCOMMITTED",      SYM(UNCOMMITTED_SYM)},
 
500
  { "UNDEFINED",        SYM(UNDEFINED_SYM)},
 
501
  { "UNDO",             SYM(UNDO_SYM)},
 
502
  { "UNICODE",          SYM(UNICODE_SYM)},
 
503
  { "UNION",            SYM(UNION_SYM)},
 
504
  { "UNIQUE",           SYM(UNIQUE_SYM)},
 
505
  { "UNKNOWN",          SYM(UNKNOWN_SYM)},
 
506
  { "UNLOCK",           SYM(UNLOCK_SYM)},
 
507
  { "UNSIGNED",         SYM(UNSIGNED)},
 
508
  { "UNTIL",            SYM(UNTIL_SYM)},
 
509
  { "UPDATE",           SYM(UPDATE_SYM)},
 
510
  { "UPGRADE",          SYM(UPGRADE_SYM)},
 
511
  { "USAGE",            SYM(USAGE)},
 
512
  { "USE",              SYM(USE_SYM)},
 
513
  { "USER",             SYM(USER)},
 
514
  { "USER_RESOURCES",   SYM(RESOURCES)},
 
515
  { "USE_FRM",          SYM(USE_FRM)},
 
516
  { "USING",            SYM(USING)},
 
517
  { "UTC_DATE",         SYM(UTC_DATE_SYM)},
 
518
  { "UTC_TIME",         SYM(UTC_TIME_SYM)},
 
519
  { "UTC_TIMESTAMP",    SYM(UTC_TIMESTAMP_SYM)},
 
520
  { "VALUE",            SYM(VALUE_SYM)},
 
521
  { "VALUES",           SYM(VALUES)},
 
522
  { "VARBINARY",        SYM(VARBINARY)},
 
523
  { "VARCHAR",          SYM(VARCHAR)},
 
524
  { "VARCHARACTER",     SYM(VARCHAR)},
 
525
  { "VARIABLES",        SYM(VARIABLES)},
 
526
  { "VARYING",          SYM(VARYING)},
 
527
  { "WARNINGS",         SYM(WARNINGS)},
 
528
  { "WEEK",             SYM(WEEK_SYM)},
 
529
  { "WHEN",             SYM(WHEN_SYM)},
 
530
  { "WHERE",            SYM(WHERE)},
 
531
  { "WHILE",            SYM(WHILE_SYM)},
 
532
  { "VIEW",             SYM(VIEW_SYM)},
 
533
  { "WITH",             SYM(WITH)},
 
534
  { "WORK",             SYM(WORK_SYM)},
 
535
  { "WRITE",            SYM(WRITE_SYM)},
 
536
  { "X509",             SYM(X509_SYM)},
 
537
  { "XOR",              SYM(XOR)},
 
538
  { "XA",               SYM(XA_SYM)},
 
539
  { "YEAR",             SYM(YEAR_SYM)},
 
540
  { "YEAR_MONTH",       SYM(YEAR_MONTH_SYM)},
 
541
  { "ZEROFILL",         SYM(ZEROFILL)},
 
542
  { "||",               SYM(OR_OR_SYM)}
 
543
};
 
544
 
 
545
 
 
546
static SYMBOL sql_functions[] = {
 
547
  { "ABS",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_abs)},
 
548
  { "ACOS",             F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_acos)},
 
549
  { "ADDDATE",          SYM(ADDDATE_SYM)},
 
550
  { "ADDTIME",          F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_addtime)},
 
551
  { "AES_ENCRYPT",      F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_aes_encrypt)},
 
552
  { "AES_DECRYPT",      F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_aes_decrypt)},
 
553
  { "AREA",             F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_area)},
 
554
  { "ASIN",             F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_asin)},
 
555
  { "ASBINARY",         F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_as_wkb)},
 
556
  { "ASTEXT",           F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_as_wkt)},
 
557
  { "ASWKB",            F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_as_wkb)},
 
558
  { "ASWKT",            F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_as_wkt)},
 
559
  { "ATAN",             SYM(ATAN)},
 
560
  { "ATAN2",            SYM(ATAN)},
 
561
  { "BENCHMARK",        SYM(BENCHMARK_SYM)},
 
562
  { "BIN",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_bin)},
 
563
  { "BIT_COUNT",        F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_bit_count)},
 
564
  { "BIT_OR",           SYM(BIT_OR)},
 
565
  { "BIT_AND",          SYM(BIT_AND)},
 
566
  { "BIT_XOR",          SYM(BIT_XOR)},
 
567
  { "CAST",             SYM(CAST_SYM)},
 
568
  { "CEIL",             F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_ceiling)},
 
569
  { "CEILING",          F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_ceiling)},
 
570
  { "BIT_LENGTH",       F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_bit_length)},
 
571
  { "CENTROID",         F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_centroid)},
 
572
  { "CHAR_LENGTH",      F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_char_length)},
 
573
  { "CHARACTER_LENGTH", F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_char_length)},
 
574
  { "COALESCE",         SYM(COALESCE)},
 
575
  { "COERCIBILITY",     F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_coercibility)},
 
576
  { "COMPRESS",         F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_compress)},
 
577
  { "CONCAT",           SYM(CONCAT)},
 
578
  { "CONCAT_WS",        SYM(CONCAT_WS)},
 
579
  { "CONNECTION_ID",    F_SYM(FUNC_ARG0),0,CREATE_FUNC(create_func_connection_id)},
 
580
  { "CONV",             F_SYM(FUNC_ARG3),0,CREATE_FUNC(create_func_conv)},
 
581
  { "CONVERT_TZ",       SYM(CONVERT_TZ_SYM)},
 
582
  { "COUNT",            SYM(COUNT_SYM)},
 
583
  { "COS",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_cos)},
 
584
  { "COT",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_cot)},
 
585
  { "CRC32",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_crc32)},
 
586
  { "CROSSES",          F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_crosses)},
 
587
  { "CURDATE",          SYM(CURDATE)},
 
588
  { "CURTIME",          SYM(CURTIME)},
 
589
  { "DATE_ADD",         SYM(DATE_ADD_INTERVAL)},
 
590
  { "DATEDIFF",         F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_datediff)},
 
591
  { "DATE_FORMAT",      F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_date_format)},
 
592
  { "DATE_SUB",         SYM(DATE_SUB_INTERVAL)},
 
593
  { "DAYNAME",          F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_dayname)},
 
594
  { "DAYOFMONTH",       F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_dayofmonth)},
 
595
  { "DAYOFWEEK",        F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_dayofweek)},
 
596
  { "DAYOFYEAR",        F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_dayofyear)},
 
597
  { "DECODE",           SYM(DECODE_SYM)},
 
598
  { "DEGREES",          F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_degrees)},
 
599
  { "DES_ENCRYPT",      SYM(DES_ENCRYPT_SYM)},
 
600
  { "DES_DECRYPT",      SYM(DES_DECRYPT_SYM)},
 
601
  { "DIMENSION",        F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_dimension)},
 
602
  { "DISJOINT",         F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_disjoint)},
 
603
  { "ELT",              SYM(ELT_FUNC)},
 
604
  { "ENCODE",           SYM(ENCODE_SYM)},
 
605
  { "ENCRYPT",          SYM(ENCRYPT)},
 
606
  { "ENDPOINT",         F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_endpoint)},
 
607
  { "ENVELOPE",         F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_envelope)},
 
608
  { "EQUALS",           F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_equals)},
 
609
  { "EXTERIORRING",     F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_exteriorring)},
 
610
  { "EXTRACT",          SYM(EXTRACT_SYM)},
 
611
  { "EXP",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_exp)},
 
612
  { "EXPORT_SET",       SYM(EXPORT_SET)},
 
613
  { "FIELD",            SYM(FIELD_FUNC)},       /* For compability */
 
614
  { "FIND_IN_SET",      F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_find_in_set)},
 
615
  { "FLOOR",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_floor)},
 
616
  { "FORMAT",           SYM(FORMAT_SYM)},
 
617
  { "FOUND_ROWS",       F_SYM(FUNC_ARG0),0,CREATE_FUNC(create_func_found_rows)},
 
618
  { "FROM_DAYS",        F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_from_days)},
 
619
  { "FROM_UNIXTIME",    SYM(FROM_UNIXTIME)},
 
620
  { "GET_LOCK",         F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_get_lock)},
 
621
  { "GEOMETRYN",        F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_geometryn)},
 
622
  { "GEOMETRYTYPE",     F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_geometry_type)},
 
623
  { "GEOMCOLLFROMTEXT", SYM(GEOMCOLLFROMTEXT)},
 
624
  { "GEOMCOLLFROMWKB",  SYM(GEOMFROMWKB)},
 
625
  { "GEOMETRYCOLLECTIONFROMTEXT",SYM(GEOMCOLLFROMTEXT)},
 
626
  { "GEOMETRYCOLLECTIONFROMWKB",SYM(GEOMFROMWKB)},
 
627
  { "GEOMETRYFROMTEXT", SYM(GEOMFROMTEXT)},
 
628
  { "GEOMETRYFROMWKB",  SYM(GEOMFROMWKB)},
 
629
  { "GEOMFROMTEXT",     SYM(GEOMFROMTEXT)},
 
630
  { "GEOMFROMWKB",      SYM(GEOMFROMWKB)},
 
631
  { "GLENGTH",          F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_glength)},
 
632
  { "GREATEST",         SYM(GREATEST_SYM)},
 
633
  { "GROUP_CONCAT",     SYM(GROUP_CONCAT_SYM)},
 
634
  { "GROUP_UNIQUE_USERS",       SYM(GROUP_UNIQUE_USERS)},
 
635
  { "HEX",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_hex)},
 
636
  { "IFNULL",           F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_ifnull)},
 
637
  { "INET_ATON",        F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_inet_aton)},
 
638
  { "INET_NTOA",        F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_inet_ntoa)},
 
639
  { "INSTR",            F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_instr)},
 
640
  { "INTERIORRINGN",    F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_interiorringn)},
 
641
  { "INTERSECTS",       F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_intersects)},
 
642
  { "ISCLOSED",         F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_isclosed)},
 
643
  { "ISEMPTY",          F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_isempty)},
 
644
  { "ISNULL",           F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_isnull)},
 
645
  { "IS_FREE_LOCK",     F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_is_free_lock)},
 
646
  { "IS_USED_LOCK",     F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_is_used_lock)},
 
647
  { "LAST_INSERT_ID",   SYM(LAST_INSERT_ID)},
 
648
  { "ISSIMPLE",         F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_issimple)},
 
649
  { "LAST_DAY",         F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_last_day)},
 
650
  { "LCASE",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_lcase)},
 
651
  { "LEAST",            SYM(LEAST_SYM)},
 
652
  { "LENGTH",           F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_length)},
 
653
  { "LN",               F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_ln)},
 
654
  { "LINEFROMTEXT",     SYM(LINEFROMTEXT)},
 
655
  { "LINEFROMWKB",      SYM(GEOMFROMWKB)},
 
656
  { "LINESTRINGFROMTEXT",SYM(LINEFROMTEXT)},
 
657
  { "LINESTRINGFROMWKB",SYM(GEOMFROMWKB)},
 
658
  { "LOAD_FILE",        F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_load_file)},
 
659
  { "LOCATE",           SYM(LOCATE)},
 
660
  { "LOG",              SYM(LOG_SYM)},
 
661
  { "LOG2",             F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_log2)},
 
662
  { "LOG10",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_log10)},
 
663
  { "LOWER",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_lcase)},
 
664
  { "LPAD",             F_SYM(FUNC_ARG3),0,CREATE_FUNC(create_func_lpad)},
 
665
  { "LTRIM",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_ltrim)},
 
666
  { "MAKE_SET",         SYM(MAKE_SET_SYM)},
 
667
  { "MAKEDATE",         F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_makedate)},
 
668
  { "MAKETIME",         F_SYM(FUNC_ARG3),0,CREATE_FUNC(create_func_maketime)},
 
669
  { "MASTER_POS_WAIT",  SYM(MASTER_POS_WAIT)},
 
670
  { "MAX",              SYM(MAX_SYM)},
 
671
  { "MBRCONTAINS",      F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_contains)},
 
672
  { "MBRDISJOINT",      F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_disjoint)},
 
673
  { "MBREQUAL",         F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_equals)},
 
674
  { "MBRINTERSECTS",    F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_intersects)},
 
675
  { "MBROVERLAPS",      F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_overlaps)},
 
676
  { "MBRTOUCHES",       F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_touches)},
 
677
  { "MBRWITHIN",        F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_within)},
 
678
  { "MD5",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_md5)},
 
679
  { "MID",              SYM(SUBSTRING)},        /* unireg function */
 
680
  { "MIN",              SYM(MIN_SYM)},
 
681
  { "MLINEFROMTEXT",    SYM(MLINEFROMTEXT)},
 
682
  { "MLINEFROMWKB",     SYM(GEOMFROMWKB)},
 
683
  { "MPOINTFROMTEXT",   SYM(MPOINTFROMTEXT)},
 
684
  { "MPOINTFROMWKB",    SYM(GEOMFROMWKB)},
 
685
  { "MPOLYFROMTEXT",    SYM(MPOLYFROMTEXT)},
 
686
  { "MPOLYFROMWKB",     SYM(GEOMFROMWKB)},
 
687
  { "MONTHNAME",        F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_monthname)},
 
688
  { "MULTILINESTRINGFROMTEXT",SYM(MLINEFROMTEXT)},
 
689
  { "MULTILINESTRINGFROMWKB",SYM(GEOMFROMWKB)},
 
690
  { "MULTIPOINTFROMTEXT",SYM(MPOINTFROMTEXT)},
 
691
  { "MULTIPOINTFROMWKB",SYM(GEOMFROMWKB)},
 
692
  { "MULTIPOLYGONFROMTEXT",SYM(MPOLYFROMTEXT)},
 
693
  { "MULTIPOLYGONFROMWKB",SYM(GEOMFROMWKB)},
 
694
  { "NAME_CONST",       F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_name_const)},
 
695
  { "NOW",              SYM(NOW_SYM)},
 
696
  { "NULLIF",           F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_nullif)},
 
697
  { "NUMGEOMETRIES",    F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_numgeometries)},
 
698
  { "NUMINTERIORRINGS", F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_numinteriorring)},
 
699
  { "NUMPOINTS",        F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_numpoints)},
 
700
  { "OCTET_LENGTH",     F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_length)},
 
701
  { "OCT",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_oct)},
 
702
  { "ORD",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_ord)},
 
703
  { "OVERLAPS",         F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_overlaps)},
 
704
  { "PERIOD_ADD",       F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_period_add)},
 
705
  { "PERIOD_DIFF",      F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_period_diff)},
 
706
  { "PI",               F_SYM(FUNC_ARG0),0,CREATE_FUNC(create_func_pi)},
 
707
  { "POINTFROMTEXT",    SYM(POINTFROMTEXT)},
 
708
  { "POINTFROMWKB",     SYM(GEOMFROMWKB)},
 
709
  { "POINTN",           F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_pointn)},
 
710
  { "POLYFROMTEXT",     SYM(POLYFROMTEXT)},
 
711
  { "POLYFROMWKB",      SYM(GEOMFROMWKB)},
 
712
  { "POLYGONFROMTEXT",  SYM(POLYFROMTEXT)},
 
713
  { "POLYGONFROMWKB",   SYM(GEOMFROMWKB)},
 
714
  { "POSITION",         SYM(POSITION_SYM)},
 
715
  { "POW",              F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_pow)},
 
716
  { "POWER",            F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_pow)},
 
717
  { "QUOTE",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_quote)},
 
718
  { "RADIANS",          F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_radians)},
 
719
  { "RAND",             SYM(RAND)},
 
720
  { "RELEASE_LOCK",     F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_release_lock)},
 
721
  { "REVERSE",          F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_reverse)},
 
722
  { "ROUND",            SYM(ROUND)},
 
723
  { "ROW_COUNT",        SYM(ROW_COUNT_SYM)},
 
724
  { "RPAD",             F_SYM(FUNC_ARG3),0,CREATE_FUNC(create_func_rpad)},
 
725
  { "RTRIM",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_rtrim)},
 
726
  { "SEC_TO_TIME",      F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_sec_to_time)},
 
727
  { "SESSION_USER",     SYM(USER)},
 
728
  { "SUBDATE",          SYM(SUBDATE_SYM)},
 
729
  { "SIGN",             F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_sign)},
 
730
  { "SIN",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_sin)},
 
731
  { "SHA",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_sha)},
 
732
  { "SHA1",             F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_sha)},
 
733
  { "SLEEP",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_sleep)},
 
734
  { "SOUNDEX",          F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_soundex)},
 
735
  { "SPACE",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_space)},
 
736
  { "SQRT",             F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_sqrt)},
 
737
  { "SRID",             F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_srid)},
 
738
  { "STARTPOINT",       F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_startpoint)},
 
739
  { "STD",              SYM(STD_SYM)},
 
740
  { "STDDEV",           SYM(STD_SYM)},
 
741
  { "STDDEV_POP",       SYM(STD_SYM)},
 
742
  { "STDDEV_SAMP",      SYM(STDDEV_SAMP_SYM)},
 
743
  { "STR_TO_DATE",      F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_str_to_date)},
 
744
  { "STRCMP",           F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_strcmp)},
 
745
  { "SUBSTR",           SYM(SUBSTRING)},
 
746
  { "SUBSTRING",        SYM(SUBSTRING)},
 
747
  { "SUBSTRING_INDEX",  SYM(SUBSTRING_INDEX)},
 
748
  { "SUBTIME",          F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_subtime)},
 
749
  { "SUM",              SYM(SUM_SYM)},
 
750
  { "SYSDATE",          SYM(SYSDATE)},
 
751
  { "SYSTEM_USER",      SYM(USER)},
 
752
  { "TAN",              F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_tan)},
 
753
  { "TIME_FORMAT",      F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_time_format)},
 
754
  { "TIME_TO_SEC",      F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_time_to_sec)},
 
755
  { "TIMEDIFF",         F_SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_timediff)},
 
756
  { "TO_DAYS",          F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_to_days)},
 
757
  { "TOUCHES",          F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_touches)},
 
758
  { "TRIM",             SYM(TRIM)},
 
759
  { "UCASE",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_ucase)},
 
760
  { "UNCOMPRESS",       F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_uncompress)},
 
761
  { "UNCOMPRESSED_LENGTH", F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_uncompressed_length)},
 
762
  { "UNHEX",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_unhex)},
 
763
  { "UNIQUE_USERS",     SYM(UNIQUE_USERS)},
 
764
  { "UNIX_TIMESTAMP",   SYM(UNIX_TIMESTAMP)},
 
765
  { "UPPER",            F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_ucase)},
 
766
  { "UUID",             F_SYM(FUNC_ARG0),0,CREATE_FUNC(create_func_uuid)},
 
767
  { "VARIANCE",         SYM(VARIANCE_SYM)},
 
768
  { "VAR_POP",          SYM(VARIANCE_SYM)},
 
769
  { "VAR_SAMP",         SYM(VAR_SAMP_SYM)},
 
770
  { "VERSION",          F_SYM(FUNC_ARG0),0,CREATE_FUNC(create_func_version)},
 
771
  { "WEEKDAY",          F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_weekday)},
 
772
  { "WEEKOFYEAR",       F_SYM(FUNC_ARG1),0,CREATE_FUNC(create_func_weekofyear)},
 
773
  { "WITHIN",           F_SYM(FUNC_ARG2),0,CREATE_FUNC_GEOM(create_func_within)},
 
774
  { "X",                F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_x)},
 
775
  { "Y",                F_SYM(FUNC_ARG1),0,CREATE_FUNC_GEOM(create_func_y)},
 
776
  { "YEARWEEK",         SYM(YEARWEEK)}
 
777
};