1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-03 20:02:46 +03:00

Remove case-sensitive identifiers. Thanks for Dan McGuirk for a reversal patch.

This commit is contained in:
Bruce Momjian
1997-03-02 01:03:44 +00:00
parent a3a956bfe5
commit 34fd62c512
5 changed files with 35 additions and 126 deletions

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.21 1997/02/07 16:22:50 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.22 1997/03/02 01:02:48 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -80,9 +80,6 @@ static void AddAggToParseState(ParseState *pstate, Aggreg *aggreg);
static void finalizeAggregates(ParseState *pstate, Query *qry);
static void parseCheckAggregates(ParseState *pstate, Query *qry);
static bool is_lowercase(char *string);
static void make_lowercase(char *string);
/*****************************************************************************
*
*****************************************************************************/
@ -1904,32 +1901,6 @@ ParseComplexProjection(ParseState *pstate,
return NULL;
}
static
bool is_lowercase(char *string)
{
int i;
for(i = 0; i < strlen(string); i++) {
if(string[i] >= 'A' && string[i] <= 'Z') {
return false;
}
}
return true;
}
static
void make_lowercase(char *string)
{
int i;
for(i = 0; i < strlen(string); i++) {
if(string[i] >= 'A' && string[i] <= 'Z') {
string[i] = (string[i] - 'A') + 'a';
}
}
}
static Node *
ParseFunc(ParseState *pstate, char *funcname, List *fargs, int *curr_resno)
{
@ -2048,27 +2019,6 @@ ParseFunc(ParseState *pstate, char *funcname, List *fargs, int *curr_resno)
AddAggToParseState(pstate, aggreg);
return (Node*)aggreg;
} else {
/* try one more time with lowercase --djm 8/17/96 */
if(!is_lowercase(funcname)) {
char *lowercase_funcname = pstrdup(funcname);
make_lowercase(lowercase_funcname);
if (strcmp(lowercase_funcname, "count") == 0)
basetype = 0;
else
basetype = exprType(lfirst(fargs));
if (SearchSysCacheTuple(AGGNAME,
PointerGetDatum(lowercase_funcname),
ObjectIdGetDatum(basetype),
0, 0)) {
Aggreg *aggreg = ParseAgg(lowercase_funcname,
basetype, lfirst(fargs));
AddAggToParseState(pstate, aggreg);
return (Node*)aggreg;
}
}
}
}
}

View File

@ -6,7 +6,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/Attic/catalog_utils.c,v 1.16 1997/02/07 16:23:08 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/Attic/catalog_utils.c,v 1.17 1997/03/02 01:03:00 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -110,9 +110,6 @@ static Oid **argtype_inherit(int nargs, Oid *oid_array);
static Oid **genxprod(InhPaths *arginh, int nargs);
static int findsupers(Oid relid, Oid **supervec);
static bool is_lowercase(char *string);
static void make_lowercase(char *string);
/* check to see if a type id is valid,
* returns true if it is. By using this call before calling
* get_id_type or get_id_typname, more meaningful error messages
@ -1017,32 +1014,6 @@ func_select_candidate(int nargs,
return (NULL);
}
static
bool is_lowercase(char *string)
{
int i;
for(i = 0; i < strlen(string); i++) {
if(string[i] >= 'A' && string[i] <= 'Z') {
return false;
}
}
return true;
}
static
void make_lowercase(char *string)
{
int i;
for(i = 0; i < strlen(string); i++) {
if(string[i] >= 'A' && string[i] <= 'Z') {
string[i] = (string[i] - 'A') + 'a';
}
}
}
bool
func_get_detail(char *funcname,
int nargs,
@ -1138,24 +1109,6 @@ func_get_detail(char *funcname,
if (!HeapTupleIsValid(ftup)) {
Type tp;
/*
* everything else has failed--try converting the function
* name to lowercase, and do everything one more time
* (if it's not already lowercase). so ODBC applications
* that expect uppercase names to work can work. --djm 8/17/96
*/
if(!is_lowercase(funcname)) {
char *lowercase_funcname = strdup(funcname);
bool result;
make_lowercase(lowercase_funcname);
result = func_get_detail(lowercase_funcname, nargs, oid_array,
funcid, rettype, retset,
true_typeids);
free(lowercase_funcname);
return result;
} else {
if (nargs == 1) {
tp = get_id_type(oid_array[0]);
if (typetypetype(tp) == 'c')
@ -1163,7 +1116,6 @@ func_get_detail(char *funcname,
funcname);
}
func_error("func_get_detail", funcname, nargs, oid_array);
}
} else {
pform = (Form_pg_proc) GETSTRUCT(ftup);
*funcid = ftup->t_oid;

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.6 1997/01/13 03:44:25 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.7 1997/03/02 01:03:07 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -154,8 +154,7 @@ ScanKeywordLookup(char *text)
while (low <= high) {
middle = low + (high - low) / 2;
/* keywords case-insensitive (for SQL) -- ay 8/94 */
difference = strcasecmp(middle->name, text);
difference = strcmp(middle->name, text);
if (difference == 0)
return (middle);
else if (difference < 0)
@ -167,6 +166,7 @@ ScanKeywordLookup(char *text)
return (NULL);
}
#ifdef NOT_USED
char*
AtomValueGetString(int atomval)
{
@ -182,3 +182,4 @@ AtomValueGetString(int atomval)
elog(WARN,"AtomGetString called with bogus atom # : %d", atomval );
return(NULL);
}
#endif

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.11 1997/02/28 13:25:16 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.12 1997/03/02 01:03:16 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -164,8 +164,13 @@ other .
return (SCONST);
}
{identifier} {
int i;
ScanKeyword *keyword;
for(i = 0; i < strlen(yytext); i++)
if (isupper(yytext[i]))
yytext[i] = tolower(yytext[i]);
keyword = ScanKeywordLookup((char*)yytext);
if (keyword != NULL) {
return (keyword->value);
@ -209,6 +214,7 @@ init_io()
}
#if !defined(FLEX_SCANNER)
/* get lex input from a string instead of from stdin */
int