List:Commits« Previous MessageNext Message »
From:Chad MILLER Date:December 28 2006 7:55pm
Subject:bk commit into 5.0 tree (cmiller:1.2360) BUG#24624
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of cmiller. When cmiller does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2006-12-28 13:54:47-05:00, cmiller@stripped +3 -0
  Bug#24624: MySQL client ignores its own completion table
  
  The built-in tiny list of known tokens is inserted just before we clear
  the data.  In addition, the list of commands is embarassingly small.
  
  This reorders the statements so that the hash is cleared /before/ 
  inserting these tokens.
  
  At compile-time, gets a list of tokens that /this version/ of the server 
  knows about.  This has the disadvantage that if the client is used against
  an earlier version of the server, the completion hash of functions and 
  tokens might not represent the ones available at /that server/.  Hopefully,
  our grammar doesn't change enough to make this a problem.
  
  A future enhancement could implement SHOW GRAMMAR to get all the possible
  tokens that the destination server implements.

  client/Makefile.am@stripped, 2006-12-28 13:54:37-05:00, cmiller@stripped +6 -1
    When necessary, generate a new server_tokens.h file from the lex.h file
    from the server code.

  client/mysql.cc@stripped, 2006-12-28 13:54:38-05:00, cmiller@stripped +27 -25
    Get a list of tokens that a user should expect to expand.

  client/server_tokens.h@stripped, 2006-12-28 13:54:39-05:00, cmiller@stripped
+786 -0
    A rarely-altered generated list of SQL tokens, directly from the parser.
    
    We check this in so that people don't need Perl to compile the server.  It
    is only necessary when one updates the sql/lex.h file.

  client/server_tokens.h@stripped, 2006-12-28 13:54:39-05:00, cmiller@stripped +0
-0

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	cmiller
# Host:	calliope.local
# Root:	/Volumes/Source/src/mysql-5.0-maint

--- 1.61/client/Makefile.am	2006-11-23 15:07:39 -05:00
+++ 1.62/client/Makefile.am	2006-12-28 13:54:37 -05:00
@@ -29,7 +29,7 @@
 				mysql_upgrade \
 				mysqltestmanagerc mysqltestmanager-pwgen
 noinst_HEADERS =		sql_string.h completion_hash.h my_readline.h \
-				client_priv.h
+				client_priv.h server_tokens.h
 mysql_SOURCES =			mysql.cc readline.cc sql_string.cc completion_hash.cc
 mysqladmin_SOURCES =		mysqladmin.cc
 mysql_LDADD =			@readline_link@ @TERMCAP_LIB@ $(LDADD) $(CXXLDFLAGS)
@@ -60,6 +60,11 @@
 			-DDATADIR="\"$(localstatedir)\""
 
 EXTRA_DIST =		get_password.c CMakeLists.txt
+
+mysql.$(OBJEXT): server_tokens.h
+
+server_tokens.h: ../sql/lex.h
+	@PERL@ -n -e 's/\{\s*("[^"]*")\s*,[^}]+}/\1/;' -e 's/^\s*#.*//;' -e
's/^(SYMBOL|SYM_GROUP) .*//;' -e 's/SYMBOL/const char* const/;' -e 's!/\*!/* D''o n''ot
ed''it.  Th''is fi''le gen''erated fr''om $< . \n!;' -p $< > $@
 
 link_sources:
 	for f in $(sql_src) ; do \

--- 1.229/client/mysql.cc	2006-12-04 13:18:07 -05:00
+++ 1.230/client/mysql.cc	2006-12-28 13:54:38 -05:00
@@ -40,6 +40,8 @@
 #include <signal.h>
 #include <violite.h>
 
+#include "server_tokens.h"
+
 #if defined(USE_LIBEDIT_INTERFACE) && defined(HAVE_LOCALE_H)
 #include <locale.h>
 #endif
@@ -280,25 +282,6 @@
     "Show warnings after every statement." },
   { "nowarning", 'w', com_nowarnings, 0,
     "Don't show warnings after every statement." },
-  /* Get bash-like expansion for some commands */
-  { "create table",     0, 0, 0, ""},
-  { "create database",  0, 0, 0, ""},
-  { "drop",             0, 0, 0, ""},
-  { "select",           0, 0, 0, ""},
-  { "insert",           0, 0, 0, ""},
-  { "replace",          0, 0, 0, ""},
-  { "update",           0, 0, 0, ""},
-  { "delete",           0, 0, 0, ""},
-  { "explain",          0, 0, 0, ""},
-  { "show databases",   0, 0, 0, ""},
-  { "show fields from", 0, 0, 0, ""},
-  { "show keys from",   0, 0, 0, ""},
-  { "show tables",      0, 0, 0, ""},
-  { "load data from",   0, 0, 0, ""},
-  { "alter table",      0, 0, 0, ""},
-  { "set option",       0, 0, 0, ""},
-  { "lock tables",      0, 0, 0, ""},
-  { "unlock tables",    0, 0, 0, ""},
   { (char *)NULL,       0, 0, 0, ""}
 };
 
@@ -1633,11 +1616,6 @@
   if (status.batch || quick || !current_db)
     DBUG_VOID_RETURN;			// We don't need completion in batches
 
-  /* hash SQL commands */
-  while (cmd->name) {
-    add_word(&ht,(char*) cmd->name);
-    cmd++;
-  }
   if (!rehash)
     DBUG_VOID_RETURN;
 
@@ -1647,7 +1625,31 @@
   completion_hash_clean(&ht);
   free_root(&hash_mem_root,MYF(0));
 
-  /* hash MySQL functions (to be implemented) */
+  /* hash client commands */
+  while (cmd->name) 
+  {
+    add_word(&ht, (char*) cmd->name);
+    cmd++;
+  }
+
+  /* hash SQL tokens */
+  for (unsigned int i= 0; i < (sizeof(symbols) / sizeof(char *)); i++)
+  {
+    add_word(&ht, (char *) symbols[i]);  /* all uppercase     (discard const
qualifier) */
+
+    /* Also add lowercase version of word */
+    char *lowercase_symbol= strdup_root(&hash_mem_root, symbols[i]); /* Don't free
until hash is unused. */
+    if (lowercase_symbol)
+    {
+      for (char *p= lowercase_symbol; *p != '\0'; p++)
+        *p= tolower(*p);
+      add_word(&ht, lowercase_symbol);
+    }
+  }
+
+  /* hash MySQL functions (user funcs to be implemented) */
+  for (unsigned int i= 0; i < (sizeof(sql_functions) / sizeof(char *)); i++)
+    add_word(&ht, (char *) sql_functions[i]);  /* (discard const qualifier) */
 
   /* hash all database names */
   if (mysql_query(&mysql,"show databases") == 0)
--- New file ---
+++ client/server_tokens.h	06/12/28 13:54:39
/* Do not edit.  This file generated from ../sql/lex.h . 
 Copyright (C) 2000-2002 MySQL AB

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */


/* Do not edit.  This file generated from ../sql/lex.h . 
 This file includes all reserved words and functions */







/* Do not edit.  This file generated from ../sql/lex.h . 
 We don't want to include sql_yacc.h into gen_lex_hash */

















/* Do not edit.  This file generated from ../sql/lex.h . 

  Symbols are broken into separated arrays to allow field names with
  same name as functions.
  These are kept sorted for human lookup (the symbols are hashed).
*/

static const char* const symbols[] = {
  "&&",
  "<",
  "<=",
  "<>",
  "!=",
  "=",
  ">",
  ">=",
  "<<",
  ">>",
  "<=>",
  "ACTION",
  "ADD",
  "AFTER",
  "AGAINST",
  "AGGREGATE",
  "ALL",
  "ALGORITHM",
  "ALTER",
  "ANALYZE",
  "AND",
  "ANY",
  "AS",
  "ASC",
  "ASCII",
  "ASENSITIVE",
  "AUTO_INCREMENT",
  "AVG",
  "AVG_ROW_LENGTH",
  "BACKUP",
  "BDB",
  "BEFORE",
  "BEGIN",
  "BERKELEYDB",
  "BETWEEN",
  "BIGINT",
  "BINARY",
  "BINLOG",
  "BIT",
  "BLOB",
  "BOOL",
  "BOOLEAN",
  "BOTH",
  "BTREE",
  "BY",
  "BYTE",
  "CACHE",
  "CALL",
  "CASCADE",
  "CASCADED",
  "CASE",
  "CHAIN",
  "CHANGE",
  "CHANGED",
  "CHAR",
  "CHARACTER",
  "CHARSET",
  "CHECK",
  "CHECKSUM",
  "CIPHER",
  "CLIENT",
  "CLOSE",
  "CODE",
  "COLLATE",
  "COLLATION",
  "COLUMN",
  "COLUMNS",
  "COMMENT",
  "COMMIT",
  "COMMITTED",
  "COMPACT",
  "COMPRESSED",
  "CONCURRENT",
  "CONDITION",
  "CONNECTION",
  "CONSISTENT",
  "CONSTRAINT",
  "CONTAINS",
  "CONTINUE",
  "CONVERT",
  "CREATE",
  "CROSS",
  "CUBE",
  "CURRENT_DATE",
  "CURRENT_TIME",
  "CURRENT_TIMESTAMP",
  "CURRENT_USER",
  "CURSOR",
  "DATA",
  "DATABASE",
  "DATABASES",
  "DATE",
  "DATETIME",
  "DAY",
  "DAY_HOUR",
  "DAY_MICROSECOND",
  "DAY_MINUTE",
  "DAY_SECOND",
  "DEALLOCATE",     
  "DEC",
  "DECIMAL",
  "DECLARE",
  "DEFAULT",
  "DEFINER",
  "DELAYED",
  "DELAY_KEY_WRITE",
  "DELETE",
  "DESC",
  "DESCRIBE",
  "DES_KEY_FILE",
  "DETERMINISTIC",
  "DIRECTORY",
  "DISABLE",
  "DISCARD",
  "DISTINCT",
  "DISTINCTROW",	/* Do not edit.  This file generated from ../sql/lex.h . 
 Access likes this */
  "DIV",
  "DO",
  "DOUBLE",
  "DROP",
  "DUAL",
  "DUMPFILE",
  "DUPLICATE",
  "DYNAMIC",
  "EACH",
  "ELSE",
  "ELSEIF",
  "ENABLE",
  "ENCLOSED",
  "END",
  "ENGINE",
  "ENGINES",
  "ENUM",
  "ERRORS",
  "ESCAPE",
  "ESCAPED",
  "EVENTS",
  "EXECUTE",
  "EXISTS",
  "EXIT",
  "EXPANSION",
  "EXPLAIN",
  "EXTENDED",
  "FALSE",
  "FAST",
  "FETCH",
  "FIELDS",
  "FILE",
  "FIRST",
  "FIXED",
  "FLOAT",
  "FLOAT4",
  "FLOAT8",
  "FLUSH",
  "FOR",
  "FORCE",
  "FOREIGN",
  "FOUND",
  "FRAC_SECOND",
  "FROM",
  "FULL",
  "FULLTEXT",
  "FUNCTION",
  "GEOMETRY",
  "GEOMETRYCOLLECTION",
  "GET_FORMAT",
  "GLOBAL",
  "GRANT",
  "GRANTS",
  "GROUP",
  "HANDLER",
  "HASH",
  "HAVING",
  "HELP",
  "HIGH_PRIORITY",
  "HOSTS",
  "HOUR",
  "HOUR_MICROSECOND",
  "HOUR_MINUTE",
  "HOUR_SECOND",
  "IDENTIFIED",
  "IF",
  "IGNORE",
  "IMPORT",
  "IN",
  "INDEX",
  "INDEXES",
  "INFILE",
  "INNER",
  "INNOBASE",
  "INNODB",
  "INOUT",
  "INSENSITIVE",
  "INSERT",
  "INSERT_METHOD",
  "INT",
  "INT1",
  "INT2",
  "INT3",
  "INT4",
  "INT8",
  "INTEGER",
  "INTERVAL",
  "INTO",
  "IO_THREAD",
  "IS",
  "ISOLATION",
  "ISSUER",
  "ITERATE",
  "INVOKER",
  "JOIN",
  "KEY",
  "KEYS",
  "KILL",
  "LANGUAGE",
  "LAST",
  "LEADING",
  "LEAVE",
  "LEAVES",
  "LEFT",
  "LEVEL",
  "LIKE",
  "LIMIT",
  "LINES",
  "LINESTRING",
  "LOAD",
  "LOCAL",
  "LOCALTIME",
  "LOCALTIMESTAMP",
  "LOCK",
  "LOCKS",
  "LOGS",
  "LONG",
  "LONGBLOB",
  "LONGTEXT",
  "LOOP",
  "LOW_PRIORITY",
  "MASTER",
  "MASTER_CONNECT_RETRY",
  "MASTER_HOST",
  "MASTER_LOG_FILE",
  "MASTER_LOG_POS",
  "MASTER_PASSWORD",
  "MASTER_PORT",
  "MASTER_SERVER_ID",
  "MASTER_SSL",
  "MASTER_SSL_CA",
  "MASTER_SSL_CAPATH",
  "MASTER_SSL_CERT",
  "MASTER_SSL_CIPHER",
  "MASTER_SSL_KEY",
  "MASTER_USER",
  "MATCH",
  "MAX_CONNECTIONS_PER_HOUR",
  "MAX_QUERIES_PER_HOUR",
  "MAX_ROWS",
  "MAX_UPDATES_PER_HOUR",
  "MAX_USER_CONNECTIONS",
  "MEDIUM",
  "MEDIUMBLOB",
  "MEDIUMINT",
  "MEDIUMTEXT",
  "MERGE",
  "MICROSECOND",
  "MIDDLEINT",	/* Do not edit.  This file generated from ../sql/lex.h . 
 For powerbuilder */
  "MIGRATE",
  "MINUTE",
  "MINUTE_MICROSECOND",
  "MINUTE_SECOND",
  "MIN_ROWS",
  "MOD",
  "MODE",
  "MODIFIES",
  "MODIFY",
  "MONTH",
  "MULTILINESTRING",
  "MULTIPOINT",
  "MULTIPOLYGON",
  "MUTEX",
  "NAME",
  "NAMES",
  "NATIONAL",
  "NATURAL",
  "NDB",
  "NDBCLUSTER",
  "NCHAR",
  "NEW",
  "NEXT",
  "NO",
  "NONE",
  "NOT",
  "NO_WRITE_TO_BINLOG",
  "NULL",
  "NUMERIC",
  "NVARCHAR",
  "OFFSET",
  "OLD_PASSWORD",
  "ON",
  "ONE",
  "ONE_SHOT",
  "OPEN",
  "OPTIMIZE",
  "OPTION",
  "OPTIONALLY",
  "OR",
  "ORDER",
  "OUT",
  "OUTER",
  "OUTFILE",
  "PACK_KEYS",
  "PARTIAL",
  "PASSWORD",
  "PHASE",
  "POINT",
  "POLYGON",
  "PRECISION",
  "PREPARE",
  "PREV",
  "PRIMARY",
  "PRIVILEGES",
  "PROCEDURE",
  "PROCESS",
  "PROCESSLIST",
  "PURGE",
  "QUARTER",
  "QUERY",
  "QUICK",
  "RAID0",
  "RAID_CHUNKS",
  "RAID_CHUNKSIZE",
  "RAID_TYPE",
  "READ",
  "READS",
  "REAL",
  "RECOVER",
  "REDUNDANT",
  "REFERENCES",
  "REGEXP",
  "RELAY_LOG_FILE",
  "RELAY_LOG_POS",
  "RELAY_THREAD",
  "RELEASE",
  "RELOAD",
  "RENAME",
  "REPAIR",
  "REPEATABLE",
  "REPLACE",
  "REPLICATION",
  "REPEAT",
  "REQUIRE",
  "RESET",
  "RESTORE",
  "RESTRICT",
  "RESUME",
  "RETURN",
  "RETURNS",
  "REVOKE",
  "RIGHT",
  "RLIKE",	/* Do not edit.  This file generated from ../sql/lex.h . 
 Like in mSQL2 */
  "ROLLBACK",
  "ROLLUP",
  "ROUTINE",
  "ROW",
  "ROWS",
  "ROW_FORMAT",
  "RTREE",
  "SAVEPOINT",
  "SCHEMA",
  "SCHEMAS",
  "SECOND",
  "SECOND_MICROSECOND",
  "SECURITY",
  "SELECT",
  "SENSITIVE",
  "SEPARATOR",
  "SERIAL",
  "SERIALIZABLE",
  "SESSION",
  "SET",
  "SHARE",
  "SHOW",
  "SHUTDOWN",
  "SIGNED",
  "SIMPLE",
  "SLAVE",
  "SNAPSHOT",
  "SMALLINT",
  "SOME",
  "SONAME",
  "SOUNDS",
  "SPATIAL",
  "SPECIFIC",
  "SQL",
  "SQLEXCEPTION",
  "SQLSTATE",
  "SQLWARNING",
  "SQL_BIG_RESULT",
  "SQL_BUFFER_RESULT",
  "SQL_CACHE",
  "SQL_CALC_FOUND_ROWS",
  "SQL_NO_CACHE",
  "SQL_SMALL_RESULT",
  "SQL_THREAD",
  "SQL_TSI_FRAC_SECOND",
  "SQL_TSI_SECOND",
  "SQL_TSI_MINUTE",
  "SQL_TSI_HOUR",
  "SQL_TSI_DAY",
  "SQL_TSI_WEEK",
  "SQL_TSI_MONTH",
  "SQL_TSI_QUARTER",
  "SQL_TSI_YEAR",
  "SSL",
  "START",
  "STARTING",
  "STATUS",
  "STOP",
  "STORAGE",
  "STRAIGHT_JOIN",
  "STRING",
  "STRIPED",
  "SUBJECT",
  "SUPER",
  "SUSPEND",
  "TABLE",
  "TABLES",
  "TABLESPACE",
  "TEMPORARY",
  "TEMPTABLE",
  "TERMINATED",
  "TEXT",
  "THEN",
  "TIME",
  "TIMESTAMP",
  "TIMESTAMPADD",
  "TIMESTAMPDIFF",
  "TINYBLOB",
  "TINYINT",
  "TINYTEXT",
  "TO",
  "TRAILING",
  "TRANSACTION",
  "TRIGGER",
  "TRIGGERS",
  "TRUE",
  "TRUNCATE",
  "TYPE",
  "TYPES",
  "UNCOMMITTED",
  "UNDEFINED",
  "UNDO",
  "UNICODE",
  "UNION",
  "UNIQUE",
  "UNKNOWN",
  "UNLOCK",
  "UNSIGNED",
  "UNTIL",
  "UPDATE",
  "UPGRADE",
  "USAGE",
  "USE",
  "USER",
  "USER_RESOURCES",
  "USE_FRM",
  "USING",
  "UTC_DATE",
  "UTC_TIME",
  "UTC_TIMESTAMP",
  "VALUE",
  "VALUES",
  "VARBINARY",
  "VARCHAR",
  "VARCHARACTER",
  "VARIABLES",
  "VARYING",
  "WARNINGS",
  "WEEK",
  "WHEN",
  "WHERE",
  "WHILE",
  "VIEW",
  "WITH",
  "WORK",
  "WRITE",
  "X509",
  "XOR",
  "XA",
  "YEAR",
  "YEAR_MONTH",
  "ZEROFILL",
  "||"
};


static const char* const sql_functions[] = {
  "ABS",
  "ACOS",
  "ADDDATE",
  "ADDTIME",
  "AES_ENCRYPT",
  "AES_DECRYPT",
  "AREA",
  "ASIN",
  "ASBINARY",
  "ASTEXT",
  "ASWKB",
  "ASWKT",
  "ATAN",
  "ATAN2",
  "BENCHMARK",
  "BIN",
  "BIT_COUNT",
  "BIT_OR",
  "BIT_AND",
  "BIT_XOR",
  "CAST",
  "CEIL",
  "CEILING",
  "BIT_LENGTH",
  "CENTROID",
  "CHAR_LENGTH",
  "CHARACTER_LENGTH",
  "COALESCE",
  "COERCIBILITY",
  "COMPRESS",
  "CONCAT",
  "CONCAT_WS",
  "CONNECTION_ID",
  "CONV",
  "CONVERT_TZ",
  "COUNT",
  "COS",
  "COT",
  "CRC32",
  "CROSSES",
  "CURDATE",
  "CURTIME",
  "DATE_ADD",
  "DATEDIFF",
  "DATE_FORMAT",
  "DATE_SUB",
  "DAYNAME",
  "DAYOFMONTH",
  "DAYOFWEEK",
  "DAYOFYEAR",
  "DECODE",
  "DEGREES",
  "DES_ENCRYPT",
  "DES_DECRYPT",
  "DIMENSION",
  "DISJOINT",
  "ELT",
  "ENCODE",
  "ENCRYPT",
  "ENDPOINT",
  "ENVELOPE",
  "EQUALS",
  "EXTERIORRING",
  "EXTRACT",
  "EXP",
  "EXPORT_SET",
  "FIELD",	/* Do not edit.  This file generated from ../sql/lex.h . 
 For compability */
  "FIND_IN_SET",
  "FLOOR",
  "FORMAT",
  "FOUND_ROWS",
  "FROM_DAYS",
  "FROM_UNIXTIME",
  "GET_LOCK",
  "GEOMETRYN",
  "GEOMETRYTYPE",
  "GEOMCOLLFROMTEXT",
  "GEOMCOLLFROMWKB",
  "GEOMETRYCOLLECTIONFROMTEXT",
  "GEOMETRYCOLLECTIONFROMWKB",
  "GEOMETRYFROMTEXT",
  "GEOMETRYFROMWKB",
  "GEOMFROMTEXT",
  "GEOMFROMWKB",
  "GLENGTH",
  "GREATEST",
  "GROUP_CONCAT",
  "GROUP_UNIQUE_USERS",
  "HEX",
  "IFNULL",
  "INET_ATON",
  "INET_NTOA",
  "INSTR",
  "INTERIORRINGN",
  "INTERSECTS",
  "ISCLOSED",
  "ISEMPTY",
  "ISNULL",
  "IS_FREE_LOCK",
  "IS_USED_LOCK",
  "LAST_INSERT_ID",
  "ISSIMPLE",
  "LAST_DAY",
  "LCASE",
  "LEAST",
  "LENGTH",
  "LN",
  "LINEFROMTEXT",
  "LINEFROMWKB",
  "LINESTRINGFROMTEXT",
  "LINESTRINGFROMWKB",
  "LOAD_FILE",
  "LOCATE",
  "LOG",
  "LOG2",
  "LOG10",
  "LOWER",
  "LPAD",
  "LTRIM",
  "MAKE_SET",
  "MAKEDATE",
  "MAKETIME",
  "MASTER_POS_WAIT",
  "MAX",
  "MBRCONTAINS",
  "MBRDISJOINT",
  "MBREQUAL",
  "MBRINTERSECTS",
  "MBROVERLAPS",
  "MBRTOUCHES",
  "MBRWITHIN",
  "MD5",
  "MID",	/* Do not edit.  This file generated from ../sql/lex.h . 
 unireg function */
  "MIN",
  "MLINEFROMTEXT",
  "MLINEFROMWKB",
  "MPOINTFROMTEXT",
  "MPOINTFROMWKB",
  "MPOLYFROMTEXT",
  "MPOLYFROMWKB",
  "MONTHNAME",
  "MULTILINESTRINGFROMTEXT",
  "MULTILINESTRINGFROMWKB",
  "MULTIPOINTFROMTEXT",
  "MULTIPOINTFROMWKB",
  "MULTIPOLYGONFROMTEXT",
  "MULTIPOLYGONFROMWKB",
  "NAME_CONST",
  "NOW",
  "NULLIF",
  "NUMGEOMETRIES",
  "NUMINTERIORRINGS",
  "NUMPOINTS",
  "OCTET_LENGTH",
  "OCT",
  "ORD",
  "OVERLAPS",
  "PERIOD_ADD",
  "PERIOD_DIFF",
  "PI",
  "POINTFROMTEXT",
  "POINTFROMWKB",
  "POINTN",
  "POLYFROMTEXT",
  "POLYFROMWKB",
  "POLYGONFROMTEXT",
  "POLYGONFROMWKB",
  "POSITION",
  "POW",
  "POWER",
  "QUOTE",
  "RADIANS",
  "RAND",
  "RELEASE_LOCK",
  "REVERSE",
  "ROUND",
  "ROW_COUNT",
  "RPAD",
  "RTRIM",
  "SEC_TO_TIME",
  "SESSION_USER",
  "SUBDATE",
  "SIGN",
  "SIN",
  "SHA",
  "SHA1",
  "SLEEP",
  "SOUNDEX",
  "SPACE",
  "SQRT",
  "SRID",
  "STARTPOINT",
  "STD",
  "STDDEV",
  "STDDEV_POP",
  "STDDEV_SAMP",
  "STR_TO_DATE",
  "STRCMP",
  "SUBSTR",
  "SUBSTRING",
  "SUBSTRING_INDEX",
  "SUBTIME",
  "SUM",
  "SYSDATE",
  "SYSTEM_USER",
  "TAN",
  "TIME_FORMAT",
  "TIME_TO_SEC",
  "TIMEDIFF",
  "TO_DAYS",
  "TOUCHES",
  "TRIM",
  "UCASE",
  "UNCOMPRESS",
  "UNCOMPRESSED_LENGTH",
  "UNHEX",
  "UNIQUE_USERS",
  "UNIX_TIMESTAMP",
  "UPPER",
  "UUID",
  "VARIANCE",
  "VAR_POP",
  "VAR_SAMP",
  "VERSION",
  "WEEKDAY",
  "WEEKOFYEAR",
  "WITHIN",
  "X",
  "Y",
  "YEARWEEK"
};

Thread
bk commit into 5.0 tree (cmiller:1.2360) BUG#24624Chad MILLER29 Dec