r10893: 28 Feb 2006 Kevin Rosenberg <kevin@rosenberg.net>
[clsql.git] / db-oracle / oracle-sql.lisp
index 6a6aa3f4f5ba0ca6c88a93d00ebbf975d3426b3e..aa7c6d79e0ad70f3b604a57356b47c8144e46839 100644 (file)
@@ -99,7 +99,7 @@ likely that we'll have to worry about the CMUCL limit."))
    (date-format
     :initarg :date-format
     :reader date-format
-    :initform "YYYY-MM-DD HH24:MI:SS\"+00\"")
+    :initform "YYYY-MM-DD HH24:MI:SS\".0\"")
    (date-format-length
     :type number
     :documentation
@@ -154,8 +154,8 @@ the length of that format.")
   (cond
     (database
      (with-slots (errhp) database
-       (uffi:with-foreign-objects ((errcode 'sb4)
-                                  (errbuf '(:array :unsigned-char #.+errbuf-len+)))
+       (let ((errcode (uffi:allocate-foreign-object 'sb4))
+             (errbuf (uffi:allocate-foreign-string #.+errbuf-len+)))
         ;; ensure errbuf empty string
         (setf (uffi:deref-array errbuf '(:array :unsigned-char) 0)
               (uffi:ensure-char-storable (code-char 0)))
@@ -169,6 +169,8 @@ the length of that format.")
                          +errbuf-len+ +oci-htype-error+))
         (let ((subcode (uffi:deref-pointer errcode 'sb4))
               (errstr (uffi:convert-from-foreign-string errbuf)))
+           (uffi:free-foreign-object errcode)
+           (uffi:free-foreign-object errbuf)
           (unless (and nulls-ok (= subcode +null-value-returned+))
             (error 'sql-database-error
                    :database database
@@ -501,7 +503,7 @@ the length of that format.")
     (uffi:with-foreign-strings ((c-stmt-string sql-stmt-string))
       (let ((stmthp (uffi:allocate-foreign-object :pointer-void))
             select-p)
-      
+
         (uffi:with-foreign-object (stmttype :unsigned-short)
           (unwind-protect
                (progn
@@ -520,10 +522,10 @@ the length of that format.")
                                +oci-attr-stmt-type+
                                (deref-vp errhp)
                                :database db)
-                 
+
                  (setq select-p (= (uffi:deref-pointer stmttype :unsigned-short) 1))
                  (let ((iters (if select-p 0 1)))
-                   
+
                    (oci-stmt-execute (deref-vp svchp)
                                      (deref-vp stmthp)
                                      (deref-vp errhp)
@@ -533,7 +535,7 @@ the length of that format.")
             (unless select-p
               (oci-handle-free (deref-vp stmthp) +oci-htype-stmt+)
               (uffi:free-foreign-object stmthp))))
-        
+
         (cond
           (select-p
            (make-query-cursor db stmthp result-types field-names))