[cl-rdbms-devel] hu.dwim.rdbms.oracle-utf-problems-11 - Still trouble even with new babel?

Attila Lendvai attila.lendvai at gmail.com
Thu Nov 4 16:45:23 UTC 2010


> For me it seems iolib is the only system using babel directly?
> Can't see iolib using the octects-to-string function, only for dns but maybe
> I didn't look hard enough.
> Or it uses another babel function to do this?
>
> Do I have to turn on the right byte-ordering somewhere, just for the time
> being?


ouch: this is in oracle/cffi-util.lisp

(def function oci-string-to-lisp (pointer &optional size)
  #+nil
  (cffi:foreign-string-to-lisp pointer :count size
                               :encoding (connection-encoding-of
(database-of *transaction*)))
  ;; the above doesn't work, because babel thinks the encoding is
  ;; invalid and returns question marks only.  Perhaps Babel doesn't
  ;; understand the endianness?  Need to investigate.
  (coerce (iter (for i from 0 by 2)
		(when size (while (< i size)))
		(let ((code (cffi:mem-ref pointer :short i)))
		  (until (zerop code))
		  (collect (code-char code))))
	  'string))

try to re-enable the #+nil-ed line and drop the rest...

this change is nasty, it should have deserved a KLUDGE comment, or
maybe even better would have been a runtime (warn "description of the
issue")...

David, if you're reading this then update your coding standards... in
the long term you'll also benefit from it, believe me... ;)

-- 
 attila




More information about the cl-rdbms-devel mailing list