aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/CMTextView.m24
-rw-r--r--Source/SPEditorTokens.l254
2 files changed, 261 insertions, 17 deletions
diff --git a/Source/CMTextView.m b/Source/CMTextView.m
index 53be88c7..6d881795 100644
--- a/Source/CMTextView.m
+++ b/Source/CMTextView.m
@@ -166,6 +166,7 @@ YY_BUFFER_STATE yy_scan_string (const char *);
if(curFlags==(NSControlKeyMask))
{
[self copyAsRTF];
+ NSLog(@"hallo");
return;
}
@@ -296,6 +297,7 @@ YY_BUFFER_STATE yy_scan_string (const char *);
// The default action is to perform the normal key-down action.
[super keyDown:theEvent];
+
}
@@ -310,8 +312,10 @@ YY_BUFFER_STATE yy_scan_string (const char *);
// Avoid auto-uppercasing if resulting word would be a SQL keyword;
// e.g. type inta| and deleteBackward:
- delBackwardsWasPressed = YES;
+ delBackwardsWasPressed = YES;
+
[super deleteBackward:sender];
+
}
@@ -487,13 +491,9 @@ YY_BUFFER_STATE yy_scan_string (const char *);
{
// Check if the caret is inside quotes "" or ''; if so
- // return the normal word suggestion due to the spelling's language
+ // return the normal word suggestion due to the spelling's settings
if([[self textStorage] attribute:kQuote atIndex:charRange.location effectiveRange:nil])
- {
- NSSpellChecker* checker = [NSSpellChecker sharedSpellChecker];
- NSArray* list = [checker completionsForPartialWordRange:NSMakeRange(0,charRange.length) inString:[[self string] substringWithRange:charRange] language:nil inSpellDocumentWithTag:0];
- return list;
- }
+ return [[NSSpellChecker sharedSpellChecker] completionsForPartialWordRange:NSMakeRange(0,charRange.length) inString:[[self string] substringWithRange:charRange] language:nil inSpellDocumentWithTag:0];
NSCharacterSet *separators = [NSCharacterSet characterSetWithCharactersInString:@" \t\r\n,()\"'`-!"];
NSArray *textViewWords = [[self string] componentsSeparatedByCharactersInSet:separators];
@@ -520,7 +520,6 @@ YY_BUFFER_STATE yy_scan_string (const char *);
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[cd] %@ AND length > %d", partialString, partialLength];
NSArray *matchingCompletions = [[possibleCompletions filteredArrayUsingPredicate:predicate] sortedArrayUsingSelector:@selector(compare:)];
-
unsigned i, insindex;
insindex = 0;
@@ -529,17 +528,13 @@ YY_BUFFER_STATE yy_scan_string (const char *);
NSString* obj = [matchingCompletions objectAtIndex:i];
if(![compl containsObject:obj])
if ([partialString isEqualToString:[obj substringToIndex:partialLength]])
- {
// Matches case --> Insert at beginning of completion list
[compl insertObject:obj atIndex:insindex++];
- }
else
- {
// Not matching case --> Insert at end of completion list
[compl addObject:obj];
- }
}
-
+
return [compl autorelease];
}
@@ -1321,7 +1316,8 @@ SYNTAX HIGHLIGHTING!
if (!tokenRange.length) continue;
// If the current token is marked as SQL keyword, uppercase it if required.
- unsigned long tokenEnd = tokenRange.location+tokenRange.length-1; // Check the end of the token
+ unsigned long tokenEnd = tokenRange.location+tokenRange.length-1;
+ // Check the end of the token
if (autouppercaseKeywordsEnabled && !delBackwardsWasPressed
&& [[self textStorage] attribute:kSQLkeyword atIndex:tokenEnd effectiveRange:nil])
// check if next char is not a kSQLkeyword or current kSQLkeyword is at the end;
diff --git a/Source/SPEditorTokens.l b/Source/SPEditorTokens.l
index 4a177f07..b3d5ef42 100644
--- a/Source/SPEditorTokens.l
+++ b/Source/SPEditorTokens.l
@@ -33,8 +33,9 @@ ops "+"|"-"|"*"|"/"
word [a-z_\.0-9À-゚@]
variable @{1,2}[a-z_\.0-9À-゚$]+
nonword [^a-z_0-9À-゚#\n\t]
-keyworda (G(R(OUP{s}BY|ANT)|LOBAL)|B(Y|TREE|I(GINT|NARY)|OTH|E(TWEEN|FORE)|LOB|ACKUP{s}TABLE)|H(IGH_PRIORITY|OUR_(MI(NUTE|CROSECOND)|SECOND)|A(SH|NDLER|VING))|C(R(OSS|EATE)|H(ECK(SUM{s}TABLE)?|A(R(ACTER)?|NGE))|O(MMENT|N(STRAINT|CURRENT|TINUE|DITION|VERT)|L(UMN|LATE)|ALESCE{s}PARTITION)|UR(RENT_(TIME(STAMP)?|DATE|USER)|SOR)|LOSE|A(S(CADE|E)|CHE{s}INDEX|LL))|I(GNORE|MPORT{s}TABLESPACE|S|N(SE(RT|NSITIVE)|NER|T(1|2|8|3|O({s}(DUMP|OUT)FILE)?|4|E(RVAL|GER))?|OUT|DEX|FILE)?|TERATE|F)|D(ROP|I(S(CARD{s}TABLESPACE|TINCT(ROW)?|ABLE{s}KEYS)|V)|O(UBLE)?|UAL|E(SC(RIBE)?|C(IMAL|LARE)?|TERMINISTIC|FAULT|L(ETE|AYED))|A(Y_(MI(NUTE|CROSECOND)|SECOND|HOUR)|TABASE(S)?))|JOIN|E(X(I(STS|T)|PLAIN|ECUTE)|SCAPED{s}BY|N(CLOSED{s}BY|ABLE{s}KEYS)|LSE(IF)?|ACH)|K(ILL({s}(CONNECTION|QUERY))?|EY(S|_BLOCK_SIZE)?)|F(ROM|IRST|OR(CE|EIGN)?|ULLTEXT|ETCH|L(OAT(8|4)?|USH)|ALSE)|A(S(C|ENSITIVE)?|N(D|ALYZE)|CCESSIBLE|DD|UTO_INCREMENT|FTER|L(TER|L)))
-keywordl (R(TREE|IGHT|E(GEXP|MOVE{s}PARTITIONING|BUILD{s}PARTITION|S(T(RICT|ORE{s}TABLE)|ET)|NAME|TURN|ORGANIZE{s}PARTITION|P(EAT|LACE|AIR)|VOKE|QUIRE|FERENCES|LEASE|A(D(S|_WRITE)?|L))|LIKE|ANGE)|XOR|M(I(NUTE_(MICROSECOND|SECOND)|DDLEINT)|OD(IF(Y|IES))?|EDIUM(BLOB|TEXT|INT)|A(STER_SSL_VERIFY_SERVER_CERT|TCH))|S(MALLINT|SL|HOW({s}(E(NGINE(S)?|RRORS)|M(ASTER|UTEX)|BINLOG|GRANTS|INNODB|P(RIVILEGES|ROFILE(S)?|ROCEDURE{s}CODE)|SLAVE{s}(HOSTS|STATUS)|TRIGGERS|VARIABLES|WARNINGS))?|CHEMA(S)?|T(RAIGHT_JOIN|A(RTING{s}BY|TUS))|P(ECIFIC|ATIAL)|E(SSION|NSITIVE|COND_MICROSECOND|T({s}(PASSWORD|NAMES|ONE_SHOT))?|PARATOR|LECT)|QL(STATE|_(B(IG_RESULT|UFFER_RESULT)|SMALL_RESULT|NO_CACHE|CA(CHE|LC_FOUND_ROWS))|EXCEPTION|WARNING)?)|YEAR_MONTH|N(O(_WRITE_TO_BINLOG|T)|U(MERIC|LL)|EXT|ATURAL)|T(R(IGGER|U(NCATE|E)|AILING)|HEN|INY(BLOB|TEXT|INT)|O|ERMINATED{s}BY|ABLE)|ZEROFILL|O(R(DER{s}BY)?|N({s}(DUPLICATE{s}KEY{s}UPDATE)?|LINE)|UT(ER|FILE)?|P(TI(MIZE|ON(ALLY)?)|EN)|FF(SET|LINE))|U(S(ING|E|AGE)|N(SIGNED|I(ON|QUE)|DO|LOCK)|TC_(TIME(STAMP)?|DATE)|PDATE)|P(R(IMARY|OCEDURE|E(CISION|PARE|V))|URGE|ARTITION)|VA(R(BINARY|YING|CHAR(ACTER)?)|LUES)|QUICK|W(RITE|H(ILE|E(RE|N))|ITH({s}PARSER)?)|L(I(MIT|NE(S|AR)|KE)|O(GS|NG(BLOB|TEXT)?|C(K|AL(TIME(STAMP)?)?)|OP|W_PRIORITY|AD{s}(DATA|INDEX{s}INTO{s}CACHE))|E(FT|A(DING|VE))|AST))
+keyworda (G(R(OUP{s}BY|ANT(S)?)|E(T_FORMAT|OMETRY(COLLECTION)?)|LOBAL)|B(Y(TE)?|TREE|I(GINT|N(LOG|ARY)|T)|O(TH|OL(EAN)?)|E(GIN|TWEEN|FORE)|LOB|ACKUP{s}TABLE)|H(IGH_PRIORITY|O(STS|UR(_(MI(NUTE|CROSECOND)|SECOND))?)|ELP|A(SH|NDLER|VING))|C(R(OSS|EATE)|H(ECK(SUM{s}TABLE)?|A(R(SET|ACTER)?|NGE(D)?|IN))|IPHER|O(M(M(IT(TED)?|ENT)|P(RESSED|LETION|ACT))|N(S(TRAINT|ISTENT)|NECTION|CURRENT|T(RIBUTORS|INUE|AINS)|DITION|VERT)|DE|L(UMN|LATE)|ALESCE{s}PARTITION)|U(R(RENT_(TIME(STAMP)?|DATE|USER)|SOR)|BE)|L(IENT|OSE)|A(S(CADE(D)?|E)|CHE{s}INDEX|LL))|I(GNORE|MPORT{s}TABLESPACE|S(SUER|OLATION)?|N(S(TALL|E(RT(_METHOD)?|NSITIVE))|N(O(BASE|DB)|ER)|T(1|2|8|3|O({s}(DUMP|OUT)FILE)?|4|E(RVAL|GER))?|ITIAL_SIZE|OUT|DEX(ES)?|VOKER|FILE)?|TERATE|O_THREAD|DENTIFIED|F)|D(ROP|YNAMIC|I(RECTORY|S(CARD{s}TABLESPACE|TINCT(ROW)?|K|ABLE{s}KEYS)|V)|O(UBLE)?|U(MPFILE|PLICATE|AL)|E(S(C(RIBE)?|_KEY_FILE)|C(IMAL|LARE)?|TERMINISTIC|F(INER|AULT)|L(ETE|AY(_KEY_WRITE|ED))|ALLOCATE)|A(Y(_(MI(NUTE|CROSECOND)|SECOND|HOUR))?|T(E(TIME)?|A(BASE(S)?|FILE)?)))|JOIN|E(RRORS|X(TEN(T_SIZE|DED)|I(STS|T)|P(LAIN|ANSION)|ECUTE)|SCAPE(D{s}BY)?|N(GINE(S)?|CLOSED{s}BY|D(S)?|UM|ABLE{s}KEYS)|VE(RY|NT)|LSE(IF)?|ACH)|K(ILL({s}(CONNECTION|QUERY))?|EY(S|_BLOCK_SIZE)?)|F(R(OM|AC_SECOND)|I(RST|XED|LE)|O(R(CE|EIGN)?|UND)|U(NCTION|LL(TEXT)?)|ETCH|L(OAT(8|4)?|USH)|A(ST|LSE))|A(G(GREGATE|AINST)|S(C(II)?|ENSITIVE)?|N(Y|D|ALYZE)|C(CESSIBLE|TION)|T|DD|UT(HORS|O(_INCREMENT|EXTEND_SIZE))|VG(_ROW_LENGTH)?|FTER|L(GORITHM|TER|L)))
+keywordl (R(TREE|IGHT|O(UTINE|W(S|_FORMAT)?|LL(BACK|UP))|E(GEXP|MOVE{s}PARTITIONING|BUILD{s}PARTITION|S(T(RICT|ORE{s}TABLE)|UME|ET)|NAME|COVER|TURN(S)?|ORGANIZE{s}PARTITION|D(O(_BUFFER_SIZE|FILE)|UNDANT)|P(EAT(ABLE)?|L(ICATION|ACE)|AIR)|VOKE|QUIRE|FERENCES|L(OAD|EASE|AY_(THREAD|LOG_(POS|FILE)))|A(D(S|_(ONLY|WRITE))?|L))|LIKE|ANGE)|M(I(GRATE|N(_ROWS|UTE(_(MICROSECOND|SECOND))?)|CROSECOND|DDLEINT)|O(NTH|D(IF(Y|IES)|E)?)|U(TEX|LTI(PO(INT|LYGON)|LINESTRING))|E(RGE|MORY|DIUM(BLOB|TEXT|INT)?)|A(X(_(ROWS|SIZE|CONNECTIONS_PER_HOUR|U(SER_CONNECTIONS|PDATES_PER_HOUR)|QUERIES_PER_HOUR)|VALUE)|STER(_(S(SL(_(C(IPHER|ERT|A(PATH)?)|VERIFY_SERVER_CERT|KEY))?|ERVER_ID)|HOST|CONNECT_RETRY|USER|P(ORT|ASSWORD)|LOG_(POS|FILE)))?|TCH))|N(CHAR|O(NE|_W(RITE_TO_BINLOG|AIT)|T|DEGROUP)?|DB(CLUSTER)?|U(MERIC|LL)|E(XT|W)|VARCHAR|A(ME(S)?|T(IONAL|URAL)))|O(R(DER{s}BY)?|N({s}(DUPLICATE{s}KEY{s}UPDATE)?|E(_SHOT)?|LINE)|UT(ER|FILE)?|P(TI(MIZE|ON(ALLY)?)|EN)|FF(SET|LINE)|LD_PASSWORD)|P(R(I(MARY|VILEGES)|OCE(SS|DURE)|E(SERVE|CISION|PARE|V))|HASE|O(INT|LYGON)|URGE|A(R(SER|TI(TION(S|ING)?|AL))|SSWORD|CK_KEYS))|QU(ICK|ERY|ARTER)|L(I(MIT|ST|NE(S(TRING)?|AR)|KE)|O(G(S|FILE)|NG(BLOB|TEXT)?|C(K(S)?|AL(TIME(STAMP)?)?)|OP|W_PRIORITY|AD{s}(DATA|INDEX{s}INTO{s}CACHE))|E(SS|VEL|FT|A(DING|VE(S)?))|A(ST|NGUAGE)))
+keywords (X(OR|509|A)|S(MALLINT|SL|H(OW({s}(E(NGINE(S)?|RRORS)|M(ASTER|UTEX)|BINLOG|GRANTS|INNODB|P(RIVILEGES|ROFILE(S)?|ROCEDURE{s}CODE)|SLAVE{s}(HOSTS|STATUS)|TRIGGERS|VARIABLES|WARNINGS|PROCESSLIST|FIELDS|PLUGIN(S)?|STORAGE{s}ENGINES|TABLE{s}TYPES|CO(LUMNS|LLATION)|BINLOG{s}EVENTS))?|UTDOWN|ARE)|NAPSHOT|CHE(MA(S)?|DULE(R)?)|T(R(ING|AIGHT_JOIN)|OP|A(RT(S|ING{s}BY)?|TUS))|I(GNED|MPLE)|O(ME|NAME|UNDS)|U(B(JECT|PARTITION(S)?)|SPEND|PER)|P(ECIFIC|ATIAL)|E(RIAL(IZABLE)?|SSION|NSITIVE|C(OND(_MICROSECOND)?|URITY)|T({s}(PASSWORD|NAMES|ONE_SHOT))?|PARATOR|LECT)|QL(STATE|_(B(IG_RESULT|UFFER_RESULT)|SMALL_RESULT|NO_CACHE|CA(CHE|LC_FOUND_ROWS)|T(SI_(M(INUTE|ONTH)|SECOND|HOUR|YEAR|DAY|QUARTER|FRAC_SECOND|WEEK)|HREAD))|EXCEPTION|WARNING)?|LAVE|AVEPOINT)|YEAR(_MONTH)?|T(R(IGGER(S)?|U(NCATE|E)|A(NSACTION|ILING))|H(EN|AN)|YPE|I(ME(STAMP(DIFF|ADD)?)?|NY(BLOB|TEXT|INT))|O|E(RMINATED{s}BY|XT|MP(TABLE|ORARY))|ABLE(S(PACE)?)?)|ZEROFILL|U(S(ING|E(R(_RESOURCES)?|_FRM)?|AGE)|N(SIGNED|COMMITTED|TIL|I(NSTALL|CODE|ON|QUE)|D(O(_BUFFER_SIZE|FILE)?|EFINED)|KNOWN|LOCK)|TC_(TIME(STAMP)?|DATE)|P(GRADE|DATE))|V(IEW|A(R(BINARY|YING|CHAR(ACTER)?|IABLES)|LUE(S)?))|W(RITE|H(ILE|E(RE|N))|ITH({s}PARSER)?|ORK|EEK|A(RNINGS|IT)))
%x comment
@@ -69,6 +70,7 @@ keywordl (R(TREE|IGHT|E(GEXP|MOVE{s}PARTITIONING|BUILD{s}PARTITION|S(T(RICT|ORE{
{keyworda} { return SPT_RESERVED_WORD; } /* all the mysql reserved words */
{keywordl} { return SPT_RESERVED_WORD; } /* all the mysql reserved words */
+{keywords} { return SPT_RESERVED_WORD; } /* all the mysql reserved words */
{numeric} { return SPT_NUMERIC; } /* single numeric value */
@@ -142,68 +144,113 @@ done:
/* un-optimized keywords:
ACCESSIBLE
+ACTION
ADD
AFTER
+AGAINST
+AGGREGATE
+ALGORITHM
ALL
ALTER
ANALYZE
AND
+ANY
AS
ASC
+ASCII
ASENSITIVE
+AT
+AUTHORS
+AUTOEXTEND_SIZE
AUTO_INCREMENT
+AVG
+AVG_ROW_LENGTH
BACKUP{s}TABLE
BEFORE
+BEGIN
BETWEEN
BIGINT
BINARY
+BINLOG
+BIT
BLOB
+BOOL
+BOOLEAN
BOTH
BTREE
BY
+BYTE
CACHE{s}INDEX
CALL
CASCADE
+CASCADED
CASE
+CHAIN
CHANGE
+CHANGED
CHAR
CHARACTER
+CHARSET
CHECK
CHECKSUM{s}TABLE
+CIPHER
+CLIENT
CLOSE
COALESCE{s}PARTITION
+CODE
COLLATE
COLUMN
COMMENT
+COMMIT
+COMMITTED
+COMPACT
+COMPLETION
+COMPRESSED
CONCURRENT
CONDITION
+CONNECTION
+CONSISTENT
CONSTRAINT
+CONTAINS
CONTINUE
+CONTRIBUTORS
CONVERT
CREATE
CROSS
+CUBE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_USER
CURSOR
+DATA
DATABASE
DATABASES
+DATAFILE
+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{s}KEYS
DISCARD{s}TABLESPACE
+DISK
DISTINCT
DISTINCTROW
DIV
@@ -211,19 +258,37 @@ DO
DOUBLE
DROP
DUAL
+DUMPFILE
+DUPLICATE
+DYNAMIC
EACH
ELSE
ELSEIF
ENABLE{s}KEYS
ENCLOSED{s}BY
+END
+ENDS
+ENGINE
+ENGINES
+ENUM
+ERRORS
+ESCAPE
ESCAPED{s}BY
+EVENT
+EVERY
EXECUTE
EXISTS
EXIT
+EXPANSION
EXPLAIN
+EXTENDED
+EXTENT_SIZE
FALSE
+FAST
FETCH
+FILE
FIRST
+FIXED
FLOAT
FLOAT4
FLOAT8
@@ -231,28 +296,46 @@ FLUSH
FOR
FORCE
FOREIGN
+FOUND
+FRAC_SECOND
FROM
+FULL
FULLTEXT
+FUNCTION
+GEOMETRY
+GEOMETRYCOLLECTION
+GET_FORMAT
GLOBAL
GRANT
+GRANTS
GROUP{s}BY
HANDLER
HASH
HAVING
+HELP
HIGH_PRIORITY
+HOSTS
+HOUR
HOUR_MICROSECOND
HOUR_MINUTE
HOUR_SECOND
+IDENTIFIED
IF
IGNORE
IMPORT{s}TABLESPACE
IN
INDEX
+INDEXES
INFILE
+INITIAL_SIZE
INNER
+INNOBASE
+INNODB
INOUT
INSENSITIVE
INSERT
+INSERT_METHOD
+INSTALL
INT
INT1
INT2
@@ -262,51 +345,113 @@ INT8
INTEGER
INTERVAL
INTO({s}(DUMP|OUT)FILE)?
+INVOKER
+IO_THREAD
IS
+ISOLATION
+ISSUER
ITERATE
JOIN
KEY
KEYS
KEY_BLOCK_SIZE
KILL({s}(CONNECTION|QUERY))?
+LANGUAGE
LAST
LEADING
LEAVE
+LEAVES
LEFT
+LESS
+LEVEL
LIKE
LIMIT
LINEAR
LINES
+LINESTRING
+LIST
LOAD{s}(DATA|INDEX{s}INTO{s}CACHE)
LOCAL
LOCALTIME
LOCALTIMESTAMP
LOCK
+LOCKS
+LOGFILE
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_SSL_VERIFY_SERVER_CERT
+MASTER_USER
MATCH
+MAXVALUE
+MAX_CONNECTIONS_PER_HOUR
+MAX_QUERIES_PER_HOUR
+MAX_ROWS
+MAX_SIZE
+MAX_UPDATES_PER_HOUR
+MAX_USER_CONNECTIONS
+MEDIUM
MEDIUMBLOB
MEDIUMINT
MEDIUMTEXT
+MEMORY
+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
+NODEGROUP
+NONE
NOT
+NO_WAIT
NO_WRITE_TO_BINLOG
NULL
NUMERIC
+NVARCHAR
OFFLINE
OFFSET
+OLD_PASSWORD
+ONE
+ONE_SHOT
ONLINE
ON{s}(DUPLICATE{s}KEY{s}UPDATE)?
OPEN
@@ -318,48 +463,97 @@ ORDER{s}BY
OUT
OUTER
OUTFILE
+PACK_KEYS
+PARSER
+PARTIAL
PARTITION
+PARTITIONING
+PARTITIONS
+PASSWORD
+PHASE
+POINT
+POLYGON
PRECISION
PREPARE
+PRESERVE
PREV
PRIMARY
+PRIVILEGES
PROCEDURE
+PROCESS
PURGE
+QUARTER
+QUERY
QUICK
RANGE
READ
READS
+READ_ONLY
READ_WRITE
REAL
REBUILD{s}PARTITION
+RECOVER
+REDOFILE
+REDO_BUFFER_SIZE
+REDUNDANT
REFERENCES
REGEXP
+RELAY_LOG_FILE
+RELAY_LOG_POS
+RELAY_THREAD
RELEASE
+RELOAD
REMOVE{s}PARTITIONING
RENAME
REORGANIZE{s}PARTITION
REPAIR
REPEAT
+REPEATABLE
REPLACE
+REPLICATION
REQUIRE
RESET
RESTORE{s}TABLE
RESTRICT
+RESUME
RETURN
+RETURNS
REVOKE
RIGHT
RLIKE
+ROLLBACK
+ROLLUP
+ROUTINE
+ROW
+ROWS
+ROW_FORMAT
RTREE
+SAVEPOINT
+SCHEDULE
+SCHEDULER
SCHEMA
SCHEMAS
+SECOND
SECOND_MICROSECOND
+SECURITY
SELECT
SENSITIVE
SEPARATOR
+SERIAL
+SERIALIZABLE
SESSION
SET({s}(PASSWORD|NAMES|ONE_SHOT))?
-SHOW({s}(E(NGINE(S)?|RRORS)|M(ASTER|UTEX)|BINLOG|GRANTS|INNODB|P(RIVILEGES|ROFILE(S)?|ROCEDURE{s}CODE)|SLAVE{s}(HOSTS|STATUS)|TRIGGERS|VARIABLES|WARNINGS))?
+SHARE
+SHOW({s}(E(NGINE(S)?|RRORS)|M(ASTER|UTEX)|BINLOG|GRANTS|INNODB|P(RIVILEGES|ROFILE(S)?|ROCEDURE{s}CODE)|SLAVE{s}(HOSTS|STATUS)|TRIGGERS|VARIABLES|WARNINGS|PROCESSLIST|FIELDS|PLUGIN(S)?|STORAGE{s}ENGINES|TABLE{s}TYPES|CO(LUMNS|LLATION)|BINLOG{s}EVENTS))?
+SHUTDOWN
+SIGNED
+SIMPLE
+SLAVE
SMALLINT
+SNAPSHOT
+SOME
+SONAME
+SOUNDS
SPATIAL
SPECIFIC
SQL
@@ -372,44 +566,98 @@ 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{s}BY
+STARTS
STATUS
+STOP
STRAIGHT_JOIN
+STRING
+SUBJECT
+SUBPARTITION
+SUBPARTITIONS
+SUPER
+SUSPEND
TABLE
+TABLES
+TABLESPACE
+TEMPORARY
+TEMPTABLE
TERMINATED{s}BY
+TEXT
+THAN
THEN
+TIME
+TIMESTAMP
+TIMESTAMPADD
+TIMESTAMPDIFF
TINYBLOB
TINYINT
TINYTEXT
TO
TRAILING
+TRANSACTION
TRIGGER
+TRIGGERS
TRUE
TRUNCATE
+TYPE
+UNCOMMITTED
+UNDEFINED
UNDO
+UNDOFILE
+UNDO_BUFFER_SIZE
+UNICODE
+UNINSTALL
UNION
UNIQUE
+UNKNOWN
UNLOCK
UNSIGNED
+UNTIL
UPDATE
+UPGRADE
USAGE
USE
+USER
+USER_RESOURCES
+USE_FRM
USING
UTC_DATE
UTC_TIME
UTC_TIMESTAMP
+VALUE
VALUES
VARBINARY
VARCHAR
VARCHARACTER
+VARIABLES
VARYING
+VIEW
+WAIT
+WARNINGS
+WEEK
WHEN
WHERE
WHILE
WITH({s}PARSER)?
+WORK
WRITE
+X509
+XA
XOR
+YEAR
YEAR_MONTH
ZEROFILL
*/