From 4a5ee2a419e1f7c79525bc2c76b6fcd03cc4e815 Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: Mon, 15 Feb 2010 22:23:25 +0000
Subject: [PATCH] Move main error message text in plperl into errmsg from
 errdetail, and move the context information into errcontext instead of
 errmsg. This makes them better conform to our guidelines.

Also remove a few errcode declarations that were providing the default
value ERRCODE_INTERNAL_ERROR.
---
 src/pl/plperl/expected/plperl_init.out |  6 +--
 src/pl/plperl/plperl.c                 | 64 ++++++++------------------
 2 files changed, 22 insertions(+), 48 deletions(-)

diff --git a/src/pl/plperl/expected/plperl_init.out b/src/pl/plperl/expected/plperl_init.out
index a2d4e18d2ac..ef3d0ebf1d0 100644
--- a/src/pl/plperl/expected/plperl_init.out
+++ b/src/pl/plperl/expected/plperl_init.out
@@ -9,6 +9,6 @@ SHOW plperl.on_plperl_init;
 (1 row)
 
 DO $$ warn 42 $$ language plperl;
-ERROR:  while executing plperl.on_plperl_init
-DETAIL:  'eval "string"' trapped by operation mask at line 2.
-CONTEXT:  PL/Perl anonymous code block
+ERROR:  'eval "string"' trapped by operation mask at line 2.
+CONTEXT:  While executing plperl.on_plperl_init.
+PL/Perl anonymous code block
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index ab32fd88c59..f181c39610c 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -1,7 +1,7 @@
 /**********************************************************************
  * plperl.c - perl as a procedural language for PostgreSQL
  *
- *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.166 2010/02/14 18:42:18 rhaas Exp $
+ *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.167 2010/02/15 22:23:25 alvherre Exp $
  *
  **********************************************************************/
 
@@ -413,13 +413,9 @@ select_perl_context(bool trusted)
 
 	eval_pv("PostgreSQL::InServer::SPI::bootstrap()", FALSE);
 	if (SvTRUE(ERRSV))
-	{
 		ereport(ERROR,
-			(errcode(ERRCODE_INTERNAL_ERROR),
-			errmsg("%s", strip_trailing_ws(SvPV_nolen(ERRSV))),
-			errdetail("While executing PostgreSQL::InServer::SPI::bootstrap")));
-	}
-
+				(errmsg("%s", strip_trailing_ws(SvPV_nolen(ERRSV))),
+				 errdetail("While executing PostgreSQL::InServer::SPI::bootstrap.")));
 }
 
 /*
@@ -553,15 +549,13 @@ plperl_init_interp(void)
 	if (perl_parse(plperl, plperl_init_shared_libs,
 			   nargs, embedding, NULL) != 0)
 		ereport(ERROR,
-			(errcode(ERRCODE_INTERNAL_ERROR),
-				errmsg("while parsing perl initialization"),
-				errdetail("%s", strip_trailing_ws(SvPV_nolen(ERRSV))) ));
+				(errmsg("%s", strip_trailing_ws(SvPV_nolen(ERRSV))),
+				 errcontext("While parsing perl initialization.")));
 
 	if (perl_run(plperl) != 0)
 		ereport(ERROR,
-			(errcode(ERRCODE_INTERNAL_ERROR),
-				errmsg("while running perl initialization"),
-				errdetail("%s", strip_trailing_ws(SvPV_nolen(ERRSV))) ));
+				(errmsg("%s", strip_trailing_ws(SvPV_nolen(ERRSV))),
+				 errcontext("While running perl initialization.")));
 
 #ifdef WIN32
 
@@ -691,24 +685,17 @@ plperl_trusted_init(void)
 		/* not safe, so disallow all trusted funcs */
 		eval_pv(PLC_SAFE_BAD, FALSE);
 		if (SvTRUE(ERRSV))
-		{
 			ereport(ERROR,
-				(errcode(ERRCODE_INTERNAL_ERROR),
-				 errmsg("while executing PLC_SAFE_BAD"),
-				 errdetail("%s", strip_trailing_ws(SvPV_nolen(ERRSV))) ));
-		}
-
+					(errmsg("%s", strip_trailing_ws(SvPV_nolen(ERRSV))),
+					 errcontext("While executing PLC_SAFE_BAD.")));
 	}
 	else
 	{
 		eval_pv(PLC_SAFE_OK, FALSE);
 		if (SvTRUE(ERRSV))
-		{
 			ereport(ERROR,
-				(errcode(ERRCODE_INTERNAL_ERROR),
-				 errmsg("while executing PLC_SAFE_OK"),
-				 errdetail("%s", strip_trailing_ws(SvPV_nolen(ERRSV))) ));
-		}
+					(errmsg("%s", strip_trailing_ws(SvPV_nolen(ERRSV))),
+					 errcontext("While executing PLC_SAFE_OK.")));
 
 		if (GetDatabaseEncoding() == PG_UTF8)
 		{
@@ -719,12 +706,9 @@ plperl_trusted_init(void)
 			 */
 			eval_pv("my $a=chr(0x100); return $a =~ /\\xa9/i", FALSE);
 			if (SvTRUE(ERRSV))
-			{
 				ereport(ERROR,
-					(errcode(ERRCODE_INTERNAL_ERROR),
-						errmsg("while executing utf8fix"),
-						errdetail("%s", strip_trailing_ws(SvPV_nolen(ERRSV))) ));
-			}
+						(errmsg("%s", strip_trailing_ws(SvPV_nolen(ERRSV))),
+						 errcontext("While executing utf8fix.")));
 		}
 
 		/* switch to the safe require opcode */
@@ -742,12 +726,9 @@ plperl_trusted_init(void)
 			SPAGAIN;
 
 			if (SvTRUE(ERRSV))
-			{
 				ereport(ERROR,
-					(errcode(ERRCODE_INTERNAL_ERROR),
-						errmsg("while executing plperl.on_plperl_init"),
-						errdetail("%s", strip_trailing_ws(SvPV_nolen(ERRSV))) ));
-			}
+						(errmsg("%s", strip_trailing_ws(SvPV_nolen(ERRSV))),
+						 errcontext("While executing plperl.on_plperl_init.")));
 		}
 
 	}
@@ -761,12 +742,9 @@ plperl_untrusted_init(void)
 	{
 		eval_pv(plperl_on_plperlu_init, FALSE);
 		if (SvTRUE(ERRSV))
-		{
 			ereport(ERROR,
-				(errcode(ERRCODE_INTERNAL_ERROR),
-					errmsg("while executing plperl.on_plperlu_init"),
-					errdetail("%s", strip_trailing_ws(SvPV_nolen(ERRSV))) ));
-		}
+					(errmsg("%s", strip_trailing_ws(SvPV_nolen(ERRSV))),
+					 errcontext("While executing plperl.on_plperlu_init.")));
 	}
 }
 
@@ -1299,18 +1277,14 @@ plperl_create_sub(plperl_proc_desc *prodesc, char *s, Oid fn_oid)
 	LEAVE;
 
 	if (SvTRUE(ERRSV))
-	{
 		ereport(ERROR,
 				(errcode(ERRCODE_SYNTAX_ERROR),
 				 errmsg("%s", strip_trailing_ws(SvPV_nolen(ERRSV)))));
-	}
 
 	if (!subref)
-	{
 		ereport(ERROR,
-				(errcode(ERRCODE_INTERNAL_ERROR),
-				 errmsg("didn't get a GLOB from compiling %s via %s", prodesc->proname, compile_sub)));
-	}
+				(errmsg("didn't get a GLOB from compiling %s via %s",
+						prodesc->proname, compile_sub)));
 
 	prodesc->reference = newSVsv(subref);
 
-- 
GitLab