Skip to content

Commit

Permalink
Fix for '>10 fields error'
Browse files Browse the repository at this point in the history
  • Loading branch information
klimenko-serj committed Sep 13, 2012
1 parent 6de63e0 commit e0673a9
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 8 deletions.
14 changes: 7 additions & 7 deletions cl-fbclient-functions.lisp
Expand Up @@ -63,14 +63,14 @@
(setf (cffi:foreign-slot-value new-xsqlda 'xsqlda 'sqln) n) (setf (cffi:foreign-slot-value new-xsqlda 'xsqlda 'sqln) n)
new-xsqlda)) new-xsqlda))
;----------------------------------------------------------------------------------- ;-----------------------------------------------------------------------------------
(defun need-remake-xsqlda (tmp-xsqlda)
(> (cffi:foreign-slot-value tmp-xsqlda 'xsqlda 'sqld)
(cffi:foreign-slot-value tmp-xsqlda 'xsqlda 'sqln)))
;-----------------------------------------------------------------------------------
(defun remake-xsqlda (tmp-xsqlda) (defun remake-xsqlda (tmp-xsqlda)
(cond ((> (cffi:foreign-slot-value tmp-xsqlda 'xsqlda 'sqld) (unwind-protect
(cffi:foreign-slot-value tmp-xsqlda 'xsqlda 'sqln)) (make-xsqlda (cffi:foreign-slot-value tmp-xsqlda 'xsqlda 'sqld))
(let ((new-xsqlda (make-xsqlda (cffi-sys:foreign-free tmp-xsqlda)))
(cffi:foreign-slot-value tmp-xsqlda 'xsqlda 'sqld))))
(cffi-sys:foreign-free tmp-xsqlda)
new-xsqlda))
(T tmp-xsqlda)))
;----------------------------------------------------------------------------------- ;-----------------------------------------------------------------------------------
(defun get-var-type-by-fbtype-num (type-num) (defun get-var-type-by-fbtype-num (type-num)
(cond (cond
Expand Down
14 changes: 13 additions & 1 deletion cl-fbclient.lisp
Expand Up @@ -187,7 +187,19 @@
:fb-error-text "Error in isc-dsql-describe" :fb-error-text "Error in isc-dsql-describe"
:fbclient-msg (get-status-vector-msg status-vector*)) :fbclient-msg (get-status-vector-msg status-vector*))
(cffi-sys:foreign-free status-vector*))) (cffi-sys:foreign-free status-vector*)))
(setf (xsqlda-output* fb-stmt) (remake-xsqlda (xsqlda-output* fb-stmt))) (when (need-remake-xsqlda (xsqlda-output* fb-stmt))
(setf (xsqlda-output* fb-stmt) (remake-xsqlda (xsqlda-output* fb-stmt)))
(isc-dsql-describe status-vector*
(statement-handle* fb-stmt)
1
(xsqlda-output* fb-stmt))
(when (status-vector-error-p status-vector*)
(unwind-protect
(error 'fb-error
:fb-error-code 32
:fb-error-text "Error in isc-dsql-describe"
:fbclient-msg (get-status-vector-msg status-vector*))
(cffi-sys:foreign-free status-vector*))))
(alloc-vars-data (xsqlda-output* fb-stmt)) (alloc-vars-data (xsqlda-output* fb-stmt))
(cffi-sys:foreign-free status-vector*))) (cffi-sys:foreign-free status-vector*)))
;----------------------------------------------------------------------------------- ;-----------------------------------------------------------------------------------
Expand Down

0 comments on commit e0673a9

Please sign in to comment.