From 5b29e6b688d1e783a098aa24f9e795f8de798a87 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Fri, 13 Jan 2017 16:59:52 -0500
Subject: [PATCH] In PL/Tcl tests, don't choke if optional error fields are
 missing.

This fixes a portability issue introduced by commit 961bed020: with a
compiler that doesn't support PG_FUNCNAME_MACRO, the "funcname" field of
errorCode won't be provided, leading to a failure of the unset command.
I added -nocomplain to the unset commands for filename and lineno too, just
in case, though I know of no platform that wouldn't populate those fields.
(BTW, -nocomplain is new in Tcl 8.4, but fortunately we dropped support
for pre-8.4 Tcl some time ago.)

Per buildfarm member pademelon.
---
 src/pl/tcl/expected/pltcl_setup.out | 6 +++---
 src/pl/tcl/sql/pltcl_setup.sql      | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/pl/tcl/expected/pltcl_setup.out b/src/pl/tcl/expected/pltcl_setup.out
index d0ef3b5f260..e213b942255 100644
--- a/src/pl/tcl/expected/pltcl_setup.out
+++ b/src/pl/tcl/expected/pltcl_setup.out
@@ -608,9 +608,9 @@ as $function$
         # Get rid of keys that can't be expected to remain constant
         array set myArray $::errorCode
         unset myArray(POSTGRES)
-        unset myArray(funcname)
-        unset myArray(filename)
-        unset myArray(lineno)
+        unset -nocomplain myArray(funcname)
+        unset -nocomplain myArray(filename)
+        unset -nocomplain myArray(lineno)
 
         # Format into something nicer
         set vals []
diff --git a/src/pl/tcl/sql/pltcl_setup.sql b/src/pl/tcl/sql/pltcl_setup.sql
index cda31a9c1cd..a8eaba62431 100644
--- a/src/pl/tcl/sql/pltcl_setup.sql
+++ b/src/pl/tcl/sql/pltcl_setup.sql
@@ -653,9 +653,9 @@ as $function$
         # Get rid of keys that can't be expected to remain constant
         array set myArray $::errorCode
         unset myArray(POSTGRES)
-        unset myArray(funcname)
-        unset myArray(filename)
-        unset myArray(lineno)
+        unset -nocomplain myArray(funcname)
+        unset -nocomplain myArray(filename)
+        unset -nocomplain myArray(lineno)
 
         # Format into something nicer
         set vals []
-- 
GitLab