+(defmethod database-list-objects-of-type ((database postgresql-database)
+ type owner)
+ (let ((owner-clause
+ (cond ((stringp owner)
+ (format nil " AND (relowner=(SELECT usesysid FROM pg_user WHERE (usename='~A')))" owner))
+ ((null owner)
+ (format nil " AND (NOT (relowner=1))"))
+ (t ""))))
+ (mapcar #'car
+ (database-query
+ (format nil
+ "SELECT relname FROM pg_class WHERE (relkind = '~A')~A"
+ type
+ owner-clause)
+ database nil))))
+
+(defmethod database-list-tables ((database postgresql-database)
+ &key (owner nil))
+ (database-list-objects-of-type database "r" owner))
+
+(defmethod database-list-views ((database postgresql-database)
+ &key (owner nil))
+ (database-list-objects-of-type database "v" owner))
+
+(defmethod database-list-indexes ((database postgresql-database)
+ &key (owner nil))
+ (database-list-objects-of-type database "i" owner))
+