From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Mon, 3 Oct 2011 16:13:15 +0000 (-0400)
Subject: ProcedureCreate neglected to record dependencies on default expressions.
X-Git-Tag: REL9_0_6~49
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f994bf965d369124ab18d8504668db2787173fb9;p=postgresql

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.
---

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);