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