r1653: More field-type updates
[clsql.git] / interfaces / postgresql / postgresql-sql.cl
index eca4b293f4440dd3dcb2563ecbaa790e6c945eb0..a1dfdd7081f863c60625ac4adf7226ad68568161 100644 (file)
@@ -8,7 +8,7 @@
 ;;;;                Original code by Pierre R. Mai 
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: postgresql-sql.cl,v 1.2 2002/03/23 17:07:40 kevin Exp $
+;;;; $Id: postgresql-sql.cl,v 1.6 2002/03/24 22:25:51 kevin Exp $
 ;;;;
 ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;; and Copyright (c) 1999-2001 by Pierre R. Mai
@@ -99,7 +99,7 @@
   (setf (database-conn-ptr database) nil)
   t)
 
-(defmethod database-query (query-expression (database postgresql-database))
+(defmethod database-query (query-expression (database postgresql-database) field-types)
   (let ((conn-ptr (database-conn-ptr database)))
     (declare (type pgsql-conn-def conn-ptr))
     (uffi:with-cstring (query-native query-expression)
                      (loop for i from 0 below (PQnfields result)
                          collect
                            (if (zerop (PQgetisnull result tuple-index i))
-                               (uffi:convert-from-cstring
+                               (uffi:convert-from-foreign-string
                                 (PQgetvalue result tuple-index i))
                              nil))))
               (t
 (defstruct postgresql-result-set
   (res-ptr (uffi:make-null-pointer 'pgsql-result) 
           :type pgsql-result-def)
-  (num-tuples 0)
-  (num-fields 0)
-  (tuple-index 0))
+  (field-types nil) 
+  (num-tuples 0 :type integer)
+  (num-fields 0 :type integer)
+  (tuple-index 0 :type integer))
 
-(defmethod database-query-result-set (query-expression 
-                                      (database postgresql-database) 
-                                      &optional full-set)
+(defmethod database-query-result-set (query-expression (database postgresql-database) 
+                                      &key full-set field-types)
   (let ((conn-ptr (database-conn-ptr database)))
     (declare (type pgsql-conn-def conn-ptr))
     (uffi:with-cstring (query-native query-expression)
                (values (make-postgresql-result-set
                         :res-ptr result
                         :num-fields (PQnfields result)
-                        :num-tuples (PQntuples result))
+                        :num-tuples (PQntuples result)
+                       :field-types field-types)
                        (PQnfields result)
                        (PQntuples result))
             (values (make-postgresql-result-set
                      :res-ptr result
                      :num-fields (PQnfields result)
-                     :num-tuples (PQntuples result))
+                     :num-tuples (PQntuples result)
+                     :field-types field-types)
                     (PQnfields result))))
           (t
            (unwind-protect
           do
             (setf (car rest)
               (if (zerop (PQgetisnull result tuple-index i))
-                  (uffi:convert-from-cstring 
+                  (uffi:convert-from-foreign-string 
                    (PQgetvalue result tuple-index i))
                 nil))
           finally