diff options
author | Robert Haas <rhaas@postgresql.org> | 2011-11-17 14:20:13 -0500 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2011-11-17 14:25:18 -0500 |
commit | 67dc4eed42186ba6a2456578899bfd38d003201a (patch) | |
tree | c01313d1fb6f55e7cac3a32efe28dcc42d4e8370 /src/backend/commands/functioncmds.c | |
parent | ee3ef8f30c4241e95f761c41501979dfd4f22c6a (diff) | |
download | postgresql-67dc4eed42186ba6a2456578899bfd38d003201a.tar.gz postgresql-67dc4eed42186ba6a2456578899bfd38d003201a.zip |
Remove ancient downcasing code from procedural language operations.
A very long time ago, language names were specified as literals rather
than identifiers, so this code was added to do case-folding. But that
style has ben deprecated for many years so this isn't needed any more.
Language names will still be downcased when specified as unquoted
identifiers, but quoted identifiers or the old style using string
literals will be left as-is.
Diffstat (limited to 'src/backend/commands/functioncmds.c')
-rw-r--r-- | src/backend/commands/functioncmds.c | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c index 92abd44a600..c4746618ae5 100644 --- a/src/backend/commands/functioncmds.c +++ b/src/backend/commands/functioncmds.c @@ -779,7 +779,6 @@ CreateFunction(CreateFunctionStmt *stmt, const char *queryString) Oid prorettype; bool returnsSet; char *language; - char *languageName; Oid languageOid; Oid languageValidator; char *funcname; @@ -828,16 +827,13 @@ CreateFunction(CreateFunctionStmt *stmt, const char *queryString) &isStrict, &security, &proconfig, &procost, &prorows); - /* Convert language name to canonical case */ - languageName = case_translate_language_name(language); - /* Look up the language and validate permissions */ - languageTuple = SearchSysCache1(LANGNAME, PointerGetDatum(languageName)); + languageTuple = SearchSysCache1(LANGNAME, PointerGetDatum(language)); if (!HeapTupleIsValid(languageTuple)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("language \"%s\" does not exist", languageName), - (PLTemplateExists(languageName) ? + errmsg("language \"%s\" does not exist", language), + (PLTemplateExists(language) ? errhint("Use CREATE LANGUAGE to load the language into the database.") : 0))); languageOid = HeapTupleGetOid(languageTuple); @@ -906,7 +902,7 @@ CreateFunction(CreateFunctionStmt *stmt, const char *queryString) compute_attributes_with_style(stmt->withClause, &isStrict, &volatility); - interpret_AS_clause(languageOid, languageName, funcname, as_clause, + interpret_AS_clause(languageOid, language, funcname, as_clause, &prosrc_str, &probin_str); /* @@ -1964,7 +1960,6 @@ ExecuteDoStmt(DoStmt *stmt) DefElem *as_item = NULL; DefElem *language_item = NULL; char *language; - char *languageName; Oid laninline; HeapTuple languageTuple; Form_pg_language languageStruct; @@ -2008,16 +2003,13 @@ ExecuteDoStmt(DoStmt *stmt) else language = "plpgsql"; - /* Convert language name to canonical case */ - languageName = case_translate_language_name(language); - /* Look up the language and validate permissions */ - languageTuple = SearchSysCache1(LANGNAME, PointerGetDatum(languageName)); + languageTuple = SearchSysCache1(LANGNAME, PointerGetDatum(language)); if (!HeapTupleIsValid(languageTuple)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("language \"%s\" does not exist", languageName), - (PLTemplateExists(languageName) ? + errmsg("language \"%s\" does not exist", language), + (PLTemplateExists(language) ? errhint("Use CREATE LANGUAGE to load the language into the database.") : 0))); codeblock->langOid = HeapTupleGetOid(languageTuple); |