removed a bit of debugging code from database-list-tables
[clsql.git] / db-postgresql-socket3 / sql.lisp
index 8428d481f08a3d0570d652d9b17d00a1089c7c57..7f545c80ee63eb4124ed9eb07ff9a53199286e8d 100644 (file)
   (cl-postgres:close-database (database-connection database))
   t)
 
+(defmethod clsql-sys::release-to-conn-pool :before ((conn postgresql-socket3-database))
+  ;; This resets the connection to "New" state
+  (database-execute-command "DISCARD ALL;" conn))
+
 (defvar *include-field-names* nil)
 
 
     ((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
 
 
 (defmethod read-sql-value (val (type (eql 'generalized-boolean)) (database postgresql-socket3-database) db-type)
   (declare (ignore database db-type))
-  val)
\ No newline at end of file
+  val)
+
+(defmethod clsql-sys::%table-exists-p (name (database postgresql-socket3-database) &key owner )
+  (unless database (setf database *default-database*))
+  (when (clsql:query (command-object "SELECT 1 FROM information_schema.tables WHERE table_name=$1 and ($2::text IS NULL or table_schema = $2::text)"
+                                    (list name owner))
+                    :flatp T
+                    :database database)
+    T))
+
+(defmethod database-list-tables ((database postgresql-socket3-database) &key owner)
+  (clsql:query (command-object "
+SELECT table_name FROM information_schema.tables
+                                WHERE ($1::Text IS NULL or table_schema = $1::text)"
+                              (list (or owner :null)))
+              :flatp T
+              :database database))