" Vim syntax file
" Language: SQL, SAP HANA In Memory Database
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
" Last Change: 2012 Oct 23
" Version: SP4 b (Q2 2012)
" Homepage: http://www.vim.org/scripts/script.php?script_id=4275
" Description: Updated to SAP HANA SP4
"
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
syn case ignore
" The SQL reserved words, defined as keywords.
" These were pulled from the following SQL reference:
" http://help.sap.com/hana/hana_sql_en.pdf
" An easy approach is to copy all text from the PDF
" into a Vim buffer. The keywords are in UPPER case,
" so you can run the following commands to be left with
" mainly the UPPER case words:
" 1. Delete all words that do not begin with a Capital
" %s/\(\<[^A-Z]\w*\>\)//g
" 2. Remove all words where the 2nd letter is not a Capital
" %s/\(\<[A-Z][^A-Z]\w*\>\)//g
" 3. Remove all non-word (or space) characters
" %s/[^0-9A-Za-z_ ]*//g
" 4. Remove some known words
" %s/\<\(SAP\|HANA\|OK\|AG\|IBM\|DB2\|AIX\|POWER\d\+\|UNIX\)\>//g
" 5. Remove blank lines and trailing spaces
" %s/\s\+$//g
" %s/^\s\+//g
" %s/^$\n//g
" 6. Convert spaces to newlines remove single character
" %s/[ ]\+/\r/g
" %g/^\w$/d
" 7. Sort and remove duplicates
" :sort
" :Uniq
" 8. Use the WhatsMissing plugin against the sqlhana.vim file.
" 9. Generated a file of all UPPER cased words which should not
" be in the syntax file. These items should be removed
" from the list in step 7. You can use WhatsNotMissing
" between step 7 and this new file to weed out the words
" we know are not syntax related.
" 10. Use the WhatsMissingRemoveMatches to remove the words
" from step 9.
syn keyword sqlSpecial false null true
" Supported Functions for Date/Time types
syn keyword sqlFunction ADD_DAYS ADD_MONTHS ADD_SECONDS ADD_YEARS COALESCE
syn keyword sqlFunction CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_UTCDATE
syn keyword sqlFunction CURRENT_UTCTIME CURRENT_UTCTIMESTAMP
syn keyword sqlFunction DAYNAME DAYOFMONTH DAYOFYEAR DAYS_BETWEEN EXTRACT
syn keyword sqlFunction GREATEST HOUR IFNULL ISOWEEK LAST_DAY LEAST LOCALTOUTC
syn keyword sqlFunction MINUTE MONTH MONTHNAME NEXT_DAY NOW QUARTER SECOND
syn keyword sqlFunction SECONDS_BETWEEN UTCTOLOCAL WEEK WEEKDAY YEAR
syn keyword sqlFunction TO_CHAR TO_DATE TO_DATS TO_NCHAR TO_TIME TO_TIMESTAMP UTCTOLOCAL
" Aggregate
syn keyword sqlFunction COUNT MIN MAX SUM AVG STDDEV VAR
" Datatype conversion
syn keyword sqlFunction CAST TO_ALPHANUM TO_BIGINT TO_BINARY TO_BLOB TO_CHAR TO_CLOB
syn keyword sqlFunction TO_DATE TO_DATS TO_DECIMAL TO_DOUBLE TO_INT TO_INTEGER TO_NCHAR
syn keyword sqlFunction TO_NCLOB TO_NVARCHAR TO_REAL TO_SECONDDATE TO_SMALLDECIMAL
syn keyword sqlFunction TO_SMALLINT TO_TIME TO_TIMESTAMP TO_TINYINT TO_VARCHAR TO_VARBINARY
" Number functions
syn keyword sqlFunction ABS ACOS ASIN ATAN ATAN2 BINTOHEX BITAND CEIL COS COSH COT
syn keyword sqlFunction EXP FLOOR GREATEST HEXTOBIN LEAST LN LOG MOD POWER ROUND
syn keyword sqlFunction SIGN SIN SINH SQRT TAN TANH UMINUS
" String functions
syn keyword sqlFunction ASCII CHAR CONCAT LCASE LENGTH LOCATE LOWER LPAD LTRIM
syn keyword sqlFunction NCHAR REPLACE RPAD RTRIM SUBSTR_AFTER SUBSTR_BEFORE
syn keyword sqlFunction SUBSTRING TRIM UCASE UNICODE UPPER
" Miscellaneous functions
syn keyword sqlFunction COALESCE CURRENT_CONNECTION CURRENT_SCHEMA CURRENT_USER
syn keyword sqlFunction GROUPING_ID IFNULL MAP NULLIF SESSION_CONTEXT SESSION_USER SYSUUIDSQL
syn keyword sqlFunction GET_NUM_SERVERS
" sp_ procedures
" syn keyword sqlFunction sp_addalias
" Reserved keywords
syn keyword sqlkeyword ALL AS AT BEFORE
syn keyword sqlkeyword BEGIN BOTH BY
syn keyword sqlkeyword CONDITION
syn keyword sqlkeyword CURRVAL CURSOR DECLARE
syn keyword sqlkeyword DISTINCT DO ELSE ELSEIF ELSIF
syn keyword sqlkeyword END EXCEPTION EXEC
syn keyword sqlkeyword FOR FROM GROUP
syn keyword sqlkeyword HAVING IN
syn keyword sqlkeyword INOUT INTO IS
syn keyword sqlkeyword LEADING
syn keyword sqlkeyword LOOP MINUS NATURAL NEXTVAL
syn keyword sqlkeyword OF ON ORDER OUT
syn keyword sqlkeyword PRIOR RETURN RETURNS REVERSE
syn keyword sqlkeyword ROWID SELECT
syn keyword sqlkeyword SQL START STOP SYSDATE
syn keyword sqlkeyword SYSTIME SYSTIMESTAMP SYSUUID
syn keyword sqlkeyword TRAILING USING UTCDATE
syn keyword sqlkeyword UTCTIME UTCTIMESTAMP VALUES
syn keyword sqlkeyword WHILE
syn keyword sqlkeyword ANY SOME EXISTS ESCAPE
" IF keywords
syn keyword sqlkeyword IF
" CASE keywords
syn keyword sqlKeyword WHEN THEN
" Syntax rules common to TEXT and SHORTTEXT keywords
syn keyword sqlKeyword LANGUAGE DETECTION LINGUISTIC
syn keyword sqlkeyword MIME TYPE
syn keyword sqlkeyword EXACT WEIGHT FUZZY FUZZINESSTHRESHOLD SEARCH
syn keyword sqlkeyword PHRASE INDEX RATIO REBUILD
syn keyword sqlkeyword CONFIGURATION
syn keyword sqlkeyword SEARCH ONLY
syn keyword sqlkeyword FAST PREPROCESS
syn keyword sqlkeyword SYNC SYNCHRONOUS ASYNC ASYNCHRONOUS FLUSH QUEUE
syn keyword sqlkeyword EVERY AFTER MINUTES DOCUMENTS SUSPEND
" Statement keywords (i.e. after ALTER or CREATE)
syn keyword sqlkeyword AUDIT POLICY
syn keyword sqlkeyword FULLTEXT
syn keyword sqlkeyword SEQUENCE RESTART
syn keyword sqlkeyword TABLE
syn keyword sqlkeyword PROCEDURE STATISTICS
syn keyword sqlkeyword SCHEMA
syn keyword sqlkeyword SYNONYM
syn keyword sqlkeyword VIEW
syn keyword sqlkeyword COLUMN
syn keyword sqlkeyword SYSTEM LICENSE
syn keyword sqlkeyword SESSION
syn keyword sqlkeyword CANCEL WORK
syn keyword sqlkeyword PLAN CACHE
syn keyword sqlkeyword LOGGING NOLOGGING RETENTION
syn keyword sqlkeyword RECONFIGURE SERVICE
syn keyword sqlkeyword RESET MONITORING
syn keyword sqlkeyword SAVE DURATION PERFTRACE FUNCTION_PROFILER
syn keyword sqlkeyword SAVEPOINT
syn keyword sqlkeyword USER
syn keyword sqlkeyword ROLE
syn keyword sqlkeyword ASC DESC
syn keyword sqlkeyword OWNED
syn keyword sqlkeyword DEPENDENCIES SCRAMBLE
" Create sequence
syn keyword sqlkeyword INCREMENT MAXVALUE MINVALUE CYCLE
" Create table
syn keyword sqlkeyword HISTORY GLOBAL LOCAL TEMPORARY
" Create trigger
syn keyword sqlkeyword TRIGGER REFERENCING EACH DEFAULT
syn keyword sqlkeyword SIGNAL RESIGNAL MESSAGE_TEXT OLD NEW
syn keyword sqlkeyword EXIT HANDLER SQL_ERROR_CODE
syn keyword sqlkeyword TARGET CONDITION SIGNAL
" Alter table
syn keyword sqlkeyword ADD DROP MODIFY GENERATED ALWAYS
syn keyword sqlkeyword UNIQUE BTREE CPBTREE PRIMARY KEY
syn keyword sqlkeyword CONSTRAINT PRELOAD NONE
syn keyword sqlkeyword ROW THREADS BATCH
syn keyword sqlkeyword MOVE PARTITION TO LOCATION PHYSICAL OTHERS
syn keyword sqlkeyword ROUNDROBIN PARTITIONS HASH RANGE VALUE
syn keyword sqlkeyword PERSISTENT DELTA AUTO AUTOMERGE
" Create audit policy
syn keyword sqlkeyword AUDITING SUCCESSFUL UNSUCCESSFUL
syn keyword sqlkeyword PRIVILEGE STRUCTURED CHANGE LEVEL
syn keyword sqlkeyword EMERGENCY ALERT CRITICAL WARNING INFO
" Privileges
syn keyword sqlkeyword DEBUG EXECUTE
" Schema
syn keyword sqlkeyword CASCADE RESTRICT PARAMETERS SCAN
" Traces
syn keyword sqlkeyword CLIENT CRASHDUMP EMERGENCYDUMP
syn keyword sqlkeyword INDEXSERVER NAMESERVER DAEMON
syn keyword sqlkeyword CLEAR REMOVE TRACES
" Reclaim
syn keyword sqlkeyword RECLAIM DATA VOLUME VERSION SPACE DEFRAGMENT SPARSIFY
" Join
syn keyword sqlkeyword INNER OUTER LEFT RIGHT FULL CROSS JOIN
syn keyword sqlkeyword GROUPING SETS ROLLUP CUBE
syn keyword sqlkeyword BEST LIMIT OFFSET
syn keyword sqlkeyword WITH SUBTOTAL BALANCE TOTAL
syn keyword sqlkeyword TEXT_FILTER FILL UP SORT MATCHES TOP
syn keyword sqlkeyword RESULT OVERVIEW PREFIX MULTIPLE RESULTSETS
" Lock
syn keyword sqlkeyword EXCLUSIVE MODE NOWAIT
" Transaction
syn keyword sqlkeyword TRANSACTION ISOLATION READ COMMITTED
syn keyword sqlkeyword REPEATABLE SERIALIZABLE WRITE
" Saml
syn keyword sqlkeyword SAML ASSERTION PROVIDER SUBJECT ISSUER
" User
syn keyword sqlkeyword PASSWORD IDENTIFIED EXTERNALLY ATTEMPTS ATTEMPTS
syn keyword sqlkeyword ENABLE DISABLE OFF LIFETIME FORCE DEACTIVATE
syn keyword sqlkeyword ACTIVATE IDENTITY KERBEROS
" Grant
syn keyword sqlkeyword ADMIN BACKUP CATALOG SCENARIO INIFILE MONITOR
syn keyword sqlkeyword OPTIMIZER OPTION
syn keyword sqlkeyword RESOURCE STRUCTUREDPRIVILEGE TRACE
" Import
syn keyword sqlkeyword CSV FILE CONTROL NO CHECK SKIP FIRST LIST
syn keyword sqlkeyword RECORD DELIMITED FIELD OPTIONALLY ENCLOSED FORMAT
" Roles
syn keyword sqlkeyword PUBLIC CONTENT_ADMIN MODELING MONITORING
" Miscellaneous
syn keyword sqlkeyword APPLICATION BINARY IMMEDIATE COREFILE SECURITY DEFINER
syn keyword sqlkeyword DUMMY INVOKER MATERIALIZED MESSEGE_TEXT PARAMETER PARAMETERS
syn keyword sqlkeyword PART
syn keyword sqlkeyword CONSTANT SQLEXCEPTION SQLWARNING
syn keyword sqlOperator WHERE BETWEEN LIKE NULL CONTAINS
syn keyword sqlOperator AND OR NOT CASE
syn keyword sqlOperator UNION INTERSECT EXCEPT
syn keyword sqlStatement ALTER CALL CALLS CREATE DROP RENAME TRUNCATE
syn keyword sqlStatement DELETE INSERT UPDATE EXPLAIN
syn keyword sqlStatement MERGE REPLACE UPSERT SELECT
syn keyword sqlStatement SET UNSET LOAD UNLOAD
syn keyword sqlStatement CONNECT DISCONNECT COMMIT LOCK ROLLBACK
syn keyword sqlStatement GRANT REVOKE
syn keyword sqlStatement EXPORT IMPORT
syn keyword sqlType DATE TIME SECONDDATE TIMESTAMP TINYINT SMALLINT
syn keyword sqlType INT INTEGER BIGINT SMALLDECIMAL DECIMAL
syn keyword sqlType REAL DOUBLE FLOAT
syn keyword sqlType VARCHAR NVARCHAR ALPHANUM SHORTTEXT VARBINARY
syn keyword sqlType BLOB CLOB NCLOB TEXT DAYDATE
syn keyword sqlOption Webservice_namespace_host
" Strings and characters:
syn region sqlString start=+"+ end=+"+ contains=@Spell
syn region sqlString start=+'+ end=+'+ contains=@Spell
" Numbers:
syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>"
" Comments:
syn region sqlDashComment start=/--/ end=/$/ contains=@Spell
syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell
syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell
syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell
syn sync ccomment sqlComment
syn sync ccomment sqlDashComment
syn sync ccomment sqlSlashComment
hi def link sqlDashComment Comment
hi def link sqlSlashComment Comment
hi def link sqlMultiComment Comment
hi def link sqlNumber Number
hi def link sqlOperator Operator
hi def link sqlSpecial Special
hi def link sqlKeyword Keyword
hi def link sqlStatement Statement
hi def link sqlString String
hi def link sqlType Type
hi def link sqlFunction Function
hi def link sqlOption PreProc
let b:current_syntax = "sqlhana"
" vim:sw=4:
Copyright 2K16 - 2K18 Indonesian Hacker Rulez