1<?php
2/*************************************************************************************
3 * postgresql.php
4 * -----------
5 * Author: Christophe Chauvet (christophe_at_kryskool_dot_org)
6 * Contributors: Leif Biberg Kristensen <leif_at_solumslekt_dot_org> 2010-05-03
7 * Copyright: (c) 2007 Christophe Chauvet (http://kryskool.org/), Nigel McNie (http://qbnz.com/highlighter)
8 * Release Version: 1.0.9.1
9 * Date Started: 2007/07/20
10 *
11 * PostgreSQL language file for GeSHi.
12 *
13 * CHANGES
14 * -------
15 * 2007/07/20 (1.0.0)
16 *  -  First Release
17 *
18 * TODO (updated 2007/07/20)
19 * -------------------------
20 *
21 *************************************************************************************
22 *
23 *     This file is part of GeSHi.
24 *
25 *   GeSHi is free software; you can redistribute it and/or modify
26 *   it under the terms of the GNU General Public License as published by
27 *   the Free Software Foundation; either version 2 of the License, or
28 *   (at your option) any later version.
29 *
30 *   GeSHi is distributed in the hope that it will be useful,
31 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
32 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
33 *   GNU General Public License for more details.
34 *
35 *   You should have received a copy of the GNU General Public License
36 *   along with GeSHi; if not, write to the Free Software
37 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
38 *
39 ************************************************************************************/
40
41$language_data = array (
42    'LANG_NAME' => 'PostgreSQL',
43    'COMMENT_SINGLE' => array(1 => '--'),
44    'COMMENT_MULTI' => array('/*' => '*/'),
45    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
46    'QUOTEMARKS' => array("'", '"', '`'),
47    'ESCAPE_CHAR' => '\\',
48    'KEYWORDS' => array(
49        //Put PostgreSQL reserved keywords here.  I like mine uppercase.
50        1 => array(
51            'ABORT','ABSOLUTE','ACCESS','ACTION','ADD','ADMIN','AFTER',
52            'AGGREGATE','ALL','ALSO','ALTER','ALWAYS','ANALYSE','ANALYZE','AND',
53            'ANY','AS','ASC,','ASSERTION','ASSIGNMENT','ASYMMETRIC','AT',
54            'AUTHORIZATION','BACKWARD','BEFORE','BEGIN','BETWEEN','BOTH','BY',
55            'CACHE','CALLED','CASCADE','CASCADED','CASE','CAST','CATALOG',
56            'CHAIN','CHARACTERISTICS','CHECK','CHECKPOINT','CLASS','CLOSE',
57            'CLUSTER','COALESCE','COLLATE','COLUMN','COMMENT','COMMIT',
58            'COMMITTED','CONCURRENTLY','CONFIGURATION','CONNECTION',
59            'CONSTRAINT','CONSTRAINTS','CONTENT','CONTINUE','CONVERSION','COPY',
60            'COST','CREATE','CREATEDB','CREATEROLE','CREATEUSER','CROSS','CSV',
61            'CURRENT','CURRENT_CATALOG','CURRENT_DATE','CURRENT_ROLE',
62            'CURRENT_SCHEMA','CURRENT_TIME','CURRENT_TIMESTAMP','CURRENT_USER',
63            'CURSOR','CYCLE','DATA','DATABASE','DAY','DEALLOCATE','DEC',
64            'DECLARE','DEFAULT','DEFAULTS','DEFERRABLE','DEFERRED','DEFINER',
65            'DELETE','DELIMITER','DELIMITERS','DESC','DICTIONARY','DISABLE',
66            'DISCARD','DISTINCT','DO','DOCUMENT','DOMAIN','DOUBLE','DROP',
67            'EACH','ELSE','ENABLE','ENCODING','ENCRYPTED','END','ESCAPE',
68            'EXCEPT','EXCLUDING','EXCLUSIVE','EXECUTE','EXISTS','EXPLAIN',
69            'EXTERNAL','EXTRACT','FALSE','FAMILY','FETCH','FIRST','FOLLOWING',
70            'FOR','FORCE','FOREIGN','FORWARD','FREEZE','FROM','FULL','FUNCTION',
71            'GLOBAL','GRANT','GRANTED','GREATEST','GROUP','HANDLER','HAVING',
72            'HEADER','HOLD','HOUR','IDENTITY','IF','ILIKE','IMMEDIATE',
73            'IMMUTABLE','IMPLICIT','IN','INCLUDING','INCREMENT','INDEX',
74            'INDEXES','INHERIT','INHERITS','INITIALLY','INNER','INOUT','INPUT',
75            'INSENSITIVE','INSERT','INSTEAD','INTERSECT','INTO','INVOKER','IS',
76            'ISNULL','ISOLATION','JOIN','KEY','LANCOMPILER','LANGUAGE','LARGE',
77            'LAST','LC_COLLATE','LC_CTYPE','LEADING','LEAST','LEFT','LEVEL',
78            'LIKE','LIMIT','LISTEN','LOAD','LOCAL','LOCALTIME','LOCALTIMESTAMP',
79            'LOCATION','LOCK','LOGIN','LOOP','MAPPING','MATCH','MAXVALUE',
80            'MINUTE','MINVALUE','MODE','MONTH','MOVE','NAME','NAMES','NATIONAL',
81            'NATURAL','NEW','NEXT','NO','NOCREATEDB','NOCREATEROLE',
82            'NOCREATEUSER','NOINHERIT','NOLOGIN','NONE','NOSUPERUSER','NOT',
83            'NOTHING','NOTIFY','NOTNULL','NOWAIT','NULL','NULLIF','NULLS',
84            'NUMERIC','OBJECT','OF','OFF','OFFSET','OIDS','OLD','ON','ONLY',
85            'OPERATOR','OPTION','OPTIONS','OR','ORDER','OUT','OUTER','OVER',
86            'OVERLAPS','OVERLAY','OWNED','OWNER','PARSER','PARTIAL','PARTITION',
87            'PASSWORD','PLACING','PLANS','POSITION','PRECEDING','PRECISION',
88            'PREPARE','PREPARED','PRESERVE','PRIMARY','PRIOR','PRIVILEGES',
89            'PROCEDURAL','PROCEDURE','QUOTE','RANGE','READ','REASSIGN',
90            'RECHECK','RECURSIVE','REFERENCES','REINDEX','RELATIVE','RELEASE',
91            'RENAME','REPEATABLE','REPLACE','REPLICA','RESET','RESTART',
92            'RESTRICT','RETURN','RETURNING','RETURNS','REVOKE','RIGHT','ROLE',
93            'ROLLBACK','ROW','ROWS','RULE','SAVEPOINT','SCHEMA','SCROLL',
94            'SEARCH','SECOND',
95            'SECURITY','SELECT','SEQUENCE','SERIALIZABLE','SERVER','SESSION',
96            'SESSION_USER','SET','SETOF','SHARE','SHOW','SIMILAR','SIMPLE',
97            'SOME','STABLE','STANDALONE','START','STATEMENT','STATISTICS',
98            'STDIN','STDOUT','STORAGE','STRICT','STRIP','SUPERUSER',
99            'SYMMETRIC','SYSID','SYSTEM','TABLE','TABLESPACE','TEMP','TEMPLATE',
100            'TEMPORARY','THEN','TO','TRAILING','TRANSACTION','TREAT','TRIGGER',
101            'TRUE','TRUNCATE','TRUSTED','TYPE','UNBOUNDED','UNCOMMITTED',
102            'UNENCRYPTED','UNION','UNIQUE','UNKNOWN','UNLISTEN','UNTIL',
103            'UPDATE','USER','USING','VACUUM','VALID','VALIDATOR','VALUE',
104            'VALUES','VARIADIC','VERBOSE','VERSION','VIEW','VOLATILE','WHEN',
105            'WHERE','WHILE','WHITESPACE','WINDOW','WITH','WITHOUT','WORK','WRAPPER',
106            'WRITE','XMLATTRIBUTES','XMLCONCAT','XMLELEMENT','XMLFOREST',
107            'XMLPARSE','XMLPI','XMLROOT','XMLSERIALIZE','YEAR','YES','ZONE'
108            ),
109
110        //Put functions here
111        3 => array(
112            // mathematical functions
113            'ABS','CBRT','CEIL','CEILING','DEGREES','DIV','EXP','FLOOR','LN',
114            'LOG','MOD','PI','POWER','RADIANS','RANDOM','ROUND','SETSEED',
115            'SIGN','SQRT','TRUNC','WIDTH_BUCKET',
116            // trigonometric functions
117            'ACOS','ASIN','ATAN','ATAN2','COS','COT','SIN','TAN',
118            // string functions
119            'BIT_LENGTH','CHAR_LENGTH','CHARACTER_LENGTH','LOWER',
120            'OCTET_LENGTH','POSITION','SUBSTRING','TRIM','UPPER',
121            // other string functions
122            'ASCII','BTRIM','CHR','CONVERT','CONVERT_FROM','CONVERT_TO',
123            'DECODE','ENCODE','INITCAP','LENGTH','LPAD','LTRIM','MD5',
124            'PG_CLIENT_ENCODING','QUOTE_IDENT','QUOTE_LITERAL','QUOTE_NULLABLE',
125            'REGEXP_MATCHES','REGEXP_REPLACE','REGEXP_SPLIT_TO_ARRAY',
126            'REGEXP_SPLIT_TO_TABLE','REPEAT','RPAD','RTRIM','SPLIT_PART',
127            'STRPOS','SUBSTR','TO_ASCII','TO_HEX','TRANSLATE',
128            // binary string functions
129            'GET_BIT','GET_BYTE','SET_BIT','SET_BYTE',
130            // data type formatting functions
131            'TO_CHAR','TO_DATE','TO_NUMBER','TO_TIMESTAMP',
132            // date/time functions
133            'AGE','CLOCK_TIMESTAMP','DATE_PART','DATE_TRUNC','EXTRACT',
134            'ISFINITE','JUSTIFY_DAYS','JUSTIFY_HOURS','JUSTIFY_INTERVAL','NOW',
135            'STATEMENT_TIMESTAMP','TIMEOFDAY','TRANSACTION_TIMESTAMP',
136            // enum support functions
137            'ENUM_FIRST','ENUM_LAST','ENUM_RANGE',
138            // geometric functions
139            'AREA','CENTER','DIAMETER','HEIGHT','ISCLOSED','ISOPEN','NPOINTS',
140            'PCLOSE','POPEN','RADIUS','WIDTH',
141            'BOX','CIRCLE','LSEG','PATH','POINT','POLYGON',
142            // cidr and inet functions
143            'ABBREV','BROADCAST','FAMILY','HOST','HOSTMASK','MASKLEN','NETMASK',
144            'NETWORK','SET_MASKLEN',
145            // text search functions
146            'TO_TSVECTOR','SETWEIGHT','STRIP','TO_TSQUERY','PLAINTO_TSQUERY',
147            'NUMNODE','QUERYTREE','TS_RANK','TS_RANK_CD','TS_HEADLINE',
148            'TS_REWRITE','GET_CURRENT_TS_CONFIG','TSVECTOR_UPDATE_TRIGGER',
149            'TSVECTOR_UPDATE_TRIGGER_COLUMN',
150            'TS_DEBUG','TS_LEXISE','TS_PARSE','TS_TOKEN_TYPE','TS_STAT',
151            // XML functions
152            'XMLCOMMENT','XMLCONCAT','XMLELEMENT','XMLFOREST','XMLPI','XMLROOT',
153            'XMLAGG','XPATH','TABLE_TO_XMLSCHEMA','QUERY_TO_XMLSCHEMA',
154            'CURSOR_TO_XMLSCHEMA','TABLE_TO_XML_AND_XMLSCHEMA',
155            'QUERY_TO_XML_AND_XMLSCHEMA','SCHEMA_TO_XML','SCHEMA_TO_XMLSCHEMA',
156            'SCHEMA_TO_XML_AND_XMLSCHEMA','DATABASE_TO_XML',
157            'DATABASE_TO_XMLSCHEMA','DATABASE_TO_XML_AND_XMLSCHEMA',
158            // sequence manipulating functions
159            'CURRVAL','LASTVAL','NEXTVAL','SETVAL',
160            // conditional expressions
161            'COALESCE','NULLIF','GREATEST','LEAST',
162            // array functions
163            'ARRAY_APPEND','ARRAY_CAT','ARRAY_NDIMS','ARRAY_DIMS','ARRAY_FILL',
164            'ARRAY_LENGTH','ARRAY_LOWER','ARRAY_PREPEND','ARRAY_TO_STRING',
165            'ARRAY_UPPER','STRING_TO_ARRAY','UNNEST',
166            // aggregate functions
167            'ARRAY_AGG','AVG','BIT_AND','BIT_OR','BOOL_AND','BOOL_OR','COUNT',
168            'EVERY','MAX','MIN','STRING_AGG','SUM',
169            // statistic aggregate functions
170            'CORR','COVAR_POP','COVAR_SAMP','REGR_AVGX','REGR_AVGY',
171            'REGR_COUNT','REGR_INTERCEPT','REGR_R2','REGR_SLOPE','REGR_SXX',
172            'REGR_SXY','REGR_SYY','STDDEV','STDDEV_POP','STDDEV_SAMP',
173            'VARIANCE','VAR_POP','VAR_SAMP',
174            // window functions
175            'ROW_NUMBER','RANK','DENSE_RANK','PERCENT_RANK','CUME_DIST','NTILE',
176            'LAG','LEAD','FIRST_VALUE','LAST_VALUE','NTH_VALUE',
177            // set returning functions
178            'GENERATE_SERIES','GENERATE_SUBSCRIPTS'
179            // system information functions not currently included
180            ),
181
182        //Put your postgresql var
183        4 => array(
184            'client_encoding',
185            'standard_conforming_strings'
186            ),
187
188        //Put your data types here
189        5 => array(
190            'ARRAY','ABSTIME','BIGINT','BIGSERIAL','BINARY','BIT','BIT VARYING',
191            'BOOLEAN','BOX','BYTEA','CHAR','CHARACTER','CHARACTER VARYING',
192            'CIDR','CIRCLE','DATE','DECIMAL','DOUBLE PRECISION','ENUM','FLOAT',
193            'INET','INT','INTEGER','INTERVAL','NCHAR','REAL','SMALLINT','TEXT',
194            'TIME','TIMESTAMP','VARCHAR','XML',
195            ),
196
197        //        //Put your package names here
198        //        6 => array(
199        //            ),
200
201        ),
202    'SYMBOLS' => array(
203        '(', ')', '=', '<', '>', '|'
204        ),
205    'CASE_SENSITIVE' => array(
206        GESHI_COMMENTS => false,
207        1 => false,
208        3 => false,
209        4 => false,
210        5 => false
211        ),
212    'STYLES' => array(
213        'KEYWORDS' => array(
214            // regular keywords
215            1 => 'color: #000000; font-weight: bold; text-transform: uppercase;',
216            // inbuilt functions
217            3 => 'color: #333399; font-weight: bold; text-transform: uppercase;',
218            // postgresql var(?)
219            4 => 'color: #993333; font-weight: bold; text-transform: uppercase;',
220            // data types
221            5 => 'color: #993333; font-weight: bold; text-transform: uppercase;',
222            ),
223        'COMMENTS' => array(
224            1 => 'color: #808080; font-style: italic;',
225            ),
226        'ESCAPE_CHAR' => array(
227            0 => 'color: #000099; font-weight: bold;'
228            ),
229        'BRACKETS' => array(
230            0 => 'color: #66cc66;'
231            ),
232        'STRINGS' => array(
233            0 => 'color: #ff0000;'
234            ),
235        'NUMBERS' => array(
236            0 => 'color: #cc66cc;'
237            ),
238        'METHODS' => array(
239            1 => 'color: #ff0000;'
240            ),
241        'SYMBOLS' => array(
242            0 => 'color: #66cc66;'
243            ),
244        'SCRIPT' => array(
245            ),
246        'REGEXPS' => array(
247            )
248        ),
249    'URLS' => array(
250        1 => '',
251        3 => '',
252        4 => 'http://paste.postgresql.fr/wiki/desc.php?def={FNAME}',
253        5 => '',
254        ),
255
256    'OOLANG' => false,
257    'OBJECT_SPLITTERS' => array(
258        ),
259    'REGEXPS' => array(
260        ),
261    'STRICT_MODE_APPLIES' => GESHI_NEVER,
262    'SCRIPT_DELIMITERS' => array(
263        ),
264    'HIGHLIGHT_STRICT_BLOCK' => array(
265        ),
266    'PARSER_CONTROL' => array(
267        'KEYWORDS' => array(
268            1 => array(
269                'DISALLOWED_AFTER' => '(?![\(\w])'
270                ),
271
272            3 => array(
273                'DISALLOWED_AFTER' => '(?=\()'
274                ),
275
276            4 => array(
277                'DISALLOWED_AFTER' => '(?![\(\w])'
278                ),
279
280            5 => array(
281                'DISALLOWED_AFTER' => '(?![\(\w])'
282                ),
283            )
284        )
285);
286