Index: schema/pgObject.cpp
===================================================================
--- schema/pgObject.cpp	(revision 7671)
+++ schema/pgObject.cpp	(working copy)
@@ -192,14 +192,12 @@
         // - pg_opclass
         
         // not being implemented:
-        // - pg_attrdef (won't make sense)
-        // - pg_index (done by pg_class
-
+        // - pg_index (done by pg_class)
         set=conn->ExecuteSet(query + wxT("\n")
             wxT("   AND ") + clsorder + wxT(" IN (\n")
             wxT("   SELECT oid FROM pg_class\n")
             wxT("    WHERE relname IN ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc',\n")
-            wxT("                      'pg_rewrite', 'pg_namespace', 'pg_trigger', 'pg_type'))\n")
+            wxT("                      'pg_rewrite', 'pg_namespace', 'pg_trigger', 'pg_type', 'pg_attrdef'))\n")
             wxT(" ORDER BY ") + clsorder + wxT(", cl.relkind"));
 
         if (set)
@@ -264,6 +262,21 @@
                         }
                         break;
                     }
+                    case 'A':
+                    {
+                        // Include only functions
+                        if (set->GetVal(wxT("adbin")).StartsWith(wxT("{FUNCEXPR")))
+                        {
+                            depFactory=&functionFactory;
+                            refname = set->GetVal(wxT("adsrc"));
+                            break;
+                        }
+                        else
+                        {
+                            set->MoveNext();
+                            continue;
+                        }
+                    }
                     default:
                         break;
                 }
@@ -337,7 +350,7 @@
     else
         where = wh;
     ShowDependency(GetDatabase(), Dependencies,
-        wxT("SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind,\n")
+        wxT("SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adsrc, ad.adbin, \n")
         wxT("       CASE WHEN cl.relkind IS NOT NULL THEN cl.relkind || COALESCE(dep.refobjsubid::text, '')\n")
         wxT("            WHEN tg.oid IS NOT NULL THEN 'T'::text\n")
         wxT("            WHEN ty.oid IS NOT NULL THEN 'y'::text\n")
@@ -346,6 +359,7 @@
         wxT("            WHEN la.oid IS NOT NULL THEN 'l'::text\n")
         wxT("            WHEN rw.oid IS NOT NULL THEN 'R'::text\n")
         wxT("            WHEN co.oid IS NOT NULL THEN 'C'::text || contype\n")
+        wxT("            WHEN ad.oid IS NOT NULL THEN 'A'::text\n")
         wxT("            ELSE '' END AS type,\n")
         wxT("       COALESCE(coc.relname, clrw.relname) AS ownertable,\n")
         wxT("       COALESCE(cl.relname || '.' || att.attname, cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname) AS refname,\n")
@@ -367,6 +381,7 @@
         wxT("  LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid\n")
         wxT("  LEFT JOIN pg_language la ON dep.refobjid=la.oid\n")
         wxT("  LEFT JOIN pg_namespace ns ON dep.refobjid=ns.oid\n")
+        wxT("  LEFT JOIN pg_attrdef ad ON ad.oid=dep.refobjid\n")
         + where, wxT("refclassid"));
 
     pgConn *conn=GetConnection();
@@ -408,7 +423,7 @@
     else
         where = wh;
     ShowDependency(GetDatabase(), referencedBy,
-        wxT("SELECT DISTINCT dep.deptype, dep.classid, cl.relkind,\n")
+        wxT("SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adsrc, ad.adbin,\n")
         wxT("       CASE WHEN cl.relkind IS NOT NULL THEN cl.relkind || COALESCE(dep.objsubid::text, '')\n")
         wxT("            WHEN tg.oid IS NOT NULL THEN 'T'::text\n")
         wxT("            WHEN ty.oid IS NOT NULL THEN 'y'::text\n")
@@ -417,6 +432,7 @@
         wxT("            WHEN la.oid IS NOT NULL THEN 'l'::text\n")
         wxT("            WHEN rw.oid IS NOT NULL THEN 'R'::text\n")
         wxT("            WHEN co.oid IS NOT NULL THEN 'C'::text || contype\n")
+        wxT("            WHEN ad.oid IS NOT NULL THEN 'A'::text\n")
         wxT("            ELSE '' END AS type,\n")
         wxT("       COALESCE(coc.relname, clrw.relname) AS ownertable,\n")
         wxT("       COALESCE(cl.relname || '.' || att.attname, cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname) AS refname,\n")
@@ -438,6 +454,7 @@
         wxT("  LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid\n")
         wxT("  LEFT JOIN pg_language la ON dep.objid=la.oid\n")
         wxT("  LEFT JOIN pg_namespace ns ON dep.objid=ns.oid\n")
+        wxT("  LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid\n")
         + where, wxT("classid"));
 }
 
