- (when
- (find name (database-query "select datname from pg_database"
- database :auto)
- :key #'car :test #'string-equal)
- t)
- (database-disconnect database)))))
+ (progn
+ (setf (slot-value database 'clsql-sys::state) :open)
+ (mapcar #'car (database-query "select datname from pg_database"
+ database :auto nil)))
+ (progn
+ (database-disconnect database)
+ (setf (slot-value database 'clsql-sys::state) :closed))))))
+
+(defmethod database-describe-table ((database postgresql-socket-database)
+ table)
+ (database-query
+ (format nil "select a.attname, t.typname
+ from pg_class c, pg_attribute a, pg_type t
+ where c.relname = '~a'
+ and a.attnum > 0
+ and a.attrelid = c.oid
+ and a.atttypid = t.oid"
+ (sql-escape (string-downcase table)))
+ database :auto nil))
+
+
+;; Database capabilities
+
+(defmethod db-backend-has-create/destroy-db? ((db-type (eql :postgresql-socket)))
+ nil)
+
+(defmethod db-type-has-fancy-math? ((db-type (eql :postgresql-socket)))
+ t)
+
+(defmethod db-type-default-case ((db-type (eql :postgresql-socket)))
+ :lower)