diff --git a/src/dbd-oracle-dbi.lisp b/src/dbd-oracle-dbi.lisp index c4d35ce..2739473 100644 --- a/src/dbd-oracle-dbi.lisp +++ b/src/dbd-oracle-dbi.lisp @@ -6,6 +6,9 @@ (cl-syntax:use-syntax :annot) +(unless *oracle-library-loaded* + (oracle-load-foreign)) + @export (defclass () ()) @@ -85,8 +88,6 @@ string conversion functions. Example of DATABASE-NAME: 127.0.0.1:1521/orcl " - (unless *oracle-library-loaded* - (oracle-load-foreign)) (make-instance ' :database-name database-name :auto-commit nil diff --git a/src/dbd-oracle.lisp b/src/dbd-oracle.lisp index 6d87539..7ca455f 100644 --- a/src/dbd-oracle.lisp +++ b/src/dbd-oracle.lisp @@ -260,12 +260,12 @@ the length of that format.") (setf (deref-vp envhp) +null-void-pointer+) (progn - (oci-initialize +oci-object+ +null-void-pointer+ +null-void-pointer+ + (oci-initialize +oci-threaded+ +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-env-init envhp +oci-threaded+ 0 +null-void-pointer-pointer+)) (oci-handle-alloc (deref-vp envhp) errhp +oci-htype-error+ 0 +null-void-pointer-pointer+) diff --git a/src/foreign-resources.lisp b/src/foreign-resources.lisp index 2dc910f..0d0fcb7 100644 --- a/src/foreign-resources.lisp +++ b/src/foreign-resources.lisp @@ -11,7 +11,8 @@ (in-package #:dbd.oracle) -(defparameter *foreign-resource-hash* (make-hash-table :test #'equal)) +(defparameter *foreign-resource-hash* + (make-hash-table :test #'equal :synchronized t)) (defstruct (foreign-resource) (type (error "Missing TYPE.")