X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=db-oracle%2Foracle-api.lisp;h=1e21b81b9d0a5849fd7ceb28fed89644fce4b85b;hp=dbbc5dccf4bd49890850b98c0a85f068c0a0b7c8;hb=d9f41af62750c622945bb17b622a39689ee5b840;hpb=87e483c1247899a7ad5fff2daf2ca0df0526a9e0 diff --git a/db-oracle/oracle-api.lisp b/db-oracle/oracle-api.lisp index dbbc5dc..1e21b81 100644 --- a/db-oracle/oracle-api.lisp +++ b/db-oracle/oracle-api.lisp @@ -30,7 +30,7 @@ (defvar +null-void-pointer+ (uffi:make-null-pointer :void)) -(defvar +null-void-pointer-pointer+ (uffi:make-null-pointer ':pointer-void)) +(defvar +null-void-pointer-pointer+ (uffi:make-null-pointer :pointer-void)) ;;; Check an OCI return code for erroricity and signal a reasonably ;;; informative condition if so. @@ -57,23 +57,23 @@ (#.+oci-error+ (handle-oci-error :database database :nulls-ok nulls-ok)) (#.+oci-no-data+ - (error "OCI No Data Found")) + (error 'sql-database-error :message "OCI No Data Found")) (#.+oci-success-with-info+ - (error "internal error: unexpected +oci-SUCCESS-WITH-INFO")) - (#.+oci-no-data+ - (error "OCI No Data")) + (error 'sql-database-error :message "internal error: unexpected +oci-success-with-info")) (#.+oci-invalid-handle+ - (error "OCI Invalid Handle")) + (error 'sql-database-error :message "OCI Invalid Handle")) (#.+oci-need-data+ - (error "OCI Need Data")) + (error 'sql-database-error :message "OCI Need Data")) (#.+oci-still-executing+ - (error "OCI Still Executing")) + (error 'sql-temporary-error :message "OCI Still Executing")) (#.+oci-continue+ - (error "OCI Continue")) + (error 'sql-database-error :message "OCI Continue")) (1804 - (error "Check ORACLE_HOME and NLS settings.")) + (error 'sql-database-error :message "Check ORACLE_HOME and NLS settings.")) (t - (error "OCI unknown error, code=~A" result)))))))) + (error 'sql-database-error + :message + (format nil "OCI unknown error, code=~A" result))))))))) (defmacro def-raw-oci-routine @@ -102,17 +102,17 @@ (xtramem-sz :unsigned-long) ; size_t (usermempp (* :pointer-void))) ; dvoid ** -#+oci-8-1-5 +#-oci7 (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 @@ -126,7 +126,7 @@ :int (srvhp :pointer-void) ; oci-server (errhp :pointer-void) ; oci-error - (dblink :cstring) ; :in + (dblink :cstring) ; :in (dblink-len :unsigned-long) ; int (mode :unsigned-long)) ; int @@ -218,7 +218,7 @@ (valuep :pointer-void) (value_sz :long) (dty :unsigned-short) - (indp :pointer-void) + (indp (* :short)) (rlenp (* :unsigned-short)) (rcodep (* :unsigned-short)) (mode :unsigned-long)) @@ -261,11 +261,9 @@ (hndltype :short)) -#+nil -(progn -;;; Low-level functions which don't use return checking -;;; -;;; KMR: These are currently unused by the backend + +;;; Low-level routines that don't do error checking. They are used +;;; for setting up global environment. (uffi:def-function "OCIInitialize" ((mode :unsigned-long) ; ub4 @@ -282,9 +280,6 @@ (usermempp (* :pointer-void))) :returning :int) -(def-oci-routine ("OCIHandleAlloc" oci-handle-alloc) - :int -) (uffi:def-function "OCIHandleAlloc" ((parenth :pointer-void) ; const dvoid * @@ -326,7 +321,7 @@ (defun oci-check-return (value) (when (= value +oci-invalid-handle+) - (error "Invalid Handle"))) + (error 'sql-database-error :message "Invalid Handle"))) (defun oci-get-handle (&key type) (if (null *oci-initialized*) @@ -359,10 +354,11 @@ (:security "OCISecurity") (t - (error "'~s' is not a valid OCI handle type" type)))) + (error 'sql-database-error + :message + (format nil "'~s' is not a valid OCI handle type" type))))) (defun oci-environment () (let ((envhp (oci-get-handle :type :env))) (oci-env-init envhp 0 0 +null-void-pointer+) envhp)) -)