|
8 | 8 | *
|
9 | 9 | *
|
10 | 10 | * IDENTIFICATION
|
11 |
| - * $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.61 2003/11/29 19:52:08 pgsql Exp $ |
| 11 | + * $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.62 2004/04/29 14:08:10 meskes Exp $ |
12 | 12 | *
|
13 | 13 | *-------------------------------------------------------------------------
|
14 | 14 | */
|
@@ -36,6 +36,7 @@ static ScanKeyword ScanKeywords[] = {
|
36 | 36 | {"after", AFTER},
|
37 | 37 | {"aggregate", AGGREGATE},
|
38 | 38 | {"all", ALL},
|
| 39 | + {"also", ALSO}, |
39 | 40 | {"alter", ALTER},
|
40 | 41 | {"analyse", ANALYSE}, /* British spelling */
|
41 | 42 | {"analyze", ANALYZE},
|
@@ -87,6 +88,7 @@ static ScanKeyword ScanKeywords[] = {
|
87 | 88 | {"createdb", CREATEDB},
|
88 | 89 | {"createuser", CREATEUSER},
|
89 | 90 | {"cross", CROSS},
|
| 91 | + {"csv", CSV}, |
90 | 92 | {"current_date", CURRENT_DATE},
|
91 | 93 | {"current_time", CURRENT_TIME},
|
92 | 94 | {"current_timestamp", CURRENT_TIMESTAMP},
|
@@ -176,6 +178,7 @@ static ScanKeyword ScanKeywords[] = {
|
176 | 178 | {"key", KEY},
|
177 | 179 | {"lancompiler", LANCOMPILER},
|
178 | 180 | {"language", LANGUAGE},
|
| 181 | + {"large", LARGE_P}, |
179 | 182 | {"last", LAST_P},
|
180 | 183 | {"leading", LEADING},
|
181 | 184 | {"left", LEFT},
|
@@ -208,9 +211,11 @@ static ScanKeyword ScanKeywords[] = {
|
208 | 211 | {"nothing", NOTHING},
|
209 | 212 | {"notify", NOTIFY},
|
210 | 213 | {"notnull", NOTNULL},
|
| 214 | + {"nowait", NOWAIT}, |
211 | 215 | {"null", NULL_P},
|
212 | 216 | {"nullif", NULLIF},
|
213 | 217 | {"numeric", NUMERIC},
|
| 218 | + {"object", OBJECT_P}, |
214 | 219 | {"of", OF},
|
215 | 220 | {"off", OFF},
|
216 | 221 | {"offset", OFFSET},
|
@@ -239,13 +244,15 @@ static ScanKeyword ScanKeywords[] = {
|
239 | 244 | {"privileges", PRIVILEGES},
|
240 | 245 | {"procedural", PROCEDURAL},
|
241 | 246 | {"procedure", PROCEDURE},
|
| 247 | + {"quote", QUOTE}, |
242 | 248 | {"read", READ},
|
243 | 249 | {"real", REAL},
|
244 | 250 | {"recheck", RECHECK},
|
245 | 251 | {"references", REFERENCES},
|
246 | 252 | {"reindex", REINDEX},
|
247 | 253 | {"relative", RELATIVE_P},
|
248 | 254 | {"rename", RENAME},
|
| 255 | + {"repeatable", REPEATABLE}, |
249 | 256 | {"replace", REPLACE},
|
250 | 257 | {"reset", RESET},
|
251 | 258 | {"restart", RESTART},
|
@@ -302,6 +309,7 @@ static ScanKeyword ScanKeywords[] = {
|
302 | 309 | {"truncate", TRUNCATE},
|
303 | 310 | {"trusted", TRUSTED},
|
304 | 311 | {"type", TYPE_P},
|
| 312 | + {"uncommitted", UNCOMMITTED}, |
305 | 313 | {"unencrypted", UNENCRYPTED},
|
306 | 314 | {"union", UNION},
|
307 | 315 | {"unique", UNIQUE},
|
@@ -359,17 +367,13 @@ ScanKeywordLookup(char *text)
|
359 | 367 |
|
360 | 368 | /*
|
361 | 369 | * Apply an ASCII-only downcasing. We must not use tolower() since it
|
362 |
| - * may produce the wrong translation in some locales (eg, Turkish), |
363 |
| - * and we don't trust isupper() very much either. In an ASCII-based |
364 |
| - * encoding the tests against A and Z are sufficient, but we also |
365 |
| - * check isupper() so that we will work correctly under EBCDIC. The |
366 |
| - * actual case conversion step should work for either ASCII or EBCDIC. |
| 370 | + * may produce the wrong translation in some locales (eg, Turkish). |
367 | 371 | */
|
368 | 372 | for (i = 0; i < len; i++)
|
369 | 373 | {
|
370 | 374 | char ch = text[i];
|
371 | 375 |
|
372 |
| - if (ch >= 'A' && ch <= 'Z' && isupper((unsigned char) ch)) |
| 376 | + if (ch >= 'A' && ch <= 'Z') |
373 | 377 | ch += 'a' - 'A';
|
374 | 378 | word[i] = ch;
|
375 | 379 | }
|
|
0 commit comments