made returning column names work like it is supposed to in the
authorRuss Tyndall <russ@acceleration.net>
Wed, 7 Oct 2009 21:12:40 +0000 (17:12 -0400)
committerRuss Tyndall <russ@acceleration.net>
Wed, 7 Oct 2009 21:12:46 +0000 (17:12 -0400)
postgresql-socket3 backend

db-postgresql-socket3/sql.lisp

index ad24ee6edc08621ab8b7ecc752c04dda9a404494..11261624640a71830ea6484f640d10811647bc3d 100644 (file)
                 nil
                 (funcall (cl-postgres::field-interpreter cl-postgres::field)
                          stream cl-postgres::size)))))
-    (values
-      (loop :while (cl-postgres:next-row)
-           :collect (loop :for field :across fields
-                          :collect (cl-postgres:next-field field)))
-      (when *include-field-names*
-       (loop :for field :across fields
-             :collect (cl-postgres:field-name field))))))
+    (let ((results (loop :while (cl-postgres:next-row)
+                        :collect (loop :for field :across fields
+                                       :collect (cl-postgres:next-field field))))
+         (col-names (when *include-field-names*
+                      (loop :for field :across fields
+                            :collect (cl-postgres:field-name field)))))
+      ;;multiple return values were not working here
+      (list results col-names))))
 
 (defmethod database-query ((expression string) (database postgresql-socket3-database) result-types field-names)
   (let ((connection (database-connection database))
        (cl-postgres:*sql-readtable* *sqlreader*))
     (with-postgresql-handlers (database expression)
       (let ((*include-field-names* field-names))
-       (cl-postgres:exec-query connection expression #'clsql-default-row-reader))
+       (apply #'values (cl-postgres:exec-query connection expression #'clsql-default-row-reader)))
       )))
 
 (defmethod database-execute-command