+08 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+ * Version 2.3.4 released
+ * db-mysql/mysql-sql.lisp: Fix array dereferencing
+ * classic-tests/tests.lisp: Fix package name of
+ number-to-sql-string.
+ * clsql.asd/clsql-tests.asd: Add support for asdf:test-op
+ * Finish renaming of :types keyword to :result-types for
+ greater CommonSQL compatibility, including documentation
+ * sql/basic-cmds.lisp: Remove obsolete file
+ * All tests for clsql-classic now finish correctly on
+ Allegro, Lispworks, CMUCL, SBCL
+
08 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
* Version 2.3.3 released
* Fixes for sequences on mysql and sqlite [Marcus Pearce]
(defmacro do-query (((&rest args) query-expression
- &key (database '*default-database*) (types nil))
+ &key (database '*default-database*) (result-types nil))
&body body)
"Repeatedly executes BODY within a binding of ARGS on the attributes
of each record resulting from QUERY. The return value is determined by
`(let ((,db ,database))
(multiple-value-bind (,result-set ,columns)
(database-query-result-set ,query-expression ,db
- :full-set nil :types ,types)
+ :full-set nil :result-types ,result-types)
(when ,result-set
(unwind-protect
(do ((,row (make-list ,columns)))
(defun map-query (output-type-spec function query-expression
&key (database *default-database*)
- (types nil))
+ (result-types nil))
"Map the function over all tuples that are returned by the query in
query-expression. The results of the function are collected as
specified in output-type-spec and returned like in MAP."
`(if (atom ,type) ,type (car ,type))))
(case (type-specifier-atom output-type-spec)
((nil)
- (map-query-for-effect function query-expression database types))
+ (map-query-for-effect function query-expression database result-types))
(list
- (map-query-to-list function query-expression database types))
+ (map-query-to-list function query-expression database result-types))
((simple-vector simple-string vector string array simple-array
bit-vector simple-bit-vector base-string
simple-base-string)
- (map-query-to-simple output-type-spec function query-expression database types))
+ (map-query-to-simple output-type-spec function query-expression database result-types))
(t
(funcall #'map-query (cmucl-compat:result-type-or-lose output-type-spec t)
- function query-expression :database database :types types)))))
+ function query-expression :database database :result-types result-types)))))
-(defun map-query-for-effect (function query-expression database types)
+(defun map-query-for-effect (function query-expression database result-types)
(multiple-value-bind (result-set columns)
(database-query-result-set query-expression database :full-set nil
- :types types)
+ :result-types result-types)
(when result-set
(unwind-protect
(do ((row (make-list columns)))
(apply function row))
(database-dump-result-set result-set database)))))
-(defun map-query-to-list (function query-expression database types)
+(defun map-query-to-list (function query-expression database result-types)
(multiple-value-bind (result-set columns)
(database-query-result-set query-expression database :full-set nil
- :types types)
+ :result-types result-types)
(when result-set
(unwind-protect
(let ((result (list nil)))
(database-dump-result-set result-set database)))))
-(defun map-query-to-simple (output-type-spec function query-expression database types)
+(defun map-query-to-simple (output-type-spec function query-expression database result-types)
(multiple-value-bind (result-set columns rows)
(database-query-result-set query-expression database :full-set t
- :types types)
+ :result-types result-types)
(when result-set
(unwind-protect
(if rows
(signal-nodb-error database))
(:documentation "Internal generic implementation of disconnect."))
-(defgeneric database-query (query-expression database types)
- (:method (query-expression (database closed-database) types)
- (declare (ignore query-expression types))
+(defgeneric database-query (query-expression database result-types)
+ (:method (query-expression (database closed-database) result-types)
+ (declare (ignore query-expression result-types))
(signal-closed-database-error database))
- (:method (query-expression (database t) types)
- (declare (ignore query-expression types))
+ (:method (query-expression (database t) result-types)
+ (declare (ignore query-expression result-types))
(signal-nodb-error database))
(:documentation "Internal generic implementation of query."))
;;; Mapping and iteration
(defgeneric database-query-result-set
- (query-expression database &key full-set types)
- (:method (query-expression (database closed-database) &key full-set types)
- (declare (ignore query-expression full-set types))
+ (query-expression database &key full-set result-types)
+ (:method (query-expression (database closed-database) &key full-set result-types)
+ (declare (ignore query-expression full-set result-types))
(signal-closed-database-error database)
(values nil nil nil))
- (:method (query-expression (database t) &key full-set types)
- (declare (ignore query-expression full-set types))
+ (:method (query-expression (database t) &key full-set result-types)
+ (declare (ignore query-expression full-set result-types))
(signal-nodb-error database)
(values nil nil nil))
(:documentation
(unwind-protect
(progn
(create-test-table db)
- (dolist (row (query "select * from test_clsql" :database db :types :auto))
+ (dolist (row (query "select * from test_clsql" :database db :result-types :auto))
(test-table-row row :auto type))
- (dolist (row (query "select * from test_clsql" :database db :types nil))
+ (dolist (row (query "select * from test_clsql" :database db :result-types nil))
(test-table-row row nil type))
(loop for row across (map-query 'vector #'list "select * from test_clsql"
- :database db :types :auto)
+ :database db :result-types :auto)
do (test-table-row row :auto type))
(loop for row across (map-query 'vector #'list "select * from test_clsql"
- :database db :types nil)
+ :database db :result-types nil)
do (test-table-row row nil type))
(loop for row in (map-query 'list #'list "select * from test_clsql"
- :database db :types nil)
+ :database db :result-types nil)
do (test-table-row row nil type))
(loop for row in (map-query 'list #'list "select * from test_clsql"
- :database db :types :auto)
+ :database db :result-types :auto)
do (test-table-row row :auto type))
(test (map-query nil #'list "select * from test_clsql"
- :database db :types :auto)
+ :database db :result-types :auto)
nil
:fail-info "Expected NIL result from map-query nil")
(do-query ((int float bigint str) "select * from test_clsql")
(test-table-row (list int float bigint str) nil type))
- (do-query ((int float bigint str) "select * from test_clsql" :types :auto)
+ (do-query ((int float bigint str) "select * from test_clsql" :result-types :auto)
(test-table-row (list int float bigint str) :auto type))
(drop-test-table db)
)
i (clsql:number-to-sql-string (sqrt i))
(clsql:number-to-sql-string (sqrt i)))
db))
- (let ((res (clsql-mysql::database-query-result-set "select * from test_clsql" db :full-set t :types nil)))
+ (let ((res (clsql-mysql::database-query-result-set "select * from test_clsql" db :full-set t :result-types nil)))
(setq result (mysql:mysql-num-rows
(clsql-mysql::mysql-result-set-res-ptr res)))
(clsql-mysql::database-dump-result-set res db))
(unwind-protect
(progn
(create-test-table db)
- (dolist (row (query "select * from test_clsql" :database db :types :auto))
+ (dolist (row (query "select * from test_clsql" :database db :result-types :auto))
(test-table-row row :auto type))
- (dolist (row (query "select * from test_clsql" :database db :types nil))
+ (dolist (row (query "select * from test_clsql" :database db :result-types nil))
(test-table-row row nil type))
(loop for row across (map-query 'vector #'list "select * from test_clsql"
- :database db :types :auto)
+ :database db :result-types :auto)
do (test-table-row row :auto type))
(loop for row across (map-query 'vector #'list "select * from test_clsql"
- :database db :types nil)
+ :database db :result-types nil)
do (test-table-row row nil type))
(loop for row in (map-query 'list #'list "select * from test_clsql"
- :database db :types nil)
+ :database db :result-types nil)
do (test-table-row row nil type))
(loop for row in (map-query 'list #'list "select * from test_clsql"
- :database db :types :auto)
+ :database db :result-types :auto)
do (test-table-row row :auto type))
(test (map-query nil #'list "select * from test_clsql"
- :database db :types :auto)
+ :database db :result-types :auto)
nil
:fail-info "Expected NIL result from map-query nil")
(do-query ((int float bigint str) "select * from test_clsql")
(test-table-row (list int float bigint str) nil type))
- (do-query ((int float bigint str) "select * from test_clsql" :types :auto)
+ (do-query ((int float bigint str) "select * from test_clsql" :result-types :auto)
(test-table-row (list int float bigint str) :auto type))
(drop-test-table db)
)
(unwind-protect
(progn
(create-test-table db)
- (dolist (row (query "select * from test_clsql" :database db :types :auto))
+ (dolist (row (query "select * from test_clsql" :database db :result-types :auto))
(test-table-row row :auto type))
- (dolist (row (query "select * from test_clsql" :database db :types nil))
+ (dolist (row (query "select * from test_clsql" :database db :result-types nil))
(test-table-row row nil type))
(loop for row across (map-query 'vector #'list "select * from test_clsql"
- :database db :types :auto)
+ :database db :result-types :auto)
do (test-table-row row :auto type))
(loop for row across (map-query 'vector #'list "select * from test_clsql"
- :database db :types nil)
+ :database db :result-types nil)
do (test-table-row row nil type))
(loop for row in (map-query 'list #'list "select * from test_clsql"
- :database db :types nil)
+ :database db :result-types nil)
do (test-table-row row nil type))
(loop for row in (map-query 'list #'list "select * from test_clsql"
- :database db :types :auto)
+ :database db :result-types :auto)
do (test-table-row row :auto type))
(test (map-query nil #'list "select * from test_clsql"
- :database db :types :auto)
+ :database db :result-types :auto)
nil
:fail-info "Expected NIL result from map-query nil")
(do-query ((int float bigint str) "select * from test_clsql")
(test-table-row (list int float bigint str) nil type))
- (do-query ((int float bigint str) "select * from test_clsql" :types :auto)
+ (do-query ((int float bigint str) "select * from test_clsql" :result-types :auto)
(test-table-row (list int float bigint str) :auto type))
(drop-test-table db)
)
(unwind-protect
(progn
(create-test-table db)
- (dolist (row (query "select * from test_clsql" :database db :types nil))
+ (dolist (row (query "select * from test_clsql" :database db :result-types nil))
(test-table-row row nil type))
(loop for row across (map-query 'vector #'list "select * from test_clsql"
- :database db :types nil)
+ :database db :result-types nil)
do (test-table-row row nil type))
(loop for row in (map-query 'list #'list "select * from test_clsql"
- :database db :types nil)
+ :database db :result-types nil)
do (test-table-row row nil type))
(do-query ((int float bigint str) "select * from test_clsql")
(dotimes (i 10)
(clsql-mysql::database-execute-command
(format nil "INSERT INTO test_clsql VALUES (~d,~d,'~a')"
- i (clsql:number-to-sql-string (sqrt i))
- (clsql:number-to-sql-string (sqrt i)))
+ i (clsql-base:number-to-sql-string (sqrt i))
+ (clsql-base:number-to-sql-string (sqrt i)))
db))
- (let ((res (clsql-mysql::database-query-result-set "select * from test_clsql" db :full-set t :types nil)))
+ (let ((res (clsql-mysql::database-query-result-set "select * from test_clsql" db :full-set t :result-types nil)))
(test (mysql:mysql-num-rows
(clsql-mysql::mysql-result-set-res-ptr res))
10
(clsql:execute-command
(format nil "INSERT INTO test_clsql VALUES (~a,~a,~a,'~a')"
test-int
- (number-to-sql-string test-flt)
+ (clsql-base:number-to-sql-string test-flt)
(transform-bigint-1 test-int)
- (number-to-sql-string test-flt)
+ (clsql-base:number-to-sql-string test-flt)
)
:database db))))
(clsql:execute-command "DROP TABLE test_clsql" :database db))
(defun run-tests ()
- (let ((specs (read-specs)))
- (unless specs
- (warn "Not running test because test configuration file is missing")
- (return-from run-tests :skipped))
- (with-tests (:name "CLSQL")
- (mysql-low-level specs)
- (mysql-table-test specs)
- (pgsql-table-test specs)
- (pgsql-socket-table-test specs)
- (aodbc-table-test specs)
- (sqlite-table-test specs)
+ (let ((specs (read-specs)))
+ (unless specs
+ (warn "Not running test because test configuration file is missing")
+ (return-from run-tests :skipped))
+ (with-tests (:name "CLSQL")
+ (mysql-low-level specs)
+ (mysql-table-test specs)
+ (pgsql-table-test specs)
+ (pgsql-socket-table-test specs)
+ (aodbc-table-test specs)
+ (sqlite-table-test specs)
))
- t)
-
+ t)
(:file "functional" :depends-on ("sql"))))))
#+(or allegro lispworks cmu sbcl openmcl mcl scl)
-(defmethod perform ((o test-op) (c (eql (find-system :clsql-classic))))
- (oos 'load-op 'clsql-classic-tests)
- (oos 'test-op 'clsql-classic-tests))
+(defmethod perform ((o test-op) (c (eql (find-system 'clsql-classic))))
+ (operate 'load-op 'clsql-classic-tests)
+ (operate 'test-op 'clsql-classic-tests))
;;;; *************************************************************************
;;;; FILE IDENTIFICATION
;;;;
-;;;; File: clsql-tests.asd
-;;;; Author: Marcus Pearce <m.t.pearce@city.ac.uk>
-;;;; Created: 30/03/2004
-;;;; Updated: <04/04/2004 12:34:41 marcusp>
+;;;; File: clsql-tests.asd
+;;;; Authors: Marcus Pearce <m.t.pearce@city.ac.uk> and Kevin Rosenberg
+;;;; Created: 30/03/2004
+;;;; Updated: $Id$
;;;;
;;;; $Id$
;;;;
;;;; ======================================================================
(in-package #:cl-user)
+(defpackage #:clsql-classic-tests-system (:use #:asdf #:cl))
+(in-package #:clsql-classic-tests-system)
-(asdf:defsystem clsql-tests
+(defsystem clsql-tests
:name "CLSQL Tests"
:author ""
:maintainer ""
(:file "test-ooddl")
(:file "test-oodml")
(:file "test-syntax")))))
+
+(defmethod perform ((o test-op) (c (eql (find-system 'clsql-tests))))
+ (error "Automated performing of test-op is not yet supported.")
+ #+ignore
+ (unless (funcall (intern (symbol-name '#:run-tests)
+ (find-package '#:clsql-tests)))
+ (error "test-op failed")))
;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
;;;; *************************************************************************
-(asdf:defsystem #:clsql
+(in-package #:cl-user)
+(defpackage #:clsql-system (:use #:asdf #:cl))
+(in-package #:clsql-system)
+
+(defsystem #:clsql
:name "CLSQL"
:author ""
:maintainer ""
(:file "objects" :depends-on ("metaclasses")))
:depends-on (:functional))))))
+
+(defmethod perform ((o test-op) (c (eql (find-system 'clsql))))
+ (operate 'load-op 'clsql-tests)
+ (operate 'test-op 'clsql-tests))
;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
;;;; *************************************************************************
-(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))
-(in-package :clsql-aodbc)
-
+(in-package #:clsql-aodbc)
;; interface foreign library loading routines
(defmethod clsql-base-sys:database-type-library-loaded ((database-type (eql :aodbc)))
(setf (database-aodbc-conn database) nil)
t)
-(defmethod database-query (query-expression (database aodbc-database) types)
+(defmethod database-query (query-expression (database aodbc-database) result-types)
#+aodbc-v2
(handler-case
(dbi:sql query-expression :db (database-aodbc-conn database)
- :types types)
+ :types result-types)
(error ()
(error 'clsql-sql-error
:database database
(defmethod database-query-result-set ((query-expression string)
(database aodbc-database)
- &key full-set types)
+ &key full-set result-types)
#+aodbc-v2
(handler-case
(multiple-value-bind (query column-names)
:row-count nil
:column-names t
:query t
- :types types
+ :types result-types
)
(values
(make-aodbc-result-set :query query :full-set full-set
- :types types)
+ :types result-types)
(length column-names)
nil ;; not able to return number of rows with aodbc
))
(defmethod database-query (query-expression (database mysql-database)
- types)
+ result-types)
(declare (optimize (speed 3) (safety 0) (debug 0) (space 0)))
(let ((mysql-ptr (database-mysql-ptr database)))
(uffi:with-cstring (query-native query-expression)
(unwind-protect
(let ((num-fields (mysql-num-fields res-ptr)))
(declare (fixnum num-fields))
- (setq types (canonicalize-types
- types num-fields
+ (setq result-types (canonicalize-types
+ result-types num-fields
res-ptr))
(loop for row = (mysql-fetch-row res-ptr)
for lengths = (mysql-fetch-lengths res-ptr)
(uffi:deref-array row '(:array
(* :unsigned-char))
i)
- types i
+ result-types i
(uffi:deref-array lengths '(:array :unsigned-long)
i))))))
(mysql-free-result res-ptr))
#+ignore
(defmethod database-query (query-expression (database mysql-database)
- types)
+ result-types)
(declare (optimize (speed 3) (safety 0) (debug 0) (space 0)))
(let ((mysql-ptr (database-mysql-ptr database)))
(uffi:with-cstring (query-native query-expression)
(unwind-protect
(let ((num-fields (mysql-num-fields res-ptr)))
(declare (fixnum num-fields))
- (setq types (canonicalize-types
- types num-fields
+ (setq result-types (canonicalize-types
+ result-types num-fields
res-ptr))
(loop for row = (mysql-fetch-row res-ptr)
until (uffi:null-pointer-p row)
(uffi:deref-array row '(:array
(* :unsigned-char))
i)
- types i))))
+ result-types i))))
(mysql-free-result res-ptr))
(error 'clsql-sql-error
:database database
(defmethod database-query-result-set ((query-expression string)
(database mysql-database)
- &key full-set types)
+ &key full-set result-types)
(uffi:with-cstring (query-native query-expression)
(let ((mysql-ptr (database-mysql-ptr database)))
(declare (type mysql-mysql-ptr-def mysql-ptr))
:full-set full-set
:types
(canonicalize-types
- types num-fields
+ result-types num-fields
res-ptr))))
(if full-set
(values result-set
(uffi:deref-array row '(:array (* :unsigned-char)) i)
types
i
- (uffi:deref-array lengths :unsigned-long i))))
+ (uffi:deref-array lengths '(:array :unsigned-long) i))))
list)))
;;; -*- Mode: Lisp -*-
;;; $Id$
-(in-package :clsql-oracle)
+(in-package #:clsql-oracle)
(defconstant +oci-default+ #x00) ; default value for parameters and attributes
(defconstant +oci-threaded+ #x01) ; application is in threaded environment
;;;
;;; derived from postgresql.lisp
-(in-package :clsql-oracle)
+(in-package #:clsql-oracle)
(defmethod database-initialize-database-type
((database-type (eql :oracle)))
;;; The present content of this file is orented specifically towards
;;; Oracle 8.0.5.1 under Linux, linking against libclntsh.so
-(in-package :clsql-oracle)
+(in-package #:clsql-oracle)
;;
;;;; - Added field type processing
-(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))
-(in-package :postgresql-socket)
+(in-package #:postgresql-socket)
(uffi:def-enum pgsql-ftype
((:bytea 17)
:buffering :none
:timeout *postgresql-server-socket-timeout*))
+
+#+sbcl
+(defun open-postgresql-socket-stream (host port)
+ (sb-sys:make-fd-stream
+ (open-postgresql-socket host port)
+ :input t :output t :element-type '(unsigned-byte 8)
+ :buffering :none
+ :timeout *postgresql-server-socket-timeout*))
+
#+allegro
(defun open-postgresql-socket-stream (host port)
(etypecase host
(mp:with-timeout (*postgresql-server-socket-timeout* (error "connect failed"))
(socket:make-socket :type :stream :address-family :internet
:remote-port port :remote-host host
- :connect :active :nodelay t))))
- ))
+ :connect :active :nodelay t))))))
#+lispworks
(defun open-postgresql-socket-stream (host port)
(error 'postgresql-fatal-error :connection connection
:message "Received garbled message from backend")))))))
-(defun run-query (connection query &optional (types nil))
+(defun run-query (connection query &optional (result-types nil))
(start-query-execution connection query)
(multiple-value-bind (status cursor)
(wait-for-query-results connection)
(assert (eq status :cursor))
- (loop for row = (read-cursor-row cursor types)
+ (loop for row = (read-cursor-row cursor result-types)
while row
collect row
finally
;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
;;;; *************************************************************************
-(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))
-(in-package :cl-user)
+(in-package #:cl-user)
(defpackage :clsql-postgresql-socket
- (:use :common-lisp :clsql-base-sys :postgresql-socket)
+ (:use #:common-lisp #:clsql-base-sys #:postgresql-socket)
(:export #:postgresql-socket-database)
(:documentation "This is the CLSQL socket interface to PostgreSQL."))
-(in-package :clsql-postgresql-socket)
+(in-package #:clsql-postgresql-socket)
;; interface foreign library loading routines
(close-postgresql-connection (database-connection database))
t)
-(defmethod database-query (expression (database postgresql-socket-database) types)
+(defmethod database-query (expression (database postgresql-socket-database) result-types)
(let ((connection (database-connection database)))
(with-postgresql-handlers (database expression)
(start-query-execution connection expression)
:expression expression
:errno 'missing-result
:error "Didn't receive result cursor for query."))
- (setq types (canonicalize-types types cursor))
- (loop for row = (read-cursor-row cursor types)
+ (setq result-types (canonicalize-types result-types cursor))
+ (loop for row = (read-cursor-row cursor result-types)
while row
collect row
finally
(defmethod database-query-result-set ((expression string)
(database postgresql-socket-database)
- &key full-set types)
+ &key full-set result-types)
(declare (ignore full-set))
(let ((connection (database-connection database)))
(with-postgresql-handlers (database expression)
(values (make-postgresql-socket-result-set
:done nil
:cursor cursor
- :types (canonicalize-types types cursor))
+ :types (canonicalize-types result-types cursor))
(length (postgresql-cursor-fields cursor)))))))
(defmethod database-dump-result-set (result-set
;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
;;;; *************************************************************************
-(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))
-(in-package :postgresql)
+(in-package #:postgresql)
;;;; This file implements as little of the FFI bindings to the
;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
;;;; *************************************************************************
-(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))
-(in-package :postgresql)
+(in-package #:postgresql)
(defvar *postgresql-supporting-libraries* '("crypt" "c")
(setf (database-conn-ptr database) nil)
t)
-(defmethod database-query (query-expression (database postgresql-database) types)
+(defmethod database-query (query-expression (database postgresql-database) result-types)
(let ((conn-ptr (database-conn-ptr database)))
(declare (type pgsql-conn-def conn-ptr))
(uffi:with-cstring (query-native query-expression)
nil)
(#.pgsql-exec-status-type#tuples-ok
(let ((num-fields (PQnfields result)))
- (setq types
- (canonicalize-types types num-fields
+ (setq result-types
+ (canonicalize-types result-types num-fields
result))
(loop for tuple-index from 0 below (PQntuples result)
collect
(if (zerop (PQgetisnull result tuple-index i))
(convert-raw-field
(PQgetvalue result tuple-index i)
- types i)
+ result-types i)
nil)))))
(t
(error 'clsql-sql-error
(defmethod database-query-result-set ((query-expression string)
(database postgresql-database)
- &key full-set types)
+ &key full-set result-types)
(let ((conn-ptr (database-conn-ptr database)))
(declare (type pgsql-conn-def conn-ptr))
(uffi:with-cstring (query-native query-expression)
:num-fields (PQnfields result)
:num-tuples (PQntuples result)
:types (canonicalize-types
- types
+ result-types
(PQnfields result)
result))))
(if full-set
;; $Id$
-(in-package :cl-user)
+(in-package #:cl-user)
-(defpackage :sqlite
- (:use :common-lisp :ffi)
+(defpackage #:sqlite
+ (:use #:common-lisp #:ffi)
(:export
;;; Conditions
#:sqlite-error
;;;; Mode: lisp
;;;; Syntax: ANSI-Common-Lisp
;;;; Package: sqlite
-;;;; End:
\ No newline at end of file
+;;;; End:
:error (sqlite:sqlite-error-message err))))
t)
-(defmethod database-query (query-expression (database sqlite-database) types)
- (declare (ignore types)) ; SQLite is typeless!
+(defmethod database-query (query-expression (database sqlite-database) result-types)
+ (declare (ignore result-types)) ; SQLite is typeless!
(handler-case
(multiple-value-bind (data row-n col-n)
(sqlite:sqlite-get-table (sqlite-db database) query-expression)
(n-col 0 :type fixnum))
(defmethod database-query-result-set
- ((query-expression string) (database sqlite-database) &key full-set types)
- (declare (ignore full-set types))
+ ((query-expression string) (database sqlite-database) &key full-set result-types)
+ (declare (ignore full-set result-types))
(handler-case
(let* ((vm (sqlite:sqlite-compile (sqlite-db database)
query-expression))
+cl-sql (2.3.4-1) unstable; urgency=low
+
+ * New upstream
+
+ -- Kevin M. Rosenberg <kmr@debian.org> Thu, 8 Apr 2004 15:17:20 -0600
+
cl-sql (2.3.3-1) unstable; urgency=low
* New upstream
</refnamediv>
<refsect1>
<title>Syntax</title>
- <synopsis><function>query</function> <replaceable>query-expression</replaceable> &key <replaceable>database</replaceable> <replaceable>types</replaceable> => <returnvalue>result</returnvalue></synopsis>
+ <synopsis><function>query</function> <replaceable>query-expression</replaceable> &key <replaceable>database</replaceable> <replaceable>result-types</replaceable> => <returnvalue>result</returnvalue></synopsis>
</refsect1>
<refsect1>
<title>Arguments and Values</title>
</listitem>
</varlistentry>
<varlistentry>
- <term><parameter>types</parameter></term>
+ <term><parameter>result-types</parameter></term>
<listitem>
<para>A
<glossterm linkend="gloss-field-types">field type
- specififier</glossterm>. The default is &nil;.
+ specifier</glossterm>. The default is &nil;.
</para>
<para>
The purpose of this argument is cause &clsql; to
</refnamediv>
<refsect1>
<title>Syntax</title>
- <synopsis><function>map-query</function> <replaceable>output-type-spec</replaceable> <replaceable>function</replaceable> <replaceable>query-expression</replaceable> &key <replaceable>database</replaceable> <replaceable>types</replaceable> => <returnvalue>result</returnvalue></synopsis>
+ <synopsis><function>map-query</function> <replaceable>output-type-spec</replaceable> <replaceable>function</replaceable> <replaceable>query-expression</replaceable> &key <replaceable>database</replaceable> <replaceable>result-types</replaceable> => <returnvalue>result</returnvalue></synopsis>
</refsect1>
<refsect1>
<title>Arguments and Values</title>
</listitem>
</varlistentry>
<varlistentry>
- <term><parameter>types</parameter></term>
+ <term><parameter>result-types</parameter></term>
<listitem>
<para>
- A <glossterm linkend="gloss-field-types">field type specififier</glossterm>.
+ A <glossterm linkend="gloss-field-types">field type specifier</glossterm>.
The default is &nil;. See <link
linkend="query"><function>query</function></link>
for the semantics of this argument.
</refnamediv>
<refsect1>
<title>Syntax</title>
- <synopsis><function>do-query</function> ((&rest <replaceable>args</replaceable>) <replaceable>query-expression</replaceable> &key <replaceable>database</replaceable> <replaceable>types</replaceable>) &body <replaceable>body</replaceable> => <returnvalue>nil</returnvalue></synopsis>
+ <synopsis><function>do-query</function> ((&rest <replaceable>args</replaceable>) <replaceable>query-expression</replaceable> &key <replaceable>database</replaceable> <replaceable>result-types</replaceable>) &body <replaceable>body</replaceable> => <returnvalue>nil</returnvalue></synopsis>
</refsect1>
<refsect1>
<title>Arguments and Values</title>
</listitem>
</varlistentry>
<varlistentry>
- <term><parameter>types</parameter></term>
+ <term><parameter>result-types</parameter></term>
<listitem>
<para>
- A <glossterm linkend="gloss-field-types">field type specififier</glossterm>.
+ A <glossterm linkend="gloss-field-types">field type specifier</glossterm>.
The default is &nil;. See <link
linkend="query"><function>query</function></link>
for the semantics of this argument.
+++ /dev/null
-
-(defmethod database-query (query-expression (database closed-database) types)
- (declare (ignore query-expression types))
- (signal-closed-database-error database))
-
-(defmethod database-query (query-expression (database t) types)
- (declare (ignore query-expression types))
- (signal-no-database-error))
-
-(defmethod database-execute-command (sql-expression (database closed-database))
- (declare (ignore sql-expression))
- (signal-closed-database-error database))
-
-(defmethod database-execute-command (sql-expression (database t))
- (declare (ignore sql-expression))
- (signal-no-database-error))
-
-(defgeneric execute-command (expression &key database)
- (:documentation
- "Executes the SQL command specified by EXPRESSION for the database
-specified by DATABASE, which has a default value of
-*DEFAULT-DATABASE*. The argument EXPRESSION may be any SQL statement
-other than a query. To run a stored procedure, pass an appropriate
-string. The call to the procedure needs to be wrapped in a BEGIN END
-pair."))
-
-(defmethod execute-command ((sql-expression string)
- &key (database *default-database*))
- (record-sql-command sql-expression database)
- (let ((res (database-execute-command sql-expression database)))
- (record-sql-result res database))
- (values))
(defmethod database-query-result-set ((expr %sql-expression) database
- &key full-set types)
+ &key full-set result-types)
(database-query-result-set (sql-output expr database) database
- :full-set full-set :types types))
+ :full-set full-set :result-types result-types))
(defmethod execute-command ((expr %sql-expression)
&key (database *default-database*))