- (or (clsql-base-sys:without-interrupts
- (let ((inactive-query (find-if (lambda (query)
- (not (query-active-p query)))
- queries)))
- (when inactive-query
- (with-slots (column-count column-names column-c-types
- width hstmt
- column-sql-types column-data-ptrs
- column-out-len-ptrs column-precisions
- column-scales column-nullables-p)
- inactive-query
- ;;(print column-data-ptrs tb::*local-output*)
- ;;(%dispose-column-ptrs inactive-query)
- (setf column-count 0
- width +max-precision+
- ;; KMR hstmt (%new-statement-handle hdbc)
- (fill-pointer column-names) 0
- (fill-pointer column-c-types) 0
- (fill-pointer column-sql-types) 0
- (fill-pointer column-data-ptrs) 0
- (fill-pointer column-out-len-ptrs) 0
- (fill-pointer column-precisions) 0
- (fill-pointer column-scales) 0
- (fill-pointer column-nullables-p) 0))
- (setf (query-active-p inactive-query) t))
- inactive-query))
+ (or (and *reuse-query-objects*
+ (clsql-sys:without-interrupts
+ (let ((inactive-query (find-if (lambda (query)
+ (not (query-active-p query)))
+ queries)))
+ (when inactive-query
+ (with-slots (column-count column-names column-c-types
+ width hstmt
+ column-sql-types column-data-ptrs
+ column-out-len-ptrs column-precisions
+ column-scales column-nullables-p)
+ inactive-query
+ (setf column-count 0
+ width +max-precision+
+ ;; KMR hstmt (%new-statement-handle hdbc)
+ (fill-pointer column-names) 0
+ (fill-pointer column-c-types) 0
+ (fill-pointer column-sql-types) 0
+ (fill-pointer column-data-ptrs) 0
+ (fill-pointer column-out-len-ptrs) 0
+ (fill-pointer column-precisions) 0
+ (fill-pointer column-scales) 0
+ (fill-pointer column-nullables-p) 0))
+ (setf (query-active-p inactive-query) t))
+ inactive-query)))