X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=db-oracle%2Foracle-sql.lisp;h=222e030c9b41881c05edfb5276d0327044a8a3f8;hb=fc6e46a000589bffc1a1b69cb3fe13bcbaade59b;hp=ac8ee155cf97a3cd2665c295e034cf1f87e3ab62;hpb=645d2ea7396466b8673e3421b55e45cd327f0195;p=clsql.git diff --git a/db-oracle/oracle-sql.lisp b/db-oracle/oracle-sql.lisp index ac8ee15..222e030 100644 --- a/db-oracle/oracle-sql.lisp +++ b/db-oracle/oracle-sql.lisp @@ -211,21 +211,6 @@ the length of that format.") :unsigned-char)))) (if (string-equal str "NULL") nil str))) -(defun deref-oci-int64 (arrayptr index) - (let ((low32 (uffi:deref-array arrayptr '(:array :unsigned-int) - (+ index index))) - (high32 (uffi:deref-array arrayptr '(:array :unsigned-int) - (+ 1 index index)))) - (make-64-bit-integer high32 low32))) - -(defun deref-oci-int128 (arrayptr index) - (let* ((base (* 4 index)) - (d (uffi:deref-array arrayptr '(:array :unsigned-int) (incf base))) - (c (uffi:deref-array arrayptr '(:array :unsigned-int) (incf base))) - (b (uffi:deref-array arrayptr '(:array :unsigned-int) (incf base))) - (a (uffi:deref-array arrayptr '(:array :unsigned-int) (incf base)))) - (make-128-bit-integer a b c d))) - ;; the OCI library, part Z: no-longer used logic to convert from ;; Oracle's binary date representation to Common Lisp's native date ;; representation @@ -412,11 +397,7 @@ the length of that format.") (#.SQLT-INT (ecase (cd-sizeof cd) (4 - (uffi:deref-array b '(:array :int) irow)) - (8 - (deref-oci-int64 b irow)) - (16 - (deref-oci-int128 b irow)))) + (uffi:deref-array b '(:array :int) irow)))) (#.SQLT-DATE (deref-oci-string b irow (cd-sizeof cd)))))))) (when (and (eq :string (cd-result-type cd)) @@ -646,29 +627,14 @@ the length of that format.") (deref-vp errhp)) (let ((*scale (uffi:deref-pointer scale :byte)) (*precision (uffi:deref-pointer precision :byte))) - + ;;(format t "scale=~d, precision=~d~%" *scale *precision) (cond ((or (and (minusp *scale) (zerop *precision)) - (and (zerop *scale) (< 0 *precision 9))) + (and (zerop *scale) (plusp *precision))) (setf buffer (acquire-foreign-resource :int +n-buf-rows+) sizeof 4 ;; sizeof(int) dtype #.SQLT-INT)) - ((and (zerop *scale) - (plusp *precision) - #+ignore (< *precision 19)) - (setf buffer (acquire-foreign-resource :unsigned-int - (* 2 +n-buf-rows+)) - sizeof 8 ;; sizeof(int64) - dtype #.SQLT-INT)) - ;; Bug in OCI? But OCI won't take 16-byte buffer for 128-bit - ;; integers - #+ignore - ((and (zerop *scale) (plusp *precision)) - (setf buffer (acquire-foreign-resource :unsigned-int - (* 4 +n-buf-rows+)) - sizeof 8 ;; sizeof(int128) - dtype #.SQLT-INT)) (t (setf buffer (acquire-foreign-resource :double +n-buf-rows+) sizeof 8 ;; sizeof(double)