<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * SQL Parser Matching Data
 *
 * Copyright 2002 Robin Johnson <robbat2@users.sourceforge.net>
 * http://www.orbis-terrarum.net/?l=people.robbat2
 *
 * This data is used by the SQL Parser to recognize keywords
 *
 * It has been extracted from the lex.h file in the MySQL BK tree
 * (around 4.0.2) as well as the MySQL documentation.
 *
 * It's easier to use only uppercase for proper sorting. In case of
 * doubt, use the test case to verify.
 *
 * @package PhpMyAdmin
 */
if (! defined('PHPMYADMIN')) {
    exit;
}

if (! isset($GLOBALS['sql_delimiter'])) {
        $GLOBALS['sql_delimiter'] = ';';
}

/**
 * @global array MySQL function names
 */
$PMA_SQPdata_function_name = array (
    'ABS',
    'ACOS',
    'ADDDATE',
    'ADDTIME',
    'AES_DECRYPT',
    'AES_ENCRYPT',
    'AREA',                     // Area() polygon-property-functions.html
    'ASBINARY',                 // AsBinary()
    'ASCII',
    'ASIN',
    'ASTEXT',                   // AsText()
    'ATAN',
    'ATAN2',
    'AVG',
    'BDMPOLYFROMTEXT',          // BdMPolyFromText()
    'BDMPOLYFROMWKB',           // BdMPolyFromWKB()
    'BDPOLYFROMTEXT',           // BdPolyFromText()
    'BDPOLYFROMWKB',            // BdPolyFromWKB()
    'BENCHMARK',
    'BIN',
    'BIT_AND',
    'BIT_COUNT',
    'BIT_LENGTH',
    'BIT_OR',
    'BIT_XOR',                  // group-by-functions.html
    'BOUNDARY',                 // Boundary() general-geometry-property-functions.html
    'BUFFER',                   // Buffer()
    'CAST',
    'CEIL',
    'CEILING',
    'CENTROID',                 // Centroid() multipolygon-property-functions.html
    'CHAR',                     // string-functions.html
    'CHARACTER_LENGTH',
    'CHARSET',                  // information-functions.html
    'CHAR_LENGTH',
    'COALESCE',
    'COERCIBILITY',             // information-functions.html
    'COLLATION',                // information-functions.html
    'COMPRESS',                 // string-functions.html
    'CONCAT',
    'CONCAT_WS',
    'CONNECTION_ID',
    'CONTAINS',                 // Contains()
    'CONV',
    'CONVERT',
    'CONVERT_TZ',
    'CONVEXHULL',               // ConvexHull()
    'COS',
    'COT',
    'COUNT',
    'CRC32',                    // mathematical-functions.html
    'CROSSES',                  // Crosses()
    'CURDATE',
    'CURRENT_DATE',
    'CURRENT_TIME',
    'CURRENT_TIMESTAMP',
    'CURRENT_USER',
    'CURTIME',
    'DATABASE',
    'DATE',                     // date-and-time-functions.html
    'DATEDIFF',                 // date-and-time-functions.html
    'DATE_ADD',
    'DATE_DIFF',
    'DATE_FORMAT',
    'DATE_SUB',
    'DAY',
    'DAYNAME',
    'DAYOFMONTH',
    'DAYOFWEEK',
    'DAYOFYEAR',
    'DECODE',
    'DEFAULT',                  // miscellaneous-functions.html
    'DEGREES',
    'DES_DECRYPT',
    'DES_ENCRYPT',
    'DIFFERENCE',               // Difference()
    'DIMENSION',                // Dimension() general-geometry-property-functions.html
    'DISJOINT',                 // Disjoint()
    'DISTANCE',                 // Distance()
    'ELT',
    'ENCODE',
    'ENCRYPT',
    'ENDPOINT',                 // EndPoint() linestring-property-functions.html
    'ENVELOPE',                 // Envelope() general-geometry-property-functions.html
    'EQUALS',                   // Equals()
    'EXP',
    'EXPORT_SET',
    'EXTERIORRING',             // ExteriorRing() polygon-property-functions.html
    'EXTRACT',
    'EXTRACTVALUE',             // ExtractValue() xml-functions.html
    'FIELD',
    'FIND_IN_SET',
    'FLOOR',
    'FORMAT',
    'FOUND_ROWS',
    'FROM_DAYS',
    'FROM_UNIXTIME',
    'GEOMCOLLFROMTEXT',         // GeomCollFromText()
    'GEOMCOLLFROMWKB',          // GeomCollFromWKB()
    'GEOMETRYCOLLECTION',       // GeometryCollection()
    'GEOMETRYCOLLECTIONFROMTEXT',   // GeometryCollectionFromText()
    'GEOMETRYCOLLECTIONFROMWKB',    // GeometryCollectionFromWKB()
    'GEOMETRYFROMTEXT',         // GeometryFromText()
    'GEOMETRYFROMWKB',          // GeometryFromWKB()
    'GEOMETRYN',                // GeometryN() geometrycollection-property-functions.html
    'GEOMETRYTYPE',             // GeometryType() general-geometry-property-functions.html
    'GEOMFROMTEXT',             // GeomFromText()
    'GEOMFROMWKB',              // GeomFromWKB()
    'GET_FORMAT',
    'GET_LOCK',
    'GLENGTH',                  // GLength() linestring-property-functions.html
    'GREATEST',
    'GROUP_CONCAT',
    'GROUP_UNIQUE_USERS',
    'HEX',
    'HOUR',
    'IF',                       //control-flow-functions.html
    'IFNULL',
    'INET_ATON',
    'INET_NTOA',
    'INSERT',                   // string-functions.html
    'INSTR',
    'INTERIORRINGN',            // InteriorRingN() polygon-property-functions.html
    'INTERSECTION',             // Intersection()
    'INTERSECTS',               // Intersects()
    'INTERVAL',
    'ISCLOSED',                 // IsClosed() multilinestring-property-functions.html
    'ISEMPTY',                  // IsEmpty() general-geometry-property-functions.html
    'ISNULL',
    'ISRING',                   // IsRing() linestring-property-functions.html
    'ISSIMPLE',                 // IsSimple() general-geometry-property-functions.html
    'IS_FREE_LOCK',
    'IS_USED_LOCK',             // miscellaneous-functions.html
    'LAST_DAY',
    'LAST_INSERT_ID',
    'LCASE',
    'LEAST',
    'LEFT',
    'LENGTH',
    'LINEFROMTEXT',             // LineFromText()
    'LINEFROMWKB',              // LineFromWKB()
    'LINESTRING',               // LineString()
    'LINESTRINGFROMTEXT',       // LineStringFromText()
    'LINESTRINGFROMWKB',        // LineStringFromWKB()
    'LN',
    'LOAD_FILE',
    'LOCALTIME',
    'LOCALTIMESTAMP',
    'LOCATE',
    'LOG',
    'LOG10',
    'LOG2',
    'LOWER',
    'LPAD',
    'LTRIM',
    'MAKEDATE',
    'MAKETIME',
    'MAKE_SET',
    'MASTER_POS_WAIT',
    'MAX',
    'MBRCONTAINS',              // MBRContains()
    'MBRDISJOINT',              // MBRDisjoint()
    'MBREQUAL',                 // MBREqual()
    'MBRINTERSECTS',            // MBRIntersects()
    'MBROVERLAPS',              // MBROverlaps()
    'MBRTOUCHES',               // MBRTouches()
    'MBRWITHIN',                // MBRWithin()
    'MD5',
    'MICROSECOND',
    'MID',
    'MIN',
    'MINUTE',
    'MLINEFROMTEXT',            // MLineFromText()
    'MLINEFROMWKB',             // MLineFromWKB()
    'MOD',
    'MONTH',
    'MONTHNAME',
    'MPOINTFROMTEXT',           // MPointFromText()
    'MPOINTFROMWKB',            // MPointFromWKB()
    'MPOLYFROMTEXT',            // MPolyFromText()
    'MPOLYFROMWKB',             // MPolyFromWKB()
    'MULTILINESTRING',          // MultiLineString()
    'MULTILINESTRINGFROMTEXT',  // MultiLineStringFromText()
    'MULTILINESTRINGFROMWKB',   // MultiLineStringFromWKB()
    'MULTIPOINT',               // MultiPoint()
    'MULTIPOINTFROMTEXT',       // MultiPointFromText()
    'MULTIPOINTFROMWKB',        // MultiPointFromWKB()
    'MULTIPOLYGON',             // MultiPolygon()
    'MULTIPOLYGONFROMTEXT',     // MultiPolygonFromText()
    'MULTIPOLYGONFROMWKB',      // MultiPolygonFromWKB()
    'NAME_CONST',               // NAME_CONST()
    'NOW',                      // NOW()
    'NULLIF',
    'NUMGEOMETRIES',            // NumGeometries() geometrycollection-property-functions.html
    'NUMINTERIORRINGS',         // NumInteriorRings() polygon-property-functions.html
    'NUMPOINTS',                // NumPoints() linestring-property-functions.html
    'OCT',
    'OCTET_LENGTH',
    'OLD_PASSWORD',
    'ORD',
    'OVERLAPS',                 // Overlaps()
    'PASSWORD',
    'PERIOD_ADD',
    'PERIOD_DIFF',
    'PI',
    'POINT',                    // Point()
    'POINTFROMTEXT',            // PointFromText()
    'POINTFROMWKB',             // PointFromWKB()
    'POINTN',                   // PointN() inestring-property-functions.html
    'POINTONSURFACE',           // PointOnSurface() multipolygon-property-functions.html
    'POLYFROMTEXT',             // PolyFromText()
    'POLYFROMWKB',              // PolyFromWKB()
    'POLYGON',                  // Polygon()
    'POLYGONFROMTEXT',          // PolygonFromText()
    'POLYGONFROMWKB',           // PolygonFromWKB()
    'POSITION',
    'POW',
    'POWER',
    'QUARTER',
    'QUOTE',
    'RADIANS',
    'RAND',
    'RELATED',                  // Related()
    'RELEASE_LOCK',
    'REPEAT',
    'REPLACE',                  // string-functions.html
    'REVERSE',
    'RIGHT',
    'ROUND',
    'ROW_COUNT',                // information-functions.html
    'RPAD',
    'RTRIM',
    'SCHEMA',                   // information-functions.html
    'SECOND',
    'SEC_TO_TIME',
    'SESSION_USER',
    'SHA',
    'SHA1',
    'SIGN',
    'SIN',
    'SLEEP',                    // miscellaneous-functions.html
    'SOUNDEX',
    'SPACE',
    'SQRT',
    'SRID',                     // general-geometry-property-functions.html
    'STARTPOINT',               // StartPoint() linestring-property-functions.html
    'STD',
    'STDDEV',
    'STDDEV_POP',               // group-by-functions.html
    'STDDEV_SAMP',              // group-by-functions.html
    'STRCMP',
    'STR_TO_DATE',
    'SUBDATE',
    'SUBSTR',
    'SUBSTRING',
    'SUBSTRING_INDEX',
    'SUBTIME',
    'SUM',
    'SYMDIFFERENCE',            // SymDifference()
    'SYSDATE',
    'SYSTEM_USER',
    'TAN',
    'TIME',
    'TIMEDIFF',
    'TIMESTAMP',
    'TIMESTAMPADD',
    'TIMESTAMPDIFF',
    'TIME_FORMAT',
    'TIME_TO_SEC',
    'TOUCHES',                  // Touches()
    'TO_DAYS',
    'TRIM',
    'TRUNCATE',                 // mathematical-functions.html
    'UCASE',
    'UNCOMPRESS',               // string-functions.html
    'UNCOMPRESSED_LENGTH',      // string-functions.html
    'UNHEX',                    // string-functions.html
    'UNIQUE_USERS',
    'UNIX_TIMESTAMP',
    'UPDATEXML',                // UpdateXML() xml-functions.html
    'UPPER',
    'USER',
    'UTC_DATE',
    'UTC_TIME',
    'UTC_TIMESTAMP',
    'UUID',                     // miscellaneous-functions.html
    'VARIANCE',                 // group-by-functions.html
    'VAR_POP',                  // group-by-functions.html
    'VAR_SAMP',                 // group-by-functions.html
    'VERSION',
    'WEEK',
    'WEEKDAY',
    'WEEKOFYEAR',
    'WITHIN',                   // Within()
    'X',                        // point-property-functions.html
    'Y',                        // point-property-functions.html
    'YEAR',
    'YEARWEEK'
);

/**
 * @global array MySQL attributes
 */
$PMA_SQPdata_column_attrib = array (
    'ARCHIVE',          // Engine
    'ASCII',
    'AUTO_INCREMENT',
    'BDB',              // Engine
    'BERKELEYDB',       // Engine alias BDB
    'BINARY',
    'BLACKHOLE',        // Engine
    'CSV',              // Engine
    'DEFAULT',
    'EXAMPLE',          // Engine
    'FEDERATED',        // Engine
    'HEAP',             // Engine
    'INNOBASE',         // Engine alias InnoDB
    'INNODB',           // Engine InnoDB
    'ISAM',             // Engine
    'MARIA',            // Engine
    'MEMORY',           // Engine alias HEAP, but preferred
    'MERGE',            // Engine
    'MRG_ISAM',         // Engine
    'MRG_MYISAM',       // Engine alias MERGE
    'MYISAM',           // Engine MyISAM
    'NATIONAL',
    'NDB',              // Engine alias NDBCLUSTER
    'NDBCLUSTER',       // Engine
    'PRECISION',
    'UNDEFINED',
    'UNICODE',
    'UNSIGNED',
    'VARYING',
    'ZEROFILL'
);

/**
 * words that are reserved by MySQL and may not be used as identifiers without quotes
 *
 * @see http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
 *
 * @global array MySQL reserved words
 */
$PMA_SQPdata_reserved_word = array (
    'ACCESSIBLE',       // 5.1
    'ACTION',
    'ADD',
    'AFTER',
    'AGAINST',
    'AGGREGATE',
    'ALGORITHM',
    'ALL',
    'ALTER',
    'ANALYSE',
    'ANALYZE',
    'AND',
    'AS',
    'ASC',
    'AUTOCOMMIT',
    'AUTO_INCREMENT',
    'AVG_ROW_LENGTH',
    'BACKUP',
    'BEGIN',
    'BETWEEN',
    'BINLOG',
    'BOTH',
    'BY',
    'CASCADE',
    'CASE',
    'CHANGE',
    'CHANGED',
    'CHARSET',
    'CHECK',
    'CHECKSUM',
    'COLLATE',
    'COLLATION',
    'COLUMN',
    'COLUMNS',
    'COMMENT',
    'COMMIT',
    'COMMITTED',
    'COMPRESSED',
    'CONCURRENT',
    'CONSTRAINT',
    'CONTAINS',
    'CONVERT',
    'CREATE',
    'CROSS',
    'CURRENT_TIMESTAMP',
    'DATABASE',
    'DATABASES',
    'DAY',
    'DAY_HOUR',
    'DAY_MINUTE',
    'DAY_SECOND',
    'DECLARE',
    'DEFINER',
    'DELAYED',
    'DELAY_KEY_WRITE',
    'DELETE',
    'DESC',
    'DESCRIBE',
    'DETERMINISTIC',
    'DISTINCT',
    'DISTINCTROW',
    'DIV',
    'DO',
    'DROP',
    'DUMPFILE',
    'DUPLICATE',
    'DYNAMIC',
    'ELSE',
    'ENCLOSED',
    'END',
    'ENGINE',
    'ENGINES',
    'ESCAPE',
    'ESCAPED',
    'EVENTS',
    'EXECUTE',
    'EXISTS',
    'EXPLAIN',
    'EXTENDED',
    'FALSE',
    'FAST',
    'FIELDS',
    'FILE',
    'FIRST',
    'FIXED',
    'FLUSH',
    'FOR',
    'FORCE',
    'FOREIGN',
    'FROM',
    'FULL',
    'FULLTEXT',
    'FUNCTION',
    'GEMINI',
    'GEMINI_SPIN_RETRIES',
    'GENERAL',
    'GLOBAL',
    'GRANT',
    'GRANTS',
    'GROUP',
    'HAVING',
    'HEAP',
    'HIGH_PRIORITY',
    'HOSTS',
    'HOUR',
    'HOUR_MINUTE',
    'HOUR_SECOND',
    'IDENTIFIED',
    'IF',
    'IGNORE',
    'IGNORE_SERVER_IDS',
    'IN',
    'INDEX',
    'INDEXES',
    'INFILE',
    'INNER',
    'INSERT',
    'INSERT_ID',
    'INSERT_METHOD',
    'INTERVAL',
    'INTO',
    'INVOKER',
    'IS',
    'ISOLATION',
    'JOIN',
    'KEY',
    'KEYS',
    'KILL',
    'LAST_INSERT_ID',
    'LEADING',
    'LEFT',
    'LIKE',
    'LIMIT',
    'LINEAR',               // 5.1
    'LINES',
    'LOAD',
    'LOCAL',
    'LOCK',
    'LOCKS',
    'LOGS',
    'LOW_PRIORITY',
    'MARIA',                // 5.1 ?
    'MASTER_CONNECT_RETRY',
    'MASTER_HEARTBEAT_PERIOD',
    'MASTER_HOST',
    'MASTER_LOG_FILE',
    'MASTER_LOG_POS',
    'MASTER_PASSWORD',
    'MASTER_PORT',
    'MASTER_USER',
    'MATCH',
    'MAXVALUE',
    'MAX_CONNECTIONS_PER_HOUR',
    'MAX_QUERIES_PER_HOUR',
    'MAX_ROWS',
    'MAX_UPDATES_PER_HOUR',
    'MAX_USER_CONNECTIONS',
    'MEDIUM',
    'MERGE',
    'MINUTE',
    'MINUTE_SECOND',
    'MIN_ROWS',
    'MODE',
    'MODIFY',
    'MONTH',
    'MRG_MYISAM',
    'MYISAM',
    'NAMES',
    'NATURAL',
    // 'NO' is not allowed in SQL-99 but is allowed in MySQL
    //'NO',
    'NOT',
    'NULL',
    'OFFSET',
    'ON',
    'OPEN',
    'OPTIMIZE',
    'OPTION',
    'OPTIONALLY',
    'OR',
    'ORDER',
    'OUTER',
    'OUTFILE',
    'PACK_KEYS',
    'PAGE',                 // 5.1-maria ?
    'PAGE_CHECKSUM',        // 5.1
    'PARTIAL',
    'PARTITION',            // 5.1
    'PARTITIONS',           // 5.1
    'PASSWORD',
    'PRIMARY',
    'PRIVILEGES',
    'PROCEDURE',
    'PROCESS',
    'PROCESSLIST',
    'PURGE',
    'QUICK',
    'RAID0',
    'RAID_CHUNKS',
    'RAID_CHUNKSIZE',
    'RAID_TYPE',
    'RANGE',                // 5.1
    'READ',
    'READ_ONLY',            // 5.1
    'READ_WRITE',           // 5.1
    'REFERENCES',
    'REGEXP',
    'RELOAD',
    'RENAME',
    'REPAIR',
    'REPEATABLE',
    'REPLACE',
    'REPLICATION',
    'RESET',
    'RESIGNAL',
    'RESTORE',
    'RESTRICT',
    'RETURN',
    'RETURNS',
    'REVOKE',
    'RIGHT',
    'RLIKE',
    'ROLLBACK',
    'ROW',
    'ROWS',
    'ROW_FORMAT',
    'SECOND',
    'SECURITY',
    'SELECT',
    'SEPARATOR',
    'SERIALIZABLE',
    'SESSION',
    'SHARE',
    'SHOW',
    'SHUTDOWN',
    'SIGNAL',
    'SLAVE',
    'SLOW',
    'SONAME',
    'SOUNDS',                   // string-functions.html
    'SQL',
    'SQL_AUTO_IS_NULL',
    'SQL_BIG_RESULT',
    'SQL_BIG_SELECTS',
    'SQL_BIG_TABLES',
    'SQL_BUFFER_RESULT',
    'SQL_CACHE',
    'SQL_CALC_FOUND_ROWS',
    'SQL_LOG_BIN',
    'SQL_LOG_OFF',
    'SQL_LOG_UPDATE',
    'SQL_LOW_PRIORITY_UPDATES',
    'SQL_MAX_JOIN_SIZE',
    'SQL_NO_CACHE',
    'SQL_QUOTE_SHOW_CREATE',
    'SQL_SAFE_UPDATES',
    'SQL_SELECT_LIMIT',
    'SQL_SLAVE_SKIP_COUNTER',
    'SQL_SMALL_RESULT',
    'SQL_WARNINGS',
    'START',
    'STARTING',
    'STATUS',
    'STOP',
    'STORAGE',
    'STRAIGHT_JOIN',
    'STRING',
    'STRIPED',
    'SUPER',
    'TABLE',
    'TABLES',
    'TEMPORARY',
    'TERMINATED',
    'THEN',
    'TO',
    'TRAILING',
    'TRANSACTIONAL',    // 5.1 ?
    'TRUE',
    'TRUNCATE',
    'TYPE',
    'TYPES',
    'UNCOMMITTED',
    'UNION',
    'UNIQUE',
    'UNLOCK',
    'UPDATE',
    'USAGE',
    'USE',
    'USING',
    'VALUES',
    'VARIABLES',
    'VIEW',
    'WHEN',
    'WHERE',
    'WITH',
    'WORK',
    'WRITE',
    'XOR',
    'YEAR_MONTH'
);

/**
 * words forbidden to be used as column or table name wihtout quotes
 * as seen in http://dev.mysql.com/doc/mysql/en/reserved-words.html
 *
 * @global array MySQL forbidden words
 */
$PMA_SQPdata_forbidden_word = array (
    'ACCESSIBLE',       // 5.1
    'ACTION',
    'ADD',
    'AFTER',
    'AGAINST',
    'AGGREGATE',
    'ALGORITHM',
    'ALL',
    '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',
    'CLOSE',
    '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',
    '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',
    'GOTO',
    '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',
    'INVOKER',
    'IO_THREAD',
    'IS',
    'ISOLATION',
    'ISSUER',
    'ITERATE',
    'JOIN',
    'KEY',
    'KEYS',
    'KILL',
    'LABEL',
    'LANGUAGE',
    'LAST',
    'LEADING',
    'LEAVE',
    'LEAVES',
    'LEFT',
    'LIKE',
    'LIMIT',
    'LINEAR',               // 5.1
    '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',
    'MIGRATE',
    'MINUTE',
    'MINUTE_MICROSECOND',
    'MINUTE_SECOND',
    'MIN_ROWS',
    'MOD',
    'MODE',
    'MODIFIES',
    'MODIFY',
    'MONTH',
    'MULTILINESTRING',
    'MULTIPOINT',
    'MULTIPOLYGON',
    'MUTEX',
    'NAME',
    'NAMES',
    'NATIONAL',
    'NATURAL',
    'NCHAR',
    'NDB',
    'NDBCLUSTER',
    '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',
    'PROCESSLIST',
    'PURGE',
    'QUARTER',
    'QUERY',
    'QUICK',
    'RAID0',
    'RAID_CHUNKS',
    'RAID_CHUNKSIZE',
    'RAID_TYPE',
    'RANGE',                // 5.1
    'READ',
    'READS',
    'READ_ONLY',            // 5.1
    'READ_WRITE',           // 5.1
    'REAL',
    'RECOVER',
    'REDUNDANT',
    'REFERENCES',
    'REGEXP',
    'RELAY_LOG_FILE',
    'RELAY_LOG_POS',
    'RELAY_THREAD',
    'RELEASE',
    'RELOAD',
    'RENAME',
    'REPAIR',
    'REPEAT',
    'REPEATABLE',
    'REPLACE',
    'REPLICATION',
    'REQUIRE',
    'RESET',
    'RESTORE',
    'RESTRICT',
    'RESUME',
    'RETURN',
    'RETURNS',
    'REVOKE',
    'RIGHT',
    'RLIKE',
    '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',
    'SMALLINT',
    'SNAPSHOT',
    '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_DAY',
    'SQL_TSI_FRAC_SECOND',
    'SQL_TSI_HOUR',
    'SQL_TSI_MINUTE',
    'SQL_TSI_MONTH',
    'SQL_TSI_QUARTER',
    'SQL_TSI_SECOND',
    'SQL_TSI_WEEK',
    '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',
    'USAGE',
    'USE',
    'USER',
    'USER_RESOURCES',
    'USE_FRM',
    'USING',
    'UTC_DATE',
    'UTC_TIME',
    'UTC_TIMESTAMP',
    'VALUE',
    'VALUES',
    'VARBINARY',
    'VARCHAR',
    'VARCHARACTER',
    'VARIABLES',
    'VARYING',
    'VIEW',
    'WARNINGS',
    'WEEK',
    'WHEN',
    'WHERE',
    'WHILE',
    'WITH',
    'WORK',
    'WRITE',
    'X509',
    'XA',
    'XOR',
    'YEAR',
    'YEAR_MONTH',
    'ZEROFILL'
);

/**
 * the MySQL column/data types
 *
 * @see http://dev.mysql.com/doc/refman/5.1/en/data-types.html
 * @see http://dev.mysql.com/doc/refman/5.1/en/mysql-spatial-datatypes.html
 *
 * @global array MySQL column types
 */
$PMA_SQPdata_column_type = array (
    'BIGINT',
    'BINARY',
    'BIT',
    'BLOB',
    'BOOL',
    'BOOLEAN',              // numeric-type-overview.html
    'CHAR',
    'CHARACTER',
    'DATE',
    'DATETIME',
    'DEC',
    'DECIMAL',
    'DOUBLE',
    'ENUM',
    'FLOAT',
    'FLOAT4',
    'FLOAT8',
    'GEOMETRY',             // spatial
    'GEOMETRYCOLLECTION',   // spatial
    'INT',
    'INT1',
    'INT2',
    'INT3',
    'INT4',
    'INT8',
    'INTEGER',
    'LINESTRING',           // spatial
    'LONG',
    'LONGBLOB',
    'LONGTEXT',
    'MEDIUMBLOB',
    'MEDIUMINT',
    'MEDIUMTEXT',
    'MIDDLEINT',
    'MULTILINESTRING',      // spatial
    'MULTIPOINT',           // spatial
    'MULTIPOLYGON',         // spatial
    'NCHAR',
    'NUMERIC',
    'POINT',                // spatial
    'POLYGON',              // spatial
    'REAL',
    'SERIAL',               // alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
    'SET',
    'SMALLINT',
    'TEXT',
    'TIME',
    'TIMESTAMP',
    'TINYBLOB',
    'TINYINT',
    'TINYTEXT',
    'VARBINARY',
    'VARCHAR',
    'YEAR'
);

/**
 * Documentation links for operators.
 */
$PMA_SQPdata_operators_docs = array(
   '!=' => array('link' => 'comparison-operators','anchor' => 'operator_not-equal'),
   '<>' => array('link' => 'comparison-operators','anchor' => 'operator_not-equal'),
   '!' => array('link' => 'logical-operators','anchor' => 'operator_not'),
   '||' => array('link' => 'logical-operators','anchor' => 'operator_or'),
   '+' => array('link' => 'arithmetic-functions','anchor' => 'operator_plus'),
   '>>' => array('link' => 'bit-functions','anchor' => 'operator_right-shift'),
   '-' => array('link' => 'arithmetic-functions','anchor' => 'operator_minus'),
   '*' => array('link' => 'arithmetic-functions','anchor' => 'operator_times'),
   '&&' => array('link' => 'logical-operators','anchor' => 'operator_and'),
   '&' => array('link' => 'bit-functions','anchor' => 'operator_bitwise-and'),
   '~' => array('link' => 'bit-functions','anchor' => 'operator_bitwise-invert'),
   '|' => array('link' => 'bit-functions','anchor' => 'operator_bitwise-or'),
   '^' => array('link' => 'bit-functions','anchor' => 'operator_bitwise-xor'),
   '=' => array('link' => 'assignment-operators','anchor' => 'operator_assign-equal'),
   ':=' => array('link' => 'assignment-operators','anchor' => 'operator_assign-value'),
   '/' => array('link' => 'arithmetic-functions','anchor' => 'operator_divide'),
   '<=>' => array('link' => 'comparison-operators','anchor' => 'operator_equal-to'),
   '=' => array('link' => 'comparison-operators','anchor' => 'operator_equal'),
   '>=' => array('link' => 'comparison-operators','anchor' => 'operator_greater-than-or-equal'),
   '>' => array('link' => 'comparison-operators','anchor' => 'operator_greater-than'),
   '<<' => array('link' => 'bit-functions','anchor' => 'operator_left-shift'),
   '<=' => array('link' => 'comparison-operators','anchor' => 'operator_less-than-or-equal'),
   '<' => array('link' => 'comparison-operators','anchor' => 'operator_less-than'),
   '%' => array('link' => 'arithmetic-functions','anchor' => 'operator_mod')
);

/**
 * Documentation links for functions.
 */
$PMA_SQPdata_functions_docs = array(
   'ABS' => array('link' => 'mathematical-functions','anchor' => 'function_abs'),
   'ACOS' => array('link' => 'mathematical-functions','anchor' => 'function_acos'),
   'ADDDATE' => array('link' => 'date-and-time-functions','anchor' => 'function_adddate'),
   'ADDTIME' => array('link' => 'date-and-time-functions','anchor' => 'function_addtime'),
   'AES_DECRYPT' => array('link' => 'encryption-functions','anchor' => 'function_aes_decrypt'),
   'AES_ENCRYPT' => array('link' => 'encryption-functions','anchor' => 'function_aes_encrypt'),
   'AND' => array('link' => 'logical-operators','anchor' => 'operator_and'),
   'ASCII' => array('link' => 'string-functions','anchor' => 'function_ascii'),
   'ASIN' => array('link' => 'mathematical-functions','anchor' => 'function_asin'),
   'ATAN2' => array('link' => 'mathematical-functions','anchor' => 'function_atan2'),
   'ATAN' => array('link' => 'mathematical-functions','anchor' => 'function_atan2'),
   'ATAN' => array('link' => 'mathematical-functions','anchor' => 'function_atan'),
   'AVG' => array('link' => 'group-by-functions','anchor' => 'function_avg'),
   'BENCHMARK' => array('link' => 'information-functions','anchor' => 'function_benchmark'),
   'BIN' => array('link' => 'string-functions','anchor' => 'function_bin'),
   'BINARY' => array('link' => 'cast-functions','anchor' => 'operator_binary'),
   'BIT_AND' => array('link' => 'group-by-functions','anchor' => 'function_bit_and'),
   'BIT_COUNT' => array('link' => 'bit-functions','anchor' => 'function_bit_count'),
   'BIT_LENGTH' => array('link' => 'string-functions','anchor' => 'function_bit_length'),
   'BIT_OR' => array('link' => 'group-by-functions','anchor' => 'function_bit_or'),
   'BIT_XOR' => array('link' => 'group-by-functions','anchor' => 'function_bit_xor'),
   'CASE' => array('link' => 'control-flow-functions','anchor' => 'operator_case'),
   'CAST' => array('link' => 'cast-functions','anchor' => 'function_cast'),
   'CEIL' => array('link' => 'mathematical-functions','anchor' => 'function_ceil'),
   'CEILING' => array('link' => 'mathematical-functions','anchor' => 'function_ceiling'),
   'CHAR_LENGTH' => array('link' => 'string-functions','anchor' => 'function_char_length'),
   'CHAR' => array('link' => 'string-functions','anchor' => 'function_char'),
   'CHARACTER_LENGTH' => array('link' => 'string-functions','anchor' => 'function_character_length'),
   'CHARSET' => array('link' => 'information-functions','anchor' => 'function_charset'),
   'COALESCE' => array('link' => 'comparison-operators','anchor' => 'function_coalesce'),
   'COERCIBILITY' => array('link' => 'information-functions','anchor' => 'function_coercibility'),
   'COLLATION' => array('link' => 'information-functions','anchor' => 'function_collation'),
   'COMPRESS' => array('link' => 'encryption-functions','anchor' => 'function_compress'),
   'CONCAT_WS' => array('link' => 'string-functions','anchor' => 'function_concat_ws'),
   'CONCAT' => array('link' => 'string-functions','anchor' => 'function_concat'),
   'CONNECTION_ID' => array('link' => 'information-functions','anchor' => 'function_connection_id'),
   'CONV' => array('link' => 'mathematical-functions','anchor' => 'function_conv'),
   'CONVERT_TZ' => array('link' => 'date-and-time-functions','anchor' => 'function_convert_tz'),
   'Convert' => array('link' => 'cast-functions','anchor' => 'function_convert'),
   'COS' => array('link' => 'mathematical-functions','anchor' => 'function_cos'),
   'COT' => array('link' => 'mathematical-functions','anchor' => 'function_cot'),
   'COUNT' => array('link' => 'group-by-functions','anchor' => 'function_count'),
   'CRC32' => array('link' => 'mathematical-functions','anchor' => 'function_crc32'),
   'CURDATE' => array('link' => 'date-and-time-functions','anchor' => 'function_curdate'),
   'CURRENT_DATE' => array('link' => 'date-and-time-functions','anchor' => 'function_current_date'),
   'CURRENT_TIME' => array('link' => 'date-and-time-functions','anchor' => 'function_current_time'),
   'CURRENT_TIMESTAMP' => array('link' => 'date-and-time-functions','anchor' => 'function_current_timestamp'),
   'CURRENT_USER' => array('link' => 'information-functions','anchor' => 'function_current_user'),
   'CURTIME' => array('link' => 'date-and-time-functions','anchor' => 'function_curtime'),
   'DATABASE' => array('link' => 'information-functions','anchor' => 'function_database'),
   'DATE_ADD' => array('link' => 'date-and-time-functions','anchor' => 'function_date_add'),
   'DATE_FORMAT' => array('link' => 'date-and-time-functions','anchor' => 'function_date_format'),
   'DATE_SUB' => array('link' => 'date-and-time-functions','anchor' => 'function_date_sub'),
   'DATE' => array('link' => 'date-and-time-functions','anchor' => 'function_date'),
   'DATEDIFF' => array('link' => 'date-and-time-functions','anchor' => 'function_datediff'),
   'DAY' => array('link' => 'date-and-time-functions','anchor' => 'function_day'),
   'DAYNAME' => array('link' => 'date-and-time-functions','anchor' => 'function_dayname'),
   'DAYOFMONTH' => array('link' => 'date-and-time-functions','anchor' => 'function_dayofmonth'),
   'DAYOFWEEK' => array('link' => 'date-and-time-functions','anchor' => 'function_dayofweek'),
   'DAYOFYEAR' => array('link' => 'date-and-time-functions','anchor' => 'function_dayofyear'),
   'DECLARE' => array('link' => 'declare', 'anchor' => 'declare'),
   'DECODE' => array('link' => 'encryption-functions','anchor' => 'function_decode'),
   'DEFAULT' => array('link' => 'miscellaneous-functions','anchor' => 'function_default'),
   'DEGREES' => array('link' => 'mathematical-functions','anchor' => 'function_degrees'),
   'DES_DECRYPT' => array('link' => 'encryption-functions','anchor' => 'function_des_decrypt'),
   'DES_ENCRYPT' => array('link' => 'encryption-functions','anchor' => 'function_des_encrypt'),
   'DIV' => array('link' => 'arithmetic-functions','anchor' => 'operator_div'),
   'ELT' => array('link' => 'string-functions','anchor' => 'function_elt'),
   'ENCODE' => array('link' => 'encryption-functions','anchor' => 'function_encode'),
   'ENCRYPT' => array('link' => 'encryption-functions','anchor' => 'function_encrypt'),
   'EXP' => array('link' => 'mathematical-functions','anchor' => 'function_exp'),
   'EXPORT_SET' => array('link' => 'string-functions','anchor' => 'function_export_set'),
   'EXTRACT' => array('link' => 'date-and-time-functions','anchor' => 'function_extract'),
   'ExtractValue' => array('link' => 'xml-functions','anchor' => 'function_extractvalue'),
   'FIELD' => array('link' => 'string-functions','anchor' => 'function_field'),
   'FIND_IN_SET' => array('link' => 'string-functions','anchor' => 'function_find_in_set'),
   'FLOOR' => array('link' => 'mathematical-functions','anchor' => 'function_floor'),
   'FORMAT' => array('link' => 'string-functions','anchor' => 'function_format'),
   'FOUND_ROWS' => array('link' => 'information-functions','anchor' => 'function_found_rows'),
   'FROM_DAYS' => array('link' => 'date-and-time-functions','anchor' => 'function_from_days'),
   'FROM_UNIXTIME' => array('link' => 'date-and-time-functions','anchor' => 'function_from_unixtime'),
   'GET_FORMAT' => array('link' => 'date-and-time-functions','anchor' => 'function_get_format'),
   'GET_LOCK' => array('link' => 'miscellaneous-functions','anchor' => 'function_get_lock'),
   'GREATEST' => array('link' => 'comparison-operators','anchor' => 'function_greatest'),
   'GROUP_CONCAT' => array('link' => 'group-by-functions','anchor' => 'function_group_concat'),
   'HEX' => array('link' => 'string-functions','anchor' => 'function_hex'),
   'HOUR' => array('link' => 'date-and-time-functions','anchor' => 'function_hour'),
   'IF' => array('link' => 'control-flow-functions','anchor' => 'function_if'),
   'IFNULL' => array('link' => 'control-flow-functions','anchor' => 'function_ifnull'),
   'IN' => array('link' => 'comparison-operators','anchor' => 'function_in'),
   'INET_ATON' => array('link' => 'miscellaneous-functions','anchor' => 'function_inet_aton'),
   'INET_NTOA' => array('link' => 'miscellaneous-functions','anchor' => 'function_inet_ntoa'),
   'INSERT' => array('link' => 'string-functions','anchor' => 'function_insert'),
   'INSTR' => array('link' => 'string-functions','anchor' => 'function_instr'),
   'INTERVAL' => array('link' => 'comparison-operators','anchor' => 'function_interval'),
   'IS_FREE_LOCK' => array('link' => 'miscellaneous-functions','anchor' => 'function_is_free_lock'),
   'IS_USED_LOCK' => array('link' => 'miscellaneous-functions','anchor' => 'function_is_used_lock'),
   'IS' => array('link' => 'comparison-operators','anchor' => 'operator_is'),
   'ISNULL' => array('link' => 'comparison-operators','anchor' => 'function_isnull'),
   'LAST_DAY' => array('link' => 'date-and-time-functions','anchor' => 'function_last_day'),
   'LAST_INSERT_ID' => array('link' => 'information-functions','anchor' => 'function_last_insert_id'),
   'LCASE' => array('link' => 'string-functions','anchor' => 'function_lcase'),
   'LEAST' => array('link' => 'comparison-operators','anchor' => 'function_least'),
   'LEFT' => array('link' => 'string-functions','anchor' => 'function_left'),
   'LENGTH' => array('link' => 'string-functions','anchor' => 'function_length'),
   'LIKE' => array('link' => 'string-comparison-functions','anchor' => 'operator_like'),
   'LN' => array('link' => 'mathematical-functions','anchor' => 'function_ln'),
   'LOAD_FILE' => array('link' => 'string-functions','anchor' => 'function_load_file'),
   'LOCALTIME' => array('link' => 'date-and-time-functions','anchor' => 'function_localtime'),
   'LOCALTIMESTAMP' => array('link' => 'date-and-time-functions','anchor' => 'function_localtimestamp'),
   'LOCATE' => array('link' => 'string-functions','anchor' => 'function_locate'),
   'LOG10' => array('link' => 'mathematical-functions','anchor' => 'function_log10'),
   'LOG2' => array('link' => 'mathematical-functions','anchor' => 'function_log2'),
   'LOG' => array('link' => 'mathematical-functions','anchor' => 'function_log'),
   'LOWER' => array('link' => 'string-functions','anchor' => 'function_lower'),
   'LPAD' => array('link' => 'string-functions','anchor' => 'function_lpad'),
   'LTRIM' => array('link' => 'string-functions','anchor' => 'function_ltrim'),
   'MAKE_SET' => array('link' => 'string-functions','anchor' => 'function_make_set'),
   'MAKEDATE' => array('link' => 'date-and-time-functions','anchor' => 'function_makedate'),
   'MAKETIME' => array('link' => 'date-and-time-functions','anchor' => 'function_maketime'),
   'MASTER_POS_WAIT' => array('link' => 'miscellaneous-functions','anchor' => 'function_master_pos_wait'),
   'MATCH' => array('link' => 'fulltext-search','anchor' => 'function_match'),
   'MAX' => array('link' => 'group-by-functions','anchor' => 'function_max'),
   'MD5' => array('link' => 'encryption-functions','anchor' => 'function_md5'),
   'MICROSECOND' => array('link' => 'date-and-time-functions','anchor' => 'function_microsecond'),
   'MID' => array('link' => 'string-functions','anchor' => 'function_mid'),
   'MIN' => array('link' => 'group-by-functions','anchor' => 'function_min'),
   'MINUTE' => array('link' => 'date-and-time-functions','anchor' => 'function_minute'),
   'MOD' => array('link' => 'mathematical-functions','anchor' => 'function_mod'),
   'MONTH' => array('link' => 'date-and-time-functions','anchor' => 'function_month'),
   'MONTHNAME' => array('link' => 'date-and-time-functions','anchor' => 'function_monthname'),
   'NAME_CONST' => array('link' => 'miscellaneous-functions','anchor' => 'function_name_const'),
   'NOT' => array('link' => 'logical-operators','anchor' => 'operator_not'),
   'NOW' => array('link' => 'date-and-time-functions','anchor' => 'function_now'),
   'NULLIF' => array('link' => 'control-flow-functions','anchor' => 'function_nullif'),
   'OCT' => array('link' => 'mathematical-functions','anchor' => 'function_oct'),
   'OCTET_LENGTH' => array('link' => 'string-functions','anchor' => 'function_octet_length'),
   'OLD_PASSWORD' => array('link' => 'encryption-functions','anchor' => 'function_old_password'),
   'OR' => array('link' => 'logical-operators','anchor' => 'operator_or'),
   'ORD' => array('link' => 'string-functions','anchor' => 'function_ord'),
   'PASSWORD' => array('link' => 'encryption-functions','anchor' => 'function_password'),
   'PERIOD_ADD' => array('link' => 'date-and-time-functions','anchor' => 'function_period_add'),
   'PERIOD_DIFF' => array('link' => 'date-and-time-functions','anchor' => 'function_period_diff'),
   'PI' => array('link' => 'mathematical-functions','anchor' => 'function_pi'),
   'POSITION' => array('link' => 'string-functions','anchor' => 'function_position'),
   'POW' => array('link' => 'mathematical-functions','anchor' => 'function_pow'),
   'POWER' => array('link' => 'mathematical-functions','anchor' => 'function_power'),
   'QUARTER' => array('link' => 'date-and-time-functions','anchor' => 'function_quarter'),
   'QUOTE' => array('link' => 'string-functions','anchor' => 'function_quote'),
   'RADIANS' => array('link' => 'mathematical-functions','anchor' => 'function_radians'),
   'RAND' => array('link' => 'mathematical-functions','anchor' => 'function_rand'),
   'REGEXP' => array('link' => 'regexp','anchor' => 'operator_regexp'),
   'RELEASE_LOCK' => array('link' => 'miscellaneous-functions','anchor' => 'function_release_lock'),
   'REPEAT' => array('link' => 'string-functions','anchor' => 'function_repeat'),
   'REPLACE' => array('link' => 'string-functions','anchor' => 'function_replace'),
   'REVERSE' => array('link' => 'string-functions','anchor' => 'function_reverse'),
   'RIGHT' => array('link' => 'string-functions','anchor' => 'function_right'),
   'RLIKE' => array('link' => 'regexp','anchor' => 'operator_rlike'),
   'ROUND' => array('link' => 'mathematical-functions','anchor' => 'function_round'),
   'ROW_COUNT' => array('link' => 'information-functions','anchor' => 'function_row_count'),
   'RPAD' => array('link' => 'string-functions','anchor' => 'function_rpad'),
   'RTRIM' => array('link' => 'string-functions','anchor' => 'function_rtrim'),
   'SCHEMA' => array('link' => 'information-functions','anchor' => 'function_schema'),
   'SEC_TO_TIME' => array('link' => 'date-and-time-functions','anchor' => 'function_sec_to_time'),
   'SECOND' => array('link' => 'date-and-time-functions','anchor' => 'function_second'),
   'SESSION_USER' => array('link' => 'information-functions','anchor' => 'function_session_user'),
   'SHA' => array('link' => 'encryption-functions','anchor' => 'function_sha1'),
   'SHA1' => array('link' => 'encryption-functions','anchor' => 'function_sha1'),
   'SIGN' => array('link' => 'mathematical-functions','anchor' => 'function_sign'),
   'SIN' => array('link' => 'mathematical-functions','anchor' => 'function_sin'),
   'SLEEP' => array('link' => 'miscellaneous-functions','anchor' => 'function_sleep'),
   'SOUNDEX' => array('link' => 'string-functions','anchor' => 'function_soundex'),
   'SPACE' => array('link' => 'string-functions','anchor' => 'function_space'),
   'SQRT' => array('link' => 'mathematical-functions','anchor' => 'function_sqrt'),
   'STD' => array('link' => 'group-by-functions','anchor' => 'function_std'),
   'STDDEV_POP' => array('link' => 'group-by-functions','anchor' => 'function_stddev_pop'),
   'STDDEV_SAMP' => array('link' => 'group-by-functions','anchor' => 'function_stddev_samp'),
   'STDDEV' => array('link' => 'group-by-functions','anchor' => 'function_stddev'),
   'STR_TO_DATE' => array('link' => 'date-and-time-functions','anchor' => 'function_str_to_date'),
   'STRCMP' => array('link' => 'string-comparison-functions','anchor' => 'function_strcmp'),
   'SUBDATE' => array('link' => 'date-and-time-functions','anchor' => 'function_subdate'),
   'SUBSTR' => array('link' => 'string-functions','anchor' => 'function_substr'),
   'SUBSTRING_INDEX' => array('link' => 'string-functions','anchor' => 'function_substring_index'),
   'SUBSTRING' => array('link' => 'string-functions','anchor' => 'function_substring'),
   'SUBTIME' => array('link' => 'date-and-time-functions','anchor' => 'function_subtime'),
   'SUM' => array('link' => 'group-by-functions','anchor' => 'function_sum'),
   'SYSDATE' => array('link' => 'date-and-time-functions','anchor' => 'function_sysdate'),
   'SYSTEM_USER' => array('link' => 'information-functions','anchor' => 'function_system_user'),
   'TAN' => array('link' => 'mathematical-functions','anchor' => 'function_tan'),
   'TIME_FORMAT' => array('link' => 'date-and-time-functions','anchor' => 'function_time_format'),
   'TIME_TO_SEC' => array('link' => 'date-and-time-functions','anchor' => 'function_time_to_sec'),
   'TIME' => array('link' => 'date-and-time-functions','anchor' => 'function_time'),
   'TIMEDIFF' => array('link' => 'date-and-time-functions','anchor' => 'function_timediff'),
   'TIMESTAMP' => array('link' => 'date-and-time-functions','anchor' => 'function_timestamp'),
   'TIMESTAMPADD' => array('link' => 'date-and-time-functions','anchor' => 'function_timestampadd'),
   'TIMESTAMPDIFF' => array('link' => 'date-and-time-functions','anchor' => 'function_timestampdiff'),
   'TO_DAYS' => array('link' => 'date-and-time-functions','anchor' => 'function_to_days'),
   'TRIM' => array('link' => 'string-functions','anchor' => 'function_trim'),
   'TRUNCATE' => array('link' => 'mathematical-functions','anchor' => 'function_truncate'),
   'UCASE' => array('link' => 'string-functions','anchor' => 'function_ucase'),
   'UNCOMPRESS' => array('link' => 'encryption-functions','anchor' => 'function_uncompress'),
   'UNCOMPRESSED_LENGTH' => array('link' => 'encryption-functions','anchor' => 'function_uncompressed_length'),
   'UNHEX' => array('link' => 'string-functions','anchor' => 'function_unhex'),
   'UNIX_TIMESTAMP' => array('link' => 'date-and-time-functions','anchor' => 'function_unix_timestamp'),
   'UpdateXML' => array('link' => 'xml-functions','anchor' => 'function_updatexml'),
   'UPPER' => array('link' => 'string-functions','anchor' => 'function_upper'),
   'USER' => array('link' => 'information-functions','anchor' => 'function_user'),
   'UTC_DATE' => array('link' => 'date-and-time-functions','anchor' => 'function_utc_date'),
   'UTC_TIME' => array('link' => 'date-and-time-functions','anchor' => 'function_utc_time'),
   'UTC_TIMESTAMP' => array('link' => 'date-and-time-functions','anchor' => 'function_utc_timestamp'),
   'UUID_SHORT' => array('link' => 'miscellaneous-functions','anchor' => 'function_uuid_short'),
   'UUID' => array('link' => 'miscellaneous-functions','anchor' => 'function_uuid'),
   'VALUES' => array('link' => 'miscellaneous-functions','anchor' => 'function_values'),
   'VAR_POP' => array('link' => 'group-by-functions','anchor' => 'function_var_pop'),
   'VAR_SAMP' => array('link' => 'group-by-functions','anchor' => 'function_var_samp'),
   'VARIANCE' => array('link' => 'group-by-functions','anchor' => 'function_variance'),
   'VERSION' => array('link' => 'information-functions','anchor' => 'function_version'),
   'WEEK' => array('link' => 'date-and-time-functions','anchor' => 'function_week'),
   'WEEKDAY' => array('link' => 'date-and-time-functions','anchor' => 'function_weekday'),
   'WEEKOFYEAR' => array('link' => 'date-and-time-functions','anchor' => 'function_weekofyear'),
   'XOR' => array('link' => 'logical-operators','anchor' => 'operator_xor'),
   'YEAR' => array('link' => 'date-and-time-functions','anchor' => 'function_year'),
   'YEARWEEK' => array('link' => 'date-and-time-functions','anchor' => 'function_yearweek'),
   'SOUNDS_LIKE' => array('link' => 'string-functions','anchor' => 'operator_sounds-like'),
   'IS_NOT_NULL' => array('link' => 'comparison-operators','anchor' => 'operator_is-not-null'),
   'IS_NOT' => array('link' => 'comparison-operators','anchor' => 'operator_is-not'),
   'IS_NULL' => array('link' => 'comparison-operators','anchor' => 'operator_is-null'),
   'NOT_LIKE' => array('link' => 'string-comparison-functions','anchor' => 'operator_not-like'),
   'NOT_REGEXP' => array('link' => 'regexp','anchor' => 'operator_not-regexp'),
   'COUNT_DISTINCT' => array('link' => 'group-by-functions','anchor' => 'function_count-distinct'),
   'NOT_IN' => array('link' => 'comparison-operators','anchor' => 'function_not-in')
);

?>
