aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-10-03 12:13:15 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2011-10-03 12:13:15 -0400
commit76074fcaa04fb5d35e8cf7716587440e3d075d50 (patch)
tree294975e52e1daaeaa4968d9a0e7297acf30ddd4b
parentd56b3afc0376afe491065d9eca6440b3cc7b1346 (diff)
downloadpostgresql-76074fcaa04fb5d35e8cf7716587440e3d075d50.tar.gz
postgresql-76074fcaa04fb5d35e8cf7716587440e3d075d50.zip
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.
-rw-r--r--src/backend/catalog/pg_proc.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index f2b78b66a44..5f7d7f6b68b 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -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);