From d16b8776123ffe9e287dc2354e3ad5248231055f Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Wed, 10 Sep 2003 19:59:23 +0000
Subject: [PATCH] Add HINT if CREATE FUNCTION specifies a valid language, but
 the language isn't loaded into the database.

---
 src/backend/commands/functioncmds.c | 19 ++++++++++++++++---
 1 file 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);
 
-- 
GitLab