diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml
index 9717d1596d..cfe3dcbd39 100644
--- a/doc/src/sgml/ddl.sgml
+++ b/doc/src/sgml/ddl.sgml
@@ -5193,8 +5193,9 @@ DROP TABLE products CASCADE;
- For user-defined functions, PostgreSQL tracks
- dependencies associated with a function's externally-visible properties,
+ For a user-defined function or procedure whose body is defined as a string
+ literal, PostgreSQL tracks
+ dependencies associated with the function's externally-visible properties,
such as its argument and result types, but not dependencies
that could only be known by examining the function body. As an example,
consider this situation:
@@ -5222,6 +5223,23 @@ CREATE FUNCTION get_color_note (rainbow) RETURNS text AS
table is missing, though executing it would cause an error; creating a new
table of the same name would allow the function to work again.
+
+
+ On the other hand, for a SQL-language function or procedure whose body
+ is written in SQL-standard style, the body is parsed at function
+ definition time and all dependencies recognized by the parser are
+ stored. Thus, if we write the function above as
+
+
+CREATE FUNCTION get_color_note (rainbow) RETURNS text
+BEGIN ATOMIC
+ SELECT note FROM my_colors WHERE color = $1;
+END;
+
+
+ then the function's dependency on the my_colors
+ table will be known and enforced by DROP.
+