Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc42b959

Browse files
Jan WieckJan Wieck
Jan Wieck
authored and
Jan Wieck
committed
Partial support for mixed case in PL/pgSQL.
Left are identifiers that contain non-alnum/_ chars.So e.g. whitespaces in identifiers are still notsupported.Jan
1 parentb946244 commitc42b959

File tree

4 files changed

+48
-21
lines changed

4 files changed

+48
-21
lines changed

‎src/pl/plpgsql/src/gram.y

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* procedural language
55
*
66
* IDENTIFICATION
7-
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.1 1998/08/24 19:14:47 momjian Exp $
7+
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.2 1999/01/28 11:48:30 wieck Exp $
88
*
99
* This software is copyrighted by Jan Wieck - Hamburg.
1010
*
@@ -344,7 +344,7 @@ decl_aliasitem: T_WORD
344344
char*name;
345345

346346
plpgsql_ns_setlocal(false);
347-
name = plpgsql_tolower(pstrdup(yytext));
347+
name = plpgsql_tolower(yytext);
348348
if (name[0] !='$') {
349349
elog(ERROR,"can only alias positional parameters");
350350
}
@@ -374,7 +374,7 @@ decl_varname: T_WORD
374374

375375
decl_renname:T_WORD
376376
{
377-
$$ = plpgsql_tolower(pstrdup(yytext));
377+
$$ = plpgsql_tolower(yytext);
378378
}
379379
;
380380

‎src/pl/plpgsql/src/pl_comp.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* procedural language
44
*
55
* IDENTIFICATION
6-
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.4 1998/11/27 20:07:22 vadim Exp $
6+
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.5 1999/01/28 11:48:31 wieck Exp $
77
*
88
* This software is copyrighted by Jan Wieck - Hamburg.
99
*
@@ -537,7 +537,7 @@ plpgsql_parse_word(char *word)
537537
* We do our lookups case insensitive
538538
* ----------
539539
*/
540-
cp=plpgsql_tolower(pstrdup(word));
540+
cp=plpgsql_tolower(word);
541541

542542
/* ----------
543543
* Special handling when compiling triggers
@@ -657,7 +657,7 @@ plpgsql_parse_dblword(char *string)
657657
* Convert to lower case and separate the words
658658
* ----------
659659
*/
660-
word1=plpgsql_tolower(pstrdup(string));
660+
word1=plpgsql_tolower(string);
661661
word2=strchr(word1,'.');
662662
*word2++='\0';
663663

@@ -783,7 +783,7 @@ plpgsql_parse_tripword(char *string)
783783
* Convert to lower case and separate the words
784784
* ----------
785785
*/
786-
word1=plpgsql_tolower(pstrdup(string));
786+
word1=plpgsql_tolower(string);
787787
word2=strchr(word1,'.');
788788
*word2++='\0';
789789
word3=strchr(word2,'.');
@@ -893,7 +893,7 @@ plpgsql_parse_wordtype(char *word)
893893
* We do our lookups case insensitive
894894
* ----------
895895
*/
896-
cp=plpgsql_tolower(pstrdup(word));
896+
cp=plpgsql_tolower(word);
897897
*(strchr(cp,'%'))='\0';
898898

899899
/* ----------
@@ -988,7 +988,7 @@ plpgsql_parse_dblwordtype(char *string)
988988
* Convert to lower case and separate the words
989989
* ----------
990990
*/
991-
word1=plpgsql_tolower(pstrdup(string));
991+
word1=plpgsql_tolower(string);
992992
word2=strchr(word1,'.');
993993
*word2++='\0';
994994
*(strchr(word2,'%'))='\0';
@@ -1123,7 +1123,7 @@ plpgsql_parse_wordrowtype(char *string)
11231123
* Get the word in lower case and fetch the pg_class tuple.
11241124
* ----------
11251125
*/
1126-
word1=plpgsql_tolower(pstrdup(string));
1126+
word1=plpgsql_tolower(string);
11271127
cp=strchr(word1,'%');
11281128
*cp='\0';
11291129

‎src/pl/plpgsql/src/pl_funcs.c

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* procedural language
44
*
55
* IDENTIFICATION
6-
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_funcs.c,v 1.2 1998/09/01 04:40:24 momjian Exp $
6+
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_funcs.c,v 1.3 1999/01/28 11:48:31 wieck Exp $
77
*
88
* This software is copyrighted by Jan Wieck - Hamburg.
99
*
@@ -189,6 +189,7 @@ plpgsql_ns_additem(int itemtype, int itemno, char *name)
189189

190190
if (name==NULL)
191191
name="";
192+
name=plpgsql_tolower(name);
192193

193194
if (ns->items_used==ns->items_alloc)
194195
{
@@ -320,22 +321,48 @@ plpgsql_ns_rename(char *oldname, char *newname)
320321

321322

322323
/* ----------
323-
* plpgsql_tolowerTranslate a stringin place to
324-
*lower case
324+
* plpgsql_tolowerTranslate a stringto lower case
325+
*but honor "" escaping.
325326
* ----------
326327
*/
327328
char*
328329
plpgsql_tolower(char*s)
329330
{
330-
char*cp;
331+
char*ret;
332+
char*cp;
331333

332-
for (cp=s;*cp;cp++)
334+
ret=palloc(strlen(s)+1);
335+
cp=ret;
336+
337+
while (*s)
333338
{
334-
if (isupper(*cp))
335-
*cp=tolower(*cp);
339+
if (*s=='"')
340+
{
341+
s++;
342+
while (*s)
343+
{
344+
if (*s=='"')
345+
break;
346+
*cp++=*s++;
347+
}
348+
if (*s!='"')
349+
{
350+
plpgsql_comperrinfo();
351+
elog(ERROR,"unterminated \"");
352+
}
353+
s++;
354+
}
355+
else
356+
{
357+
if (isupper(*s))
358+
*cp++=tolower(*s++);
359+
else
360+
*cp++=*s++;
361+
}
336362
}
363+
*cp='\0';
337364

338-
returns;
365+
returnret;
339366
}
340367

341368

‎src/pl/plpgsql/src/scan.l

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* procedural language
55
*
66
* IDENTIFICATION
7-
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/scan.l,v 1.1 1998/08/24 19:14:49 momjian Exp $
7+
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/scan.l,v 1.2 1999/01/28 11:48:31 wieck Exp $
88
*
99
* This software is copyrighted by Jan Wieck - Hamburg.
1010
*
@@ -46,8 +46,8 @@ static void plpgsql_input(char *buf, int *result, int max);
4646
#defineYY_INPUT(buf,res,max)plpgsql_input(buf, &res, max)
4747
%}
4848

49-
WS[[:alpha:]_]
50-
WC[[:alnum:]_]
49+
WS[[:alpha:]_"]
50+
WC[[:alnum:]_"]
5151

5252
%xIN_STRINGIN_COMMENT
5353

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp