diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index 6df42fb..d97e5fd 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -245,7 +245,11 @@ describeFunctions(const char *functypes, const char *pattern, bool verbose, bool
                          "  WHEN p.proiswindow THEN '%s'\n"
                          "  WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN '%s'\n"
                          "  ELSE '%s'\n"
-                         "END as \"%s\"",
+                         "END as \"%s\",\n"
+                         "  CASE\n"
+                         "    WHEN prosecdef THEN 'definer'\n"
+                         "    ELSE 'invoker'\n"
+                         "  END AS \"%s\"\n",
                          gettext_noop("Result data type"),
                          gettext_noop("Argument data types"),
        /* translator: "agg" is short for "aggregate" */
@@ -253,7 +257,8 @@ describeFunctions(const char *functypes, const char *pattern, bool verbose, bool
                          gettext_noop("window"),
                          gettext_noop("trigger"),
                          gettext_noop("normal"),
-                         gettext_noop("Type"));
+                         gettext_noop("Type"),
+                         gettext_noop("Security"));
    else if (pset.sversion >= 80100)
        appendPQExpBuffer(&buf,
                     "  CASE WHEN p.proretset THEN 'SETOF ' ELSE '' END ||\n"
@@ -291,14 +296,19 @@ describeFunctions(const char *functypes, const char *pattern, bool verbose, bool
                          "    WHEN p.proisagg THEN '%s'\n"
                          "    WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN '%s                          "    WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN '%s'\n"
                          "    ELSE '%s'\n"
-                         "  END AS \"%s\"",
+                         "  END AS \"%s\",\n"
+                         "  CASE\n"
+                         "    WHEN prosecdef THEN 'definer'\n"
+                         "    ELSE 'invoker'\n"
+                         "  END AS \"%s\"\n",
                          gettext_noop("Result data type"),
                          gettext_noop("Argument data types"),
        /* translator: "agg" is short for "aggregate" */
                          gettext_noop("agg"),
                          gettext_noop("trigger"),
                          gettext_noop("normal"),
-                         gettext_noop("Type"));
+                         gettext_noop("Type"),
+                         gettext_noop("Security"));
    else
        appendPQExpBuffer(&buf,
                     "  CASE WHEN p.proretset THEN 'SETOF ' ELSE '' END ||\n"
@@ -308,14 +318,19 @@ describeFunctions(const char *functypes, const char *pattern, bool verbose, bool
                          "    WHEN p.proisagg THEN '%s'\n"
                          "    WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN '%s'\n"
                          "    ELSE '%s'\n"
-                         "  END AS \"%s\"",
+                         "  END AS \"%s\",\n"
+                         "  CASE\n"
+                         "    WHEN prosecdef THEN 'definer'\n"
+                         "    ELSE 'invoker'\n"
+                         "  END AS \"%s\"\n",
                          gettext_noop("Result data type"),
                          gettext_noop("Argument data types"),
        /* translator: "agg" is short for "aggregate" */
                          gettext_noop("agg"),
                          gettext_noop("trigger"),
                          gettext_noop("normal"),
-                         gettext_noop("Type"));
+                         gettext_noop("Type"),
+                         gettext_noop("Security"));
 
    if (verbose)
        appendPQExpBuffer(&buf,
