xref: /vim-8.2.3635/runtime/syntax/sqlhana.vim (revision 5f1920ad)
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" quit when a syntax file was already loaded
11if exists("b:current_syntax")
12    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:
291