]> granicus.if.org Git - postgresql/commitdiff
ProcedureCreate neglected to record dependencies on default expressions.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 3 Oct 2011 16:13:15 +0000 (12:13 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 3 Oct 2011 16:13:15 +0000 (12:13 -0400)
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

index f2b78b66a4494b608025fd46475a002ef4ed85e2..5f7d7f6b68b25956f225cf501b69e20765a8537c 100644 (file)
@@ -599,6 +599,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);