codekingpro/portable-devtools
114k
1" Vim syntax file2" Language: SQL, SAP HANA In Memory Database3" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>4" Last Change: 2012 Oct 235" Version: SP4 b (Q2 2012)6" Homepage: http://www.vim.org/scripts/script.php?script_id=42757 8" Description: Updated to SAP HANA SP49"10" quit when a syntax file was already loaded11if exists("b:current_syntax")12 finish13endif14 15syn case ignore16 17" The SQL reserved words, defined as keywords.18" These were pulled from the following SQL reference:19" http://help.sap.com/hana/hana_sql_en.pdf20" An easy approach is to copy all text from the PDF21" into a Vim buffer. The keywords are in UPPER case,22" so you can run the following commands to be left with23" mainly the UPPER case words:24" 1. Delete all words that do not begin with a Capital25" %s/\(\<[^A-Z]\w*\>\)//g26" 2. Remove all words where the 2nd letter is not a Capital27" %s/\(\<[A-Z][^A-Z]\w*\>\)//g28" 3. Remove all non-word (or space) characters29" %s/[^0-9A-Za-z_ ]*//g30" 4. Remove some known words31" %s/\<\(SAP\|HANA\|OK\|AG\|IBM\|DB2\|AIX\|POWER\d\+\|UNIX\)\>//g32" 5. Remove blank lines and trailing spaces33" %s/\s\+$//g34" %s/^\s\+//g35" %s/^$\n//g36" 6. Convert spaces to newlines remove single character37" %s/[ ]\+/\r/g38" %g/^\w$/d39" 7. Sort and remove duplicates40" :sort41" :Uniq42" 8. Use the WhatsMissing plugin against the sqlhana.vim file.43" 9. Generated a file of all UPPER cased words which should not44" be in the syntax file. These items should be removed45" from the list in step 7. You can use WhatsNotMissing46" between step 7 and this new file to weed out the words47" we know are not syntax related.48" 10. Use the WhatsMissingRemoveMatches to remove the words49" from step 9.50 51syn keyword sqlSpecial false null true52 53" Supported Functions for Date/Time types54syn keyword sqlFunction ADD_DAYS ADD_MONTHS ADD_SECONDS ADD_YEARS COALESCE55syn keyword sqlFunction CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_UTCDATE56syn keyword sqlFunction CURRENT_UTCTIME CURRENT_UTCTIMESTAMP57syn keyword sqlFunction DAYNAME DAYOFMONTH DAYOFYEAR DAYS_BETWEEN EXTRACT58syn keyword sqlFunction GREATEST HOUR IFNULL ISOWEEK LAST_DAY LEAST LOCALTOUTC59syn keyword sqlFunction MINUTE MONTH MONTHNAME NEXT_DAY NOW QUARTER SECOND60syn keyword sqlFunction SECONDS_BETWEEN UTCTOLOCAL WEEK WEEKDAY YEAR61 62syn keyword sqlFunction TO_CHAR TO_DATE TO_DATS TO_NCHAR TO_TIME TO_TIMESTAMP UTCTOLOCAL63 64" Aggregate65syn keyword sqlFunction COUNT MIN MAX SUM AVG STDDEV VAR66 67" Datatype conversion68syn keyword sqlFunction CAST TO_ALPHANUM TO_BIGINT TO_BINARY TO_BLOB TO_CHAR TO_CLOB69syn keyword sqlFunction TO_DATE TO_DATS TO_DECIMAL TO_DOUBLE TO_INT TO_INTEGER TO_NCHAR70syn keyword sqlFunction TO_NCLOB TO_NVARCHAR TO_REAL TO_SECONDDATE TO_SMALLDECIMAL71syn keyword sqlFunction TO_SMALLINT TO_TIME TO_TIMESTAMP TO_TINYINT TO_VARCHAR TO_VARBINARY72 73" Number functions74syn keyword sqlFunction ABS ACOS ASIN ATAN ATAN2 BINTOHEX BITAND CEIL COS COSH COT75syn keyword sqlFunction EXP FLOOR GREATEST HEXTOBIN LEAST LN LOG MOD POWER ROUND76syn keyword sqlFunction SIGN SIN SINH SQRT TAN TANH UMINUS77 78" String functions79syn keyword sqlFunction ASCII CHAR CONCAT LCASE LENGTH LOCATE LOWER LPAD LTRIM80syn keyword sqlFunction NCHAR REPLACE RPAD RTRIM SUBSTR_AFTER SUBSTR_BEFORE81syn keyword sqlFunction SUBSTRING TRIM UCASE UNICODE UPPER82 83" Miscellaneous functions84syn keyword sqlFunction COALESCE CURRENT_CONNECTION CURRENT_SCHEMA CURRENT_USER85syn keyword sqlFunction GROUPING_ID IFNULL MAP NULLIF SESSION_CONTEXT SESSION_USER SYSUUIDSQL86syn keyword sqlFunction GET_NUM_SERVERS87 88 89" sp_ procedures90" syn keyword sqlFunction sp_addalias91 92 93" Reserved keywords94syn keyword sqlkeyword ALL AS AT BEFORE95syn keyword sqlkeyword BEGIN BOTH BY96syn keyword sqlkeyword CONDITION97syn keyword sqlkeyword CURRVAL CURSOR DECLARE98syn keyword sqlkeyword DISTINCT DO ELSE ELSEIF ELSIF99syn keyword sqlkeyword END EXCEPTION EXEC100syn keyword sqlkeyword FOR FROM GROUP101syn keyword sqlkeyword HAVING IN102syn keyword sqlkeyword INOUT INTO IS103syn keyword sqlkeyword LEADING104syn keyword sqlkeyword LOOP MINUS NATURAL NEXTVAL105syn keyword sqlkeyword OF ON ORDER OUT106syn keyword sqlkeyword PRIOR RETURN RETURNS REVERSE107syn keyword sqlkeyword ROWID SELECT108syn keyword sqlkeyword SQL START STOP SYSDATE109syn keyword sqlkeyword SYSTIME SYSTIMESTAMP SYSUUID110syn keyword sqlkeyword TRAILING USING UTCDATE111syn keyword sqlkeyword UTCTIME UTCTIMESTAMP VALUES112syn keyword sqlkeyword WHILE113syn keyword sqlkeyword ANY SOME EXISTS ESCAPE114 115" IF keywords116syn keyword sqlkeyword IF117 118" CASE keywords119syn keyword sqlKeyword WHEN THEN120 121" Syntax rules common to TEXT and SHORTTEXT keywords122syn keyword sqlKeyword LANGUAGE DETECTION LINGUISTIC123syn keyword sqlkeyword MIME TYPE124syn keyword sqlkeyword EXACT WEIGHT FUZZY FUZZINESSTHRESHOLD SEARCH125syn keyword sqlkeyword PHRASE INDEX RATIO REBUILD126syn keyword sqlkeyword CONFIGURATION127syn keyword sqlkeyword SEARCH ONLY128syn keyword sqlkeyword FAST PREPROCESS129syn keyword sqlkeyword SYNC SYNCHRONOUS ASYNC ASYNCHRONOUS FLUSH QUEUE130syn keyword sqlkeyword EVERY AFTER MINUTES DOCUMENTS SUSPEND131 132" Statement keywords (i.e. after ALTER or CREATE)133syn keyword sqlkeyword AUDIT POLICY134syn keyword sqlkeyword FULLTEXT135syn keyword sqlkeyword SEQUENCE RESTART136syn keyword sqlkeyword TABLE137syn keyword sqlkeyword PROCEDURE STATISTICS138syn keyword sqlkeyword SCHEMA139syn keyword sqlkeyword SYNONYM140syn keyword sqlkeyword VIEW141syn keyword sqlkeyword COLUMN142syn keyword sqlkeyword SYSTEM LICENSE143syn keyword sqlkeyword SESSION144syn keyword sqlkeyword CANCEL WORK145syn keyword sqlkeyword PLAN CACHE146syn keyword sqlkeyword LOGGING NOLOGGING RETENTION147syn keyword sqlkeyword RECONFIGURE SERVICE148syn keyword sqlkeyword RESET MONITORING149syn keyword sqlkeyword SAVE DURATION PERFTRACE FUNCTION_PROFILER150syn keyword sqlkeyword SAVEPOINT151syn keyword sqlkeyword USER152syn keyword sqlkeyword ROLE153syn keyword sqlkeyword ASC DESC154syn keyword sqlkeyword OWNED155syn keyword sqlkeyword DEPENDENCIES SCRAMBLE156 157" Create sequence158syn keyword sqlkeyword INCREMENT MAXVALUE MINVALUE CYCLE159 160" Create table161syn keyword sqlkeyword HISTORY GLOBAL LOCAL TEMPORARY162 163" Create trigger164syn keyword sqlkeyword TRIGGER REFERENCING EACH DEFAULT165syn keyword sqlkeyword SIGNAL RESIGNAL MESSAGE_TEXT OLD NEW166syn keyword sqlkeyword EXIT HANDLER SQL_ERROR_CODE167syn keyword sqlkeyword TARGET CONDITION SIGNAL168 169" Alter table170syn keyword sqlkeyword ADD DROP MODIFY GENERATED ALWAYS171syn keyword sqlkeyword UNIQUE BTREE CPBTREE PRIMARY KEY172syn keyword sqlkeyword CONSTRAINT PRELOAD NONE173syn keyword sqlkeyword ROW THREADS BATCH174syn keyword sqlkeyword MOVE PARTITION TO LOCATION PHYSICAL OTHERS175syn keyword sqlkeyword ROUNDROBIN PARTITIONS HASH RANGE VALUE176syn keyword sqlkeyword PERSISTENT DELTA AUTO AUTOMERGE177 178" Create audit policy179syn keyword sqlkeyword AUDITING SUCCESSFUL UNSUCCESSFUL180syn keyword sqlkeyword PRIVILEGE STRUCTURED CHANGE LEVEL181syn keyword sqlkeyword EMERGENCY ALERT CRITICAL WARNING INFO182 183" Privileges184syn keyword sqlkeyword DEBUG EXECUTE185 186" Schema187syn keyword sqlkeyword CASCADE RESTRICT PARAMETERS SCAN188 189" Traces190syn keyword sqlkeyword CLIENT CRASHDUMP EMERGENCYDUMP191syn keyword sqlkeyword INDEXSERVER NAMESERVER DAEMON192syn keyword sqlkeyword CLEAR REMOVE TRACES193 194" Reclaim195syn keyword sqlkeyword RECLAIM DATA VOLUME VERSION SPACE DEFRAGMENT SPARSIFY196 197" Join198syn keyword sqlkeyword INNER OUTER LEFT RIGHT FULL CROSS JOIN199syn keyword sqlkeyword GROUPING SETS ROLLUP CUBE200syn keyword sqlkeyword BEST LIMIT OFFSET201syn keyword sqlkeyword WITH SUBTOTAL BALANCE TOTAL202syn keyword sqlkeyword TEXT_FILTER FILL UP SORT MATCHES TOP203syn keyword sqlkeyword RESULT OVERVIEW PREFIX MULTIPLE RESULTSETS204 205" Lock206syn keyword sqlkeyword EXCLUSIVE MODE NOWAIT207 208" Transaction209syn keyword sqlkeyword TRANSACTION ISOLATION READ COMMITTED210syn keyword sqlkeyword REPEATABLE SERIALIZABLE WRITE211 212" Saml213syn keyword sqlkeyword SAML ASSERTION PROVIDER SUBJECT ISSUER214 215" User216syn keyword sqlkeyword PASSWORD IDENTIFIED EXTERNALLY ATTEMPTS ATTEMPTS217syn keyword sqlkeyword ENABLE DISABLE OFF LIFETIME FORCE DEACTIVATE218syn keyword sqlkeyword ACTIVATE IDENTITY KERBEROS219 220" Grant221syn keyword sqlkeyword ADMIN BACKUP CATALOG SCENARIO INIFILE MONITOR222syn keyword sqlkeyword OPTIMIZER OPTION223syn keyword sqlkeyword RESOURCE STRUCTUREDPRIVILEGE TRACE224 225" Import226syn keyword sqlkeyword CSV FILE CONTROL NO CHECK SKIP FIRST LIST227syn keyword sqlkeyword RECORD DELIMITED FIELD OPTIONALLY ENCLOSED FORMAT228 229" Roles230syn keyword sqlkeyword PUBLIC CONTENT_ADMIN MODELING MONITORING231 232" Miscellaneous233syn keyword sqlkeyword APPLICATION BINARY IMMEDIATE COREFILE SECURITY DEFINER234syn keyword sqlkeyword DUMMY INVOKER MATERIALIZED MESSEGE_TEXT PARAMETER PARAMETERS235syn keyword sqlkeyword PART236syn keyword sqlkeyword CONSTANT SQLEXCEPTION SQLWARNING237 238syn keyword sqlOperator WHERE BETWEEN LIKE NULL CONTAINS239syn keyword sqlOperator AND OR NOT CASE240syn keyword sqlOperator UNION INTERSECT EXCEPT241 242syn keyword sqlStatement ALTER CALL CALLS CREATE DROP RENAME TRUNCATE243syn keyword sqlStatement DELETE INSERT UPDATE EXPLAIN244syn keyword sqlStatement MERGE REPLACE UPSERT SELECT245syn keyword sqlStatement SET UNSET LOAD UNLOAD246syn keyword sqlStatement CONNECT DISCONNECT COMMIT LOCK ROLLBACK247syn keyword sqlStatement GRANT REVOKE248syn keyword sqlStatement EXPORT IMPORT249 250 251syn keyword sqlType DATE TIME SECONDDATE TIMESTAMP TINYINT SMALLINT252syn keyword sqlType INT INTEGER BIGINT SMALLDECIMAL DECIMAL253syn keyword sqlType REAL DOUBLE FLOAT254syn keyword sqlType VARCHAR NVARCHAR ALPHANUM SHORTTEXT VARBINARY255syn keyword sqlType BLOB CLOB NCLOB TEXT DAYDATE256 257syn keyword sqlOption Webservice_namespace_host258 259" Strings and characters:260syn region sqlString start=+"+ end=+"+ contains=@Spell261syn region sqlString start=+'+ end=+'+ contains=@Spell262 263" Numbers:264syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>"265 266" Comments:267syn region sqlDashComment start=/--/ end=/$/ contains=@Spell268syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell269syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell270syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell271syn sync ccomment sqlComment272syn sync ccomment sqlDashComment273syn sync ccomment sqlSlashComment274 275hi def link sqlDashComment Comment276hi def link sqlSlashComment Comment277hi def link sqlMultiComment Comment278hi def link sqlNumber Number279hi def link sqlOperator Operator280hi def link sqlSpecial Special281hi def link sqlKeyword Keyword282hi def link sqlStatement Statement283hi def link sqlString String284hi def link sqlType Type285hi def link sqlFunction Function286hi def link sqlOption PreProc287 288let b:current_syntax = "sqlhana"289 290" vim:sw=4:291 