From 0635c0b524368862da08271fbca626faf44290a2 Mon Sep 17 00:00:00 2001
From: Robert Haas <rhaas@postgresql.org>
Date: Fri, 20 Jul 2012 21:25:26 -0400
Subject: [PATCH] Repair plpgsql_validator breakage.

Commit 3a0e4d36ebd7f477822d5bae41ba121a40d22ccc arranged to
reference stack-allocated variables after they were out of scope.
That's no good, so let's arrange to not do that after all.
---
 src/pl/plpgsql/src/pl_handler.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/pl/plpgsql/src/pl_handler.c b/src/pl/plpgsql/src/pl_handler.c
index 2adf166164e..905fff0b31d 100644
--- a/src/pl/plpgsql/src/pl_handler.c
+++ b/src/pl/plpgsql/src/pl_handler.c
@@ -280,6 +280,8 @@ plpgsql_validator(PG_FUNCTION_ARGS)
 		FunctionCallInfoData fake_fcinfo;
 		FmgrInfo	flinfo;
 		int			rc;
+		TriggerData trigdata;
+		EventTriggerData etrigdata;
 
 		/*
 		 * Connect to SPI manager (is this needed for compilation?)
@@ -298,17 +300,15 @@ plpgsql_validator(PG_FUNCTION_ARGS)
 		flinfo.fn_mcxt = CurrentMemoryContext;
 		if (is_dml_trigger)
 		{
-			TriggerData trigdata;
 			MemSet(&trigdata, 0, sizeof(trigdata));
 			trigdata.type = T_TriggerData;
 			fake_fcinfo.context = (Node *) &trigdata;
 		}
 		else if (is_event_trigger)
 		{
-			EventTriggerData trigdata;
-			MemSet(&trigdata, 0, sizeof(trigdata));
-			trigdata.type = T_EventTriggerData;
-			fake_fcinfo.context = (Node *) &trigdata;
+			MemSet(&etrigdata, 0, sizeof(etrigdata));
+			etrigdata.type = T_EventTriggerData;
+			fake_fcinfo.context = (Node *) &etrigdata;
 		}
 
 		/* Test-compile the function */
-- 
GitLab