[pg-cvs] CVS update: pg/meta-queries.lisp

Eric Marsden emarsden at common-lisp.net
Mon Dec 19 22:16:43 UTC 2005


Update of /project/pg/cvsroot/pg
In directory common-lisp.net:/tmp/cvs-serv4439

Modified Files:
	meta-queries.lisp 
Log Message:
Add a utility function PG-DESCRIBE-TABLE.

Date: Mon Dec 19 23:16:43 2005
Author: emarsden

Index: pg/meta-queries.lisp
diff -u pg/meta-queries.lisp:1.1 pg/meta-queries.lisp:1.2
--- pg/meta-queries.lisp:1.1	Fri Mar  5 19:08:08 2004
+++ pg/meta-queries.lisp	Mon Dec 19 23:16:42 2005
@@ -1,7 +1,7 @@
 ;;; meta-queries.lisp -- DBMS metainformation
 ;;;
-;;; Author: Eric Marsden <emarsden at laas.fr>
-;;; Time-stamp: <2004-03-05 emarsden>
+;;; Author: Eric Marsden <eric.marsden at free.fr>
+;;; Time-stamp: <2005-12-19 emarsden>
 ;;
 ;;
 ;; Metainformation such as the list of databases present in the
@@ -35,6 +35,16 @@
   "Return a string identifying the version and operating environment of the backend."
   (let ((res (pg-exec conn "SELECT version()")))
     (first (pg-result res :tuple 0))))
+
+(defun pg-describe-table (conn table)
+  (flet ((oid-to-name (oid)
+           (maphash (lambda (key value)
+                      (when (eql value oid)
+                        (return-from oid-to-name key)))
+                    *type-to-oid*)))
+    (let ((res (pg-exec conn (format nil "SELECT * FROM ~S WHERE 0=1" table))))
+      (loop :for (name oid) :in (pg-result res :attributes)
+            :collect (list name (oid-to-name oid))))))
 
 
 ;; EOF




More information about the Pg-cvs mailing list