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:
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user