<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!--
MySQL syntax definition based on sql.xml by Yury Lebedev
original by Shane Wright (me@shanewright.co.uk)
modifications by Milian Wolff (mail@milianw.de)
v3 fix comments by Gene Thomas <gene@genethomas.com>
-->
<language name="SQL (MySQL)" version="3" kateversion="3.4" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
<highlighting>
<list name="keywords">
<item>ACCESS</item>
<item>ADD</item>
<item>ALL</item>
<item>ALTER</item>
<item>ANALYZE</item>
<item>AND</item>
<item>AS</item>
<item>ASC</item>
<item>AUTO_INCREMENT</item>
<item>BDB</item>
<item>BERKELEYDB</item>
<item>BETWEEN</item>
<item>BOTH</item>
<item>BY</item>
<item>CASCADE</item>
<item>CASE</item>
<item>CHANGE</item>
<!-- <item> CHARACTER SET </item>
needs special regexp (see below) -->
<item>CHARSET</item>
<item>COLUMN</item>
<item>COLUMNS</item>
<item>CONSTRAINT</item>
<item>CREATE</item>
<item>CROSS</item>
<item>CURRENT_DATE</item>
<item>CURRENT_TIME</item>
<item>CURRENT_TIMESTAMP</item>
<item>DATABASE</item>
<item>DATABASES</item>
<item>DAY_HOUR</item>
<item>DAY_MINUTE</item>
<item>DAY_SECOND</item>
<item>DEC</item>
<item>DEFAULT</item>
<item>DELAYED</item>
<item>DELETE</item>
<item>DESC</item>
<item>DESCRIBE</item>
<item>DISTINCT</item>
<item>DISTINCTROW</item>
<item>DROP</item>
<item>ELSE</item>
<item>ENCLOSED</item>
<item>ESCAPED</item>
<item>EXISTS</item>
<item>EXPLAIN</item>
<item>FIELDS</item>
<item>FOR</item>
<item>FOREIGN</item>
<item>FROM</item>
<item>FULLTEXT</item>
<item>FUNCTION</item>
<item>GRANT</item>
<item>GROUP</item>
<item>HAVING</item>
<item>HIGH_PRIORITY</item>
<item>IF</item>
<item>IGNORE</item>
<item>IN</item>
<item>INDEX</item>
<item>INFILE</item>
<item>INNER</item>
<item>INNODB</item>
<item>INSERT</item>
<item>INTERVAL</item>
<item>INTO</item>
<item>IS</item>
<item>JOIN</item>
<item>KEY</item>
<item>KEYS</item>
<item>KILL</item>
<item>LEADING</item>
<item>LEFT</item>
<item>LIKE</item>
<item>LIMIT</item>
<item>LINES</item>
<item>LOAD</item>
<item>LOCK</item>
<item>LOW_PRIORITY</item>
<item>MASTER_SERVER_ID</item>
<item>MATCH</item>
<item>MRG_MYISAM</item>
<item>NATIONAL</item>
<item>NATURAL</item>
<item>NOT</item>
<item>NULL</item>
<item>NUMERIC</item>
<item>ON</item>
<item>OPTIMIZE</item>
<item>OPTION</item>
<item>OPTIONALLY</item>
<item>OR</item>
<item>ORDER</item>
<item>OUTER</item>
<item>OUTFILE</item>
<item>PARTIAL</item>
<item>PRECISION</item>
<item>PRIMARY</item>
<item>PRIVILEGES</item>
<item>PROCEDURE</item>
<item>PURGE</item>
<item>READ</item>
<item>REFERENCES</item>
<item>REGEXP</item>
<item>RENAME</item>
<item>REPLACE</item>
<item>REQUIRE</item>
<item>RESTRICT</item>
<item>RETURNS</item>
<item>REVOKE</item>
<item>RIGHT</item>
<item>RLIKE</item>
<item>SELECT</item>
<item>SET</item>
<item>SHOW</item>
<item>SONAME</item>
<item>SQL_BIG_RESULT</item>
<item>SQL_CALC_FOUND_ROWS</item>
<item>SQL_SMALL_RESULT</item>
<item>SSL</item>
<item>STARTING</item>
<item>STRAIGHT_JOIN</item>
<item>STRIPED</item>
<item>TABLE</item>
<item>TABLES</item>
<item>TERMINATED</item>
<item>THEN</item>
<item>TO</item>
<item>TRAILING</item>
<item>TRUNCATE</item>
<item>TYPE</item>
<item>UNION</item>
<item>UNIQUE</item>
<item>UNLOCK</item>
<item>UNSIGNED</item>
<item>UPDATE</item>
<item>USAGE</item>
<item>USE</item>
<item>USER_RESOURCES</item>
<item>USING</item>
<item>VALUES</item>
<item>VARYING</item>
<item>WHEN</item>
<item>WHERE</item>
<item>WHILE</item>
<item>WITH</item>
<item>WRITE</item>
<item>XOR</item>
<item>YEAR_MONTH</item>
<item>ZEROFILL</item>
</list>
<list name="operators">
<item>+</item>
<item>-</item>
<item>*</item>
<item>/</item>
<item>||</item>
<item>=</item>
<item>!=</item>
<item><></item>
<item><</item>
<item><=</item>
<item>></item>
<item>>=</item>
<item>~=</item>
<item>^=</item>
<item>:=</item>
<item>=></item>
<item>**</item>
<item>..</item>
</list>
<list name="functions">
<!-- string functions -->
<item>ASCII</item>
<item>BIN</item>
<item>BIT_LENGTH</item>
<item>CHAR</item>
<item>CHARACTER_LENGTH</item>
<item>CHAR_LENGTH</item>
<item>CONCAT</item>
<item>CONCAT_WS</item>
<item>CONV</item>
<item>ELT</item>
<item>EXPORT_SET</item>
<item>FIELD</item>
<item>FIND_IN_SET</item>
<item>HEX</item>
<item>INSERT</item>
<item>INSTR</item>
<item>LCASE</item>
<item>LEFT</item>
<item>LENGTH</item>
<item>LOAD_FILE</item>
<item>LOCATE</item>
<item>LOWER</item>
<item>LPAD</item>
<item>LTRIM</item>
<item>MAKE_SET</item>
<item>MID</item>
<item>OCT</item>
<item>OCTET_LENGTH</item>
<item>ORD</item>
<item>POSITION</item>
<item>QUOTE</item>
<item>REPEAT</item>
<item>REPLACE</item>
<item>REVERSE</item>
<item>RIGHT</item>
<item>RPAD</item>
<item>RTRIM</item>
<item>SOUNDEX</item>
<item>SPACE</item>
<item>SUBSTRING</item>
<item>SUBSTRING_INDEX</item>
<item>TRIM</item>
<item>UCASE</item>
<item>UPPER</item>
<!-- math functions -->
<item>ABS</item>
<item>ACOS</item>
<item>ASIN</item>
<item>ATAN</item>
<item>ATAN2</item>
<item>CEILING</item>
<item>COS</item>
<item>COT</item>
<item>DEGREES</item>
<item>EXP</item>
<item>FLOOR</item>
<item>GREATEST</item>
<item>LEAST</item>
<item>LN</item>
<item>LOG</item>
<item>LOG10</item>
<item>LOG2</item>
<item>MOD</item>
<item>PI</item>
<item>POW</item>
<item>POWER</item>
<item>RADIANS</item>
<item>RAND</item>
<item>ROUND</item>
<item>SIGN</item>
<item>SIN</item>
<item>SQRT</item>
<item>TAN</item>
<!-- date/time functions -->
<item>ADDDATE</item>
<item>CURDATE</item>
<item>CURRENT_DATE</item>
<item>CURRENT_TIME</item>
<item>CURRENT_TIMESTAMP</item>
<item>CURTIME</item>
<item>DATE_ADD</item>
<item>DATE_FORMAT</item>
<item>DATE_SUB</item>
<item>DAYNAME</item>
<item>DAYOFMONTH</item>
<item>DAYOFWEEK</item>
<item>DAYOFYEAR</item>
<item>EXTRACT</item>
<item>FROM_DAYS</item>
<item>FROM_UNIXTIME</item>
<item>HOUR</item>
<item>MINUTE</item>
<item>MONTH</item>
<item>MONTHNAME</item>
<item>NOW</item>
<item>PERIOD_ADD</item>
<item>PERIOD_DIFF</item>
<item>QUARTER</item>
<item>SECOND</item>
<item>SEC_TO_TIME</item>
<item>SUBDATE</item>
<item>SYSDATE</item>
<item>TIME_FORMAT</item>
<item>TIME_TO_SEC</item>
<item>TO_DAYS</item>
<item>UNIX_TIMESTAMP</item>
<item>WEEK</item>
<item>WEEKDAY</item>
<item>YEAR</item>
<item>YEARWEEK</item>
<!-- cast functions -->
<item>CAST</item>
<item>CONVERT</item>
<!-- misc -->
<item>AES_DECRYPT</item>
<item>AES_ENCRYPT</item>
<item>BENCHMARK</item>
<item>BIT_COUNT</item>
<item>CONNECTION_ID</item>
<item>DATABASE</item>
<item>DECODE</item>
<item>DES_DECRYPT</item>
<item>DES_ENCRYPT</item>
<item>ENCODE</item>
<item>ENCRYPT</item>
<item>FORMAT</item>
<item>FOUND_ROWS</item>
<item>GET_LOCK</item>
<item>INET_ATON</item>
<item>INET_NTOA</item>
<item>IS_FREE_LOCK</item>
<item>LAST_INSERT_ID</item>
<item>MASTER_POS_WAIT</item>
<item>MD5</item>
<item>PASSWORD</item>
<item>RELEASE_LOCK</item>
<item>SESSION_USER</item>
<item>SHA</item>
<item>SHA1</item>
<item>SYSTEM_USER</item>
<item>USER</item>
<item>VERSION</item>
<!-- GROUP BY -->
<item>AVG</item>
<item>BIT_AND</item>
<item>BIT_OR</item>
<item>COUNT</item>
<item>MAX</item>
<item>MIN</item>
<item>STD</item>
<item>STDDEV</item>
<item>SUM</item>
</list>
<list name="types">
<!-- strings -->
<item>BINARY</item>
<item>BLOB</item>
<item>CHAR</item>
<item>CHARACTER</item>
<item>ENUM</item>
<item>LONGBLOB</item>
<item>LONGTEXT</item>
<item>MEDIUMBLOB</item>
<item>MEDIUMTEXT</item>
<item>TEXT</item>
<item>TINYBLOB</item>
<item>TINYTEXT</item>
<item>VARBINARY</item>
<item>VARCHAR</item>
<!-- <item>SET</item>
needs special regexp (see below) -->
<!-- numeric -->
<item>BIGINT</item>
<item>BIT</item>
<item>BOOL</item>
<item>BOOLEAN</item>
<item>DEC</item>
<item>DECIMAL</item>
<item>DOUBLE</item>
<item>FIXED</item>
<item>FLOAT</item>
<item>INT</item>
<item>INTEGER</item>
<item>LONG</item>
<item>MEDIUMINT</item>
<item>MIDDLEINT</item>
<item>NUMERIC</item>
<item>TINYINT</item>
<item>REAL</item>
<item>SERIAL</item>
<item>SMALLINT</item>
<!-- date and time -->
<item>DATE</item>
<item>DATETIME</item>
<item>TIME</item>
<item>TIMESTAMP</item>
<item>YEAR</item>
</list>
<contexts>
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<!-- comments, before operators -->
<DetectChar attribute="Comment" context="SingleLineComment" char="#"/>
<Detect2Chars attribute="Comment" context="SingleLineComment" char="-" char1="-"/>
<Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>
<RegExpr attribute="Comment" context="SingleLineComment" String="rem\b" insensitive="true" column="0"/>
<!-- problematic special cases -->
<!-- SET type -->
<RegExpr attribute="Data Type" context="#stay" insensitive="true" String="SET(?=\s*\()"/>
<!-- keyword character set -->
<RegExpr attribute="Keyword" context="#stay" insensitive="true" String="\bCHARACTER SET\b"/>
<!-- using the lists -->
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Operator" context="#stay" String="operators"/>
<keyword attribute="Function" context="#stay" String="functions"/>
<keyword attribute="Data Type" context="#stay" String="types"/>
<DetectIdentifier/>
<!-- extra data types -->
<RegExpr attribute="Data Type" context="#stay" String="%(?:bulk_(?:exceptions|rowcount)|found|isopen|notfound|rowcount|rowtype|type)\b" insensitive="true"/>
<!-- numbers -->
<HlCHex attribute="Hex" context="#stay"/>
<Float attribute="Float" context="#stay"/>
<Int attribute="Decimal" context="#stay"/>
<!-- strings -->
<DetectChar attribute="String" context="String" char="'"/>
<DetectChar attribute="String" context="String2" char="""/>
<DetectChar attribute="Name" context="Name" char="`"/>
<AnyChar attribute="Symbol" context="#stay" String=":&"/>
<RegExpr attribute="Symbol" context="#stay" String="/$" column="0"/>
<RegExpr attribute="Preprocessor" context="Preprocessor" String="@@?[^@ \t\r\n]" column="0"/>
<!-- for something like : SELECT DB.TABLE.ROW ... -->
<DetectChar attribute="String Char" context="#stay" char="."/>
</context>
<!-- 'string' -->
<context name="String" attribute="String" lineEndContext="#stay">
<LineContinue attribute="String" context="#pop"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="Symbol" context="#stay" char="&"/>
<DetectChar attribute="String" context="#pop" char="'"/>
</context>
<!-- "string", extra context needed to enable "str'ing" and 'str"ing' -->
<context name="String2" attribute="String" lineEndContext="#stay">
<LineContinue attribute="String" context="#pop"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="Symbol" context="#stay" char="&"/>
<DetectChar attribute="String" context="#pop" char="""/>
</context>
<!-- `names` -->
<context name="Name" attribute="Name" lineEndContext="#stay">
<LineContinue attribute="Name" context="#pop"/>
<HlCStringChar attribute="String Char" context="#stay"/>
<DetectChar attribute="Name" context="#pop" char="`"/>
</context>
<!-- comments -->
<context name="SingleLineComment" attribute="Comment" lineEndContext="#pop"/>
<context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
<LineContinue attribute="Comment" context="#pop"/>
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
</context>
<!-- preprocessor -->
<context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"/>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Operator" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
<itemData name="Name" color="#080" defStyleNum="dsString" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="String Char" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Preprocessor" defStyleNum="dsOthers" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="--"/>
<comment name="multiLine" start="/*" end="*/"/>
</comments>
<keywords casesensitive="0" weakDeliminator="+-*/|=!<>~^:."/>
<folding indentationsensitive="true"/>
</general>
</language>