r9199: fold clsql-base and clsql-base-sys into clsql-base
[clsql.git] / base / basic-sql.lisp
index 61a932e5ad02df135fc3e6c0687c4c6c962ca0d8..eaccc03315e1770b8139e0be2a10cbd27bd7a757 100644 (file)
@@ -12,7 +12,7 @@
 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
-(in-package #:clsql-base-sys)
+(in-package #:clsql-base)
 
 ;;; Query
 
@@ -30,16 +30,17 @@ one result per row. Returns a list of lists of values of the result of
 that expression and a list of field names selected in sql-exp."))
 
 (defmethod query ((query-expression string) &key (database *default-database*)
-                  (result-types nil) (flatp nil))
-  (record-sql-command query-expression database)
-  (let* ((res (database-query query-expression database result-types))
-         (res (if (and flatp (= (length
-                                 (slot-value query-expression 'selections))
-                                1))
-                  (mapcar #'car res)
-                  res)))
-    (record-sql-result res database)
-    res))
+                  (result-types :auto) (flatp nil) (field-names t))
+  (record-sql-action query-expression :query database)
+  (multiple-value-bind (rows names) (database-query query-expression database result-types
+                                                    field-names)
+    (let ((result (if (and flatp (= 1 (length (car rows))))
+                      (mapcar #'car rows)
+                    rows)))
+      (record-sql-action result :result database)
+      (if field-names
+         (values result names)
+       result))))
 
 ;;; Execute
 
@@ -54,12 +55,11 @@ pair."))
 
 (defmethod execute-command ((sql-expression string)
                             &key (database *default-database*))
-  (record-sql-command sql-expression database)
+  (record-sql-action sql-expression :command database)
   (let ((res (database-execute-command sql-expression database)))
-    (record-sql-result res database))
+    (record-sql-action res :result database))
   (values))
 
-
 (defmacro do-query (((&rest args) query-expression
                     &key (database '*default-database*) (result-types nil))
                    &body body)