X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql%2Fgeneric-postgresql.lisp;h=4958eaa72b74eb9effd8e3bd693850efdacccf3b;hb=bc3cb0bc3161a02413f6df8611a60665348a762e;hp=aac16ddc85acad1727bca12b56ce0028ce44c056;hpb=6f9c91e01227e25e36560220628269258c80712d;p=clsql.git diff --git a/sql/generic-postgresql.lisp b/sql/generic-postgresql.lisp index aac16dd..4958eaa 100644 --- a/sql/generic-postgresql.lisp +++ b/sql/generic-postgresql.lisp @@ -78,6 +78,21 @@ (database-query (format nil "SELECT relname FROM pg_class WHERE (relkind = '~A')~A" + #+nil + (if (not (eq owner :all)) + ;; The below query fails on versions of postgresql + ;; (such as 7.4) that lack the pg_roles table + " + 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)))