;;;; 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
(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