From 1e4c4f9eb762089e3133af51d3f96d60b27f0c34 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 13 Aug 2002 17:22:08 +0000 Subject: [PATCH] Remove obsolete uses of lanispl. Only used in pg_dump now, but can be removed altogether if pg_dump doesn't need it anymore. --- doc/src/sgml/catalogs.sgml | 8 +++++--- src/backend/commands/proclang.c | 16 ++++++---------- src/backend/commands/trigger.c | 19 +------------------ src/backend/utils/fmgr/fmgr.c | 33 +++++++++++++-------------------- 4 files changed, 25 insertions(+), 51 deletions(-) diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml index 38dbe32aad..e62493b525 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -1,6 +1,6 @@ @@ -1991,8 +1991,10 @@ This is false for internal languages (such as SQL) and true for - dynamically loaded language handler modules. It essentially - means that, if it is true, the language may be dropped. + user-defined languages. Currently, + pg_dump still uses this to determine + which languages need to be dumped, but this may be replaced by + a different mechanism sometime. diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c index 0c28dea731..9672e74ea9 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.39 2002/08/05 03:29:17 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/proclang.c,v 1.40 2002/08/13 17:22:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -56,7 +56,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) * Check permission */ if (!superuser()) - elog(ERROR, "Only users with Postgres superuser privilege are " + elog(ERROR, "Only users with superuser privilege are " "permitted to create procedural languages"); /* @@ -77,10 +77,10 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) MemSet(typev, 0, sizeof(typev)); procOid = LookupFuncName(stmt->plhandler, 0, typev); if (!OidIsValid(procOid)) - elog(ERROR, "PL handler function %s() doesn't exist", + elog(ERROR, "function %s() doesn't exist", NameListToString(stmt->plhandler)); if (get_func_rettype(procOid) != InvalidOid) - elog(ERROR, "PL handler function %s() does not return type \"opaque\"", + elog(ERROR, "function %s() does not return type \"opaque\"", NameListToString(stmt->plhandler)); /* validate the validator function */ @@ -89,7 +89,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) typev[0] = OIDOID; valProcOid = LookupFuncName(stmt->plvalidator, 1, typev); if (!OidIsValid(valProcOid)) - elog(ERROR, "PL validator function %s(oid) doesn't exist", + elog(ERROR, "function %s(oid) doesn't exist", NameListToString(stmt->plvalidator)); } else @@ -162,7 +162,7 @@ DropProceduralLanguage(DropPLangStmt *stmt) * Check permission */ if (!superuser()) - elog(ERROR, "Only users with Postgres superuser privilege are " + elog(ERROR, "Only users with superuser privilege are " "permitted to drop procedural languages"); /* @@ -177,10 +177,6 @@ DropProceduralLanguage(DropPLangStmt *stmt) if (!HeapTupleIsValid(langTup)) elog(ERROR, "Language %s doesn't exist", languageName); - if (!((Form_pg_language) GETSTRUCT(langTup))->lanispl) - elog(ERROR, "Language %s isn't a created procedural language", - languageName); - object.classId = get_system_catalog_relid(LanguageRelationName); object.objectId = HeapTupleGetOid(langTup); object.objectSubId = 0; diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 7fa570890d..cc97c569ba 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.124 2002/08/05 03:29:17 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.125 2002/08/13 17:22:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -74,7 +74,6 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint) HeapTuple tuple; Oid fargtypes[FUNC_MAX_ARGS]; Oid funcoid; - Oid funclang; Oid trigoid; int found = 0; int i; @@ -207,24 +206,8 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint) if (((Form_pg_proc) GETSTRUCT(tuple))->prorettype != 0) elog(ERROR, "CreateTrigger: function %s() must return OPAQUE", NameListToString(stmt->funcname)); - funclang = ((Form_pg_proc) GETSTRUCT(tuple))->prolang; ReleaseSysCache(tuple); - if (funclang != ClanguageId && funclang != INTERNALlanguageId) - { - HeapTuple langTup; - - langTup = SearchSysCache(LANGOID, - ObjectIdGetDatum(funclang), - 0, 0, 0); - if (!HeapTupleIsValid(langTup)) - elog(ERROR, "CreateTrigger: cache lookup for language %u failed", - funclang); - if (((Form_pg_language) GETSTRUCT(langTup))->lanispl == false) - elog(ERROR, "CreateTrigger: only internal, C and PL functions are supported"); - ReleaseSysCache(langTup); - } - /* * Build the new pg_trigger tuple. */ diff --git a/src/backend/utils/fmgr/fmgr.c b/src/backend/utils/fmgr/fmgr.c index 1b2e0d9ef2..7e3204c5c0 100644 --- a/src/backend/utils/fmgr/fmgr.c +++ b/src/backend/utils/fmgr/fmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.60 2002/06/20 20:29:39 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.61 2002/08/13 17:22:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -324,6 +324,7 @@ fmgr_info_other_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) Oid language = procedureStruct->prolang; HeapTuple languageTuple; Form_pg_language languageStruct; + FmgrInfo plfinfo; languageTuple = SearchSysCache(LANGOID, ObjectIdGetDatum(language), @@ -332,27 +333,19 @@ fmgr_info_other_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) elog(ERROR, "fmgr_info: cache lookup for language %u failed", language); languageStruct = (Form_pg_language) GETSTRUCT(languageTuple); - if (languageStruct->lanispl) - { - FmgrInfo plfinfo; - fmgr_info(languageStruct->lanplcallfoid, &plfinfo); - finfo->fn_addr = plfinfo.fn_addr; + fmgr_info(languageStruct->lanplcallfoid, &plfinfo); + finfo->fn_addr = plfinfo.fn_addr; + + /* + * If lookup of the PL handler function produced nonnull fn_extra, + * complain --- it must be an oldstyle function! We no longer + * support oldstyle PL handlers. + */ + if (plfinfo.fn_extra != NULL) + elog(ERROR, "fmgr_info: language %u has old-style handler", + language); - /* - * If lookup of the PL handler function produced nonnull fn_extra, - * complain --- it must be an oldstyle function! We no longer - * support oldstyle PL handlers. - */ - if (plfinfo.fn_extra != NULL) - elog(ERROR, "fmgr_info: language %u has old-style handler", - language); - } - else - { - elog(ERROR, "fmgr_info: function %u: unsupported language %u", - functionId, language); - } ReleaseSysCache(languageTuple); } -- GitLab