r9511: * db-oracle/oracle-sql.lisp: By default, use OCIEnvCreate as
authorKevin M. Rosenberg <kevin@rosenberg.net>
Sat, 29 May 2004 14:23:18 +0000 (14:23 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Sat, 29 May 2004 14:23:18 +0000 (14:23 +0000)
        introduced in Oracle8. Leave older code selectable by a reader macro
        for Oracle7 and prior.

ChangeLog
db-oracle/oracle-api.lisp
db-oracle/oracle-sql.lisp

index 2ad0817027e100af5999d0f36b4489af0b46d53c..4c774340e26962a4f6dea7c4a4d8cc8fd6c3bce3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
        type (setf slot-value-using-class)
        * db-sqlite: Remove clisp support since clisp can not run CLSQL
        with its MOP usage
        type (setf slot-value-using-class)
        * db-sqlite: Remove clisp support since clisp can not run CLSQL
        with its MOP usage
+       * db-oracle/oracle-sql.lisp: By default, use OCIEnvCreate as 
+       introduced in Oracle8. Leave older code selectable by a reader macro
+       for Oracle7 and prior.
        
 26 May 2004 Kevin Rosenberg <kevin@rosenberg.net>
        * sql/oodml.lisp: Commit universal-time typo patch from Edi Weitz
        
 26 May 2004 Kevin Rosenberg <kevin@rosenberg.net>
        * sql/oodml.lisp: Commit universal-time typo patch from Edi Weitz
index 4b2bc0be4a93970982c6c4f50dc932ccdcc6c7eb..eab4c6b3a78852a917f5cd7d95df7fcb1eb9e571 100644 (file)
   (xtramem-sz :unsigned-long)            ; size_t
   (usermempp (* :pointer-void)))                    ; dvoid **
   
   (xtramem-sz :unsigned-long)            ; size_t
   (usermempp (* :pointer-void)))                    ; dvoid **
   
-#+oci-8-1-5
+#-oci7
 (def-oci-routine ("OCIEnvCreate" oci-env-create)
     :int
 (def-oci-routine ("OCIEnvCreate" oci-env-create)
     :int
-  (p0 :pointer-void)
-  (p1 :unsigned-int)
-  (p2 :pointer-void)
-  (p3 :pointer-void)
-  (p4 :pointer-void)
-  (p5 :pointer-void)
-  (p6 :unsigned-long)
-  (p7 :pointer-void))
+  (envhpp (* :pointer-void))
+  (mode :unsigned-int)
+  (ctxp :pointer-void)
+  (malocfp :pointer-void)
+  (ralocfp :pointer-void)
+  (mfreefp :pointer-void)
+  (xtramemsz :unsigned-long)
+  (usrmempp (* :pointer-void)))
 
 (def-oci-routine ("OCIHandleAlloc" oci-handle-alloc)
     :int
 
 (def-oci-routine ("OCIHandleAlloc" oci-handle-alloc)
     :int
index 222e030c9b41881c05edfb5276d0327044a8a3f8..6d3211362a3e1cc19acf2b86f24cafa612fad28a 100644 (file)
@@ -37,8 +37,6 @@ likely that we'll have to worry about the CMUCL limit."))
 (defmacro deref-vp (foreign-object)
   `(the vp-type (uffi:deref-pointer (the vpp-type ,foreign-object) :pointer-void)))
 
 (defmacro deref-vp (foreign-object)
   `(the vp-type (uffi:deref-pointer (the vpp-type ,foreign-object) :pointer-void)))
 
-;; constants - from OCI?
-
 (defvar +unsigned-char-null-pointer+
   (uffi:make-null-pointer :unsigned-char))
 (defvar +unsigned-short-null-pointer+
 (defvar +unsigned-char-null-pointer+
   (uffi:make-null-pointer :unsigned-char))
 (defvar +unsigned-short-null-pointer+
@@ -46,6 +44,8 @@ likely that we'll have to worry about the CMUCL limit."))
 (defvar +unsigned-int-null-pointer+
   (uffi:make-null-pointer :unsigned-int))
 
 (defvar +unsigned-int-null-pointer+
   (uffi:make-null-pointer :unsigned-int))
 
+;; constants - from OCI?
+
 (defconstant +var-not-in-list+       1007)
 (defconstant +no-data-found+         1403)
 (defconstant +null-value-returned+   1405)
 (defconstant +var-not-in-list+       1007)
 (defconstant +no-data-found+         1403)
 (defconstant +null-value-returned+   1405)
@@ -145,9 +145,9 @@ the length of that format.")
                                       (errcode :long))
             ;; ensure errbuf empty string
              (setf (uffi:deref-array errbuf '(:array :unsigned-char) 0)
                                       (errcode :long))
             ;; ensure errbuf empty string
              (setf (uffi:deref-array errbuf '(:array :unsigned-char) 0)
-                  (uffi:ensure-char-storable (code-char 0)))
-
+              (uffi:ensure-char-storable (code-char 0)))
              (setf (uffi:deref-pointer errcode :long) 0)
              (setf (uffi:deref-pointer errcode :long) 0)
+            
             (uffi:with-cstring (sqlstate nil)
               (oci-error-get (deref-vp errhp) 1
                              sqlstate
             (uffi:with-cstring (sqlstate nil)
               (oci-error-get (deref-vp errhp) 1
                              sqlstate
@@ -189,7 +189,7 @@ the length of that format.")
 ;;; Enabling this can be handy for low-level debugging.
 #+nil
 (progn
 ;;; Enabling this can be handy for low-level debugging.
 #+nil
 (progn
-  (trace oci-initialize #+oci-8-1-5 oci-env-create oci-handle-alloc oci-logon
+  (trace #-oci7 oci-env-create oci-initialize oci-handle-alloc oci-logon
          oci-error-get oci-stmt-prepare oci-stmt-execute
          oci-param-get oci-logon oci-attr-get oci-define-by-pos oci-stmt-fetch)
   (setf debug::*debug-print-length* nil))
          oci-error-get oci-stmt-prepare oci-stmt-execute
          oci-param-get oci-logon oci-attr-get oci-define-by-pos oci-stmt-fetch)
   (setf debug::*debug-print-length* nil))
@@ -732,41 +732,35 @@ the length of that format.")
       ;; error-handling mechanism themselves) so we just assert they
       ;; work.
       (setf (deref-vp envhp) +null-void-pointer+)
       ;; error-handling mechanism themselves) so we just assert they
       ;; work.
       (setf (deref-vp envhp) +null-void-pointer+)
-      #+oci-8-1-5
-      (progn
-        (oci-env-create envhp +oci-default+  +null-void-pointer+
-                       +null-void-pointer+  +null-void-pointer+ 
-                       +null-void-pointer+ 0 +null-void-pointer-pointer+)
-       (oci-handle-alloc envhp
-                         (deref-vp errhp)
-                         +oci-htype-error+ 0 
-                         +null-void-pointer-pointer+))
-      #-oci-8-1-5
+      #-oci7
+      (oci-env-create envhp +oci-default+ +null-void-pointer+
+                     +null-void-pointer+ +null-void-pointer+ 
+                     +null-void-pointer+ 0 +null-void-pointer-pointer+)
+      #+oci7
       (progn
        (oci-initialize +oci-object+ +null-void-pointer+ +null-void-pointer+
                        +null-void-pointer+ +null-void-pointer-pointer+)
         (ignore-errors (oci-handle-alloc +null-void-pointer+ envhp
                                         +oci-htype-env+ 0
                                         +null-void-pointer-pointer+)) ;no testing return
       (progn
        (oci-initialize +oci-object+ +null-void-pointer+ +null-void-pointer+
                        +null-void-pointer+ +null-void-pointer-pointer+)
         (ignore-errors (oci-handle-alloc +null-void-pointer+ envhp
                                         +oci-htype-env+ 0
                                         +null-void-pointer-pointer+)) ;no testing return
-        (oci-env-init envhp +oci-default+ 0 +null-void-pointer-pointer+)
-        (oci-handle-alloc (deref-vp envhp) errhp
-                         +oci-htype-error+ 0 +null-void-pointer-pointer+)
-        (oci-handle-alloc (deref-vp envhp) srvhp
-                         +oci-htype-server+ 0 +null-void-pointer-pointer+)
-       (uffi:with-cstring (dblink nil)
-         (oci-server-attach (deref-vp srvhp)
-                            (deref-vp errhp)
-                            dblink
-                            0 +oci-default+))
-        (oci-handle-alloc (deref-vp envhp) svchp
-                         +oci-htype-svcctx+ 0 +null-void-pointer-pointer+)
-        (oci-attr-set (deref-vp svchp)
-                     +oci-htype-svcctx+
-                     (deref-vp srvhp) 0 +oci-attr-server+ 
-                     (deref-vp errhp))
-        ;; oci-handle-alloc((dvoid *)encvhp, (dvoid **)&stmthp, OCI_HTYPE_STMT, 0, 0);
-        ;;#+nil
-       )
+        (oci-env-init envhp +oci-default+ 0 +null-void-pointer-pointer+))
+      (oci-handle-alloc (deref-vp envhp) errhp
+                       +oci-htype-error+ 0 +null-void-pointer-pointer+)
+      (oci-handle-alloc (deref-vp envhp) srvhp
+                       +oci-htype-server+ 0 +null-void-pointer-pointer+)
+      (uffi:with-cstring (dblink nil)
+       (oci-server-attach (deref-vp srvhp)
+                          (deref-vp errhp)
+                          dblink 
+                          0 +oci-default+))
+      (oci-handle-alloc (deref-vp envhp) svchp
+                       +oci-htype-svcctx+ 0 +null-void-pointer-pointer+)
+      (oci-attr-set (deref-vp svchp)
+                   +oci-htype-svcctx+
+                   (deref-vp srvhp) 0 +oci-attr-server+ 
+                   (deref-vp errhp))
+      ;; oci-handle-alloc((dvoid *)encvhp, (dvoid **)&stmthp, OCI_HTYPE_STMT, 0, 0);
+      ;;#+nil
       ;; 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 server-version client-version)
       ;; 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 server-version client-version)