aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/functioncmds.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2003-09-10 19:59:23 +0000
committerBruce Momjian <bruce@momjian.us>2003-09-10 19:59:23 +0000
commitd16b8776123ffe9e287dc2354e3ad5248231055f (patch)
tree8ed4c481dbc3622ec3d524711dbb5a2992c59017 /src/backend/commands/functioncmds.c
parenta72fce035d6cf31047b18e822fe0395f75528ce4 (diff)
downloadpostgresql-d16b8776123ffe9e287dc2354e3ad5248231055f.tar.gz
postgresql-d16b8776123ffe9e287dc2354e3ad5248231055f.zip
Add HINT if CREATE FUNCTION specifies a valid language, but the language
isn't loaded into the database.
Diffstat (limited to 'src/backend/commands/functioncmds.c')
-rw-r--r--src/backend/commands/functioncmds.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index a47820d2314..ea5ba103131 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/functioncmds.c,v 1.33 2003/08/04 02:39:58 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/functioncmds.c,v 1.34 2003/09/10 19:59:23 momjian Exp $
*
* DESCRIPTION
* These routines take the parse tree and pick out the
@@ -435,10 +435,23 @@ CreateFunction(CreateFunctionStmt *stmt)
PointerGetDatum(languageName),
0, 0, 0);
if (!HeapTupleIsValid(languageTuple))
+ /* Add any new languages to this list to invoke the hint. */
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_OBJECT),
- errmsg("language \"%s\" does not exist", languageName)));
-
+ errmsg("language \"%s\" does not exist", languageName),
+ (strcmp(languageName, "plperl") == 0 ||
+ strcmp(languageName, "plperlu") == 0 ||
+ strcmp(languageName, "plphp") == 0 ||
+ strcmp(languageName, "plpgsql") == 0 ||
+ strcmp(languageName, "plpython") == 0 ||
+ strcmp(languageName, "plpythonu") == 0 ||
+ strcmp(languageName, "plr") == 0 ||
+ strcmp(languageName, "plruby") == 0 ||
+ strcmp(languageName, "plsh") == 0 ||
+ strcmp(languageName, "pltcl") == 0 ||
+ strcmp(languageName, "pltclu") == 0) ?
+ errhint("You need to use 'createlang' to load the language into the database.") : 0));
+
languageOid = HeapTupleGetOid(languageTuple);
languageStruct = (Form_pg_language) GETSTRUCT(languageTuple);