r10969: 04 Jul 2006 Kevin Rosenberg <kevin@rosenberg.net>
[clsql.git] / sql / generic-postgresql.lisp
index aac16ddc85acad1727bca12b56ce0028ce44c056..5e3e177fb9add4f5f2323b14030bf791d30bab11 100644 (file)
   (mapcar #'car
          (database-query
           (format nil
-                  "SELECT relname FROM pg_class WHERE (relkind = '~A')~A"
+                   (if (not (eq owner :all))
+                    "
+ SELECT c.relname
+ FROM pg_catalog.pg_class c
+      LEFT JOIN pg_catalog.pg_roles r ON r.oid = c.relowner
+      LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
+ WHERE c.relkind IN ('~A','')
+       AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
+       AND pg_catalog.pg_table_is_visible(c.oid)
+       ~A"
+                    "SELECT relname FROM pg_class WHERE (relkind =
+'~A')~A")
                   type
                   (owner-clause owner))
           database nil nil)))