22 May 2004 Kevin Rosenberg
- * TODO: Added 2 variances from CommonSQL
+ * Version 2.10.19 released: Oracle backend now fails 6 out of 200 tests
+ * TODO: Added 2 variances from CommonSQL. Add tests for owner phrases
+ and string identifiers with non-default case
* sql/table.lisp: Don't convert string table name to a symbol.
* sql/classes.lisp: Honor case of string identifiers
- * Oracle backend now fails 6 out of 200 tests
- * sql/sql.lisp: Ensure recyclebin is purged for oracle in
+ * sql/sql.lisp: Ensure recyclebin is purged for Oracle in
TRUNCATE-DATABASE
* db-oracle/oracle-sql.lisp: Add sequence functions, fix use of
of owner phrases. Obtain server and client versions.
* db-oracle/oracle-objects.lisp: Fix type specifiers
* tests/test-fddl.lisp: Allow :varchar2 and :number as data types
* tests/test-init.lisp: Properly get username from Oracle connection-spec
- * TODO: Add that tests are needed for owner phrases
22 May 2004 Marcus Pearce (m.t.pearce@city.ac.uk)
* sql/generics.lisp: reworked docstrings. Remove generics for
(in-package #:clsql-oracle)
-(defmethod database-initialize-database-type
- ((database-type (eql :oracle)))
+(defmethod database-initialize-database-type ((database-type (eql :oracle)))
t)
;;;; arbitrary parameters, tunable for performance or other reasons
)
;; Actually, oci-server-version returns the client version, not the server versions
;; will use "SELECT VERSION FROM V$INSTANCE" to get actual server version.
- (let (db client-version)
+ (let (db server-version client-version)
+ (declare (ignorable server-version))
(uffi:with-foreign-object (buf '(:array :unsigned-char #.+errbuf-len+))
(oci-server-version (deref-vp svchp)
(deref-vp errhp)
(uffi:char-array-to-pointer buf)
+errbuf-len+ +oci-htype-svcctx+)
- (setf client-version (uffi:convert-from-foreign-string buf)))
+ (setf client-version (uffi:convert-from-foreign-string buf))
+ ;; This returns the client version, not the server version, so diable it
+ #+ignore
+ (oci-server-version (deref-vp srvhp)
+ (deref-vp errhp)
+ (uffi:char-array-to-pointer buf)
+ +errbuf-len+ +oci-htype-server+)
+ #+ignore
+ (setf server-version (uffi:convert-from-foreign-string buf)))
(setq db (make-instance 'oracle-database
:name (database-name-from-spec connection-spec
database-type)
+ :connection-spec connection-spec
:envhp envhp
:errhp errhp
:database-type :oracle
:dsn data-source-name
:user user
:client-version client-version
+ :server-version server-version
:major-client-version (major-client-version-from-string
- client-version)))
+ client-version)
+ :major-server-version (major-client-version-from-string
+ server-version)))
(oci-logon (deref-vp envhp)
(deref-vp errhp)
svchp
(setf (slot-value db 'clsql-sys::state) :open)
(database-execute-command
(format nil "ALTER SESSION SET NLS_DATE_FORMAT='~A'" (date-format db)) db)
- (let ((server-version (caar (database-query "SELECT VERSION FROM V$INSTANCE" db nil nil))))
+ (let ((server-version (caar (database-query "SELECT BANNER FROM V$VERSION WHERE BANNER LIKE '%Oracle%'" db nil nil))))
(setf (slot-value db 'server-version) server-version
- (slot-value db 'major-server-version) (major-server-version-from-string
+ (slot-value db 'major-server-version) (major-client-version-from-string
server-version)))
db))))
* New upstream
- -- Kevin M. Rosenberg <kmr@debian.org> Thu, 20 May 2004 04:54:53 -0600
+ -- Kevin M. Rosenberg <kmr@debian.org> Sat, 22 May 2004 21:29:10 -0600
cl-sql (2.10.18-1) unstable; urgency=low
:type ',type)))
(defmethod output-sql ((expr sql-ident-attribute) database)
- (with-slots (qualifier name type)
- expr
+ (with-slots (qualifier name type) expr
(if (and (not qualifier) (not type))
- (write-string (sql-escape (convert-to-db-default-case
- (symbol-name name) database)) *sql-stream*)
+ (etypecase name
+ ;; Honor care of name
+ (string
+ (write-string name *sql-stream*))
+ (symbol
+ (write-string (sql-escape (convert-to-db-default-case
+ (symbol-name name) database)) *sql-stream*)))
+
;;; KMR: The TYPE field is used by CommonSQL for type conversion -- it
;;; should not be output in SQL statements
#+ignore
(defun database-identifier (name database)
(sql-escape (etypecase name
- (string
- (convert-to-db-default-case name database))
- (sql-ident
- (sql-output name database))
- (symbol
- (sql-output name database)))))
+ ;; honor case of strings
+ (string name
+ #+nil (convert-to-db-default-case name database))
+ (sql-ident (sql-output name database))
+ (symbol (sql-output name database)))))
;; Tables
supports transactions."
(let* ((table-name (etypecase name
(symbol (sql-expression :attribute name))
- (string (sql-expression :attribute (make-symbol name)))
+ (string (sql-expression :attribute name))
(sql-ident name)))
(stmt (make-instance 'sql-create-table
:name table-name