made command-object work with execute-command calls (in the pg-socket3 backend)
authorRuss Tyndall <russ@acceleration.net>
Fri, 9 Oct 2009 19:34:48 +0000 (15:34 -0400)
committerRuss Tyndall <russ@acceleration.net>
Fri, 9 Oct 2009 19:34:48 +0000 (15:34 -0400)
db-postgresql-socket3/sql.lisp

index 9b73b0d6130cb8dc22cd69eaa3d3ccdbeff7a21d..e2515005cb5cda828bd910484cb89d7d94e8dba2 100644 (file)
     ((expression string) (database postgresql-socket3-database))
   (let ((connection (database-connection database)))
     (with-postgresql-handlers (database expression)
-      (cl-postgres:exec-query connection expression))))
+      ;; return row count?
+      (second (multiple-value-list (cl-postgres:exec-query connection expression))))))
+
+(defmethod execute-command ((obj command-object)
+                            &key (database *default-database*))
+  (clsql-sys::record-sql-command (expression obj) database)
+  (let ((res (database-execute-command obj database)))
+    (clsql-sys::record-sql-result res database)
+    ;; return row count?
+    res))
+
+(defmethod database-execute-command
+    ((obj command-object) (database postgresql-socket3-database))
+  (let ((connection (database-connection database)))
+    (with-postgresql-handlers (database obj)
+      (unless (has-been-prepared obj)
+       (cl-postgres:prepare-query connection (prepared-name obj) (expression obj))
+       (setf (has-been-prepared obj) T))
+      (second (multiple-value-list (cl-postgres:exec-prepared connection (prepared-name obj) (parameters obj)))))))
 
 ;;;; Cursoring interface