You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

642 lines
22 KiB

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