plugins/geshi/geshi/mysql.php
changeset 2 9e3258dfae15
parent 0 441963e5b07a
child 3 f3e2bbbd2155
equal deleted inserted replaced
1:c715631f809a 2:9e3258dfae15
     1 <?php 
     1 <?php
     2  /************************************************************************************* 
     2 /*************************************************************************************
     3  * mysql.php 
     3  * mysql.php
     4  * --------- 
     4  * ---------
     5  * Author: Carl F�rstenberg (azatoth@gmail.com) 
     5  * Author: Marjolein Katsma (marjolein.is.back@gmail.com)
     6  * Copyright: (c) 2005 Carl F�rstenberg, Nigel McNie (http://qbnz.com/highlighter) 
     6  * Copyright: (c) 2008 Marjolein Katsma (http://blog.marjoleinkatsma.com/)
     7  * Release Version: 1.0.7.20
     7  * Release Version: 1.0.8.2
     8  * Date Started: 2004/06/04 
     8  * Date Started: 2008-12-12
     9  * 
     9  *
    10  * MySQL language file for GeSHi. 
    10  * MySQL language file for GeSHi.
    11  * 
    11  *
    12  * 
    12  * Based on original MySQL language file by Carl Fürstenberg (2004); brought
    13  ************************************************************************************* 
    13  * up-to-date for current MySQL versions, and with more classes for different
    14  * 
    14  * types of keywords; several minor errors were corrected as well.
    15  * This file is part of GeSHi. 
    15  *
    16  * 
    16  * Some "classes" have two groups here: this is to allow for the fact that some
    17  * GeSHi is free software; you can redistribute it and/or modify 
    17  * keywords in MySQL have a double function: many of those are either a function
    18  * it under the terms of the GNU General Public License as published by 
    18  * (must be immediately followed by an opening bracket) or some other keyword:
    19  * the Free Software Foundation; either version 2 of the License, or 
    19  * so they can be distinguished by the presence (or not) of that opening bracket.
    20  * (at your option) any later version. 
    20  * (An immediately following opening bracket is a default rule for functions in
    21  * 
    21  * MySQL, though this may be overridden; because it's only a default, we use a
    22  * GeSHi is distributed in the hope that it will be useful, 
    22  * regex lookahead only where necessary to distinguish homonyms, not generally
    23  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
    23  * to match any function.)
    24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
    24  * Other keywords with double usage cannot be distinguished and are classified
    25  * GNU General Public License for more details. 
    25  * in the "Mix" category.
    26  * 
    26  *
    27  * You should have received a copy of the GNU General Public License 
    27  *************************************************************************************
    28  * along with GeSHi; if not, write to the Free Software 
    28  *
    29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
    29  * This file is part of GeSHi.
    30  * 
    30  *
    31  ************************************************************************************/ 
    31  * GeSHi is free software; you can redistribute it and/or modify
    32   
    32  * it under the terms of the GNU General Public License as published by
    33 $language_data = array ( 
    33  * the Free Software Foundation; either version 2 of the License, or
    34   'LANG_NAME' => 'MySQL', 
    34  * (at your option) any later version.
    35   'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'), 
    35  *
    36   'COMMENT_MULTI' => array('/*' => '*/'), 
    36  * GeSHi is distributed in the hope that it will be useful,
    37   'CASE_KEYWORDS' => 1, 
    37  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    38   'QUOTEMARKS' => array("'", '"', ''), 
    38  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    39   'ESCAPE_CHAR' => '\\', 
    39  * GNU General Public License for more details.
    40   'KEYWORDS' => array( 
    40  *
    41   1 => array( 
    41  * You should have received a copy of the GNU General Public License
    42   /* Mix */ 
    42  * along with GeSHi; if not, write to the Free Software
    43   'ALTER DATABASE', 'ALTER TABLE', 'CREATE DATABASE', 'CREATE INDEX', 'CREATE TABLE', 'DROP DATABASE', 
    43  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    44   'DROP INDEX', 'DROP TABLE', 'RENAME TABLE', 'DELETE', 'DO', 'HANDLER', 'INSERT', 'LOAD DATA INFILE',  
    44  *
    45   'REPLACE', 'SELECT', 'TRUNCATE', 'UPDATE', 'DESCRIBE', 'USE', 'START TRANSACTION', 'COMMIT', 'ROLLBACK', 
    45  ************************************************************************************/
    46   'SAVEPOINT', 'ROLLBACK TO SAVEPOINT', 'LOCK TABLES', 'UNLOCK_TABLES', 'SET TRANACTIONS', 'SET', 'SHOW', 
    46 
    47   'CREATE PROCEDURE', 'CREATE FUNCTION', 'ALTER PROCEDURE', 'ALTER FUNCTION', 'DROP PROCEDURE', 'DROP FUNCTION',  
    47 $language_data = array (
    48   'SHOW CREATE PROCEDURE', 'SHOW CREATE FUNCTION', 'SHOW PROCEDURE STATUS', 'SHOW FUNCTION STATUS',  
    48     'LANG_NAME' => 'MySQL',
    49   'CALL', 'BEGIN', 'END', 'DECLARE', 'CREATE ROUTINE', 'ALTER ROUTINE', 'CREATE', 'ALTER', 'DROP', 
    49     //'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'),    // '--' MUST be folowed by whitespace,not necessarily a space
    50   'PRIMARY KEY', 'VALUES', 'INTO', 'FROM',  
    50     'COMMENT_SINGLE' => array(
    51   'ANALYZE', 'BDB', 'BERKELEYDB', 'BTREE', 'BY', 'CASCADE', 'CHECK', 'COLUMN', 'COLUMNS', 'CONSTRAINT', 
    51         1 =>'-- ',
    52   'CROSS', 'DATABASES', 'DELAYED', 'DISTINCT', 'DISTINCTROW', 'ENCLOSED', 'ERRORS', 'ESCAPED', 'EXISTS', 
    52         2 => '#'
    53   'EXPLAIN', 'FALSE', 'FIELDS', 'FORCE', 'FOREIGN', 'FULLTEXT', 'GEOMETRY', 'GRANT', 'GROUP', 'HASH', 
    53         ),
    54   'HAVING', 'HELP', 'HIGH_PRIORITY', 'IGNORE', 'INNER', 'INNODB', 'INTERVAL', 'JOIN', 'KEYS', 'KILL', 
    54     'COMMENT_REGEXP' => array(
    55   'LINES', 'LOW_PRIORITY', 'MASTER_SERVER_ID', 'MATCH', 'MIDDLEINT', 'MRG_MYISAM', 'NATURAL', 'OPTIMIZE', 
    55         1 => "/(?:--\s).*?$/",                          // double dash followed by any whitespace
    56   'OPTION', 'OPTIONALLY', 'ORDER', 'OUTER', 'OUTFILE', 'PRIVILEGES', 'PURGE', 'READ', 'REFERENCES', 
    56         ),
    57   'REQUIRE', 'RESTRICT', 'RETURNS', 'REVOKE', 'RLIKE', 'RTREE', 'SOME', 'SONAME', 'SPATIAL', 'SQL_BIG_RESULT',  
    57     'COMMENT_MULTI' => array('/*' => '*/'),
    58   'SQL_CALC_FOUND_ROWS', 'SQL_SMALL_RESULT', 'SSL', 'STARTING', 'STRAIGHT_JOIN', 'STRIPED', 'TERMINATED',  
    58     'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,            // @@@ would be nice if this could be defined per group!
    59   'TRUE', 'TYPES', 'UNION', 'USAGE', 'USER_RESOURCES', 'USING', 'VARCHARACTER', 'WARNINGS', 'WHERE', 'WRITE', 
    59     'QUOTEMARKS' => array("'", '"', '`'),
    60   /* Control Flow Functions */ 
    60     'ESCAPE_CHAR' => '\\',                              // by default only, can be specified
    61   'CASE', 'WHEN', 'THEN', 'ELSE', 'END', 
    61     'ESCAPE_REGEXP' => array(
    62   /* String Functions */ 
    62         1 => "/[_%]/",                                  // search wildcards
    63   'UNHEX', 'BIN', 'BIT_LENGTH', 'CHAR_LENGTH', 'CHARACTER_LENGTH', 'COMPRESS', 'CONCAT', 
    63         ),
    64   'CONCAT_WS', 'CONV', 'ELT', 'EXPORT_SET', 'FIELD', 'FIND_IN_SET', 'FORMAT', 'HEX',  
    64     'NUMBERS' =>
    65   'INSERT', 'INSTR', 'LCASE', 'LEFT', 'LENGTH', 'LOAD_FILE', 'LOCATE', 'LOWER', 'LPAD', 
    65         GESHI_NUMBER_INT_BASIC |
    66   'LTRIM', 'MAKE_SET', 'MID', 'OCT', 'OCTET_LENGTH', 'ORD', 'POSITION', 'QUOTE', 'REPEAT', 
    66         GESHI_NUMBER_OCT_PREFIX |
    67   'REPLACE', 'REVERSE', 'RIGHT', 'RPAD', 'RTRIM', 'SOUNDEX', 'SPACE', 'SUBSTRING',  
    67         GESHI_NUMBER_HEX_PREFIX |
    68   'SUBSTRING_INDEX', 'TRIM', 'UCASE', 'UPPER', 'UNCOMPRESS', 'UNCOMPRESSD_LENGTH',
    68         GESHI_NUMBER_FLT_NONSCI |
    69   'MD5', 'SHA1',  
    69         GESHI_NUMBER_FLT_SCI_SHORT |
    70   /* Numeric Functions */ 
    70         GESHI_NUMBER_FLT_SCI_ZERO,
    71   'ABS', 'ACOS', 'ASIN', 'ATAN', 'ATAN2', 'CEILING', 'CEIL', 'COS', 'COT', 'CRC32', 'DEGREES', 
    71     'KEYWORDS' => array(
    72   'EXP', 'FLOOR', 'LN', 'LOG', 'LOG2', 'LOG10', 'MOD', 'PI', 'POW', 'POWER', 'RADIANS', 'RAND', 
    72         1 => array(
    73   'ROUND', 'SIGN', 'SIN', 'SQRT', 'TAN', 'TRUNCATE', 
    73             // Mix: statement keywords and keywords that don't fit in any other
    74   /* Date and Time Functions */ 
    74             // category, or have multiple usage/meanings
    75   'ADDDATE', 'ADDTIME', 'CONVERT_TZ', 'CURDATE', 'CURRENT_DATE', 'CURTIME', 'CURRENT_TIME', 
    75             'ACTION','ADD','AFTER','ALGORITHM','ALL','ALTER','ANALYZE','ANY',
    76   'CURRENT_TIMESTAMP', 'DATEDIFF', 'DATE_ADD', 'DATE_SUB', 'DATE_FORMAT', 'DAY',  
    76             'ASC','AS','BDB','BEGIN','BERKELEYDB','BINARY','BTREE','CALL',
    77   'DAYNAME', 'DAYOFMONTH', 'DAYOFWEEK', 'DAYOFYEAR', 'EXTRACT', 'FROM_DAYS', 'FROM_UNIXTIME', 
    77             'CASCADED','CASCADE','CHAIN','CHECK','COLUMNS','COLUMN','COMMENT',
    78   'GET_FORMAT', 'LAST_DAY', 'LOCALTIME', 'LOCALTIMESTAMP', 'MAKEDATE', 'MAKETIME',  
    78             'COMMIT','COMMITTED','CONSTRAINT','CONTAINS SQL','CONSISTENT',
    79   'MICROSECOND', 'MONTHNAME', 'NOW', 'PERIOD_ADD', 'PERIOD_DIFF', 'QUARTER', 
    79             'CONVERT','CREATE','CROSS','DATA','DATABASES',
    80   'SECOND', 'SEC_TO_TIME', 'STR_TO_DATE', 'SUBDATE', 'SUBTIME', 'SYSDATE', 'TIME', 'TIMEDIFF', 
    80             'DECLARE','DEFINER','DELAYED','DELETE','DESCRIBE','DESC',
    81   'TIMESTAMP', 'TIMESTAMPADD', 'TIMESTAMPDIFF', 'TIME_FORMAT', 'TIME_TO_SEC', 'TO_DAYS',  
    81             'DETERMINISTIC','DISABLE','DISCARD','DISTINCTROW','DISTINCT','DO',
    82   'UNIX_TIMESTAMP', 'UTC_DATE', 'UTC_TIME', 'UTC_TIMESTAMP', 'WEEKDAY', 'WEEKOFYEAR', 
    82             'DROP','DUMPFILE','DUPLICATE KEY','ENABLE','ENCLOSED BY','ENGINE',
    83   'YEARWEEK', 
    83             'ERRORS','ESCAPED BY','EXISTS','EXPLAIN','EXTENDED','FIELDS',
    84    
    84             'FIRST','FOR EACH ROW','FORCE','FOREIGN KEY','FROM','FULL',
    85    ), 
    85             'FUNCTION','GLOBAL','GRANT','GROUP BY','HANDLER','HASH','HAVING',
    86    2 => array( 
    86             'HELP','HIGH_PRIORITY','IF NOT EXISTS','IGNORE','IMPORT','INDEX',
    87    'INTEGER', 'SMALLINT', 'DECIMAL', 'NUMERIC', 'FLOAT', 'REAL', 'DOUBLE PRECISION', 
    87             'INFILE','INNER','INNODB','INOUT','INTO','INVOKER',
    88    'DOUBLE', 'INT', 'DEC', 'BIT' ,'TINYINT', 'SMALLINT', 'MEDIUMINT', 'BIGINT',  
    88             'ISOLATION LEVEL','JOIN','KEYS','KEY','KILL','LANGUAGE SQL','LAST',
    89    'DATETIME', 'DATE', 'TIMESTAMP', 'TIME', 'YEAR',  
    89             'LIMIT','LINES','LOAD','LOCAL','LOCK','LOW_PRIORITY',
    90    'CHAR', 'VARCHAR', 'BINARY', 'CHARACTER VARYING', 'VARBINARY', 'TINYBLOB', 'TINYTEXT', 
    90             'MASTER_SERVER_ID','MATCH','MERGE','MIDDLEINT','MODIFIES SQL DATA',
    91    'BLOB', 'TEXT','MEDIUMBLOB', 'MEDIUMTEXT', 'LONGBLOB', 'LONGTEXT', 'ENUM', 'SET', 
    91             'MODIFY','MRG_MYISAM','NATURAL','NEXT','NO SQL','NO','ON',
    92    'SERIAL DEFAULT VALUE', 'SERIAL', 'FIXED' 
    92             'OPTIMIZE','OPTIONALLY','OPTION','ORDER BY','OUTER','OUTFILE','OUT',
    93    ), 
    93             'PARTIAL','PREV','PRIMARY KEY','PRIVILEGES','PROCEDURE','PURGE',
    94    3 => array( 
    94             'QUICK','READS SQL DATA','READ','REFERENCES','RELEASE','RENAME',
    95    'ZEROFILL', 'NOT NULL', 'UNSIGNED', 'AUTO_INCREMENT', 'UNIQUE', 'NOT', 'NULL', 'CHARACTER SET', 'CHARSET', 
    95             'REPEATABLE','REQUIRE','RESTRICT','RETURNS','REVOKE',
    96    'ASCII', 'UNICODE', 'NATIONAL', 'BOTH', 'LEADING', 'TRAILING','DEFAULT' 
    96             'ROLLBACK','ROUTINE','RTREE','SAVEPOINT','SELECT',
    97    ), 
    97             'SERIALIZABLE','SESSION','SET','SHARE MODE','SHOW','SIMPLE',
    98    4 => array( 
    98             'SNAPSHOT','SOME','SONAME','SQL SECURITY','SQL_BIG_RESULT',
    99    'MICROSECOND', 'SECOND', 'MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'SECOND_MICROSECOND',  
    99             'SQL_BUFFER_RESULT','SQL_CACHE','SQL_CALC_FOUND_ROWS',
   100    'MINUTE_MICROSECOND', 'MINUTE_SECOND', 'HOUR_MICROSECOND', 'HOUR_SECOND', 'HOUR_MINUTE', 'DAY_MICROSECOND', 
   100             'SQL_NO_CACHE','SQL_SMALL_RESULT','SSL','START','STARTING BY',
   101    'DAY_SECOND', 'DAY_MINUTE', 'DAY_HOUR', 'YEAR_MONTH' 
   101             'STATUS','STRAIGHT_JOIN','STRIPED','TABLESPACE','TABLES','TABLE',
   102    ),
   102             'TEMPORARY','TEMPTABLE','TERMINATED BY','TO','TRANSACTIONS',
   103    5 => array(
   103             'TRANSACTION','TRIGGER','TYPES','TYPE','UNCOMMITTED','UNDEFINED',
   104    'OR', 'XOR', 'AND', 'NOT', 'BETWEEN', 'IS', 'LIKE', 'REGEXP', 'IN', 'DIV',
   104             'UNION','UNLOCK_TABLES','UPDATE','USAGE','USE','USER_RESOURCES',
   105     'MOD', 'BINARY', 'COLLATE', 'LIMIT', 'OFFSET'
   105             'USING','VALUES','VALUE','VIEW','WARNINGS','WHERE','WITH ROLLUP',
   106    ), 
   106             'WITH','WORK','WRITE',
   107    ),
   107             ),
   108    'SYMBOLS' => array( 
   108         2 => array(     //No ( must follow
   109    ':=', 
   109             // Mix: statement keywords distinguished from functions by the same name
   110    '||', 'OR', 'XOR', 
   110             "CURRENT_USER", "DATABASE", "IN", "INSERT", "DEFAULT", "REPLACE", "SCHEMA", "TRUNCATE"
   111    '&&', 'AND', 
   111             ),
   112    'NOT', 
   112         3 => array(
   113    'BETWEEN', 'CASE', 'WHEN', 'THEN', 'ELSE', 
   113             // Values (Constants)
   114    '=', '<=>', '>=', '>', '<=', '<', '<>', '!=', 'IS', 'LIKE', 'REGEXP', 'IN', 
   114             'FALSE','NULL','TRUE',
   115    '|', 
   115             ),
   116    '&', 
   116         4 => array(
   117    '<<', '>>', 
   117             // Column Data Types
   118    '-', '+', 
   118             'BIGINT','BIT','BLOB','BOOLEAN','BOOL','CHARACTER VARYING',
   119    '*', '/', 'DIV', '%', 'MOD', 
   119             'CHAR VARYING','DATETIME','DECIMAL','DEC','DOUBLE PRECISION',
   120    '^', 
   120             'DOUBLE','ENUM','FIXED','FLOAT','GEOMETRYCOLLECTION','GEOMETRY',
   121    '-', '~', 
   121             'INTEGER','INT','LINESTRING','LONGBLOB','LONGTEXT','MEDIUMBLOB',
   122    '!', 
   122             'MEDIUMINT','MEDIUMTEXT','MULTIPOINT','MULTILINESTRING',
   123    'BINARY', 'COLLATE', 
   123             'MULTIPOLYGON','NATIONAL CHARACTER','NATIONAL CHARACTER VARYING',
   124    '(', ')', 
   124             'NATIONAL CHAR VARYING','NATIONAL VARCHAR','NCHAR VARCHAR','NCHAR',
   125    ), 
   125             'NUMERIC','POINT','POLYGON','REAL','SERIAL',
   126    'CASE_SENSITIVE' => array( 
   126             'SMALLINT','TEXT','TIMESTAMP','TINYBLOB','TINYINT',
   127    GESHI_COMMENTS => false, 
   127             'TINYTEXT','VARBINARY','VARCHARACTER','VARCHAR',
   128    1 => false, 
   128             ),
   129    2 => false, 
   129         5 => array(     //No ( must follow
   130    3 => false, 
   130             // Column data types distinguished from functions by the same name
   131    4 => false, 
   131             "CHAR", "DATE", "TIME"
   132    5 => false
   132             ),
   133    ), 
   133         6 => array(
   134    'STYLES' => array( 
   134             // Table, Column & Index Attributes
   135    'KEYWORDS' => array( 
   135             'AUTO_INCREMENT','AVG_ROW_LENGTH','BOTH','CHECKSUM','CONNECTION',
   136    1 => 'color: #993333; font-weight: bold;', 
   136             'DATA DIRECTORY','DEFAULT NULL','DELAY_KEY_WRITE','FULLTEXT',
   137    2 => 'color: #aa9933; font-weight: bold;', 
   137             'INDEX DIRECTORY','INSERT_METHOD','LEADING','MAX_ROWS','MIN_ROWS',
   138    3 => 'color: #aa3399; font-weight: bold;', 
   138             'NOT NULL','PACK_KEYS','ROW_FORMAT','SERIAL DEFAULT VALUE','SIGNED',
   139    4 => 'color: #33aa99; font-weight: bold;',
   139             'SPATIAL','TRAILING','UNIQUE','UNSIGNED','ZEROFILL'
   140    5 => 'color: #993333; font-weight: bold;'
   140             ),
   141    ), 
   141         7 => array(     //No ( must follow
   142    'COMMENTS' => array( 
   142             // Column attribute distinguished from function by the same name
   143    'MULTI' => 'color: #808080; font-style: italic;', 
   143             "CHARSET"
   144    1 => 'color: #808080; font-style: italic;', 
   144             ),
   145    2 => 'color: #808080; font-style: italic;' 
   145         8 => array(
   146    ), 
   146             // Date and Time Unit Specifiers
   147    'ESCAPE_CHAR' => array( 
   147             'DAY_HOUR','DAY_MICROSECOND','DAY_MINUTE','DAY_SECOND',
   148    0 => 'color: #000099; font-weight: bold;' 
   148             'HOUR_MICROSECOND','HOUR_MINUTE','HOUR_SECOND',
   149    ), 
   149             'MINUTE_MICROSECOND','MINUTE_SECOND',
   150    'BRACKETS' => array( 
   150             'SECOND_MICROSECOND','YEAR_MONTH'
   151    0 => 'color: #66cc66;' 
   151             ),
   152    ), 
   152         9 => array(     //No ( must follow
   153    'STRINGS' => array( 
   153             // Date-time unit specifiers distinguished from functions by the same name
   154    0 => 'color: #ff0000;' 
   154             "DAY", "HOUR", "MICROSECOND", "MINUTE", "MONTH", "QUARTER", "SECOND", "WEEK", "YEAR"
   155    ), 
   155             ),
   156    'NUMBERS' => array( 
   156         10 => array(
   157    0 => 'color: #cc66cc;' 
   157             // Operators (see also Symbols)
   158    ), 
   158             'AND','BETWEEN','CHARACTER SET','COLLATE','DIV','IS NOT NULL',
   159    'METHODS' => array( 
   159             'IS NOT','IS NULL','IS','LIKE','NOT','OFFSET','OR','REGEXP','RLIKE',
   160    ), 
   160             'SOUNDS LIKE','XOR'
   161    'SYMBOLS' => array( 
   161             ),
   162    0 => 'color: #66cc66;' 
   162         11 => array(     //No ( must follow
   163    ), 
   163             // Operator distinghuished from function by the same name
   164    'SCRIPT' => array( 
   164             "INTERVAL"
   165    ), 
   165             ),
   166    'REGEXPS' => array( 
   166         12 => array(
   167    ) 
   167             // Control Flow (functions)
   168    ), 
   168             'CASE','ELSE','END','IFNULL','IF','NULLIF','THEN','WHEN',
   169    'OOLANG' => false, 
   169             ),
   170    'OBJECT_SPLITTERS' => array( 
   170         13 => array(
   171    ), 
   171             // String Functions
   172    'REGEXPS' => array( 
   172             'ASCII','BIN','BIT_LENGTH','CHAR_LENGTH','CHARACTER_LENGTH',
   173    ), 
   173             'CONCAT_WS','CONCAT','ELT','EXPORT_SET','FIELD',
   174    'STRICT_MODE_APPLIES' => GESHI_NEVER, 
   174             'FIND_IN_SET','FORMAT','HEX','INSTR','LCASE','LEFT','LENGTH',
   175    'SCRIPT_DELIMITERS' => array( 
   175             'LOAD_FILE','LOCATE','LOWER','LPAD','LTRIM','MAKE_SET','MID',
   176    ), 
   176             'OCTET_LENGTH','ORD','POSITION','QUOTE','REPEAT','REVERSE',
   177    'HIGHLIGHT_STRICT_BLOCK' => array( 
   177             'RIGHT','RPAD','RTRIM','SOUNDEX','SPACE','STRCMP','SUBSTRING_INDEX',
   178    ) 
   178             'SUBSTRING','TRIM','UCASE','UNHEX','UPPER',
       
   179             ),
       
   180         14 => array(     //A ( must follow
       
   181             // String functions distinguished from other keywords by the same name
       
   182             "INSERT", "REPLACE", "CHAR"
       
   183             ),
       
   184         15 => array(
       
   185             // Numeric Functions
       
   186             'ABS','ACOS','ASIN','ATAN2','ATAN','CEILING','CEIL',
       
   187             'CONV','COS','COT','CRC32','DEGREES','EXP','FLOOR','LN','LOG10',
       
   188             'LOG2','LOG','MOD','OCT','PI','POWER','POW','RADIANS','RAND',
       
   189             'ROUND','SIGN','SIN','SQRT','TAN',
       
   190             ),
       
   191         16 => array(     //A ( must follow
       
   192             // Numeric function distinguished from other keyword by the same name
       
   193             "TRUNCATE"
       
   194             ),
       
   195         17 => array(
       
   196             // Date and Time Functions
       
   197             'ADDDATE','ADDTIME','CONVERT_TZ','CURDATE','CURRENT_DATE',
       
   198             'CURRENT_TIME','CURRENT_TIMESTAMP','CURTIME','DATE_ADD',
       
   199             'DATE_FORMAT','DATE_SUB','DATEDIFF','DAYNAME','DAYOFMONTH',
       
   200             'DAYOFWEEK','DAYOFYEAR','EXTRACT','FROM_DAYS','FROM_UNIXTIME',
       
   201             'GET_FORMAT','LAST_DAY','LOCALTIME','LOCALTIMESTAMP','MAKEDATE',
       
   202             'MAKETIME','MONTHNAME','NOW','PERIOD_ADD',
       
   203             'PERIOD_DIFF','SEC_TO_TIME','STR_TO_DATE','SUBDATE','SUBTIME',
       
   204             'SYSDATE','TIME_FORMAT','TIME_TO_SEC',
       
   205             'TIMESTAMPADD','TIMESTAMPDIFF','TO_DAYS',
       
   206             'UNIX_TIMESTAMP','UTC_DATE','UTC_TIME','UTC_TIMESTAMP','WEEKDAY',
       
   207             'WEEKOFYEAR','YEARWEEK',
       
   208             ),
       
   209         18 => array(     //A ( must follow
       
   210             // Date-time functions distinguished from other keywords by the same name
       
   211             "DATE", "DAY", "HOUR", "MICROSECOND", "MINUTE", "MONTH", "QUARTER",
       
   212             "SECOND", "TIME", "WEEK", "YEAR"
       
   213             ),
       
   214         19 => array(
       
   215             // Comparison Functions
       
   216             'COALESCE','GREATEST','ISNULL','LEAST',
       
   217             ),
       
   218         20 => array(     //A ( must follow
       
   219             // Comparison functions distinguished from other keywords by the same name
       
   220             "IN", "INTERVAL"
       
   221             ),
       
   222         21 => array(
       
   223             // Encryption and Compression Functions
       
   224             'AES_DECRYPT','AES_ENCRYPT','COMPRESS','DECODE','DES_DECRYPT',
       
   225             'DES_ENCRYPT','ENCODE','ENCRYPT','MD5','OLD_PASSWORD','PASSWORD',
       
   226             'SHA1','SHA','UNCOMPRESS','UNCOMPRESSED_LENGTH',
       
   227             ),
       
   228         22 => array(
       
   229             // GROUP BY (aggregate) Functions
       
   230             'AVG','BIT_AND','BIT_OR','BIT_XOR','COUNT','GROUP_CONCAT',
       
   231             'MAX','MIN','STDDEV_POP','STDDEV_SAMP','STDDEV','STD','SUM',
       
   232             'VAR_POP','VAR_SAMP','VARIANCE',
       
   233             ),
       
   234         23 => array(
       
   235             // Information Functions
       
   236             'BENCHMARK','COERCIBILITY','COLLATION','CONNECTION_ID',
       
   237             'FOUND_ROWS','LAST_INSERT_ID','ROW_COUNT',
       
   238             'SESSION_USER','SYSTEM_USER','USER','VERSION',
       
   239             ),
       
   240         24 => array(     //A ( must follow
       
   241             // Information functions distinguished from other keywords by the same name
       
   242             "CURRENT_USER", "DATABASE", "SCHEMA", "CHARSET"
       
   243             ),
       
   244         25 => array(
       
   245             // Miscellaneous Functions
       
   246             'ExtractValue','BIT_COUNT','GET_LOCK','INET_ATON','INET_NTOA',
       
   247             'IS_FREE_LOCK','IS_USED_LOCK','MASTER_POS_WAIT','NAME_CONST',
       
   248             'RELEASE_LOCK','SLEEP','UpdateXML','UUID',
       
   249             ),
       
   250         26 => array(     //A ( must follow
       
   251             // Miscellaneous function distinguished from other keyword by the same name
       
   252             "DEFAULT"
       
   253             ),
       
   254         27 => array(
       
   255             // Geometry Functions
       
   256             'Area','AsBinary','AsText','AsWKB','AsWKT','Boundary','Buffer',
       
   257             'Centroid','Contains','ConvexHull','Crosses',
       
   258             'Difference','Dimension','Disjoint','Distance',
       
   259             'EndPoint','Envelope','Equals','ExteriorRing',
       
   260             'GLength','GeomCollFromText','GeomCollFromWKB','GeomFromText',
       
   261             'GeomFromWKB','GeometryCollectionFromText',
       
   262             'GeometryCollectionFromWKB','GeometryFromText','GeometryFromWKB',
       
   263             'GeometryN','GeometryType',
       
   264             'InteriorRingN','Intersection','Intersects','IsClosed','IsEmpty',
       
   265             'IsRing','IsSimple',
       
   266             'LineFromText','LineFromWKB','LineStringFromText',
       
   267             'LineStringFromWKB',
       
   268             'MBRContains','MBRDisjoint','MBREqual','MBRIntersects',
       
   269             'MBROverlaps','MBRTouches','MBRWithin','MLineFromText',
       
   270             'MLineFromWKB','MPointFromText','MPointFromWKB','MPolyFromText',
       
   271             'MPolyFromWKB','MultiLineStringFromText','MultiLineStringFromWKB',
       
   272             'MultiPointFromText','MultiPointFromWKB','MultiPolygonFromText',
       
   273             'MultiPolygonFromWKB',
       
   274             'NumGeometries','NumInteriorRings','NumPoints',
       
   275             'Overlaps',
       
   276             'PointFromText','PointFromWKB','PointN','PointOnSurface',
       
   277             'PolyFromText','PolyFromWKB','PolygonFromText','PolygonFromWKB',
       
   278             'Related','SRID','StartPoint','SymDifference',
       
   279             'Touches',
       
   280             'Union',
       
   281             'Within',
       
   282             'X',
       
   283             'Y',
       
   284             ),
       
   285         ),
       
   286     'SYMBOLS' => array(
       
   287         1 => array(
       
   288             /* Operators */
       
   289             '=', ':=',                                      // assignment operators
       
   290             '||', '&&', '!',                                // locical operators
       
   291             '=', '<=>', '>=', '>', '<=', '<', '<>', '!=',   // comparison operators
       
   292             '|', '&', '^', '~', '<<', '>>',                 // bitwise operators
       
   293             '-', '+', '*', '/', '%',                        // numerical operators
       
   294             ),
       
   295         2 => array(
       
   296             /* Other syntactical symbols */
       
   297             '(', ')',
       
   298             ',', ';',
       
   299             ),
       
   300         ),
       
   301     'CASE_SENSITIVE' => array(
       
   302         GESHI_COMMENTS => false,
       
   303         1 => false,
       
   304         2 => false,
       
   305         3 => false,
       
   306         4 => false,
       
   307         5 => false,
       
   308         6 => false,
       
   309         7 => false,
       
   310         8 => false,
       
   311         9 => false,
       
   312         10 => false,
       
   313         11 => false,
       
   314         12 => false,
       
   315         13 => false,
       
   316         13 => false,
       
   317         14 => false,
       
   318         15 => false,
       
   319         16 => false,
       
   320         17 => false,
       
   321         18 => false,
       
   322         19 => false,
       
   323         20 => false,
       
   324         21 => false,
       
   325         22 => false,
       
   326         23 => false,
       
   327         24 => false,
       
   328         25 => false,
       
   329         26 => false,
       
   330         27 => false,
       
   331         ),
       
   332     'STYLES' => array(
       
   333         'KEYWORDS' => array(
       
   334             1 => 'color: #990099; font-weight: bold;',      // mix
       
   335             2 => 'color: #990099; font-weight: bold;',      // mix
       
   336             3 => 'color: #9900FF; font-weight: bold;',      // constants
       
   337             4 => 'color: #999900; font-weight: bold;',      // column data types
       
   338             5 => 'color: #999900; font-weight: bold;',      // column data types
       
   339             6 => 'color: #FF9900; font-weight: bold;',      // attributes
       
   340             7 => 'color: #FF9900; font-weight: bold;',      // attributes
       
   341             8 => 'color: #9900FF; font-weight: bold;',      // date-time units
       
   342             9 => 'color: #9900FF; font-weight: bold;',      // date-time units
       
   343 
       
   344             10 => 'color: #CC0099; font-weight: bold;',      // operators
       
   345             11 => 'color: #CC0099; font-weight: bold;',      // operators
       
   346 
       
   347             12 => 'color: #009900;',     // control flow (functions)
       
   348             13 => 'color: #000099;',     // string functions
       
   349             14 => 'color: #000099;',     // string functions
       
   350             15 => 'color: #000099;',     // numeric functions
       
   351             16 => 'color: #000099;',     // numeric functions
       
   352             17 => 'color: #000099;',     // date-time functions
       
   353             18 => 'color: #000099;',     // date-time functions
       
   354             19 => 'color: #000099;',     // comparison functions
       
   355             20 => 'color: #000099;',     // comparison functions
       
   356             21 => 'color: #000099;',     // encryption functions
       
   357             22 => 'color: #000099;',     // aggregate functions
       
   358             23 => 'color: #000099;',     // information functions
       
   359             24 => 'color: #000099;',     // information functions
       
   360             25 => 'color: #000099;',     // miscellaneous functions
       
   361             26 => 'color: #000099;',     // miscellaneous functions
       
   362             27 => 'color: #00CC00;',     // geometry functions
       
   363             ),
       
   364         'COMMENTS' => array(
       
   365             'MULTI' => 'color: #808000; font-style: italic;',
       
   366             1 => 'color: #808080; font-style: italic;',
       
   367             2 => 'color: #808080; font-style: italic;'
       
   368             ),
       
   369         'ESCAPE_CHAR' => array(
       
   370             0 => 'color: #004000; font-weight: bold;',
       
   371             1 => 'color: #008080; font-weight: bold;'       // search wildcards
       
   372             ),
       
   373         'BRACKETS' => array(
       
   374             0 => 'color: #FF00FF;'
       
   375             ),
       
   376         'STRINGS' => array(
       
   377             0 => 'color: #008000;'
       
   378             ),
       
   379         'NUMBERS' => array(
       
   380             0 => 'color: #008080;'
       
   381             ),
       
   382         'METHODS' => array(
       
   383             ),
       
   384         'SYMBOLS' => array(
       
   385             1 => 'color: #CC0099;',         // operators
       
   386             2 => 'color: #000033;',         // syntax
       
   387             ),
       
   388         'SCRIPT' => array(
       
   389             ),
       
   390         'REGEXPS' => array(
       
   391             )
       
   392         ),
       
   393     'URLS' => array(
       
   394         1 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
       
   395         2 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
       
   396         3 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
       
   397         4 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
       
   398         5 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
       
   399         6 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
       
   400         7 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
       
   401         8 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
       
   402         9 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
       
   403 
       
   404         10 => 'http://dev.mysql.com/doc/refman/5.1/en/non-typed-operators.html',
       
   405         11 => 'http://dev.mysql.com/doc/refman/5.1/en/non-typed-operators.html',
       
   406 
       
   407         12 => 'http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html',
       
   408         13 => 'http://dev.mysql.com/doc/refman/5.1/en/string-functions.html',
       
   409         14 => 'http://dev.mysql.com/doc/refman/5.1/en/string-functions.html',
       
   410         15 => 'http://dev.mysql.com/doc/refman/5.1/en/numeric-functions.html',
       
   411         16 => 'http://dev.mysql.com/doc/refman/5.1/en/numeric-functions.html',
       
   412         17 => 'http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html',
       
   413         18 => 'http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html',
       
   414         19 => 'http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html',
       
   415         20 => 'http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html',
       
   416         21 => 'http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html',
       
   417         22 => 'http://dev.mysql.com/doc/refman/5.1/en/group-by-functions-and-modifiers.html',
       
   418         23 => 'http://dev.mysql.com/doc/refman/5.1/en/information-functions.html',
       
   419         24 => 'http://dev.mysql.com/doc/refman/5.1/en/information-functions.html',
       
   420         25 => 'http://dev.mysql.com/doc/refman/5.1/en/func-op-summary-ref.html',
       
   421         26 => 'http://dev.mysql.com/doc/refman/5.1/en/func-op-summary-ref.html',
       
   422         27 => 'http://dev.mysql.com/doc/refman/5.1/en/analysing-spatial-information.html',
       
   423         ),
       
   424     'OOLANG' => false,
       
   425     'OBJECT_SPLITTERS' => array(
       
   426         ),
       
   427     'REGEXPS' => array(
       
   428         ),
       
   429     'STRICT_MODE_APPLIES' => GESHI_NEVER,
       
   430     'SCRIPT_DELIMITERS' => array(
       
   431         ),
       
   432     'HIGHLIGHT_STRICT_BLOCK' => array(
       
   433         ),
       
   434     'TAB_WIDTH' => 4,
       
   435     'PARSER_CONTROL' => array(
       
   436         'KEYWORDS' => array(
       
   437             2 => array(
       
   438                 'DISALLOWED_AFTER' => '(?![\(\w])'
       
   439                 ),
       
   440             5 => array(
       
   441                 'DISALLOWED_AFTER' => '(?![\(\w])'
       
   442                 ),
       
   443             7 => array(
       
   444                 'DISALLOWED_AFTER' => '(?![\(\w])'
       
   445                 ),
       
   446             9 => array(
       
   447                 'DISALLOWED_AFTER' => '(?![\(\w])'
       
   448                 ),
       
   449             11 => array(
       
   450                 'DISALLOWED_AFTER' => '(?![\(\w])'
       
   451                 ),
       
   452 
       
   453             14 => array(
       
   454                 'DISALLOWED_AFTER' => '(?=\()'
       
   455                 ),
       
   456             16 => array(
       
   457                 'DISALLOWED_AFTER' => '(?=\()'
       
   458                 ),
       
   459             18 => array(
       
   460                 'DISALLOWED_AFTER' => '(?=\()'
       
   461                 ),
       
   462             20 => array(
       
   463                 'DISALLOWED_AFTER' => '(?=\()'
       
   464                 ),
       
   465             24 => array(
       
   466                 'DISALLOWED_AFTER' => '(?=\()'
       
   467                 ),
       
   468             26 => array(
       
   469                 'DISALLOWED_AFTER' => '(?=\()'
       
   470                 )
       
   471             )
       
   472         )
   179 );
   473 );
   180 
   474 
   181 ?>
   475 ?>