From f994bf965d369124ab18d8504668db2787173fb9 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Mon, 3 Oct 2011 12:13:15 -0400
Subject: [PATCH] ProcedureCreate neglected to record dependencies on default
 expressions.

Thus, an object referenced in a default expression could be dropped while
the function remained present.  This was unaccountably missed in the
original patch to add default parameters for functions.  Reported by
Pavel Stehule.
---
 src/backend/catalog/pg_proc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index f60cc6106a..751f4c8cff 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -597,6 +597,11 @@ ProcedureCreate(const char *procedureName,
 		recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
 	}
 
+	/* dependency on parameter default expressions */
+	if (parameterDefaults)
+		recordDependencyOnExpr(&myself, (Node *) parameterDefaults,
+							   NIL, DEPENDENCY_NORMAL);
+
 	/* dependency on owner */
 	if (!is_update)
 		recordDependencyOnOwner(ProcedureRelationId, retval, proowner);
-- 
2.49.0