X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Fdb-interface.lisp;h=5cdb719f3ea00cdc4915701fff2abec177aaff49;hp=ada842d69d4efd2cffb0a9831fb2ef95e1691bea;hb=6bee16be3f891067ae8fe1a67e13b39e8ee72598;hpb=e567409d9fff3f7231c2a0bb69b345e19de2b246 diff --git a/sql/db-interface.lisp b/sql/db-interface.lisp index ada842d..5cdb719 100644 --- a/sql/db-interface.lisp +++ b/sql/db-interface.lisp @@ -9,9 +9,7 @@ ;;;; onShoreD to support UncommonSQL front-end ;;;; Date Started: Feb 2002 ;;;; -;;;; $Id$ -;;;; -;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg +;;;; This file, part of CLSQL, is Copyright (c) 2002-2010 by Kevin M. Rosenberg ;;;; and Copyright (c) 1999-2001 by Pierre R. Mai, and onShoreD ;;;; ;;;; CLSQL users are granted the rights to distribute and use this software @@ -129,7 +127,7 @@ returns nil when result-set is finished.")) (defgeneric database-probe (connection-spec type) (:method (spec type) (declare (ignore spec)) - (warn "database-proe not support for database-type ~A." type)) + (warn "database-probe not support for database-type ~A." type)) (:documentation "Probes for the existence of a database, returns T if database found or NIL if not found. May signal an error if unable to communicate with database server.")) @@ -141,17 +139,14 @@ if not found. May signal an error if unable to communicate with database server. (:documentation "Lists all databases found for TYPE. May signal an error if unable to communicate with database server.")) -(defgeneric database-destroy (connection-spec database) - (:documentation "Destroys (drops) a database.")) - (defgeneric database-truncate (database) (:method ((database t)) (signal-no-database-error database)) (:documentation "Remove all data from database.")) -(defgeneric database-destory (connection-spec type) +(defgeneric database-destroy (connection-spec type) (:documentation - "Destroys a database, returns T if successfull or signals an error + "Destroys (drops) a database, returns T if successfull or signals an error if unable to destory.")) (defgeneric database-create-sequence (name database) @@ -172,6 +167,12 @@ if unable to destory.")) (defgeneric database-sequence-last (name database) (:documentation "Select the last value in sequence NAME in DATABASE.")) +(defgeneric database-last-autoincrement-id (database table column) + (:documentation "Many databases have the notion of an auto-increment + id; i.e. a sequence implicitly on a table. This function should + return that ID." )) + + (defgeneric database-start-transaction (database) (:documentation "Start a transaction in DATABASE.") (:method ((database t)) @@ -377,6 +378,12 @@ of TYPE_NAME (keyword) PRECISION SCALE NULLABLE.") t) (:documentation "T [default] if database-type supports EXCEPT.")) +(defgeneric db-type-has-auto-increment? (db-type) + (:method (db-type) + (declare (ignore db-type) + nil)) + (:documentation "NIL [default] if database-type supports auto-incrementing columns.")) + ;;; Large objects support (Marc Battyani) (defgeneric database-create-large-object (database) @@ -424,6 +431,20 @@ of TYPE_NAME (keyword) PRECISION SCALE NULLABLE.") nil) (:documentation "Free the resources of a prepared statement.")) +(defgeneric database-acquire-from-conn-pool (database) + (:documentation "Acquire a database connection from the pool. This +is a chance to test the connection for validity before returning it to +the user. If this function returns NIL or throws an error that +database connection is considered bad and we make a new one. + +Database objects have a chance to specialize, otherwise the default +method uses the database-underlying-type and tries to do something +appropriate.")) + +(defgeneric database-release-to-conn-pool (database) + (:documentation "Chance for the database to cleanup before it is + returned to the connection pool.")) + ;; Checks for closed database (defmethod database-disconnect :before ((database database))