lex.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:28k
源码类别:

MySQL数据库

开发平台:

Visual C++

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