diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-02-21 00:35:13 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-02-21 00:35:13 +0000 |
commit | 8c99671a3b2e5b90d263cfd883c9cdeba63d6cc4 (patch) | |
tree | 2b529b95daa1fd6ee92c72f91a68b1b4e426a514 /src/backend/commands/proclang.c | |
parent | fe92ed8b78ce527739547fcd233c63debb2f3538 (diff) | |
download | postgresql-8c99671a3b2e5b90d263cfd883c9cdeba63d6cc4.tar.gz postgresql-8c99671a3b2e5b90d263cfd883c9cdeba63d6cc4.zip |
Implement a solution to the 'Turkish locale downcases I incorrectly'
problem, per previous discussion. Make some additional changes to
centralize the knowledge of just how identifier downcasing is done,
in hopes of simplifying any future tweaking in this area.
Diffstat (limited to 'src/backend/commands/proclang.c')
-rw-r--r-- | src/backend/commands/proclang.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c index 09325d647ca..97d7c38a2e9 100644 --- a/src/backend/commands/proclang.c +++ b/src/backend/commands/proclang.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/proclang.c,v 1.51 2003/10/02 06:34:03 petere Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/proclang.c,v 1.51.2.1 2004/02/21 00:35:13 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -40,11 +40,12 @@ void CreateProceduralLanguage(CreatePLangStmt *stmt) { - char languageName[NAMEDATALEN]; + char *languageName; Oid procOid, valProcOid; Oid funcrettype; Oid typev[FUNC_MAX_ARGS]; + NameData langname; char nulls[Natts_pg_language]; Datum values[Natts_pg_language]; Relation rel; @@ -66,7 +67,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) * Translate the language name and check that this language doesn't * already exist */ - case_translate_language_name(stmt->plname, languageName); + languageName = case_translate_language_name(stmt->plname); if (SearchSysCacheExists(LANGNAME, PointerGetDatum(languageName), @@ -124,12 +125,13 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) } i = 0; - values[i++] = PointerGetDatum(languageName); - values[i++] = BoolGetDatum(true); /* lanispl */ - values[i++] = BoolGetDatum(stmt->pltrusted); - values[i++] = ObjectIdGetDatum(procOid); - values[i++] = ObjectIdGetDatum(valProcOid); - nulls[i] = 'n'; /* lanacl */ + namestrcpy(&langname, languageName); + values[i++] = NameGetDatum(&langname); /* lanname */ + values[i++] = BoolGetDatum(true); /* lanispl */ + values[i++] = BoolGetDatum(stmt->pltrusted); /* lanpltrusted */ + values[i++] = ObjectIdGetDatum(procOid); /* lanplcallfoid */ + values[i++] = ObjectIdGetDatum(valProcOid); /* lanvalidator */ + nulls[i] = 'n'; /* lanacl */ rel = heap_openr(LanguageRelationName, RowExclusiveLock); @@ -173,7 +175,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) void DropProceduralLanguage(DropPLangStmt *stmt) { - char languageName[NAMEDATALEN]; + char *languageName; HeapTuple langTup; ObjectAddress object; @@ -189,7 +191,7 @@ DropProceduralLanguage(DropPLangStmt *stmt) * Translate the language name, check that this language exist and is * a PL */ - case_translate_language_name(stmt->plname, languageName); + languageName = case_translate_language_name(stmt->plname); langTup = SearchSysCache(LANGNAME, CStringGetDatum(languageName), |