xref: /vim-8.2.3635/runtime/syntax/sqlhana.vim (revision cb03397a)
1" Vim syntax file
2" Language:    SQL, SAP HANA In Memory Database
3" Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
4" Last Change: 2012 Oct 23
5" Version:     SP4 b (Q2 2012)
6" Homepage:    http://www.vim.org/scripts/script.php?script_id=4275
7
8" Description: Updated to SAP HANA SP4
9"
10" For version 5.x: Clear all syntax items
11" For version 6.x: Quit when a syntax file was already loaded
12if version < 600
13    syntax clear
14elseif exists("b:current_syntax")
15    finish
16endif
17
18syn case ignore
19
20" The SQL reserved words, defined as keywords.
21" These were pulled from the following SQL reference:
22"     http://help.sap.com/hana/hana_sql_en.pdf
23" An easy approach is to copy all text from the PDF
24" into a Vim buffer.  The keywords are in UPPER case,
25" so you can run the following commands to be left with
26" mainly the UPPER case words:
27"   1.  Delete all words that do not begin with a Capital
28"       %s/\(\<[^A-Z]\w*\>\)//g
29"   2.  Remove all words where the 2nd letter is not a Capital
30"       %s/\(\<[A-Z][^A-Z]\w*\>\)//g
31"   3.  Remove all non-word (or space) characters
32"       %s/[^0-9A-Za-z_ ]*//g
33"   4.  Remove some known words
34"       %s/\<\(SAP\|HANA\|OK\|AG\|IBM\|DB2\|AIX\|POWER\d\+\|UNIX\)\>//g
35"   5.  Remove blank lines and trailing spaces
36"       %s/\s\+$//g
37"       %s/^\s\+//g
38"       %s/^$\n//g
39"   6.  Convert spaces to newlines remove single character
40"       %s/[ ]\+/\r/g
41"       %g/^\w$/d
42"   7.  Sort and remove duplicates
43"       :sort
44"       :Uniq
45"   8.  Use the WhatsMissing plugin against the sqlhana.vim file.
46"   9.  Generated a file of all UPPER cased words which should not
47"       be in the syntax file.  These items should be removed
48"       from the list in step 7.  You can use WhatsNotMissing
49"       between step 7 and this new file to weed out the words
50"       we know are not syntax related.
51"  10.  Use the WhatsMissingRemoveMatches to remove the words
52"       from step 9.
53
54syn keyword sqlSpecial  false null true
55
56" Supported Functions for Date/Time types
57syn keyword sqlFunction	 ADD_DAYS ADD_MONTHS ADD_SECONDS ADD_YEARS COALESCE
58syn keyword sqlFunction	 CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_UTCDATE
59syn keyword sqlFunction	 CURRENT_UTCTIME CURRENT_UTCTIMESTAMP
60syn keyword sqlFunction	 DAYNAME DAYOFMONTH DAYOFYEAR DAYS_BETWEEN EXTRACT
61syn keyword sqlFunction	 GREATEST HOUR IFNULL ISOWEEK LAST_DAY LEAST LOCALTOUTC
62syn keyword sqlFunction	 MINUTE MONTH MONTHNAME NEXT_DAY NOW QUARTER SECOND
63syn keyword sqlFunction	 SECONDS_BETWEEN UTCTOLOCAL WEEK WEEKDAY YEAR
64
65syn keyword sqlFunction	 TO_CHAR TO_DATE TO_DATS TO_NCHAR TO_TIME TO_TIMESTAMP UTCTOLOCAL
66
67" Aggregate
68syn keyword sqlFunction	 COUNT MIN MAX SUM AVG STDDEV VAR
69
70" Datatype conversion
71syn keyword sqlFunction	 CAST TO_ALPHANUM TO_BIGINT TO_BINARY TO_BLOB TO_CHAR TO_CLOB
72syn keyword sqlFunction	 TO_DATE TO_DATS TO_DECIMAL TO_DOUBLE TO_INT TO_INTEGER TO_NCHAR
73syn keyword sqlFunction	 TO_NCLOB TO_NVARCHAR TO_REAL TO_SECONDDATE TO_SMALLDECIMAL
74syn keyword sqlFunction	 TO_SMALLINT TO_TIME TO_TIMESTAMP TO_TINYINT TO_VARCHAR TO_VARBINARY
75
76" Number functions
77syn keyword sqlFunction	 ABS ACOS ASIN ATAN ATAN2 BINTOHEX BITAND CEIL COS COSH COT
78syn keyword sqlFunction	 EXP FLOOR GREATEST HEXTOBIN LEAST LN LOG MOD POWER ROUND
79syn keyword sqlFunction	 SIGN SIN SINH SQRT TAN TANH UMINUS
80
81" String functions
82syn keyword sqlFunction	 ASCII CHAR CONCAT LCASE LENGTH LOCATE LOWER LPAD LTRIM
83syn keyword sqlFunction	 NCHAR REPLACE RPAD RTRIM SUBSTR_AFTER SUBSTR_BEFORE
84syn keyword sqlFunction	 SUBSTRING TRIM UCASE UNICODE UPPER
85
86" Miscellaneous functions
87syn keyword sqlFunction	 COALESCE CURRENT_CONNECTION CURRENT_SCHEMA CURRENT_USER
88syn keyword sqlFunction	 GROUPING_ID IFNULL MAP NULLIF SESSION_CONTEXT SESSION_USER SYSUUIDSQL
89syn keyword sqlFunction	 GET_NUM_SERVERS
90
91
92" sp_ procedures
93" syn keyword sqlFunction  sp_addalias
94
95
96" Reserved keywords
97syn keyword sqlkeyword   ALL AS AT BEFORE
98syn keyword sqlkeyword   BEGIN BOTH BY
99syn keyword sqlkeyword   CONDITION
100syn keyword sqlkeyword   CURRVAL CURSOR DECLARE
101syn keyword sqlkeyword   DISTINCT DO ELSE ELSEIF ELSIF
102syn keyword sqlkeyword   END EXCEPTION EXEC
103syn keyword sqlkeyword   FOR FROM GROUP
104syn keyword sqlkeyword   HAVING IN
105syn keyword sqlkeyword   INOUT INTO IS
106syn keyword sqlkeyword   LEADING
107syn keyword sqlkeyword   LOOP MINUS NATURAL NEXTVAL
108syn keyword sqlkeyword   OF ON ORDER OUT
109syn keyword sqlkeyword   PRIOR RETURN RETURNS REVERSE
110syn keyword sqlkeyword   ROWID SELECT
111syn keyword sqlkeyword   SQL START STOP SYSDATE
112syn keyword sqlkeyword   SYSTIME SYSTIMESTAMP SYSUUID
113syn keyword sqlkeyword   TRAILING USING UTCDATE
114syn keyword sqlkeyword   UTCTIME UTCTIMESTAMP VALUES
115syn keyword sqlkeyword   WHILE
116syn keyword sqlkeyword   ANY SOME EXISTS ESCAPE
117
118" IF keywords
119syn keyword sqlkeyword	 IF
120
121" CASE keywords
122syn keyword sqlKeyword	 WHEN THEN
123
124" Syntax rules common to TEXT and SHORTTEXT keywords
125syn keyword sqlKeyword	 LANGUAGE DETECTION LINGUISTIC
126syn keyword sqlkeyword   MIME TYPE
127syn keyword sqlkeyword   EXACT WEIGHT FUZZY FUZZINESSTHRESHOLD SEARCH
128syn keyword sqlkeyword   PHRASE INDEX RATIO REBUILD
129syn keyword sqlkeyword   CONFIGURATION
130syn keyword sqlkeyword   SEARCH ONLY
131syn keyword sqlkeyword   FAST PREPROCESS
132syn keyword sqlkeyword   SYNC SYNCHRONOUS ASYNC ASYNCHRONOUS FLUSH QUEUE
133syn keyword sqlkeyword   EVERY AFTER MINUTES DOCUMENTS SUSPEND
134
135" Statement keywords (i.e. after ALTER or CREATE)
136syn keyword sqlkeyword   AUDIT POLICY
137syn keyword sqlkeyword   FULLTEXT
138syn keyword sqlkeyword   SEQUENCE RESTART
139syn keyword sqlkeyword   TABLE
140syn keyword sqlkeyword   PROCEDURE STATISTICS
141syn keyword sqlkeyword   SCHEMA
142syn keyword sqlkeyword   SYNONYM
143syn keyword sqlkeyword   VIEW
144syn keyword sqlkeyword   COLUMN
145syn keyword sqlkeyword   SYSTEM LICENSE
146syn keyword sqlkeyword   SESSION
147syn keyword sqlkeyword   CANCEL WORK
148syn keyword sqlkeyword   PLAN CACHE
149syn keyword sqlkeyword   LOGGING NOLOGGING RETENTION
150syn keyword sqlkeyword   RECONFIGURE SERVICE
151syn keyword sqlkeyword   RESET MONITORING
152syn keyword sqlkeyword   SAVE DURATION PERFTRACE FUNCTION_PROFILER
153syn keyword sqlkeyword   SAVEPOINT
154syn keyword sqlkeyword   USER
155syn keyword sqlkeyword   ROLE
156syn keyword sqlkeyword   ASC DESC
157syn keyword sqlkeyword   OWNED
158syn keyword sqlkeyword   DEPENDENCIES SCRAMBLE
159
160" Create sequence
161syn keyword sqlkeyword   INCREMENT MAXVALUE MINVALUE CYCLE
162
163" Create table
164syn keyword sqlkeyword   HISTORY GLOBAL LOCAL TEMPORARY
165
166" Create trigger
167syn keyword sqlkeyword   TRIGGER REFERENCING EACH DEFAULT
168syn keyword sqlkeyword   SIGNAL RESIGNAL MESSAGE_TEXT OLD NEW
169syn keyword sqlkeyword   EXIT HANDLER SQL_ERROR_CODE
170syn keyword sqlkeyword   TARGET CONDITION SIGNAL
171
172" Alter table
173syn keyword sqlkeyword   ADD DROP MODIFY GENERATED ALWAYS
174syn keyword sqlkeyword   UNIQUE BTREE CPBTREE PRIMARY KEY
175syn keyword sqlkeyword   CONSTRAINT PRELOAD NONE
176syn keyword sqlkeyword   ROW THREADS BATCH
177syn keyword sqlkeyword   MOVE PARTITION TO LOCATION PHYSICAL OTHERS
178syn keyword sqlkeyword   ROUNDROBIN PARTITIONS HASH RANGE VALUE
179syn keyword sqlkeyword   PERSISTENT DELTA AUTO AUTOMERGE
180
181" Create audit policy
182syn keyword sqlkeyword   AUDITING SUCCESSFUL UNSUCCESSFUL
183syn keyword sqlkeyword	 PRIVILEGE STRUCTURED CHANGE LEVEL
184syn keyword sqlkeyword	 EMERGENCY ALERT CRITICAL WARNING INFO
185
186" Privileges
187syn keyword sqlkeyword   DEBUG EXECUTE
188
189" Schema
190syn keyword sqlkeyword   CASCADE RESTRICT PARAMETERS SCAN
191
192" Traces
193syn keyword sqlkeyword   CLIENT CRASHDUMP EMERGENCYDUMP
194syn keyword sqlkeyword   INDEXSERVER NAMESERVER DAEMON
195syn keyword sqlkeyword   CLEAR REMOVE TRACES
196
197" Reclaim
198syn keyword sqlkeyword   RECLAIM DATA VOLUME VERSION SPACE DEFRAGMENT SPARSIFY
199
200" Join
201syn keyword sqlkeyword   INNER OUTER LEFT RIGHT FULL CROSS JOIN
202syn keyword sqlkeyword   GROUPING SETS ROLLUP CUBE
203syn keyword sqlkeyword   BEST LIMIT OFFSET
204syn keyword sqlkeyword   WITH SUBTOTAL BALANCE TOTAL
205syn keyword sqlkeyword   TEXT_FILTER FILL UP SORT MATCHES TOP
206syn keyword sqlkeyword   RESULT OVERVIEW PREFIX MULTIPLE RESULTSETS
207
208" Lock
209syn keyword sqlkeyword   EXCLUSIVE MODE NOWAIT
210
211" Transaction
212syn keyword sqlkeyword   TRANSACTION ISOLATION READ COMMITTED
213syn keyword sqlkeyword   REPEATABLE SERIALIZABLE WRITE
214
215" Saml
216syn keyword sqlkeyword   SAML ASSERTION PROVIDER SUBJECT ISSUER
217
218" User
219syn keyword sqlkeyword   PASSWORD IDENTIFIED EXTERNALLY ATTEMPTS ATTEMPTS
220syn keyword sqlkeyword	 ENABLE DISABLE OFF LIFETIME FORCE DEACTIVATE
221syn keyword sqlkeyword	 ACTIVATE IDENTITY KERBEROS
222
223" Grant
224syn keyword sqlkeyword   ADMIN BACKUP CATALOG SCENARIO INIFILE MONITOR
225syn keyword sqlkeyword   OPTIMIZER OPTION
226syn keyword sqlkeyword   RESOURCE STRUCTUREDPRIVILEGE TRACE
227
228" Import
229syn keyword sqlkeyword   CSV FILE CONTROL NO CHECK SKIP FIRST LIST
230syn keyword sqlkeyword	 RECORD DELIMITED FIELD OPTIONALLY ENCLOSED FORMAT
231
232" Roles
233syn keyword sqlkeyword   PUBLIC CONTENT_ADMIN MODELING MONITORING
234
235" Miscellaneous
236syn keyword sqlkeyword   APPLICATION BINARY IMMEDIATE COREFILE SECURITY DEFINER
237syn keyword sqlkeyword   DUMMY INVOKER MATERIALIZED MESSEGE_TEXT PARAMETER PARAMETERS
238syn keyword sqlkeyword   PART
239syn keyword sqlkeyword   CONSTANT SQLEXCEPTION SQLWARNING
240
241syn keyword sqlOperator  WHERE BETWEEN LIKE NULL CONTAINS
242syn keyword sqlOperator  AND OR NOT CASE
243syn keyword sqlOperator  UNION INTERSECT EXCEPT
244
245syn keyword sqlStatement ALTER CALL CALLS CREATE DROP RENAME TRUNCATE
246syn keyword sqlStatement DELETE INSERT UPDATE EXPLAIN
247syn keyword sqlStatement MERGE REPLACE UPSERT SELECT
248syn keyword sqlStatement SET UNSET LOAD UNLOAD
249syn keyword sqlStatement CONNECT DISCONNECT COMMIT LOCK ROLLBACK
250syn keyword sqlStatement GRANT REVOKE
251syn keyword sqlStatement EXPORT IMPORT
252
253
254syn keyword sqlType	 DATE TIME SECONDDATE TIMESTAMP TINYINT SMALLINT
255syn keyword sqlType	 INT INTEGER BIGINT SMALLDECIMAL DECIMAL
256syn keyword sqlType	 REAL DOUBLE FLOAT
257syn keyword sqlType	 VARCHAR NVARCHAR ALPHANUM SHORTTEXT VARBINARY
258syn keyword sqlType	 BLOB CLOB NCLOB TEXT DAYDATE
259
260syn keyword sqlOption    Webservice_namespace_host
261
262" Strings and characters:
263syn region sqlString		start=+"+    end=+"+ contains=@Spell
264syn region sqlString		start=+'+    end=+'+ contains=@Spell
265
266" Numbers:
267syn match sqlNumber		"-\=\<\d*\.\=[0-9_]\>"
268
269" Comments:
270syn region sqlDashComment	start=/--/ end=/$/ contains=@Spell
271syn region sqlSlashComment	start=/\/\// end=/$/ contains=@Spell
272syn region sqlMultiComment	start="/\*" end="\*/" contains=sqlMultiComment,@Spell
273syn cluster sqlComment	contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell
274syn sync ccomment sqlComment
275syn sync ccomment sqlDashComment
276syn sync ccomment sqlSlashComment
277
278hi def link sqlDashComment	Comment
279hi def link sqlSlashComment	Comment
280hi def link sqlMultiComment	Comment
281hi def link sqlNumber	        Number
282hi def link sqlOperator	        Operator
283hi def link sqlSpecial	        Special
284hi def link sqlKeyword	        Keyword
285hi def link sqlStatement	Statement
286hi def link sqlString	        String
287hi def link sqlType	        Type
288hi def link sqlFunction	        Function
289hi def link sqlOption	        PreProc
290
291let b:current_syntax = "sqlhana"
292
293" vim:sw=4:
294